mailserver/deploy/roles/mailserver/templates/docker-compose.yml.j2

257 lines
6.3 KiB
Plaintext
Raw Normal View History

2018-11-21 01:12:52 +00:00
version: '3'
services:
smtp:
container_name: smtp
build: ./smtp
restart: always
depends_on:
- imap
- db
ports:
- '25:25'
- '587:587'
links:
- imap:imap
- db:db
- spam:spam
- mailman-core:mailman-core
2018-11-21 01:12:52 +00:00
volumes:
2018-11-26 21:31:51 +00:00
- {{ docker_data_folder }}/mailserver/mailman/core:/mailman
- {{ docker_data_folder }}/mailserver/mails:/home/vmail
2018-11-26 21:31:51 +00:00
- /dev/log:/dev/log
2018-11-21 01:12:52 +00:00
- certs:/certs
2018-11-21 04:55:19 +00:00
environment:
- DATABASE_USER=mail
- DATABASE_PASSWORD={{ DB_PASSWORD }}
- DATABASE_NAME=postfix
- MYORIGIN={{ DOMAIN }}
- MYHOSTNAME=mail.{{ DOMAIN }}
2018-11-21 01:12:52 +00:00
labels:
- "traefik.enable=false"
networks:
2018-12-28 21:03:40 +00:00
default:
aliases:
- smtp
2018-11-21 01:12:52 +00:00
imap:
container_name: imap
build: ./imap
restart: always
depends_on:
- extractor
- db
ports:
- '993:993'
- '4190:4190'
expose:
- '24'
- '8472'
2018-11-26 21:31:51 +00:00
- '993'
2018-11-21 01:12:52 +00:00
links:
- db
- spam
volumes:
- {{ docker_data_folder }}/mailserver/mails:/home/vmail
2018-11-21 01:12:52 +00:00
- certs:/certs
2018-11-21 04:55:19 +00:00
environment:
- "DATABASE_USER=mail"
- "DATABASE_PASSWORD={{ DB_PASSWORD }}"
- "DATABASE_NAME=postfix"
- "MAILDOMAIN=mail.{{ DOMAIN }}"
2018-11-21 01:12:52 +00:00
labels:
- "traefik.enable=false"
spam:
container_name: spam
build: ./spam
restart: always
expose:
- 11334
- 11332
2018-11-21 01:12:52 +00:00
volumes:
- {{ docker_data_folder }}/mailserver/rspamd/:/var/lib/rspamd
2019-04-12 16:33:27 +00:00
- {{ docker_data_folder }}/mailserver/rspamd_conf/:/etc/rspamd/local.d
2018-11-21 01:12:52 +00:00
- /etc/localtime:/etc/localtime:ro
2018-11-21 04:55:19 +00:00
environment:
- PASSWORD={{ WEB_PASSWORD }}
- PORT=11334
2018-11-21 01:12:52 +00:00
labels:
2018-11-21 04:55:19 +00:00
- "traefik.frontend.rule=Host:spam.{{ DOMAIN }}"
2018-11-21 01:12:52 +00:00
- "traefik.port=11334"
webmail:
container_name: webmail
image: roundcube/roundcubemail:latest-apache
depends_on:
- smtp
- imap
- db
restart: always
links:
- imap:imap
- smtp:smtp
2018-11-21 04:55:19 +00:00
environment:
2018-11-26 21:31:51 +00:00
ROUNDCUBEMAIL_DEFAULT_HOST: "ssl://imap"
ROUNDCUBEMAIL_DEFAULT_PORT: "993"
ROUNDCUBEMAIL_SMTP_SERVER: "tls://smtp"
ROUNDCUBEMAIL_SMTP_PORT: 587
2018-11-21 04:55:19 +00:00
ROUNDCUBEMAIL_PLUGINS: archive,zipdownload,managesieve,password
ROUNDCUBEMAIL_UPLOAD_MAX_FILESIZE: 100M
ROUNDCUBEMAIL_DB_TYPE: mysql
ROUNDCUBEMAIL_DB_HOST: db
ROUNDCUBEMAIL_DB_USER: mail
ROUNDCUBEMAIL_DB_PASSWORD: {{ DB_PASSWORD }}
2018-11-26 21:31:51 +00:00
ROUNDCUBEMAIL_DB_NAME: roundcube
volumes:
- ./webmail/config.inc.php:/var/roundcube/config/config.inc.php
2018-11-21 01:12:52 +00:00
labels:
2018-11-21 04:55:19 +00:00
- "traefik.frontend.rule=Host:mail.{{ DOMAIN }}"
2018-11-21 01:12:52 +00:00
- "traefik.port=80"
admin:
container_name: admin
links:
- db:db
depends_on:
- db
2018-12-28 21:03:40 +00:00
image: hardware/postfixadmin
2018-11-21 01:12:52 +00:00
expose:
- "8888"
restart: always
2018-11-21 04:55:19 +00:00
environment:
DBTYPPE: mysql
DBHOST: db
DBUSER: mail
DBNAME: postfix
DBPASS: {{ DB_PASSWORD }}
SMTPHOST: smtp
DOMAIN: {{ DOMAIN }}
2019-01-07 06:50:57 +00:00
ENCRYPTION: "dovecot:MD5-CRYPT"
2018-11-21 01:12:52 +00:00
labels:
2018-11-21 04:55:19 +00:00
- "traefik.frontend.rule=Host:admin.{{ DOMAIN }}"
2018-11-21 01:12:52 +00:00
- "traefik.port=8888"
db:
container_name: mariadb
2018-12-28 21:03:40 +00:00
image: mariadb:latest
2018-11-21 01:12:52 +00:00
restart: always
2018-11-21 04:55:19 +00:00
environment:
MYSQL_ROOT_PASSWORD: {{ DB_ROOT_PASSWORD }}
2018-11-26 21:31:51 +00:00
MYSQL_DATABASES: "postfix mailman roundcube"
2018-11-21 04:55:19 +00:00
MYSQL_USER: mail
MYSQL_PASSWORD: {{ DB_PASSWORD }}
2018-11-21 01:12:52 +00:00
volumes:
2018-11-26 21:31:51 +00:00
- {{ docker_data_folder }}/mailserver/db:/var/lib/mysql
- ./db/docker-entrypoint.sh:/docker-entrypoint.sh
#- {{ docker_project_folder }}/mailserver/db:/docker-entrypoint-initdb.d
2018-11-21 01:12:52 +00:00
labels:
- "traefik.enable=false"
mailman-core:
image: maxking/mailman-core:latest
container_name: mailman-core
hostname: mailman-core
restart: always
2018-11-21 01:12:52 +00:00
volumes:
2018-11-21 04:55:19 +00:00
- {{ docker_data_folder }}/mailserver/mailman/core:/opt/mailman/
#- ./mailman/mailman-extra.cfg:/opt/mailman/core/mailman-extra.cfg
expose:
- 8024
- 8001
2018-11-21 01:12:52 +00:00
links:
2018-11-21 04:55:19 +00:00
- db:db
2018-11-21 01:12:52 +00:00
depends_on:
- db
2018-11-21 04:55:19 +00:00
environment:
- DATABASE_URL=mysql://mail:{{ DB_PASSWORD }}@db/mailman
- DATABASE_TYPE=mysql
- DATABASE_CLASS=mailman.database.mysql.MySQLDatabase
- HYPERKITTY_API_KEY=someapikey
2018-11-26 21:31:51 +00:00
- MM_HOSTNAME=mailman-core
- SMTP_PORT=587
- SMTP_HOST=smtp
- MTA=postfix
2018-11-21 01:12:52 +00:00
labels:
- "traefik.enable=false"
mailman-web:
image: maxking/mailman-web:latest
container_name: mailman-web
hostname: mailman-web
restart: always
2018-11-21 01:12:52 +00:00
expose:
- 8000
- 8080
depends_on:
- db
links:
- mailman-core:mailman-core
- db:db
2018-11-28 14:21:35 +00:00
- smtp:smtp
2018-11-21 01:12:52 +00:00
volumes:
- ./mailman/settings_local.py:/opt/mailman/web/settings_local.py
2018-11-21 04:55:19 +00:00
- {{ docker_data_folder }}/mailserver/mailman/web:/opt/mailman-web-data
environment:
- DATABASE_URL=mysql://mail:{{ DB_PASSWORD }}@db/mailman
- DATABASE_TYPE=mysql
- HYPERKITTY_API_KEY=someapikey
- SECRET_KEY={{ WEB_PASSWORD }}
- DYLD_LIBRARY_PATH=/usr/local/mysql/lib/
- SERVE_FROM_DOMAIN=lists.{{ DOMAIN }}
- DJANGO_ALLOWED_HOSTS=mailman.{{ DOMAIN }}
- MAILMAN_ADMIN_USER=admin
- MAILMAN_ADMIN_EMAIL=a3x@eris.cc
2018-11-28 14:21:35 +00:00
- SMTP_PORT=587
- SMTP_HOST=smtp
2018-11-21 04:55:19 +00:00
- UWSGI_STATIC_MAP=/static=/opt/mailman-web-data/static
2018-11-21 01:12:52 +00:00
labels:
- "traefik.enable=false"
nginx:
container_name: nginx
image: nginx:mainline
restart: always
expose:
- 80
links:
- mailman-web:mailman-web
volumes:
- ./nginx/:/etc/nginx/conf.d/
2018-11-21 04:55:19 +00:00
- {{ docker_data_folder }}/mailserver/mailman/web:/opt/mailman/
2018-11-21 01:12:52 +00:00
labels:
2018-11-21 04:55:19 +00:00
- "traefik.frontend.rule=Host:mailman.{{ DOMAIN }}"
2018-11-21 01:12:52 +00:00
- "traefik.port=80"
traefik:
container_name: traefik
2018-12-28 21:03:40 +00:00
image: traefik:alpine
2018-11-21 01:12:52 +00:00
command: --api --docker # Enables the web UI and tells Traefik to listen to docker
restart: always
ports:
2018-11-21 04:55:19 +00:00
- "80:80"
2018-11-21 01:12:52 +00:00
- "443:443"
2018-11-21 04:55:19 +00:00
- "8080:8080"
2018-11-21 01:12:52 +00:00
volumes:
2018-11-21 04:55:19 +00:00
- /var/run/docker.sock:/var/run/docker.sock
2018-11-21 01:12:52 +00:00
- ./traefik/:/etc/traefik
labels:
2018-11-21 04:55:19 +00:00
- "traefik.frontend.rule=Host:traefik.{{ DOMAIN }}"
2018-11-21 01:12:52 +00:00
extractor:
container_name: extractor
image: danielhuisman/traefik-certificate-extractor
volumes:
- ./traefik:/app/data
2018-11-21 01:12:52 +00:00
- certs:/app/certs_flat
labels:
- "traefik.enable=false"
2018-12-28 21:03:40 +00:00
networks:
default:
2018-11-21 01:12:52 +00:00
volumes:
certs:
spam: