Web Analytics

self-hosted-simplelogin

⭐ 88 stars Simplified Chinese by springcomp

🌐 语言

SimpleLogin

这是一个自托管的 SimpleLogin docker-compose 配置。

前置条件

除了通常在您的域名注册商界面完成的 DNS 设置之外,下面的所有步骤都需要在您的服务器上完成。命令需要用 bash(或任何兼容 bash 的 shell,如 zsh)作为 shell 运行。如果您使用其他 shell,如 fish,请确保对命令进行适配。

sudo apt update \
  && sudo apt install -y net-tools dnsutils

DNS 配置

_详情请参阅参考文档_

请注意,DNS 变更可能需要长达 24 小时才能完全生效。实际上,速度要快得多(我们测试中约 1 分钟左右)。在 DNS 设置中,我们通常使用末尾带点号(.)的域名以强制使用绝对域名。

您需要设置以下 DNS 记录:

设置强制性的安全策略:

额外步骤:

警告:设置 CAA 记录将限制哪些证书颁发机构可以成功为您的域名签发 SSL 证书。 这将阻止 Let’s Encrypt 测试服务器颁发证书。您可能希望将此 DNS 记录延迟到为域名成功签发 SSL 证书之后再添加。

Docker

如果您的服务器尚未安装 Docker,请按照Ubuntu 的 Docker CE 安装步骤进行安装。

您也可以使用 docker-install 脚本安装 Docker,脚本是

curl -fsSL https://get.docker.com | sh
启用 IPv6 以用于 默认桥接网络

{
  "ipv6": true,
  "fixed-cidr-v6": "2001:db8:1::/64",
  "experimental": true,
  "ip6tables": true
}
本流程将指导您通过 Docker 容器运行整个堆栈。 这包括:

通过 Docker 容器运行 SimpleLogin:

Postgres SQL

此仓库在 Docker 容器中运行 postgres SQL。

警告:此仓库之前版本运行的是 12.1 版本。 请参考参考文档了解更多细节和升级说明。

运行应用

使用以下命令运行应用:

docker compose up --detach --remove-orphans --build && docker compose logs -f
您可能希望此时设置证书授权机构授权 (CAA)

接下来的步骤

如果上述所有步骤都成功,打开 并创建您的第一个账户!

默认情况下,新账户不是高级账户,因此没有无限别名。要将您的账户升级为高级账户, 请进入数据库,找到“users”表,将“lifetime”列设置为“1”或“TRUE”:

docker compose exec -it postgres psql -U myuser simplelogin
UPDATE users SET lifetime = TRUE;
\q

一旦你创建了所有想要的登录账户,添加以下行到 .env 文件以禁用进一步的注册:

DISABLE_REGISTRATION=1
DISABLE_ONBOARDING=true

然后,要重启 web 应用,执行:docker compose restart app

杂项

Postfix 配置 - Spamhaus

Spamhaus 项目维护了一份已知为垃圾邮件源的 IP 地址可靠列表。 您可以通过向 DNS 基础设施提交查询来检查某个 IP 地址是否在该列表中。

由于 Spamhaus 会阻止来自公共(开放)DNS 解析器的查询(参见:),而您的 postfix 容器默认可能使用公共解析器, 建议注册免费的 Spamhaus 数据查询服务 并获取 Spamhaus DQS 密钥。

将此密钥作为 SPAMHAUS_DQS_KEY 粘贴到您的 .env 文件中。

如果未提供 DQS 密钥,您的 postfix 容器将检查 Spamhaus 公共镜像是否接受其查询,并改为使用它们。 如果 Spamhaus 拒绝您的 postfix 容器对公共镜像的查询,则该功能将完全禁用。

Postfix 配置 - 虚拟别名

postfix 配置支持使用 postfix/conf.d/virtualpostfix/conf.d/virtual-regexp 文件定义虚拟别名。 这些文件会在启动时根据相应的 postfix/templates/virtual.tplpostfix/templates/virtual-regexp.tpl 模板文件自动生成。

默认配置如下:

#### virtual.tpl

virtual 文件支持 postfix 的 virtual_alias_maps 设置。 它包含一条规则,将 unknown@mydomain.com 映射到 contact@mydomain.com,以演示如何将来自不存在的别名的特定地址的邮件接收并转发到另一个存在的别名。

``postfix-conf unknown@mydomain.com contact@mydomain.com


#### virtual-regexp.tpl

virtual-regexp 文件支持后缀 virtual_alias_maps 设置。 它包含一个规则,将发送到任意子域的邮件重写到一个新的别名,该子域不对应 现有的别名,该别名属于一个目录,其名称取自子域名。 如果该别名不存在,可以动态创建该别名。

postfix-conf /^([^@]+)@([^.]+)\.mydomain.com/ $2/$1@mydomain.com ` 例如,发送到 someone@directory.mydomain.com 的电子邮件将由 postfix 路由到 directory/someone@mydomain.com`。

如何从 3.4.0 升级

_本节内容已移至 参考文档_

如何从以前基于 NGinx 的设置升级

_本节内容已移至 参考文档_

--- Tranlated By Open Ai Tx | Last indexed: 2026-03-15 ---