Mon utilisation de Traefik

30 octobre 2018 - docker truc&astuce article -

Dans cet article, je parle de Traefik, une reverse proxy des temps modernes. Je vous parlerai de son utilisation chez moi sur mon Raspberry Pi pour le déploiement facile d’applications.

Quand je veux déployer des applications chez moi (sur mon Rpi), il y a des choses qui me gâchent un peu le plaisir du docker run :

  • configuration des réseaux docker
  • configuration d’un reverse proxy
  • certificat SSL

Autant de chose qui donne presque envie de regarder l’amour est dans le près avec madame plutôt que de s’amuser sur mon ordi. Heureusement Traefik est là pour sauver mes soirées et il s’occupe de tous ces points, à condition bien entendu de prendre le temps de préparer un peu le terrain.

Quelques préparatifs

DuckDNS

DuckDNS est mon DNS dynamique. Je vous le recommande car il est très simple à utiliser, fournit une API et ne demande pas toutes les semaines de revalider votre compte. D’autre part, il faut préciser que tous les sous-domaines seront résolus avec la même IP que votre domaine :

$ dig +short thibbo.duckdns.org 
90.113.115.112
$ dig +short cloud.thibbo.duckdns.org
90.113.115.112

Cette caractéristique est très importante, elle va nous permette d’utiliser des sous-domaines pour les applications plutôt que des chemins sur le domaine principal. Ceci pourrait un un frein, notamment s’il faut mettre en place un certificat DNS pour chaque sous-domaine mais Traefik est magique, il est capable de mettre en place des certificats Let’s Encrypt tout seul comme un grand sans qu’on ait à lui demander. Le rêve.

Traefik et un réseau de base

Dans une docker-compose.yml principal (nom de projet : main), on définit le service traefik, exposant les ports 80 et 443. Il est relié au réseau middle qui permettra de relier les applications à Traefik par la suite.

Au niveau de la configuration dans le fichier traefik.toml, on lui précise principalement le nom de domaine. On peut aussi ajouter des règles manuelles pour pouvoir atteindre des ressources externes au réseau Docker.

Voici à quoi ressemblent ces 2 fichiers :

On déploie

Nous voici prêts à déployer nos applications. Pour les brancher à Traefik, il suffit de bien les attacher au réseau middle et d’ajouter les labels définissant les règles de routage.

Le réseau middle du docker-compose.yml principal se nomme main_middle et est à déclaré en external car créer en dehors du docker-compose.yml de l’application. Pour indiquer à Traefik d’utiliser ce réseau, on utilisera le label traefik.docker.network.

Exemple pour Nextcloud :

Liens utiles



Voir aussi :

Gérer les accès à plusieurs clusters kunernetes

30 octobre 2018 - docker truc&astuce k8s -

Mon utilisation de Traefik

30 octobre 2018 - docker truc&astuce article -

Construction d'image non x86 à base d'image officielle

31 décembre 2017 - docker truc&astuce -

Supprimer certaines metadonnées des images docker

21 décembre 2017 - docker truc&astuce -

Docker : comment bien diffuser son application ?

01 novembre 2016 - docker article -