Blame
| 73a488 | Cédric | 2025-12-26 13:19:54 | 1 | # Les indispensables en Lab |
| 2 | ||||
| 3 | Voici le docker compose des indispensables en Lab et la source de l'article vBlog correspondant : |
|||
| 4 | https://vblog.io/kumatraefik/ |
|||
| 5 | ||||
| 6 | ```shell |
|||
| 7 | services: |
|||
| 8 | # Traefik - avec Let's Encrypt |
|||
| 9 | traefik: |
|||
| 10 | image: traefik:v3 |
|||
| 11 | container_name: traefik |
|||
| 12 | restart: unless-stopped |
|||
| 13 | command: |
|||
| 14 | - "--providers.docker=true" |
|||
| 15 | - "--providers.docker.exposedbydefault=false" |
|||
| 16 | - "--entrypoints.web.address=:80" |
|||
| 17 | - "--entrypoints.websecure.address=:443" |
|||
| 18 | - "--certificatesresolvers.ovh-resolver.acme.dnschallenge=true" |
|||
| 19 | - "--certificatesresolvers.ovh-resolver.acme.dnschallenge.provider=ovh" |
|||
| 20 | - "--certificatesresolvers.ovh-resolver.acme.email=${EMAIL}" |
|||
| 21 | - "--certificatesresolvers.ovh-resolver.acme.storage=/certs/acme.json" |
|||
| 22 | ports: |
|||
| 23 | - "80:80" |
|||
| 24 | - "443:443" |
|||
| 25 | volumes: |
|||
| 26 | - /var/run/docker.sock:/var/run/docker.sock:ro |
|||
| 27 | - "./certs:/certs" |
|||
| 28 | env_file: |
|||
| 29 | - .env |
|||
| 30 | networks: |
|||
| 31 | - traefik-net |
|||
| 32 | ||||
| 33 | # Dozzle |
|||
| 34 | dozzle: |
|||
| 35 | image: amir20/dozzle:latest |
|||
| 36 | container_name: dozzle |
|||
| 37 | restart: unless-stopped |
|||
| 38 | labels: |
|||
| 39 | - "traefik.enable=true" |
|||
| 40 | - "traefik.http.routers.dozzle.rule=Host(dozzle.myvlab.ovh)" |
|||
| 41 | - "traefik.http.routers.dozzle.entrypoints=websecure" |
|||
| 42 | - "traefik.http.routers.dozzle.tls.certresolver=ovh-resolver" |
|||
| 43 | - "traefik.http.services.dozzle.loadbalancer.server.port=8080" |
|||
| 44 | volumes: |
|||
| 45 | - /var/run/docker.sock:/var/run/docker.sock |
|||
| 46 | environment: |
|||
| 47 | - DOZZLE_REMOTE_AGENT=hostXXXXX:7007, hostYYYYY:7007 |
|||
| 48 | - TZ=Europe/Paris |
|||
| 49 | networks: |
|||
| 50 | - traefik-net |
|||
| 51 | ||||
| 52 | # Uptime Kuma |
|||
| 53 | uptime-kuma: |
|||
| 54 | image: louislam/uptime-kuma:latest |
|||
| 55 | container_name: uptime-kuma |
|||
| 56 | restart: unless-stopped |
|||
| 57 | labels: |
|||
| 58 | - "traefik.enable=true" |
|||
| 59 | - "traefik.http.routers.uptime-kuma.rule=Host(uptime.myvlab.ovh)" |
|||
| 60 | - "traefik.http.routers.uptime-kuma.entrypoints=websecure" |
|||
| 61 | - "traefik.http.routers.uptime-kuma.tls.certresolver=ovh-resolver" |
|||
| 62 | - "traefik.http.services.uptime-kuma.loadbalancer.server.port=3001" |
|||
| 63 | volumes: |
|||
| 64 | - ./uptime-kuma:/app/data |
|||
| 65 | networks: |
|||
| 66 | - traefik-net |
|||
| 67 | ||||
| 68 | # IT-Tools |
|||
| 69 | it-tools: |
|||
| 70 | image: corentinth/it-tools:latest |
|||
| 71 | container_name: it-tools |
|||
| 72 | restart: unless-stopped |
|||
| 73 | labels: |
|||
| 74 | - "traefik.enable=true" |
|||
| 75 | - "traefik.http.routers.it-tools.rule=Host(it-tools.myvlab.ovh)" |
|||
| 76 | - "traefik.http.routers.it-tools.entrypoints=websecure" |
|||
| 77 | - "traefik.http.routers.it-tools.tls.certresolver=ovh-resolver" |
|||
| 78 | - "traefik.http.services.it-tools.loadbalancer.server.port=80" |
|||
| 79 | networks: |
|||
| 80 | - traefik-net |
|||
| 81 | ||||
| 82 | # ConvertX |
|||
| 83 | convertx: |
|||
| 84 | image: ghcr.io/c4illin/convertx |
|||
| 85 | container_name: convertx |
|||
| 86 | restart: unless-stopped |
|||
| 87 | ports: |
|||
| 88 | - "3400:3000" |
|||
| 89 | environment: |
|||
| 90 | - JWT_SECRET=xxxxxxxxx # will use randomUUID() if unset |
|||
| 91 | - HTTP_ALLOWED=true # uncomment this if accessing it over a non-https connection |
|||
| 92 | volumes: |
|||
| 93 | - ./data:/app/data |
|||
| 94 | labels: |
|||
| 95 | - "traefik.enable=true" |
|||
| 96 | - "traefik.http.routers.convertx.rule=Host(convertx.myvlab.ovh)" |
|||
| 97 | - "traefik.http.routers.convertx.entrypoints=websecure" |
|||
| 98 | - "traefik.http.routers.convertx.tls.certresolver=ovh-resolver" |
|||
| 99 | - "traefik.http.services.convertx.loadbalancer.server.port=80" |
|||
| 100 | networks: |
|||
| 101 | - traefik-net |
|||
| 102 | ||||
| 103 | networks: |
|||
| 104 | traefik-net: |
|||
| 105 | external: false |
|||
| 106 | ``` |
|||
| 107 | ||||
| 108 | Le fichier .env du docker-compose : |
|||
| 109 | ```text |
|||
| 110 | # OVH API |
|||
| 111 | OVH_ENDPOINT=ovh-eu |
|||
| 112 | OVH_APPLICATION_KEY=xxxxxxxxxxxxx |
|||
| 113 | OVH_APPLICATION_SECRET=xxxxxxxxxxxxx |
|||
| 114 | OVH_CONSUMER_KEY=xxxxxxxxxxxxx |
|||
| 115 | ||||
| 116 | # Email pour Let's Encrypt |
|||
| 117 | EMAIL=cedric@vblog.io |
|||
| 118 | ``` |
