配置参考
自建部署会读的每一个环境变量——它做什么、配错了会怎样、改了要不要重启。
一体机镜像自己配置自己,下面这些一个都不用管。以下内容适用于 Compose 部署,那里 .env 归你管。
必填
| 变量 | 默认值 | 需重启 | 作用 |
|---|---|---|---|
BUSABASE_IMAGE | busabase/busabase-premium:latest | 是 | 用哪个镜像。试用走公开的 :trial;签约客户会切到私有 registry。 |
APP_URL | — | 是 | 用户实际输入的地址,含协议和端口。 |
APP_PORT | 3000 | 是 | 对外发布的宿主机端口。 |
POSTGRES_USER | busabase | 是 | 数据库用户。 |
POSTGRES_PASSWORD | — | 是 | 数据库密码。要生成,不要自己想。 |
POSTGRES_DB | busabase | 是 | 数据库名。 |
S3_ACCESS_KEY | busabase | 是 | 对象存储 key,必须与 seaweed-s3.json 一致。 |
S3_SECRET_KEY | — | 是 | 对象存储 secret,必须与 seaweed-s3.json 一致。 |
S3_BUCKET | busabase | 是 | bucket 名,会自动创建。 |
BETTER_AUTH_SECRET | — | 是 | 签发会话 cookie。泄漏等同于任何人都能伪造登录态。 |
最容易配错的是 APP_URL。登录 cookie 按它签发,所以它和浏览器地址栏对不上时——http 写成 https、少了端口、用了 IP 而不是域名——登录看起来成功,然后立刻弹回登录页。没有任何报错,因为从服务端看什么都没失败。
可选
| 变量 | 默认值 | 需重启 | 作用 |
|---|---|---|---|
IMAGE_REGISTRY | docker.io | 是 | 从内网镜像源拉 Postgres 与 SeaweedFS。 |
SYSTEM_ADMIN_EMAIL | admin@example.com | 是 | 哪个账号拥有系统管理后台。 |
SEAWEEDFS_VOLUME_LIMIT_MB | 1024 | 是 | SeaweedFS 切换到新卷文件的阈值。附件量大就调高。 |
已经替你设好的
这些由 Compose 文件或镜像注入。你一般不用改,但知道它们存在,能解释一些否则会让你困惑的行为。
| 变量 | 值 | 为什么 |
|---|---|---|
BUSABASE_EDITION | self-hosted | 移除计费、waitlist 和公开营销页。只在启动时读一次——故意不做成后台可切换的开关,因为切回去会把这些计费入口重新暴露出来。 |
PG_DATABASE_URL | 由 POSTGRES_* 拼出 | 想用外部数据库就改这个。 |
STORAGE_URL | 由 S3_* 拼出 | 一条 URL 而不是一组变量。minio:// 表示「S3、path-style、不走 TLS」——描述协议,不是厂商。 |
REDIS_URL | lmdb:///data/cache | 内嵌 LMDB 缓存 + 进程内 pub/sub。单副本规模下另起一个 Redis 没有收益,而且 Redis 7.4+ 是 RSALv2/SSPL,会带来我们不想转嫁给你的再分发约束。 |
上面每一个变量都要重启才生效。没有运行时热加载:值在启动时读取,这正是「一个运行中的实例,其配置可以完全从它的 .env 复现」的原因。
是生成的,不是配的
一体机镜像首次启动时自己生成 Postgres 密码、对象存储密钥和会话密钥,写进 /data/.credentials(权限 600)。它们不在镜像里,所以两个人拉同一个镜像不会共用密钥。
请备份那个文件。它是唯一副本。