ansible/roles/docker/tasks/services/mailu.yml

182 lines
5.4 KiB
YAML
Raw Normal View History

# vim: ft=yaml.ansible
2019-03-02 22:05:00 +00:00
---
- name: create mailu volume folders
file:
name: "{{ services.mailu.volume_folder }}/{{ volume }}"
2019-03-02 22:05:00 +00:00
state: directory
loop:
- redis
- certs
- data
- dkim
- mail
2022-12-27 17:32:27 +00:00
- mailqueue
2019-03-02 22:05:00 +00:00
- filter
2022-12-26 19:37:49 +00:00
- postgres
2019-03-02 22:05:00 +00:00
- webmail
2022-12-26 19:37:49 +00:00
- overrides
- overrides/nginx
- overrides/dovecot
- overrides/postfix
- overrides/rspamd
- overrides/rainloop
2019-03-02 22:05:00 +00:00
loop_control:
loop_var: volume
- name: upload mailu.env file
template:
src: mailu.env.j2
2023-03-29 16:27:24 +00:00
dest: "{{ services.mailu.volume_folder }}/mailu.env"
2019-03-02 22:05:00 +00:00
2019-03-05 14:10:15 +00:00
- name: hard link to Let's Encrypt TLS certificate
file:
src: "{{ services.nginx_proxy.volume_folder }}/certs/{{ services.mailu.domain }}/fullchain.pem"
dest: "{{ services.mailu.volume_folder }}/certs/cert.pem"
2019-03-05 14:10:15 +00:00
state: hard
force: yes
when: letsencrypt_enabled
2019-03-05 14:10:15 +00:00
- name: hard link to Let's Encrypt TLS key
file:
src: "{{ services.nginx_proxy.volume_folder }}/certs/{{ services.mailu.domain }}/key.pem"
dest: "{{ services.mailu.volume_folder }}/certs/key.pem"
2019-03-05 14:10:15 +00:00
state: hard
force: yes
when: letsencrypt_enabled
2019-03-05 14:10:15 +00:00
- name: run mail server containers
docker_compose:
project_name: mail_server
pull: yes
definition:
version: '3.6'
services:
2022-12-26 19:37:49 +00:00
postgres:
image: postgres:14-alpine
restart: always
2022-12-26 19:37:49 +00:00
environment:
POSTGRES_DB: mailu
POSTGRES_USER: mailu
POSTGRES_PASSWORD: "{{ postgres_passwords.mailu }}"
volumes:
2022-12-26 19:37:49 +00:00
- "{{ services.mailu.volume_folder }}/postgres:/var/lib/postgresql/data"
dns:
- "{{ services.mailu.dns }}"
2022-12-26 19:37:49 +00:00
redis:
image: redis:alpine
restart: always
volumes:
2022-12-26 19:37:49 +00:00
- "{{ services.mailu.volume_folder }}/redis:/data"
depends_on:
- resolver
dns:
- "{{ services.mailu.dns }}"
2019-03-02 22:05:00 +00:00
front:
image: mailu/nginx:{{ services.mailu.version }}
restart: always
2023-03-29 16:27:24 +00:00
env_file: "{{ services.mailu.volume_folder }}/mailu.env"
environment:
VIRTUAL_HOST: "{{ services.mailu.domain }}"
LETSENCRYPT_HOST: "{{ services.mailu.domain }}"
LETSENCRYPT_EMAIL: "{{ letsencrypt_email }}"
volumes:
- "{{ services.mailu.volume_folder }}/certs:/certs"
2022-12-26 19:37:49 +00:00
- "{{ services.mailu.volume_folder }}/overrides/nginx:/overrides:ro"
expose:
- "80"
ports:
- "993:993"
- "25:25"
- "587:587"
2019-11-19 10:10:05 +00:00
- "465:465"
networks:
- default
- external_services
2019-03-02 22:05:00 +00:00
resolver:
image: mailu/unbound:{{ services.mailu.version }}
restart: always
2023-03-29 16:27:24 +00:00
env_file: "{{ services.mailu.volume_folder }}/mailu.env"
networks:
default:
ipv4_address: "{{ services.mailu.dns }}"
2019-03-02 22:05:00 +00:00
admin:
image: mailu/admin:{{ services.mailu.version }}
restart: always
env_file: "{{ services.mailu.volume_folder}}/mailu.env"
volumes:
- "{{ services.mailu.volume_folder }}/data:/data"
- "{{ services.mailu.volume_folder }}/dkim:/dkim"
depends_on:
- redis
2022-12-26 19:37:49 +00:00
- resolver
dns:
- "{{ services.mailu.dns }}"
2019-03-02 22:05:00 +00:00
imap:
image: mailu/dovecot:{{ services.mailu.version }}
restart: always
2023-03-29 16:27:24 +00:00
env_file: "{{ services.mailu.volume_folder }}/mailu.env"
volumes:
- "{{ services.mailu.volume_folder }}/mail:/mail"
2022-12-26 19:37:49 +00:00
- "{{ services.mailu.volume_folder }}/overrides/dovecot:/overrides:ro"
depends_on:
- front
2022-12-26 19:37:49 +00:00
- resolver
dns:
- "{{ services.mailu.dns }}"
2019-03-02 22:05:00 +00:00
smtp:
image: mailu/postfix:{{ services.mailu.version }}
restart: always
2023-03-29 16:27:24 +00:00
env_file: "{{ services.mailu.volume_folder }}/mailu.env"
volumes:
2022-12-26 19:37:49 +00:00
- "{{ services.mailu.volume_folder }}/mailqueue:/queue"
- "{{ services.mailu.volume_folder }}/overrides/postfix:/overrides:ro"
depends_on:
- front
- resolver
dns:
- "{{ services.mailu.dns }}"
2019-03-02 22:05:00 +00:00
antispam:
image: mailu/rspamd:{{ services.mailu.version }}
2022-12-26 19:37:49 +00:00
hostname: antispam
restart: always
2023-03-29 16:27:24 +00:00
env_file: "{{ services.mailu.volume_folder }}/mailu.env"
volumes:
- "{{ services.mailu.volume_folder }}/filter:/var/lib/rspamd"
2022-12-26 19:37:49 +00:00
- "{{ services.mailu.volume_folder }}/overrides/rspamd:/etc/rspamd/override.d:ro"
depends_on:
- front
- resolver
dns:
- "{{ services.mailu.dns }}"
2019-03-02 22:05:00 +00:00
webmail:
2022-12-26 19:37:49 +00:00
image: mailu/rainloop:{{ services.mailu.version }}
restart: always
2023-03-29 16:27:24 +00:00
env_file: "{{ services.mailu.volume_folder }}/mailu.env"
volumes:
- "{{ services.mailu.volume_folder }}/webmail:/data"
2022-12-26 19:37:49 +00:00
- "{{ services.mailu.volume_folder }}/overrides/rainloop:/overrides:ro"
depends_on:
2022-12-26 19:37:49 +00:00
- imap
- resolver
dns:
- "{{ services.mailu.dns }}"
2019-03-02 22:05:00 +00:00
networks:
default:
driver: bridge
ipam:
driver: default
config:
- subnet: "{{ services.mailu.subnet }}"
external_services:
external:
name: external_services