coaxial.mailcow
mailcow
角色
此剧本会设置一个 mailcow 邮件服务器和每小时的 borg 备份(可选,查看变量以禁用)
备份会保存到 /var/backup
,并在由 borg 处理后被移除。
保留最近的 24 个每小时备份、7 个每日备份、4 个每周备份、6 个每月备份和 1 个每年备份。
mailcow 主机的最低配置为 1GHz CPU、1GB RAM、5GB 硬盘。推荐配置为 1.5GB RAM + 交换空间(如果启用了 clamd)。计划额外的存储空间用于生成每小时的备份,以及可选的交换文件(1倍 RAM)。
先决条件
- 一台正在运行的 Ubuntu 主机(目前不支持其他发行版)
- Docker
- 如果启用备份,则需要一个 borg 备份库(参考 https://borgbackup.readthedocs.org/en/latest/quickstart.html)
- 与 borg 库匹配的 SSH 密钥和密码短语
变量
名称 | 目的 | 默认值 | 注意 |
---|---|---|---|
mailcow__hostname |
设置 mailcow.conf 中的 MAILCOW_HOSTNAME (参考 https://mailcow.github.io/mailcow-dockerized-docs/install/) |
未设置 | 必须设置 |
mailcow__additional_san |
设置 mailcow.conf 中的 ADDITIONAL_SAN 以允许额外域名(参考 https://mailcow.github.io/mailcow-dockerized-docs/firststeps-ssl/#additional-domain-names) |
未定义, 可选 | 以逗号分隔的值: lala.example.com,yay.example.org (不要重复 mailcow__hostname ) |
mailcow__skip_known_hosts |
是否使用自定义 known_hosts 文件用于 borgmatic 备份 |
false |
true 或 false ,允许 borgmatic 容器在不提示接受密钥的情况下连接到远程 borg 库 |
mailcow__dbpass |
设置 mailcow.conf 中的 dbpass (参考 https://mailcow.github.io/mailcow-dockerized-docs/install/) |
未设置 | 必须设置 |
mailcow__dbroot |
设置 mailcow.conf 中的 dbroot (参考 https://mailcow.github.io/mailcow-dockerized-docs/install/) |
未设置 | 必须设置 |
mailcow__http_port |
设置 mailcow.conf 中的 HTTP_PORT (参考 https://mailcow.github.io/mailcow-dockerized-docs/install/) |
80 |
|
mailcow__http_bind |
设置 mailcow.conf 中的 HTTP_BIND (参考 https://mailcow.github.io/mailcow-dockerized-docs/install/) |
0.0.0.0 |
|
mailcow__https_port |
设置 mailcow.conf 中的 HTTPS_PORT (参考 https://mailcow.github.io/mailcow-dockerized-docs/install/) |
443 |
|
mailcow__https_bind |
设置 mailcow.conf 中的 HTTPS_BIND (参考 https://mailcow.github.io/mailcow-dockerized-docs/install/) |
0.0.0.0 |
|
mailcow__tz |
设置 mailcow.conf 中的 TZ |
UTC |
可能值列表 |
mailcow__skip_le |
设置 mailcow.conf 中的 SKIP_LETS_ENCRYPT |
n |
y 或 n |
mailcow__skip_clamd |
设置 mailcow.conf 中的 SKIP_CLAMD |
n |
y 或 n |
mailcow__ssh_key_name |
要用于 borg 的 ssh 密钥文件名(例如,如果密钥命名为 mykey_rsa 和 mykey_rsa.pub ,则此变量应设置为 mykey_rsa ) |
borg_ssh_key |
|
mailcow__borg_repo_host |
指定 borg 库所在的主机(例如 borg 库 URL 中 : 前的部分) |
未设置 | 必须设置(例如 [email protected] ) |
mailcow__borg_repo_name |
borg 库的名称,即 borg 库 URL 中 : 和 :: 之间的部分 |
mailcow |
例如 [email protected]:myrepo::backupname 中的 myrepo |
mailcow__ntp_servers |
覆盖默认 NTP 服务器以同步 docker 主机的时间。 | 0.pool.ntp.org 1.pool.ntp.org 2.pool.ntp.org 3.pool.ntp.org |
必须是以空格分隔的主机名/FQDN/IP 地址字符串 |
mailcow__enable_swap |
使用交换文件(建议在 RAM 小于 3GB 的主机上使用) | true |
将在 /swapfile 创建一个与主机上的 RAM 大小相同的交换文件 |
mailcow__enable_backups |
启用每小时备份到 borg 库 | true |
设置为 true 或 false |
mailcow__git_version |
检出某个特定版本的 mailcow | master |
mailcow git 库中的任何提交、分支名称或标签 |
文件
在 files/
目录中:
名称 | 目的 | 注意 |
---|---|---|
borg_ssh_key{,.pub} |
连接到远程 borg 库的 ssh 密钥(如果不使用默认名称,请设置 mailcow__ssh_key_name )。 |
仅在 mailcow__enable_backups 设置为 true 时使用 |
passphrase |
远程 borg 库的密码短语 | 仅在 mailcow__enable_backups 设置时使用 |
known_hosts |
用于 borgmatic 容器的自定义 known_hosts 文件,以避免未知密钥错误 | 参考上面的 mailcow__skip_known_hosts 变量。要获取您服务器的最新密钥,运行 ssh-keyscan 93.184.216.34 。仅在 mailcow__enable_backups 设置为 true 时使用 |
备份
如果 mailcow__enable_backups
设置为 true
,将每小时整点使用 mailcow 备份脚本 生成备份。
docker-borgmatic 容器将在每小时的第 30 分钟将备份发送到指定的 borg 库,并在此之后清理备份目录。对于远程 borg 库,rsync.net 是不错的选择。
用法
最小的剧本示例:
---
- hosts: all
become: true
gather_facts: false
vars:
mailcow__borg_repo_host: [email protected]
mailcow__hostname: test
mailcow__dbpass: test
mailcow__dbroot: test
rawpython__os_family: Debian
roles:
- coaxial.raw-python # 在裸装的 Ubuntu/Debian 上引导 python
- coaxial.mailcow