Commit a7d355
2026-03-19 16:31:01 theophile: traduction et fin d'ébauche| /dev/null .. services%20hng/traefik.md | |
| @@ 0,0 1,76 @@ | |
| + | # Traefik |
| + | |
| + | **traefik** est notre reverse-proxy et émetteur de certificats Let's Encrypt. |
| + | |
| + | ## Etiquettes (`labels`) |
| + | |
| + | Pour ajouter la gestion traefik à un container, il nous faut: |
| + | |
| + | - créer un réseau pour le service |
| + | - utiliser `expose` à la place de `ports` pour les ports ouverts du container. |
| + | - on ajouter `labels` qui lie le réseau docker, |
| + | |
| + | ```yaml |
| + | networks: |
| + | - service |
| + | expose: |
| + | - 3001 |
| + | labels: |
| + | - "traefik.enable=true" # Enable reverse-proxy for this service |
| + | - "traefik.docker.network=service" # The external docker network |
| + | - "traefik.http.routers.service.rule=Host(`service.happyngreen.fr`)" # The domain name. |
| + | - "traefik.http.routers.service.entrypoints=web" |
| + | - "traefik.http.routers.service.middlewares=redirect-to-https@docker" |
| + | - "traefik.http.routers.service-secure.rule=Host(`service.happyngreen.fr`)" |
| + | - "traefik.http.routers.service-secure.entrypoints=web-secure" |
| + | - "traefik.http.routers.service-secure.tls=true" |
| + | - "traefik.http.routers.service-secure.tls.certresolver=le" # The Let's Encrypt certificat type |
| + | - "traefik.http.routers.service-secure.service=service_name-secure" |
| + | - "traefik.http.services.service-secure.loadbalancer.server.port=3001" # The exposed port. |
| + | |
| + | ``` |
| + | |
| + | > [!IMPORTANT] |
| + | > un router **traefik** peut avoir n'importe quel nom, y compris celui de service ou du réseau. `uptime-kuma`, `docker-uptime-kuma`, etc. |
| + | |
| + | Une fois que votre `docker-compose.yml` est bon (volumes, port, network, container_name, etc), lancer le pour créer le network. |
| + | Alternativement, vous pouvez utiliser: |
| + | |
| + | ```bash |
| + | docker network create service_name |
| + | ``` |
| + | |
| + | ## Réseau → Traefik |
| + | |
| + | Pour chaque services docker compose, nous crééons un **réseau** (nommé d'après le service qui l'utilise) et nous l'ajoutons au `docker-compose.yml` de **traefik**, à deux endroits précis: |
| + | |
| + | ```yaml |
| + | networks: |
| + | # → 1er endroit |
| + | traefik: |
| + | service: |
| + | name: service # ← le nom du réseau |
| + | external: true # externe car il est créer quand on lance le container |
| + | # etc... |
| + | |
| + | services: |
| + | traefik: |
| + | # (...) |
| + | networks: |
| + | # → 2eme endroit |
| + | traefik: |
| + | service: # ← le nom du réseau |
| + | # etc... |
| + | ``` |
| + | |
| + | Ensuit, lancer la commandes suivantes pour relancer le container avec les nouveaux réseaus docker. |
| + | |
| + | ```bash |
| + | docker compose up -d |
| + | ``` |
| + | |
| + | ## Troubleshooting |
| + | |
| + | ### Retirer un certificat `le-stg` |
| + | |
| + | Les certificats Let's Encrypt sont stocker dans `$CONFIG/cert/acme.json`. Vous pouvez retirer les retirer en supprimant les lignes concerné dans la section `le-stg`. Il faut ensuite redémarrer traefik → `docker compose restart`. |