diff --git a/mailu/docker-compose.yml b/mailu/docker-compose.yml new file mode 100644 index 0000000..5892220 --- /dev/null +++ b/mailu/docker-compose.yml @@ -0,0 +1,160 @@ +version: '2.2' + +services: + + redis: + image: redis:alpine + restart: always + volumes: + - "./redis:/data" + depends_on: + - resolver + dns: + - 172.25.25.254 + + front: + image: ${DOCKER_ORG:-ghcr.io/mailu}/${DOCKER_PREFIX:-}nginx:${MAILU_VERSION:-2.0} + restart: always + env_file: mailu.env + logging: + driver: journald + options: + tag: mailu-front + ports: + - "127.0.0.1:50001:80" + - "127.0.0.1:50002:443" + - "79.137.198.179:25:25" + - "79.137.198.179:465:465" + - "79.137.198.179:587:587" + - "79.137.198.179:110:110" + - "79.137.198.179:995:995" + - "79.137.198.179:143:143" + - "79.137.198.179:993:993" + networks: + - default + - webmail + volumes: + - "/var/lib/caddy/.local/share/caddy/certificates/acme-v02.api.letsencrypt.org-directory/fruw.org:/certs" + - "./overrides/nginx:/overrides:ro" + depends_on: + - resolver + dns: + - 172.25.25.254 + + resolver: + image: ${DOCKER_ORG:-ghcr.io/mailu}/${DOCKER_PREFIX:-}unbound:${MAILU_VERSION:-2.0} + env_file: mailu.env + restart: always + networks: + default: + ipv4_address: 172.25.25.254 + + admin: + image: ${DOCKER_ORG:-ghcr.io/mailu}/${DOCKER_PREFIX:-}admin:${MAILU_VERSION:-2.0} + restart: always + env_file: mailu.env + logging: + driver: journald + options: + tag: mailu-admin + volumes: + - "./data:/data" + - "./dkim:/dkim" + depends_on: + - redis + - resolver + dns: + - 172.25.25.254 + + imap: + image: ${DOCKER_ORG:-ghcr.io/mailu}/${DOCKER_PREFIX:-}dovecot:${MAILU_VERSION:-2.0} + restart: always + env_file: mailu.env + logging: + driver: journald + options: + tag: mailu-imap + volumes: + - "./mail:/mail" + - "./overrides/dovecot:/overrides:ro" + depends_on: + - front + - resolver + dns: + - 172.25.25.254 + + smtp: + image: ${DOCKER_ORG:-ghcr.io/mailu}/${DOCKER_PREFIX:-}postfix:${MAILU_VERSION:-2.0} + restart: always + env_file: mailu.env + logging: + driver: journald + options: + tag: mailu-smtp + volumes: + - "./mailqueue:/queue" + - "./overrides/postfix:/overrides:ro" + depends_on: + - front + - resolver + dns: + - 172.25.25.254 + + oletools: + image: ${DOCKER_ORG:-ghcr.io/mailu}/${DOCKER_PREFIX:-}oletools:${MAILU_VERSION:-2.0} + hostname: oletools + restart: always + networks: + - noinet + depends_on: + - resolver + dns: + - 172.25.25.254 + + antispam: + image: ${DOCKER_ORG:-ghcr.io/mailu}/${DOCKER_PREFIX:-}rspamd:${MAILU_VERSION:-2.0} + hostname: antispam + restart: always + env_file: mailu.env + logging: + driver: journald + options: + tag: mailu-antispam + networks: + - default + - noinet + volumes: + - "./filter:/var/lib/rspamd" + - "./overrides/rspamd:/overrides:ro" + depends_on: + - front + - redis + - oletools + - resolver + dns: + - 172.25.25.254 + + webmail: + image: ${DOCKER_ORG:-ghcr.io/mailu}/${DOCKER_PREFIX:-}webmail:${MAILU_VERSION:-2.0} + restart: always + env_file: mailu.env + volumes: + - "./webmail:/data" + - "./overrides/roundcube:/overrides:ro" + networks: + - webmail + depends_on: + - front + +networks: + default: + driver: bridge + ipam: + driver: default + config: + - subnet: 172.25.25.0/24 + webmail: + driver: bridge + noinet: + driver: bridge + internal: true