computer-playbook/roles/docker-mailu/templates/docker-compose.yml.j2

234 lines
4.6 KiB
Django/Jinja

version: '2.2'
services:
{% include 'templates/docker-redis-service.yml.j2' %}
env_file: mailu.env
depends_on:
- resolver
dns:
- 192.168.203.254
depends_on:
- resolver
dns:
- 192.168.203.254
networks:
- default
- webmail
- radicale
# Core services
resolver:
image: ghcr.io/mailu/unbound:{{version_mailu}}
env_file: mailu.env
restart: always
networks:
default:
ipv4_address: 192.168.203.254
logging:
driver: journald
front:
image: ghcr.io/mailu/nginx:{{version_mailu}}
restart: always
env_file: mailu.env
logging:
driver: journald
ports:
- "127.0.0.1:{{ http_port }}:80"
- "{{ ip4_address }}:25:25"
- "{{ ip4_address }}:465:465"
- "{{ ip4_address }}:{{system_email_smtp_port}}:{{system_email_smtp_port}}"
- "{{ ip4_address }}:110:110"
- "{{ ip4_address }}:995:995"
- "{{ ip4_address }}:143:143"
- "{{ ip4_address }}:993:993"
volumes:
- "/etc/mailu/overrides/nginx:/overrides:ro"
- "/etc/mailu/certs:/certs"
depends_on:
resolver:
condition: service_started
{% if not ( enable_central_database | lower | bool ) %}
database:
condition: service_healthy
{% endif %}
networks:
- default
- webmail
- radicale
dns:
- 192.168.203.254
admin:
image: ghcr.io/mailu/admin:{{version_mailu}}
restart: always
env_file: mailu.env
volumes:
- "admin_data:/data"
- "dkim:/dkim"
depends_on:
- resolver
- front
- redis
{% if not ( enable_central_database | lower | bool ) %}
- database
{% endif %}
logging:
driver: journald
dns:
- 192.168.203.254
imap:
image: ghcr.io/mailu/dovecot:{{version_mailu}}
restart: always
env_file: mailu.env
volumes:
- "dovecot_mail:/mail"
- "/etc/mailu/overrides:/overrides:ro"
depends_on:
- front
- resolver
dns:
- 192.168.203.254
logging:
driver: journald
smtp:
image: ghcr.io/mailu/postfix:{{version_mailu}}
restart: always
env_file: mailu.env
volumes:
- "/etc/mailu/overrides:/overrides:ro"
- "smtp_queue:/queue"
depends_on:
- front
- resolver
dns:
- 192.168.203.254
logging:
driver: journald
oletools:
image: ghcr.io/mailu/oletools:{{version_mailu}}
hostname: oletools
restart: always
depends_on:
- resolver
dns:
- 192.168.203.254
networks:
- noinet
antispam:
image: ghcr.io/mailu/rspamd:{{version_mailu}}
restart: always
env_file: mailu.env
volumes:
- "filter:/var/lib/rspamd"
- "dkim:/dkim"
- "/etc/mailu/overrides/rspamd:/overrides:ro"
depends_on:
- front
- redis
- antivirus
- resolver
dns:
- 192.168.203.254
networks:
- default
- noinet
logging:
driver: journald
# Optional services
antivirus:
image: ghcr.io/mailu/clamav:{{version_mailu}}
restart: always
env_file: mailu.env
volumes:
- "filter:/data"
depends_on:
- resolver
dns:
- 192.168.203.254
logging:
driver: journald
webdav:
image: ghcr.io/mailu/radicale:{{version_mailu}}
restart: always
env_file: mailu.env
volumes:
- "webdav_data:/data"
logging:
driver: journald
networks:
- radicale
depends_on:
- resolver
dns:
- 192.168.203.254
fetchmail:
image: ghcr.io/mailu/fetchmail:{{version_mailu}}
volumes:
- "admin_data:/data"
restart: always
env_file: mailu.env
logging:
driver: journald
depends_on:
- admin
- smtp
- imap
- resolver
dns:
- 192.168.203.254
webmail:
image: ghcr.io/mailu/webmail:{{version_mailu}}
restart: always
env_file: mailu.env
volumes:
- "webmail_data:/data"
- "/etc/mailu/overrides:/overrides:ro"
depends_on:
- imap
- front
- resolver
logging:
driver: journald
networks:
- webmail
dns:
- 192.168.203.254
{% if not ( enable_central_database | lower | bool ) %}
{% include 'templates/docker-postgres-service.yml.j2' %}
{% endif %}
volumes:
{% if not ( enable_central_database | lower | bool ) %}
database:
{% endif %}
smtp_queue:
admin_data:
webdav_data:
webmail_data:
filter:
dkim:
dovecot_mail:
redis:
networks:
default:
driver: bridge
ipam:
driver: default
config:
- subnet: {{mailu_subnet}}
radicale:
driver: bridge
webmail:
driver: bridge
noinet:
driver: bridge
internal: true