version: '3' services: traefik: image: traefik restart: unless-stopped ports: - "80:80" - "443:443" volumes: #- /var/run/docker.sock:/var/run/docker.sock - "////./pipe/docker_engine:/var/run/docker.sock" - ./traefik.yml:/etc/traefik/traefik.yml - ./authorized_users:/etc/traefik/authorized_users - ./acme.json:/acme.json labels: - "traefik.enable=true" - "traefik.http.routers.dashboard-http.entrypoints=http" - "traefik.http.routers.dashboard-http.rule=Host(`localhost/`)" - "traefik.http.routers.dashboard-http.middlewares=dashboard-redirect" - "traefik.http.middlewares.dashboard-redirect.redirectscheme.scheme=https" - "traefik.http.routers.dashboard-https.entrypoints=https" - "traefik.http.routers.dashboard-https.rule=(Host(`localhost/`)) && (PathPrefix(`/api`) || PathPrefix(`/dashboard`))" - "traefik.http.routers.dashboard-https.tls.certResolver=letsencrypt" - "traefik.http.routers.dashboard-https.service=api@internal" - "traefik.http.routers.dashboard-https.middlewares=dashboard-auth" - "traefik.http.middlewares.dashboard-auth.basicauth.usersfile=/etc/traefik/authorized_users" command: # Enable Docker in Traefik, so that it reads labels from Docker services - --providers.docker # Add a constraint to only use services with the label "traefik.constraint-label=traefik-public" #- --providers.docker.constraints=Label(`traefik.constraint-label`, `traefik-public`) # Do not expose all Docker services, only the ones explicitly exposed #- --providers.docker.exposedbydefault=false # Enable Docker Swarm mode - --providers.docker.swarmmode # Create an entrypoint "http" listening on port 80 - --entrypoints.http.address=:80 # Create an entrypoint "https" listening on port 443 - --entrypoints.https.address=:443 # Create the certificate resolver "le" for Let's Encrypt, uses the environment variable EMAIL #- --certificatesresolvers.le.acme.email='cboivin@secure-exchanges.com'#$EMAIL # Store the Let's Encrypt certificates in the mounted volume #- --certificatesresolvers.le.acme.storage=/certificates/acme.json # Use the TLS Challenge for Let's Encrypt #- --certificatesresolvers.le.acme.tlschallenge=true # Enable the access log, with HTTP requests - --accesslog # Enable the Traefik log, for configurations and errors - --log # Enable the Dashboard and API - --api.insecure=true # Docker engine - --providers.docker.endpoint=npipe:////./pipe/docker_engine ollama: image: ollama/ollama restart: unless-stopped container_name: ollama ports: - '11434:11434' volumes: - './ollama:/root/.ollama' ollama-webui: image: 'ghcr.io/ollama-webui/ollama-webui:main' restart: unless-stopped container_name: ollama-webui volumes: - './ollama-webui:/app/backend/data' depends_on: - ollama ports: - 80:8080 environment: - './ollama/api=http://ollama:11434/api' extra_hosts: - host.docker.internal:host-gateway labels: - "traefik.enable=true" - "traefik.http.routers.ollama-webui-http.entrypoints=http" - "traefik.http.routers.ollama-webui-http.rule=Host(`ollama.localhost/`)" - "traefik.http.routers.ollama-webui-http.middlewares=ollama-webui-redirect" - "traefik.http.middlewares.ollama-webui-redirect.redirectscheme.scheme=https" - "traefik.http.routers.ollama-webui-https.entrypoints=https" - "traefik.http.routers.ollama-webui-https.rule=Host(`ollama.localhost/`)" - "traefik.http.routers.ollama-webui-https.tls.certResolver=letsencrypt" - "traefik.http.routers.ollama-webui-https.service=ollama-webui" - "traefik.http.routers.ollama-webui-https.middlewares=ollama-webui-auth" - "traefik.http.middlewares.ollama-webui-auth.basicauth.usersfile=/etc/traefik/authorized_users" minecraft: image: 'itzg/minecraft-server' restart: unless-stopped stdin_open: true tty: true ports: - "25565:25565" volumes: - "./mc:/data" - "./mods:/mods:ro" environment: EULA: "TRUE" TYPE: "FORGE" ENABLE_AUTOPAUSE: "TRUE" OVERRIDE_SERVER_PROPERTIES: "TRUE" MAX_TICK_TIME: "-1" AUTOPAUSE_TIMEOUT_INIT: "30" AUTOPAUSE_TIMEOUT_EST: "10"