Search code examples
docker-composetraefikminioportainer

Minio install behind Traefik


I had the previous version (from last yr) of minio running well behind traefik and on portainer with no issues. I attempted an upgrade 4 days ago to the new version and it's been downhill since then. I get the login page but it won't accept credentials; Error: {"code":500,"detailedMessage":"Post \"https://storage.example.com/\": dial tcp <ip>:443: i/o timeout","message":"invalid Login"} I suspect it has something to do with the TLS certificate.

Below is my compose file, I've generated the certs as required; any assistance is is welcomed:

 minio:
image: minio/minio
container_name: minio
restart: unless-stopped
command: server /data --certs-dir "./minio-data/certs" --address ":9000" --console-address ":9001"
networks:
  - traefik-proxy2
expose:
  - "9000"
  - "9001"
volumes:
  - ./minio-data:/data

environment:
  - "MINIO_ROOT_USER=love"
  - "MINIO_ROOT_PASSWORD=love1234"
  - "MINIO_BROWSER_REDIRECT_URL=https://stash.example.com"
  - "MINIO_SERVER_URL=https://storage.example.com"
labels:
  - "traefik.enable=true"
  - "traefik.http.services.minio.loadbalancer.server.port=9000"
  - "traefik.http.routers.minio.rule=Host(`storage.example.com`)"
  - "traefik.http.middlewares.minio-https-redirect.redirectscheme.scheme=https"
  - "traefik.http.routers.minio.middlewares=minio-https-redirect"
  - "traefik.http.routers.minio.entrypoints=https"
  - "traefik.http.routers.minio.service=minio"
  - "traefik.http.routers.minio.tls=true"
  - "traefik.http.routers.minio.tls.certresolver=http"
  - "traefik.http.services.minio-console.loadbalancer.server.port=9001"
  - "traefik.http.routers.minio-console.rule=Host(`stash.example.com`)"

Solution

  • I was getting the same Invalid Login error: Post "http://minio.localhost/": dial tcp: lookup minio.localhost on 127.0.0.11:53: no such host.

    The following docker-compose.yml works. The solution is NOT to use MINIO_DOMAIN or MINIO_SERVER_URL. See # comments at environment: variables.

    version: "3.3"
    
    services:
      minio:
        # Please use fixed versions :D
        image: minio/minio:RELEASE.2021-10-06T23-36-31Z
        networks:
          - traefik-proxy2
        volumes:
          - minio-data:/data
        command:
          - server
          - /data
          - --console-address
          - ":9001"
        environment:
          - MINIO_ROOT_USER=love
          - MINIO_ROOT_PASSWORD=love1234
          # Do NOT use MINIO_DOMAIN or MINIO_SERVER_URL with Traefik.
          # All Routing is done by Traefik, just tell minio where to redirect to.
          - MINIO_BROWSER_REDIRECT_URL=http://stash.localhost
        deploy:
          labels:
            - traefik.enable=true
            - traefik.docker.network=traefik-proxy2
            - traefik.constraint-label=traefik-proxy2
            - traefik.http.routers.minio.service=minio
            - traefik.http.routers.minio.rule=Host(`storage.localhost`)
            - traefik.http.services.minio.loadbalancer.server.port=9000
            - traefik.http.routers.minio-console.service=minio-console
            - traefik.http.routers.minio-console.rule=Host(`stash.localhost`)
            - traefik.http.services.minio-console.loadbalancer.server.port=9001
    
    volumes:
      minio-data:
    
    networks:
      traefik-proxy2:
        external: true