services: mail: image: mailserver/docker-mailserver:latest env_file: /var/data/docker-mailserver/docker-mailserver.env volumes: # - /var/data/docker-mailserver/maildata:/var/mail # - /var/data/docker-mailserver/mailstate:/var/mail-state # - /var/data/docker-mailserver/config:/tmp/docker-mailserver - /var/data/config/acme.json:/etc/letsencrypt/acme.json:ro ports: - target: 25 published: 25 protocol: tcp mode: host - target: 587 published: 587 protocol: tcp mode: host - target: 993 published: 993 protocol: tcp mode: host - target: 995 published: 995 protocol: tcp mode: host networks: - internal whoami: image: docker.io/traefik/whoami:latest networks: - internal - traefik-public deploy: labels: - traefik.enable=true - traefik.docker.network=traefik-public - traefik.constraint-label=traefik-public - traefik.http.routers.mailwhoami.entrypoints=https - traefik.http.routers.mailwhoami.rule=Host(`mail.${DOMAIN}`) - traefik.http.routers.mailwhoami.tls.certresolver=le - traefik.http.services.mailwhoami.loadbalancer.server.port=80 # rainloop: # image: nerzhul/rainloop-arm64 # volumes: # - /var/data/docker-mailserver/rainloop:/rainloop/data # networks: # - internal # - traefik-public # deploy: # labels: # - traefik.enable=true # - traefik.docker.network=traefik-public # - traefik.constraint-label=traefik-public # - traefik.http.routers.rainloop.entrypoints=https # - traefik.http.routers.rainloop.rule=Host(`webmail.${DOMAIN}`) # - traefik.http.routers.rainloop.tls.certresolver=le # - traefik.http.services.rainloop.loadbalancer.server.port=8888 networks: traefik-public: external: true internal: driver: overlay ipam: config: - subnet: 172.16.2.0/24