Traefik v3 (поддерживается сообществом)
Важно
Сначала прочитайте обзор.
Внимание
Это вклад, поддерживаемый сообществом. Не стесняйтесь предлагать исправления.
В данном руководстве объясняется, как настроить animails с Traefik в качестве обратного прокси-сервера для обработки HTTPS-соединений, маршрутизации доменов и управления сертификатами.
Предварительные требования¶
- Установленный и запущенный Traefik v3.x
- Доменные имена, настроенные на ваш сервер в соответствии с этим руководством
Обзор¶
Traefik будет обрабатывать весь входящий веб-трафик и направлять соответствующие запросы в animails. Такая конфигурация позволяет Traefik:
- Управлять SSL-сертификатами
- Обслуживать сервисы autodiscover и autoconfig
- Обслуживать интерфейс (frontend UI)
- Передавать ответы на ACME-вызовы для проверки сертификатов почтового сервера
Обновление конфигурации animails¶
Сначала измените файл animails.conf или .env, чтобы отключить встроенную обработку SSL в animails:
# Отключить autodiscover SAN в animails
AUTODISCOVER_SAN=n
# Пропустить запуск ACME (acme-animails, сертификаты Let's Encrypt) - y/n
SKIP_LETS_ENCRYPT=y
Настройка Traefik¶
Создайте или обновите файл динамической конфигурации Traefik следующим содержимым:
http:
routers:
animails:
entryPoints: "websecure"
rule: "Host(`mail.domain.com`)"
service: animails-svc
tls:
certResolver: cloudflare
animails-autoconfig:
entryPoints: "websecure"
rule: "(Host(`autoconfig.domain.com`) && Path(`/mail/config-v1.1.xml`))"
service: animails-svc
tls:
certResolver: cloudflare
animails-autodiscover:
entryPoints: "websecure"
rule: "(Host(`autodiscover.domain.com`) && Path(`/autodiscover/autodiscover.xml`))"
service: animails-svc
tls:
certResolver: cloudflare
services:
animails-svc:
loadBalancer:
servers:
- url: "http://animails-nginx-animails-1:8080"
Добавьте / обновите ваш файл docker-compose.yaml:
services:
certdumper:
image: ghcr.io/kereis/traefik-certs-dumper:latest
container_name: traefik_certdumper
restart: unless-stopped
network_mode: none
command: --restart-containers animails_postfix-animails_1,animails_dovecot-animails_1
volumes:
- traefik_certs:/traefik:ro # mount your traefik certificate file
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./data/assets/ssl:/output:rw
environment:
- DOMAIN=domain.com
- ACME_FILE_PATH=/traefik/cloudflare-acme.json # your traefik acme file
# ...
nginx:
# ...
expose:
- 8080
labels:
- traefik.enable=true
- traefik.http.routers.animails-autodiscover.entrypoints=websecure
- traefik.http.routers.animails-autodiscover.rule=Host(`autodiscover.domain.com`) && Path(`/autodiscover/autodiscover.xml`)
- traefik.http.routers.animails-autodiscover.tls.certresolver=cloudflare
- traefik.http.routers.animails-autodiscover.service=animails-svc
- traefik.http.routers.animails-autoconfig.entrypoints=websecure
- traefik.http.routers.animails-autoconfig.rule=Host(`autoconfig.domain.com`)&& Path(`/mail/config-v1.1.xml`)
- traefik.http.routers.animails-autoconfig.tls.certresolver=cloudflare
- traefik.http.routers.animails-autoconfig.service=animails-svc
- traefik.http.routers.animails.entrypoints=websecure
- traefik.http.routers.animails.rule=Host(`mail.domain.com`)
- traefik.http.routers.animails.tls=true
- traefik.http.routers.animails.tls.certresolver=cloudflare
- traefik.http.routers.animails.service=animails-svc
- traefik.http.services.animails-svc.loadbalancer.server.port=8080
- traefik.docker.network=proxy
restart: always
networks:
animails-network:
aliases:
- nginx
proxy:
Важные примечания к этой конфигурации:
- Замените
mail.domain.com,autoconfig.domain.comиautodiscover.domain.comна ваши реальные доменные имена entryPoints: "websecure"— замените на вашу фактическую точку входа HTTPS в TraefikcertResolver: cloudflare— замените на ваш фактический резолвер сертификатов
Шаг 3: Перезапуск сервисов¶
Перезапустите Traefik и animails, чтобы применить изменения:
# Restart animails
cd /path/to/animails
docker compose up -d
# Restart animails
cd /path/to/animails
docker-compose up -d
Тестирование конфигурации¶
- Перейдите по адресу
https://mail.domain.com, чтобы проверить, правильно ли загружается веб-интерфейс animails - Настройте почтовый клиент для проверки функции autodiscover
- Следите за логами Traefik на предмет ошибок маршрутизации или сертификатов
Устранение неполадок¶
Проблемы с сертификатами¶
- Проверьте
traefik_certsdumperна наличие ошибок или отсутствие acme-файла - Убедитесь, что файл сертификата правильно смонтирован
Проблемы с маршрутизацией¶
- Проверьте сетевое соединение между Traefik и animails
- Убедитесь, что IP-адрес animails в конфигурации Traefik указан верно
- Убедитесь, что все необходимые порты открыты в брандмауэрах