Les indispensables en Lab

Voici le docker compose des indispensables en Lab et la source de l'article vBlog correspondant : https://vblog.io/kumatraefik/

services:
  # Traefik - avec Let's Encrypt
  traefik:
    image: traefik:v3
    container_name: traefik
    restart: unless-stopped
    command:
      - "--providers.docker=true"
      - "--providers.docker.exposedbydefault=false"
      - "--entrypoints.web.address=:80"
      - "--entrypoints.websecure.address=:443"
      - "--certificatesresolvers.ovh-resolver.acme.dnschallenge=true"
      - "--certificatesresolvers.ovh-resolver.acme.dnschallenge.provider=ovh"
      - "--certificatesresolvers.ovh-resolver.acme.email=${EMAIL}"
      - "--certificatesresolvers.ovh-resolver.acme.storage=/certs/acme.json"
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - "./certs:/certs"
    env_file:
      - .env
    networks:
      - traefik-net

  # Dozzle
  dozzle:
    image: amir20/dozzle:latest
    container_name: dozzle
    restart: unless-stopped
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.dozzle.rule=Host(dozzle.myvlab.ovh)"
      - "traefik.http.routers.dozzle.entrypoints=websecure"
      - "traefik.http.routers.dozzle.tls.certresolver=ovh-resolver"
      - "traefik.http.services.dozzle.loadbalancer.server.port=8080"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    environment:
      - DOZZLE_REMOTE_AGENT=hostXXXXX:7007, hostYYYYY:7007
      - TZ=Europe/Paris
    networks:
      - traefik-net

  # Uptime Kuma
  uptime-kuma:
    image: louislam/uptime-kuma:latest
    container_name: uptime-kuma
    restart: unless-stopped
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.uptime-kuma.rule=Host(uptime.myvlab.ovh)"
      - "traefik.http.routers.uptime-kuma.entrypoints=websecure"
      - "traefik.http.routers.uptime-kuma.tls.certresolver=ovh-resolver"
      - "traefik.http.services.uptime-kuma.loadbalancer.server.port=3001"
    volumes:
      - ./uptime-kuma:/app/data
    networks:
      - traefik-net

  # IT-Tools
  it-tools:
    image: corentinth/it-tools:latest
    container_name: it-tools
    restart: unless-stopped
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.it-tools.rule=Host(it-tools.myvlab.ovh)"
      - "traefik.http.routers.it-tools.entrypoints=websecure"
      - "traefik.http.routers.it-tools.tls.certresolver=ovh-resolver"
      - "traefik.http.services.it-tools.loadbalancer.server.port=80"
    networks:
      - traefik-net

  # ConvertX
  convertx:
    image: ghcr.io/c4illin/convertx
    container_name: convertx
    restart: unless-stopped
    ports:
      - "3400:3000"
    environment:
      - JWT_SECRET=xxxxxxxxx # will use randomUUID() if unset
      - HTTP_ALLOWED=true # uncomment this if accessing it over a non-https connection
    volumes:
      - ./data:/app/data
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.convertx.rule=Host(convertx.myvlab.ovh)"
      - "traefik.http.routers.convertx.entrypoints=websecure"
      - "traefik.http.routers.convertx.tls.certresolver=ovh-resolver"
      - "traefik.http.services.convertx.loadbalancer.server.port=80"
    networks:
      - traefik-net

networks:
  traefik-net:
    external: false

Le fichier .env du docker-compose :

# OVH API
OVH_ENDPOINT=ovh-eu
OVH_APPLICATION_KEY=xxxxxxxxxxxxx
OVH_APPLICATION_SECRET=xxxxxxxxxxxxx
OVH_CONSUMER_KEY=xxxxxxxxxxxxx

# Email pour Let's Encrypt
EMAIL=cedric@vblog.io
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9