services: redis: image: redis:alpine deploy: replicas: 1 restart_policy: condition: any placement: constraints: - node.role == manager labels: wud.watch: "true" wud.watch.digest: "true" volumes: - redis_data:/data networks: - default dns: - 192.168.203.254 resolver: image: ${DOCKER_ORG:-ghcr.io/mailu}/${DOCKER_PREFIX:-}unbound:${MAILU_VERSION:-2024.06} env_file: stack.env deploy: replicas: 1 restart_policy: condition: any labels: wud.watch: "true" wud.watch.digest: "true" networks: default: ipv4_address: 192.168.203.254 front: image: ${DOCKER_ORG:-ghcr.io/mailu}/${DOCKER_PREFIX:-}nginx:${MAILU_VERSION:-2024.06} env_file: stack.env deploy: replicas: 1 restart_policy: condition: any labels: wud.watch: "true" wud.watch.digest: "true" homepage.container: mailu3-front-1 homepage.description: eMail server homepage.group: Utilities homepage.href: https://mail.sectorq.eu homepage.icon: ${APPNAME}.png homepage.name: Mailu homepage.server: my-docker-swarm homepage.weight: "1" placement: constraints: - node.role == manager networks: - default - webmail - radicale ports: - target: 80 published: 8880 protocol: tcp mode: ingress - target: 443 published: 8443 protocol: tcp mode: ingress - target: 25 published: 25 protocol: tcp mode: ingress - target: 465 published: 465 protocol: tcp mode: ingress - target: 587 published: 587 protocol: tcp mode: ingress - target: 110 published: 110 protocol: tcp mode: ingress - target: 995 published: 995 protocol: tcp mode: ingress - target: 143 published: 143 protocol: tcp mode: ingress - target: 993 published: 993 protocol: tcp mode: ingress - target: 4190 published: 4190 protocol: tcp mode: ingress volumes: - certs_data:/certs - nginx_overrides:/overrides:ro dns: - 192.168.203.254 depends_on: - resolver admin: image: ${DOCKER_ORG:-ghcr.io/mailu}/${DOCKER_PREFIX:-}admin:${MAILU_VERSION:-2024.06} env_file: stack.env deploy: replicas: 1 restart_policy: condition: any labels: wud.watch: "true" wud.watch.digest: "true" placement: constraints: - node.role == manager volumes: - admin_data:/data - admin_dkim:/dkim depends_on: - redis - resolver dns: - 192.168.203.254 networks: - default imap: image: ${DOCKER_ORG:-ghcr.io/mailu}/${DOCKER_PREFIX:-}dovecot:${MAILU_VERSION:-2024.06} env_file: stack.env deploy: replicas: 1 restart_policy: condition: any labels: wud.watch: "true" wud.watch.digest: "true" placement: constraints: - node.role == manager volumes: - mail_data:/mail - dovecot_overrides:/overrides:ro networks: - default depends_on: - front - resolver dns: - 192.168.203.254 smtp: image: ${DOCKER_ORG:-ghcr.io/mailu}/${DOCKER_PREFIX:-}postfix:${MAILU_VERSION:-2024.06} env_file: stack.env deploy: replicas: 1 restart_policy: condition: any labels: wud.watch: "true" wud.watch.digest: "true" placement: constraints: - node.role == manager volumes: - mailqueue_data:/queue - postfix_overrides:/overrides:ro networks: - default depends_on: - front - resolver dns: - 192.168.203.254 oletools: image: ${DOCKER_ORG:-ghcr.io/mailu}/${DOCKER_PREFIX:-}oletools:${MAILU_VERSION:-2024.06} hostname: oletools deploy: replicas: 1 restart_policy: condition: any labels: wud.watch: "true" wud.watch.digest: "true" placement: constraints: - node.role == manager networks: - oletools depends_on: - resolver dns: - 192.168.203.254 antispam: image: ${DOCKER_ORG:-ghcr.io/mailu}/${DOCKER_PREFIX:-}rspamd:${MAILU_VERSION:-2024.06} hostname: antispam env_file: stack.env deploy: replicas: 1 restart_policy: condition: any labels: wud.watch: "true" wud.watch.digest: "true" placement: constraints: - node.role == manager volumes: - filter_data:/var/lib/rspamd - rspamd_overrides:/overrides:ro networks: - default - oletools depends_on: - front - redis - oletools - resolver dns: - 192.168.203.254 networks: default: driver: overlay ipam: driver: default config: - subnet: 192.168.203.0/24 oletools: driver: overlay internal: true webmail: driver: overlay radicale: driver: overlay volumes: redis_data: admin_data: admin_dkim: mail_data: dovecot_overrides: mailqueue_data: postfix_overrides: filter_data: rspamd_overrides: certs_data: nginx_overrides: