Traefik : utiliser le binaire sans docker
Traefik est un edge routeur et load-balancer conçu à la base pour des infrastructures composées de conteneurs. Néanmoins, il est possible de le faire fonctionner directement via le binaire et de profiter de ses capacités pour des services hors conteneurs.
L’intérêt d’utiliser le binaire plutôt que le conteneur peut se discuter longuement, mais ce n’est pas l’objectif ici. Pas de présentation ni de réflexion autour de Traefik dans cette documentation, si vous recherchez une présentation ça se passe là-bas .
Objectif : Utiliser Traefik sans docker, directement avec le binaire.
Environnement : Debian 13, Traefik 3.5.
Contexte d’exécution :
jho@vmi866042:/etc/traefik$ tree
.
├── dynamic
│ ├── general.yml
│ ├── routersservices.yml
├── traefik.yml
├── acme.jsonRésultat de la commande “tree” dans le dossier /etc/traefik
- dossier où se trouvent tous les fichiers et dossiers pour cet exemple :
/etc/traefik/ - emplacement du fichier de configuration principal de Traefik :
/etc/traefik/traefik.yml - dossier où se trouvent les configurations de Traefik (fichiers dynamiques) :
/etc/traefik/dynamic - dossier où se trouvent les journaux d’événements (logs) :
/var/logs/
Préparation du système#
Commencez par télécharger le binaire depuis le dépôt GitHub Traefik : https://github.com/containous/traefik/releases . J’utiliserai la version 3.5.0 (au 08/2025) et une VM ayant comme base une Debian 12.11. Les tests ont aussi été réalisés avec succès sur une Ubuntu 24.04.3.
cd /tmp && wget https://github.com/traefik/traefik/releases/download/v3.5.0/traefik_v3.5.0_linux_amd64.tar.gz && tar xzvf traefik_v3.5.0_linux_amd64.tar.gzPour tester son fonctionnement rapidement, lancez le binaire et regardez les ports en écoute sur votre machine :
$ ./traefik
$ ss -ntlp # doit retourner ce genre d'informations :
LISTEN 0 128 *:80 *:* users:(("traefik",pid=450,fd=3))Sans fichier de configuration ni autre option, Traefik écoutera par défaut sur le port 80. Il n’y aura ni redirection automatique, pas de gestion du TLS, aucune redirection vers vos services internes, pas d’accès au tableau de bord ou autres options, uniquement une écoute sur le port 80.
Copions le binaire dans l’emplacement système étudié pour, avec les droits d’exécution :
cp /tmp/traefik /usr/local/bin/.
chown traefik: /usr/local/bin/traefik
chmod +x /usr/local/bin/traefikL’utilisateur root est nécessaire. En effet, Traefik doit avoir un maximum de privilèges système pour se mettre en écoute sur les ports système, notamment le 80 et le 443.
Tout comme pour la version docker, l’utilisateur est “traefik” et le dossier par défaut /etc/traefik pour ses fichiers de configuration.
Après avoir téléchargé le binaire, il faut recréer cette configuration (dossiers, utilisateur, droits).
groupadd traefik
useradd -g traefik --no-user-group -d /etc/traefik --no-create-home -s /usr/sbin/nologin -r traefik
mkdir -p /etc/traefik/dynamic
chown -R traefik: /etc/traefik
touch /var/log/traefik.log && chown traefik: /var/log/traefik.logDans mes précédents fichiers de configuration pour Traefik, j’utilise le dossier /etc/traefik/dynamic pour y stocker les configurations dites “dynamiques”.
Le fichier de log se situe dans le dossier /var/log, qui est le chemin habituel. La configuration principale de Traefik se trouvera dans le dossier racine (/etc/traefik) et les configurations personnalisées seront dans le dossier /etc/traefik/dynamic.
Préparation pour Traefik#
Générons maintenant le fichier de configuration principal, ici le fichier /etc/traefik/traefik.yml.
---
global:
sendAnonymousUsage: false
checkNewVersion: false
api:
dashboard: true
log:
filePath: "/var/log/traefik.log"
level: "INFO"
maxSize: 32 # Taille en Mb
maxBackups: 30 # 30 fichiers max
compress: true # Gzip
providers:
file:
directory: "/etc/traefik/dynamic"
watch: true
entryPoints:
web:
address: ":80"
websecure:
address: ":443"J’ai commenté la partie redirection automatique HTTP vers HTTPS, à titre indicatif. Ce bloc n’est pas nécessaire ici pour le premier démarrage.
À présent, créons le fichier service pour systemd à l’emplacement /etc/systemd/system/. Voici le contenu du nouveau fichier traefik.service :
# /etc/systemd/system/traefik.service
[Unit]
Description=Traefik
After=network-online.target
AssertFileIsExecutable=/usr/local/bin/traefik
AssertPathExists=/etc/traefik/traefik.yml
[Service]
Type=notify
User=traefik
Group=traefik
Restart=on-failure
TimeoutStopSec=300
ExecStart=/usr/local/bin/traefik --configFile=/etc/traefik/traefik.yml
WatchdogSec=1s
LimitNPROC=1
# allow writing of acme.json
ReadWritePaths=/etc/traefik/acme.json /var/log/traefik.log
ProtectSystem=strict
PrivateTmp=true
ProtectHome=true
PrivateDevices=true
ProtectKernelTunables=true
ProtectControlGroups=true
[Install]
WantedBy=multi-user.targetAjoutons les droits au fichier, mettons à jour la base systemd et lancement !
chown root: /etc/systemd/system/traefik.service
chmod 644 /etc/systemd/system/traefik.service
systemctl daemon-reload
systemctl enable --now traefik.serviceÀ présent, Traefik doit être actif et prêt à rediriger vos requêtes. Le fichier de configuration traefik.yml cité plus haut est vraiment basique, mais fonctionnel. Pour la suite, vous devrez configurer des middleware, les services et les routeurs pour accéder à vos applications.
Sources#
traefik/contrib/systemd/traefik.service at master · traefik/traefikThe Cloud Native Application Proxy. Contribute to traefik/traefik development by creating an account on GitHub.GitHubtraefik