Caddy v2 (поддерживается сообществом)

Важно

Сначала прочитайте [обзор](r_p.md).

Внимание

Это вклад, поддерживаемый сообществом. Не стесняйтесь предлагать исправления.

Настройка Caddy с animails очень проста.

В Caddyfile вам просто нужно создать секцию для почтового сервера.

Например:

MAILCOW_HOSTNAME autodiscover.MAILCOW_HOSTNAME autoconfig.MAILCOW_HOSTNAME {
        log {
                output file /var/log/caddy/MAILCOW_HOSTNAME.log {
                        roll_disabled
                        roll_size 512M
                        roll_uncompressed
                        roll_local_time
                        roll_keep 3
                        roll_keep_for 48h
                }
        }

        reverse_proxy 127.0.0.1:HTTP_BIND
}

Это позволяет Caddy автоматически создавать сертификаты, принимать трафик для указанных доменов и перенаправлять его в animails.

Важно: ACME-клиент animails должен быть отключен, иначе animails выдаст ошибку.

Поскольку Caddy сам заботится о сертификатах, мы можем использовать следующий скрипт для передачи созданных Caddy сертификатов в animails:

#!/bin/bash
MAILCOW_HOSTNAME=your.domain.tld
CADDY_CERTS_DIR=/var/lib/caddy/.local/share/caddy/certificates/acme-v02.api.letsencrypt.org-directory
MD5SUM_CURRENT_CERT=($(md5sum /opt/animails/data/assets/ssl/cert.pem))
MD5SUM_NEW_CERT=($(md5sum $CADDY_CERTS_DIR/$MAILCOW_HOSTNAME/$MAILCOW_HOSTNAME.crt))

if [ $MD5SUM_CURRENT_CERT != $MD5SUM_NEW_CERT ]; then
        cp $CADDY_CERTS_DIR/$MAILCOW_HOSTNAME/$MAILCOW_HOSTNAME.crt /opt/animails/data/assets/ssl/cert.pem
        cp $CADDY_CERTS_DIR/$MAILCOW_HOSTNAME/$MAILCOW_HOSTNAME.key /opt/animails/data/assets/ssl/key.pem
        cp $CADDY_CERTS_DIR/$MAILCOW_HOSTNAME/$MAILCOW_HOSTNAME.crt /opt/animails/data/assets/ssl/$MAILCOW_HOSTNAME/cert.pem
        cp $CADDY_CERTS_DIR/$MAILCOW_HOSTNAME/$MAILCOW_HOSTNAME.key /opt/animails/data/assets/ssl/$MAILCOW_HOSTNAME/key.pem
        postfix_c=$(docker ps -qaf name=postfix-animails)
        dovecot_c=$(docker ps -qaf name=dovecot-animails)
        nginx_c=$(docker ps -qaf name=nginx-animails)
        docker restart ${postfix_c} ${dovecot_c} ${nginx_c}

else
        echo "Сертификаты не скопированы из Caddy (нет необходимости)"
fi

Внимание

Путь к сертификатам Caddy варьируется в зависимости от типа установки.<br>
В этом примере Caddy был установлен с использованием официального репозитория ([подробнее здесь](https://caddyserver.com/docs/install#debian-ubuntu-raspbian)).<br>
<br>
Чтобы найти путь к сертификатам Caddy в вашей системе, просто выполните `find / -name "certificates"`.

Этот скрипт можно вызывать как задачу cron каждый час:

0 * * * * /bin/bash /path/to/script/deploy-certs.sh  >/dev/null 2>&1