Blame
|
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 | ``` |
|||||||
