
Julien Chomarat

Dans cet article, je vais vous présenter l'installation d'un serveur de logs Seq sous Centos.
Le setup sera le suivant :
ScalewayCentOS 7TraefikLet's EncryptSeq et tournera dans DockerCréation de la VM
Pour nos VM, nous allons la prendre chez Scaleway. Scaleway offre des VMs de qualité avec un prix très compétitif. Je vous laisse le soin de faire un tour sur leur site et découvrir leurs offres.
La documentation de Seq nous informe qu'il faut une machine avec les caractéristiques suivantes:
Avec ces informations, nous pouvons donc démarrer avec une VM Start-1M
Au moment de la création, choisissez l'image CentOS pour le système d'exploitation.
Dès que la machine est prête, allez dans l'interface de détails et notez dans la valeur du Public DNS qui doit ressembler à ça :
6e4afa92-b46f-4cfd-9298-c655302c6cbd.pub.cloud.scaleway.comMise à jour des DNS
Pour pouvoir utiliser un certificat Let's Encrypt, vous devez créer une entrée CNAME qui pointe vers la valeur du Public DNS que vous avez notée juste avant.
Pour les besoin de cet article, le nom de domaine que nous utiliserons sera :
seq.mydomain.tldMise à jour de CentOS
Pendant que les DNS se mettent à jour, connectez-vous en SSH sur votre machine et tapez la commande suivante :
yum update -y
rebootInstallation de Docker
La machine est prête et à jour, nous pouvons maintenant installer Docker CE. Je vous conseille de lire la documentation, mais pour aller plus vite voici les commandes importantes :
On installe les paquets nécessaires pour faire tourner Docker :
yum install -y yum-utils \
device-mapper-persistent-data \
lvm2On ajoute le repository stable de Docker :
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repoOn installe la dernière version de Docker :
yum install docker-ce docker-ce-cli containerd.ioOn démarre Docker :
systemctl start dockerOn vérifie que Docker fonctionne bien :
docker run hello-worldSi vous voyez un message d'information alors tout va bien.
Vous pouvez enregistrer Docker pour qu'il démarre automatiquement :
systemctl enable dockerInstallation de Docker Compose
Nous allons maintenant installer Docker Compose avec les commandes suivantes :
curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-composeInstallation de Traefik
Nous allons maintenant avoir besoin d'un reverse proxy pour pouvoir faire tourner plusieurs instances de Seq sur notre VM.
Nous allons donc utiliser Traefik qui fait très bien le job et qui offre une très bonne intégration avec Let's Encrypt
Avant de commencer à installer Traefik, nous devons d'abord créer un réseau virtuel avec Docker. Traefik fera le transfert des requêtes depuis internet vers les instances Seq qui seront connectées au réseau Docker.
Pour créer les réseau Docker voici la commande:
docker network create seqnetMaintenant nous allons préparer le terrain pour Traefik, vous allez taper les commandes suivantes qui serviront à configurer Traefik, l'image Docker-Compose et Let's Encrypt :
mkdir -p /opt/traefik
touch /opt/traefik/docker-compose.yml
touch /opt/traefik/acme.json && chmod 600 /opt/traefik/acme.json
touch /opt/traefik/traefik.toml
cd /opt/traefikVous pouvez maintenant éditer le fichier /opt/traefik/traefik.toml :
# Par défaut, le frontend d'une image Seq n'écoutera que sur le port https
defaultEntryPoints = ["https"]
# On définit ici les points d'entrée activés
[entryPoints]
# On active le port http
[entryPoints.http]
address = ":80"
# On demande une redirection automatique sur https
[entryPoints.http.redirect]
entryPoint = "https"
# On active le port https
[entryPoints.https]
address = ":443"
# On s'assure que la version de TLS est au minimum 1.2
[entryPoints.https.tls]
minVersion = "VersionTLS12"
cipherSuites = [
"TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305",
"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384",
"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256",
"TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256",
"TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA",
"TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA"
]
# On active le support de Docker
[docker]
# On active la gestion automatique des certificats Let's Encrypt
[acme]
email = "[email protected]"
storage = "acme.json"
entryPoint="https"
onHostRule = true
# On configure le challenge HTTP-01
[acme.httpChallenge]
entryPoint = "http"
# On ajoute ici les domaines pour lesquels nous voulons un certificat
[[acme.domains]]
main = "seq.mydomain.tld"Maintenant vous pouvez éditer le fichier /opt/traefik/docker-compose.yml :
version: '3'
services:
reverse-proxy:
# L'image docker de Traefik qui nous intéresse
image: traefik:1.7.9-alpine
restart: unless-stopped
# On active le dashboard avec --api
# Vous pouvez désactiver le dashboard en supprimant la ligne ci-dessous
command: --api
# On connecte l'image à notre réseau docker créé plus haut
networks:
- seqnet
# On écoute les ports http et https sur internet
ports:
- "80:80"
- "443:443"
# On map vers nos fichiers créés plus haut
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /opt/traefik/traefik.toml:/traefik.toml
- /opt/traefik/acme.json:/acme.json
# La section labels sert à configurer le dashboard
# Si vous désactivez le --api plus haut, vous pouvez supprimer toute la section labels
labels:
- "traefik.enable=true"
- "traefik.docker.network=seq"
- "traefik.port=8080"
- "traefik.backend=traefik"
- "traefik.frontend.rule=PathPrefixStrip:/traefik;PathPrefix:/traefik"
# Nous protégeons le dashboard avec un mot de :
# login: admin
# password: 1234
# Le mot de passe peut être généré dans plusieurs formats
# https://docs.traefik.io/configuration/entrypoints/#basic-authentication
# Ici le mot de passe est en BCrypt
- "traefik.frontend.auth.basic=admin:$$2y$$12$$WpLCLJFqnamjm3cDuamW9eSoUbJMZ/q8oYdmhxt0RLEObRlb3Xvru"
networks:
seqnet:
external: trueLe fichier acme.json sert pour le stockage des informations Let's Encrypt.
Vous avez terminé de configurer Traefik, lancer l'image avec la commande suivante :
docker-compose up -dVous pouvez maintenant vous connecter au dashboard avec les identifiants du fichier docker-compose sur l'adresse de votre VM :
https://seq.mydomain.tld/traefik
Je vous conseille de laisser le dashboard ouvert dans un onglet pour tout à l'heure.
Installation d'une instance nommé Seq
Pour les logs, nous allons donc installer Seq.
Pour chaque instance de Seq, nous écouterons sur les urls suivantes :
# Notre première instance de Seq pour l'application 1
https://seq.mydomain.tld/app1
# Notre deuxième instance de Seq pour l'application 2
https://seq.mydomain.tld/app2Nous allons créer la première instance de Seq. Cette instance se nommera app1.
On prépare le terrain pour notre instance :
# On crée le répertoire pour le stockage des logs de notre instance
mkdir -p /var/log/seq/app1
# On prépare le répertoire pour configurer l'instance Seq
mkdir -p /opt/app1
touch /opt/app1/docker-compose.yml
cd /opt/app1On édite maintenant le fichier /opt/app1/docker-compose.yml :
version: '3'
services:
app1:
# On utilise la dernière image de Seq
image: datalust/seq:latest
restart: unless-stopped
# On lui donne le nom de notre instance
container_name: app1
# On la connecte sur notre réseau Docker
networks:
- seqnet
environment:
- ACCEPT_EULA=Y
# On donne l'adresse externe de notre instance Seq
- BASE_URI=https://seq.mydomain.tld/app1
# On map notre répertoire pour les logs sur /data
volumes:
- /var/log/seq/app1:/data
# On configure ici notre instance avec Traefik
labels:
# On active notre image
- "traefik.enable=true"
# On la connecte sur le réseau seqnet
- "traefik.docker.network=seqnet"
# On écoute sur le port 80
- "traefik.port=80"
# Les trois lignes ci dessous servent à rediriger le traffic si on utilise les urls suivantes :
# https://seq.mydomain.tld/app1 ou https://seq.mydomain.tld/app1/
- "traefik.frontend.redirect.regex=^(.*)/app1$$"
- "traefik.frontend.redirect.replacement=$$1/app1/"
- "traefik.frontend.rule=PathPrefix:/app1;ReplacePathRegex: ^/app1/(.*) /$$1"
networks:
seqnet:
external: trueVous pouvez démarrer votre image avec la commande suivante et retourner sur le dashboard :
docker-compose up -dAttendez quelques secondes, si tout s'est bien passé, vous devez voir deux nouveaux blocs bleus dans le dashboard de Traefik.
Vous pouvez naviguer vers https://seq.mydomain.tld/app1 et normalement vous arrivez sur l'interface de Seq.
Si vous souhaitez faire la deuxième instance, il suffit de refaire la procédure en remplaçant app1 par app2 dans les commandes shell et le fichier de configuration docker-compose.yml.