mirror of
https://github.com/optim-enterprises-bv/Mailu.git
synced 2025-11-03 11:37:47 +00:00
Traefik configuration examples
This commit is contained in:
145
docs/compose/treafik/docker-compose.yml
Normal file
145
docs/compose/treafik/docker-compose.yml
Normal file
@@ -0,0 +1,145 @@
|
|||||||
|
version: '2'
|
||||||
|
|
||||||
|
services:
|
||||||
|
|
||||||
|
# This would normally not be here, but where you define your system services
|
||||||
|
traefik:
|
||||||
|
image: traefik:alpine
|
||||||
|
command: --docker
|
||||||
|
restart: always
|
||||||
|
ports:
|
||||||
|
- "80:80"
|
||||||
|
- "443:443"
|
||||||
|
volumes:
|
||||||
|
- "/var/run/docker.sock:/var/run/docker.sock"
|
||||||
|
- "/data/traefik/acme.json:/acme.json"
|
||||||
|
- "/data/traefik/traefik.toml:/traefik.toml"
|
||||||
|
# This may be needed (plus defining mailu_default external: true) if traefik lives elsewhere
|
||||||
|
# networks:
|
||||||
|
# - mailu_default
|
||||||
|
|
||||||
|
certdumper:
|
||||||
|
restart: always
|
||||||
|
image: nebukadneza/traefik-certdumper:latest
|
||||||
|
environment:
|
||||||
|
# Make sure this is the same as the main=-domain in traefik.toml
|
||||||
|
# !!! Also don’t forget to add "TRAEFIK_DOMAIN=[...]" to your .env!
|
||||||
|
- DOMAIN=$TRAEFIK_DOMAIN
|
||||||
|
volumes:
|
||||||
|
- "/data/traefik:/traefik"
|
||||||
|
- "$ROOT/certs:/output"
|
||||||
|
|
||||||
|
front:
|
||||||
|
image: mailu/nginx:$VERSION
|
||||||
|
restart: always
|
||||||
|
env_file: .env
|
||||||
|
logging:
|
||||||
|
driver: $LOG_DRIVER
|
||||||
|
labels: # Traefik labels for simple reverse-proxying
|
||||||
|
- "traefik.enable=true"
|
||||||
|
- "traefik.port=80"
|
||||||
|
- "traefik.frontend.rule=Host:$TRAEFIK_DOMAIN"
|
||||||
|
- "traefik.docker.network=mailu_default"
|
||||||
|
ports:
|
||||||
|
- "80" # Let’s not expose 80 or 443 on host, since that’s taken by traefik
|
||||||
|
- "$BIND_ADDRESS4:110:110"
|
||||||
|
- "$BIND_ADDRESS4:143:143"
|
||||||
|
- "$BIND_ADDRESS4:993:993"
|
||||||
|
- "$BIND_ADDRESS4:995:995"
|
||||||
|
- "$BIND_ADDRESS4:25:25"
|
||||||
|
- "$BIND_ADDRESS4:465:465"
|
||||||
|
- "$BIND_ADDRESS4:587:587"
|
||||||
|
- "$BIND_ADDRESS6:110:110"
|
||||||
|
- "$BIND_ADDRESS6:143:143"
|
||||||
|
- "$BIND_ADDRESS6:993:993"
|
||||||
|
- "$BIND_ADDRESS6:995:995"
|
||||||
|
- "$BIND_ADDRESS6:25:25"
|
||||||
|
- "$BIND_ADDRESS6:465:465"
|
||||||
|
- "$BIND_ADDRESS6:587:587"
|
||||||
|
volumes:
|
||||||
|
- "$ROOT/certs:/certs" # Mount both certs directory (for dhparams.pem) and your domains key
|
||||||
|
- "$ROOT/overrides/nginx:/overrides"
|
||||||
|
- /data/traefik/ssl/$TRAEFIK_DOMAIN.crt:/certs/cert.pem
|
||||||
|
- /data/traefik/ssl/$TRAEFIK_DOMAIN.key:/certs/key.pem
|
||||||
|
|
||||||
|
redis:
|
||||||
|
image: redis:alpine
|
||||||
|
restart: always
|
||||||
|
volumes:
|
||||||
|
- "$ROOT/redis:/data"
|
||||||
|
|
||||||
|
imap:
|
||||||
|
image: mailu/dovecot:$VERSION
|
||||||
|
restart: always
|
||||||
|
env_file: .env
|
||||||
|
volumes:
|
||||||
|
- "$ROOT/mail:/mail"
|
||||||
|
- "$ROOT/overrides:/overrides"
|
||||||
|
depends_on:
|
||||||
|
- front
|
||||||
|
|
||||||
|
smtp:
|
||||||
|
image: mailu/postfix:$VERSION
|
||||||
|
restart: always
|
||||||
|
env_file: .env
|
||||||
|
volumes:
|
||||||
|
- "$ROOT/overrides:/overrides"
|
||||||
|
depends_on:
|
||||||
|
- front
|
||||||
|
|
||||||
|
antispam:
|
||||||
|
image: mailu/rspamd:$VERSION
|
||||||
|
restart: always
|
||||||
|
env_file: .env
|
||||||
|
volumes:
|
||||||
|
- "$ROOT/filter:/var/lib/rspamd"
|
||||||
|
- "$ROOT/dkim:/dkim"
|
||||||
|
- "$ROOT/overrides/rspamd:/etc/rspamd/override.d"
|
||||||
|
depends_on:
|
||||||
|
- front
|
||||||
|
|
||||||
|
antivirus:
|
||||||
|
image: mailu/$ANTIVIRUS:$VERSION
|
||||||
|
restart: always
|
||||||
|
env_file: .env
|
||||||
|
volumes:
|
||||||
|
- "$ROOT/filter:/data"
|
||||||
|
|
||||||
|
webdav:
|
||||||
|
image: mailu/$WEBDAV:$VERSION
|
||||||
|
restart: always
|
||||||
|
env_file: .env
|
||||||
|
volumes:
|
||||||
|
- "$ROOT/dav:/data"
|
||||||
|
|
||||||
|
admin:
|
||||||
|
image: mailu/admin:$VERSION
|
||||||
|
restart: always
|
||||||
|
env_file: .env
|
||||||
|
volumes:
|
||||||
|
- "$ROOT/data:/data"
|
||||||
|
- "$ROOT/dkim:/dkim"
|
||||||
|
depends_on:
|
||||||
|
- redis
|
||||||
|
|
||||||
|
webmail:
|
||||||
|
image: "mailu/$WEBMAIL:$VERSION"
|
||||||
|
restart: always
|
||||||
|
env_file: .env
|
||||||
|
volumes:
|
||||||
|
- "$ROOT/webmail:/data"
|
||||||
|
depends_on:
|
||||||
|
- imap
|
||||||
|
|
||||||
|
fetchmail:
|
||||||
|
image: mailu/fetchmail:$VERSION
|
||||||
|
restart: always
|
||||||
|
env_file: .env
|
||||||
|
|
||||||
|
networks:
|
||||||
|
default:
|
||||||
|
driver: bridge
|
||||||
|
ipam:
|
||||||
|
driver: default
|
||||||
|
config:
|
||||||
|
- subnet: $SUBNET
|
||||||
33
docs/compose/treafik/traefik.toml
Normal file
33
docs/compose/treafik/traefik.toml
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
# This is just boilerplate stuff you probably have in your own config
|
||||||
|
logLevel = "INFO"
|
||||||
|
defaultEntryPoints = ["https","http"]
|
||||||
|
|
||||||
|
[entryPoints]
|
||||||
|
[entryPoints.http]
|
||||||
|
address = ":80"
|
||||||
|
[entryPoints.http.redirect]
|
||||||
|
entryPoint = "https"
|
||||||
|
[entryPoints.https]
|
||||||
|
address = ":443"
|
||||||
|
[entryPoints.https.tls]
|
||||||
|
|
||||||
|
[docker]
|
||||||
|
endpoint = "unix:///var/run/docker.sock"
|
||||||
|
watch = true
|
||||||
|
exposedByDefault = false
|
||||||
|
|
||||||
|
# Make sure we get acme.json saved, and onHostRule enabled
|
||||||
|
[acme]
|
||||||
|
email = "your@mail.tld"
|
||||||
|
storage = "acme.json"
|
||||||
|
entryPoint = "https"
|
||||||
|
onHostRule = true
|
||||||
|
|
||||||
|
[acme.httpChallenge]
|
||||||
|
entryPoint = "http"
|
||||||
|
|
||||||
|
# This should include all of your mail domains, and main= should be your $TRAEFIK_DOMAIN
|
||||||
|
[[acme.domains]]
|
||||||
|
main = "mail.your.doma.in"
|
||||||
|
sans = ["web.mail.your.doma.in", "smtp.mail.doma.in", "imap.mail.doma.in"]
|
||||||
|
|
||||||
Reference in New Issue
Block a user