高级配置

Databasus 开箱即用,默认设置就很合理:标准的单容器安装完全不需要任何配置。本页的每个变量都是可选的,99% 的生产环境用不到。

OAuth

Databasus 默认使用邮箱加密码登录。你还可以额外允许用户用 Google 或 GitHub 账号登录。只要设置了某个提供商的 client ID,对应的按钮就会显示,但只有 client ID 和 client secret 都存在时,登录才能完成。

注册 OAuth 应用时,把重定向(回调)URL 设置为 https://<your-domain>/auth/callback。由于这个重定向,OAuth 登录要求你的实例通过公网域名以 HTTPS 提供服务,见下面的说明。

登录和邮件功能需要 HTTPS。 OAuth 登录和邮件都要求你的实例能通过公网域名以 HTTPS 访问:OAuth 提供商会把浏览器重定向回 https://<your-domain>/auth/callback,而邮件里的链接必须对收件人可打开。只在 localhost 或纯 HTTP 上运行的实例无法使用这些功能。获得 HTTPS 最简单的方式是 Caddy 反向代理 方案。

Google

在 Google Cloud Console 中创建 OAuth client(APIs & Services → Credentials → Create credentials → OAuth client ID,应用类型选 Web application),并把 https://<your-domain>/auth/callback 添加为授权重定向 URI。

变量说明
GOOGLE_CLIENT_ID你的 Google OAuth client 的 client ID。设置后会显示"Sign in with Google"按钮。
GOOGLE_CLIENT_SECRET你的 Google OAuth client 的 client secret。必须与 ID 一起设置,登录才能生效。

GitHub

在 GitHub Developer settings 中创建 OAuth 应用(Settings → Developer settings → OAuth Apps → New OAuth App),把 authorization callback URL 设置为 https://<your-domain>/auth/callback。

变量说明
GITHUB_CLIENT_ID你的 GitHub OAuth 应用的 client ID。设置后会显示"Sign in with GitHub"按钮。
GITHUB_CLIENT_SECRET你的 GitHub OAuth 应用的 client secret。必须与 ID 一起设置,登录才能生效。

邮件 (SMTP)

连接邮件服务器后,Databasus 就能发送工作区邀请、密码重置码和登录验证码。只要设置了 SMTP_HOST,邮件服务器就算已配置。没有它时,设置页面会显示邮件服务器未配置,登录页面也不会显示重置密码的链接。

这是实例的邮件服务器。邮件通知渠道用来报告备份情况,它们在各自的表单里有自己的 SMTP 设置,所以某个通知渠道能收发邮件,并不能说明这台服务器可用。要检查实例的邮件服务器,请打开 Databasus settings → Mail server 并点击 Send test email。测试邮件会发到你自己的地址,发送失败时会显示邮件服务器的回复。

如果你的中继不支持 STARTTLS,请在升级前设置 SMTP_SECURITY=none。 除 465 以外的端口默认使用 starttls 模式,它不会在没有加密的情况下继续,因此在设置这个变量之前,这样的中继收不到任何邮件。如果实例要求通过邮件发送登录验证码,在邮件无法送达期间,任何人都无法用密码登录。要恢复访问,请用 docker exec -it databasus ./main --disable-2fa 关闭第二因素(见不再要求登录验证码)。

变量说明
SMTP_HOST邮件服务器主机名(例如 smtp.gmail.com)。设置后即启用实例邮件。
SMTP_PORT邮件服务器端口(例如 587)。设置了 SMTP_HOST 时必须是正整数。
SMTP_SECURITY连接安全:tls、starttls 或 none,说明见下文。465 端口默认 tls,其他端口默认 starttls。取其他值时实例拒绝启动。
SMTP_USERSMTP 认证用户名。
SMTP_PASSWORDSMTP 认证密码。Gmail 请使用 App Password,而不是账号密码。
SMTP_FROM发件人地址,可以只写地址(noreply@example.com),也可以带名称(Acme Backups <noreply@example.com>)。不带名称时,收件人看到的是 Databasus。未设置时,如果 SMTP_USER 是邮箱地址就使用它,否则使用 noreply@ 加 SMTP_HOST,因此 apikey 这样的用户名不会成为发件人。值无法解析为地址时,实例拒绝启动。
SMTP_HELO_NAME实例向邮件服务器问候时使用的名称。默认取 DATABASUS_URL 中的主机,没有时取本机主机名。必须是主机名,或 [192.0.2.1]、[IPv6:2001:db8::1] 这样的地址字面量,否则实例拒绝启动。
SMTP_INSECURE_SKIP_VERIFY设为 true 时,在 tls 和 starttls 模式下跳过 TLS 证书校验。默认 false。只在可信网络内的自签名证书服务器上使用:它会关闭对中间人攻击的防护。
DATABASUS_URL实例的公开基础 URL(例如 https://backup.example.com)。可选:它会在邀请邮件里加上链接,并提供默认的问候名称。没有它邮件也能正常发送。

SMTP_SECURITY 从三种模式中选一种。邮件通知渠道在 Advanced settings 里提供同样的选择。

模式行为
tls从第一个字节开始加密连接。通常用于 465 端口。
starttls连接先以明文建立,在发送密码或任何邮件之前升级为加密连接。服务器不支持时发送失败,而不是继续以明文发送。通常用于 587 端口。
none连接始终不加密。适用于不支持 STARTTLS 的中继,例如 25 端口上的本地 Postfix。

none 会以明文发送 SMTP 密码和所有邮件,Databasus 与中继之间的任何人都能读取。只应在同一主机或可信私有网络中的中继上使用。

注册验证码(Cloudflare Turnstile)

如果你的实例能从公网访问,可以在注册和登录表单上加一层 Cloudflare Turnstile 挑战来挡机器人。两个密钥都来自 Turnstile 控制台,只有两者都设置了,挑战才会生效。

如果你想彻底禁止外部注册,而不只是加一道挑战,那根本不需要验证码:在界面中打开 Databasus settings → Allow sign up 并把它关掉。这会完全关闭注册表单。

变量说明
CLOUDFLARE_TURNSTILE_SITE_KEY公开的 Turnstile site key,用于在浏览器中渲染小组件。
CLOUDFLARE_TURNSTILE_SECRET_KEYTurnstile 私密密钥,后端用它校验挑战响应。

Docker 存储权限

Databasus 通常先使用现有 pgdata 目录的用户和组 ID,再检查备份 mount 或数据根目录,最后使用 999。只有自动选择不适合你的 bind mount、CIFS 共享或 NFS 导出时,才需要设置 PUID 或 PGID。值必须是从 1 到 4294967294 的十进制整数。

变量自动值账户
PUIDmount 所有者或 999databasus 用户
PGIDmount 组或 999databasus 主组

Databasus 和 PostgreSQL 使用同一个名为 databasus 的无 root 权限操作系统账户。

Entrypoint 先以容器内的 root 身份启动,用于选择 ID 并尝试执行 chown 和 chmod。随后,它会以 databasus 身份检查完整的文件生命周期。即使 mount 拒绝更改所有者或模式,只要实际文件操作成功,容器仍可运行。不支持任意 Docker user: 覆盖。

ERROR: Databasus cannot write to local storage paths /databasus-data/temp and /databasus-data/backups as UID 999 and GID 999.
Required operation: save a file through local storage.
Set PUID and PGID or fix the mounted directory permissions: https://databasus.com/advanced-config/#docker-storage-permissions
Details: permission denied

之前用于不同服务的四个变量已被有意删除。升级时请从配置中移除这些变量。如果自动选择的 ID 无法访问 mount,启动会停止,并显示失败的操作以及本文档链接。

遥测

Databasus 默认发送匿名、无法识别身份的使用遥测。它不包含任何个人数据,帮助我们了解项目的使用情况。具体收集哪些内容可以在隐私政策中查看,你也可以完全关闭它。

变量默认值说明
IS_DISABLE_ANONYMOUS_TELEMETRYfalse设为 true 可禁用匿名使用遥测。

日志

Databasus 把日志写到 stdout,并以 JSON 形式镜像到数据卷上的 databasus.log。设置 OPEN_TELEMETRY_URL 后,日志还会通过 Open Telemetry 导出到 VictoriaLogs、Graylog、SigNoz、Grafana Loki、Datadog、Honeycomb 等后端,或导出到 OpenTelemetry Collector(它本身就是一个 OTLP 接收端)。

  • 传输方式由 URL 协议决定。 http:// 和 https:// 发送 OTLP/HTTP,按原样使用整个 URL(包含路径); grpc:// 和 grpcs:// 发送 OTLP/gRPC,只使用主机和端口。
  • 认证写在 OPEN_TELEMETRY_HEADERS 里,或以 user:password@host 的形式写进 URL。
  • 敏感信息(密码、令牌、凭据)出现在 URL 中时,会在日志记录离开进程之前被脱敏。
  • 审计条目随应用日志一起发送,带 log_type=audit 标签,且不受 LOG_LEVEL 影响,因此调高日志级别不会丢失审计记录。
变量默认值说明
OPEN_TELEMETRY_URL—完整的 OTLP 端点 URL,含路径。不设置则日志只留在容器内。URL 带查询字符串、缺少主机或使用未知协议时,容器会在启动时直接停止,而不是把日志导出到不存在的地方。
OPEN_TELEMETRY_HEADERS—逗号分隔的 key=value 对,随每次导出发送,通常是 API 密钥。值会做百分号解码,与标准的 OTEL_EXPORTER_OTLP_HEADERS 格式一致。
LOG_LEVELinfo取值为 debug、info、 warn 或 error之一。无法识别的值回退到 info。
LOG_FILE_IS_ENABLEDtrue在数据目录旁写入 databasus.log,5 MB 轮转并保留 3 个旧文件。如果你的平台已经收集 stdout,可设为 false。

常见后端的取值,以及各自用于认证的 header。把主机、区域和密钥替换成你自己的:

后端OPEN_TELEMETRY_URLOPEN_TELEMETRY_HEADERS
VictoriaLogshttp://victoria-logs:9428/insert/opentelemetry/v1/logsAuthorization=Basic%20dXNlcjpwYXNzd29yZA== — 你的 vmauth 或反向代理所要求的凭据,因为 VictoriaLogs 本身在写入路径上没有认证。
OpenTelemetry Collectorgrpc://otel-collector:4317Authorization=Bearer%20your-token — 对应接收端的 bearertokenauth 或 basicauth 扩展。只在内网可达的 Collector 通常不需要。
Graylog 6.2+grpc://graylog:4317Authorization=Bearer%20your-token — 在 OpenTelemetry (gRPC) 输入上设置的令牌。该输入也接受 mTLS。
SigNoz Cloudgrpcs://ingest.eu.signoz.cloud:443signoz-ingestion-key=your-ingestion-key
Grafana Cloudhttps://otlp-gateway-prod-eu-west-0.grafana.net/otlp/v1/logsAuthorization=Basic%20<base64> — instance-id:api-token 的 base64 编码
Honeycombhttps://api.honeycomb.io/v1/logsx-honeycomb-team=your-api-key
Datadog Agentgrpc://datadog-agent:4317无 — Agent 持有 API 密钥并代为转发。

header 值会做百分号解码,所以 Basic 或 Bearer 后面的空格写作 %20,值里的逗号写作 %2C。Basic 认证也可以直接放进 URL:https://user:password@host/path,Databasus 会把它转换成同样的 header 并使其不出现在日志中。通过 http:// 和 grpc:// 传输时密钥和密码是明文的,所以在可信网络之外请使用 https:// 或 grpcs://。

分析脚本

Databasus 可以把你自己的分析或跟踪代码片段注入应用,例如 Google Analytics、Plausible、Umami 等。设置了 ANALYTICS_SCRIPT 后,它的值会在启动时插入到页面的 <head> 中。

安全警告:该值会被原样注入为 HTML 和 JavaScript,并在每个访问者的浏览器中以对 Databasus 界面的完全访问权限运行。只设置你完全掌控且信任的代码片段。

变量说明
ANALYTICS_SCRIPT自定义的 <script> 标记,插入到 </head> 闭合标签之前。不设置则不添加任何分析代码。