Lago 1.55.0 配置参数详解
Lago 1.55.0 全量配置参数实测详解:.env 分层查看与修改流程、九大类环境变量默认值与生效值对照、数据库与 Redis 连接族、密钥加密四件套、功能开关效果实测与生产配置模板。
Lago 1.55.0 配置参数详解
目标:系统梳理 Lago 1.55.0 服务端的全部配置参数——查看方式、默认值、生效值核验、修改流程与踩坑边界,并给出可直接落地的生产配置模板。全部参数默认值取自官方 v1.55.0 文档与编排文件,生效值与开关效果均在 Ubuntu 22.04 实测环境(Docker Compose 部署,部署过程见 《Lago 1.55.0 Docker Compose 部署指南》)逐项实测回显。
一、环境信息
- 操作系统:Ubuntu 22.04(x86_64)
- Lago 版本:v1.55.0(API 健康端点实测返回
{"version":"v1.55.0",...}) - 部署形态:官方 Docker Compose 编排,8 服务(db、redis、migrate、api、api-worker、api-clock、front、pdf),部署目录
/opt/lago/stack/ - 配置载体:部署目录
.env文件(本环境实测 4 个端口变量 + 5 个密钥变量 + 数据库凭据 + 首启建组织开关) - 配置总量:应用运行时环境变量实测 69 个(
printenv | wc -l),其中LAGO_前缀 44 个 - 验证账号:管理员
admin@lago.local/q1w2e3r4,API Key6dcdbc79-9ce2-4f47-8146-9efdb1064968(首启自动创建)
二、前置条件
- 已按部署指南完成 Lago 1.55.0 安装并可访问 Web 界面与 API 健康端点;
- 服务器可进入部署目录执行
docker compose系列命令,并可访问 PostgreSQL(本环境docker exec lago-db psql -U lago -d lago形态,实际端口 8137); - 修改
.env前先备份:cp .env .env.bak; - 了解 Lago 的配置分层:编排层变量(决定服务拓扑与端口,如
FRONT_PORT)与应用层变量(注入 Rails 进程决定行为,如LAGO_PDF_URL),两者都写在同一.env。
三、参数查看与修改方式
3.1 查看配置定义层:.env 文件
.env 是全部配置的唯一编辑入口。查看当前定义(本环境实测):
cd /opt/lago/stack && cat .env
# ---- 端口规划 ----
FRONT_PORT=8130
API_PORT=8129
POSTGRES_PORT=8137
REDIS_PORT=8146
# ---- 数据库凭据 ----
POSTGRES_USER=lago
POSTGRES_PASSWORD=q1w2e3r4
POSTGRES_DB=lago
# ---- Lago 核心密钥 ----
LAGO_RSA_PRIVATE_KEY="<openssl genrsa 2048 | openssl base64 -A 生成>"
SECRET_KEY_BASE=45e4802c2b5a99b0e5b811f4d03d18eb229fd0aaf1b48944b725f36266b379ca
LAGO_ENCRYPTION_PRIMARY_KEY=0cbac6ea4c2a772d41a712ee3269bd7dae1fc6235187a9cef263ca89b9b8363e
LAGO_ENCRYPTION_DETERMINISTIC_KEY=f5a84005228e6aad53a5a3867f62cea7e33257c29fa17b758e32e7e1441ff09a
LAGO_ENCRYPTION_KEY_DERIVATION_SALT=f707a5f7e5c482f627e0ec13ff894cd7350f5f999ffc31546903e9dfbf4533da
# ---- 首启自动创建管理员组织 ----
LAGO_CREATE_ORG=true
LAGO_ORG_USER_EMAIL=admin@lago.local
LAGO_ORG_USER_PASSWORD=q1w2e3r4
LAGO_ORG_NAME=Main
注意 .env 中未出现的大量变量(LAGO_PDF_URL、LAGO_USE_AWS_S3 等)由编排文件的 ${VAR:-默认值} 语法提供内置默认值,不写即用默认。
3.2 查看运行时生效值:应用环境 printenv
.env 只定义了「想配什么」;编排展开后注入应用进程的「实际生效值」用以下方式核验(本环境实测,输出节选):
docker exec lago-api printenv | grep -E '^(LAGO_|POSTGRES|REDIS_|SECRET|RAILS_ENV)' | sort
LAGO_API_URL=http://localhost:3000
LAGO_AWS_S3_ACCESS_KEY_ID=azerty123456
LAGO_AWS_S3_BUCKET=bucket
LAGO_AWS_S3_ENDPOINT=
LAGO_AWS_S3_REGION=us-east-1
LAGO_CREATE_ORG=true
LAGO_DATA_API_URL=http://data-api
LAGO_DISABLE_PDF_GENERATION=false
LAGO_DISABLE_SIGNUP=false
LAGO_ENCRYPTION_DETERMINISTIC_KEY=f5a84005228e6aad53a5a3867f62cea7e33257c29fa17b758e32e7e1441ff09a
LAGO_ENCRYPTION_KEY_DERIVATION_SALT=f707a5f7e5c482f627e0ec13ff894cd7350f5f999ffc31546903e9dfbf4533da
LAGO_ENCRYPTION_PRIMARY_KEY=0cbac6ea4c2a772d41a712ee3269bd7dae1fc6235187a9cef263ca89b9b8363e
LAGO_FRONT_URL=http://localhost
LAGO_ORG_NAME=Main
LAGO_ORG_USER_EMAIL=admin@lago.local
LAGO_PDF_URL=http://pdf:3000
LAGO_REDIS_CACHE_URL=redis://redis:6379
LAGO_SIDEKIQ_WEB=true
LAGO_SMTP_PORT=587
LAGO_USE_AWS_S3=false
(其余略:POSTGRES/REDIS/SECRET/RAILS_ENV/工作线程等共 69 个变量)
💡 说明:对比 3.1 与 3.2 可见编排的「默认值补全」效果——
.env没写的LAGO_PDF_URL、LAGO_USE_AWS_S3、LAGO_SMTP_PORT在运行时全部有值;空值变量(如LAGO_AWS_S3_ENDPOINT=)表示该特性未启用。三个应用实例(api/api-worker/api-clock)环境一致,逐个核验时把服务名换成lago-worker、lago-clock即可。
3.3 查看数据库侧连接事实
配置的最终效果落在数据库与 Redis 的连接上,可直接从 PostgreSQL 侧核验当前连接来源(实测):
docker exec lago-db psql -U lago -d lago -c "select usename, count(*) from pg_stat_activity group by 1;"
usename | count
---------+-------
| 6
lago | 33
(2 rows)
33 个 lago 用户连接来自 api/worker/clock 三个应用实例(默认连接池 DATABASE_POOL=10 + 系统连接),证明 POSTGRES_* 凭据拼接的 DATABASE_URL 已实际生效。
3.4 修改参数的标准流程
cd /opt/lago/stack
cp .env .env.bak # 1. 备份
vi .env # 2. 修改目标变量
docker compose up -d # 3. 重建受影响实例(Compose 只重建环境变化的服务)
curl -s http://localhost:8129/health # 4. 健康验证
docker exec lago-api printenv LAGO_目标变量 # 5. 生效值核验
⚠️ 注意:涉及
POSTGRES_PASSWORD、SECRET_KEY_BASE、LAGO_ENCRYPTION_*的修改有数据一致性后果(见第七章 Q2/Q3),务必先读后改;LAGO_RSA_PRIVATE_KEY可在无 Webhook 流量时更换。
四、参数总览
按职能分九族列示 Lago 1.55.0 主要配置参数(默认值来自官方 v1.55.0 编排与自托管文档;「实测值」列为本环境 printenv 回显):
① 端口与访问地址
| 变量 | 默认值 | 实测值 | 说明 |
|---|---|---|---|
FRONT_PORT | 80 | 8130 | Web 界面宿主端口 |
API_PORT | 3000 | 8129 | REST API 宿主端口 |
POSTGRES_PORT | 5432 | 8137 | PostgreSQL 宿主端口 |
REDIS_PORT | 6379 | 8146 | Redis 宿主端口 |
LAGO_API_URL | http://localhost:3000 | http://localhost:3000 | 后端对外地址,影响 Webhook 回调等 |
LAGO_FRONT_URL | http://localhost | http://localhost | 前端对外地址,用于 CORS |
LAGO_PDF_URL | http://pdf:3000 | http://pdf:3000 | PDF 服务内网地址 |
② PostgreSQL 连接族
| 变量 | 默认值 | 实测值 | 说明 |
|---|---|---|---|
POSTGRES_USER / POSTGRES_PASSWORD / POSTGRES_DB | lago / changeme / lago | lago / q1w2e3r4 / lago | 编排内 db 初始化凭据 |
POSTGRES_SCHEMA | public | public | 应用侧 search_path,多应用共库可隔离 |
DATABASE_URL | (编排拼接) | postgresql://lago:***@db:5432/lago?search_path=public | 外接数据库时唯一必配项 |
DATABASE_POOL | 10 | 10 | 每实例连接池上限 |
DATABASE_PREPARED_STATEMENTS | true | true | 预编译语句开关,用 PgBouncer 事务池时改 false |
LAGO_DATABASE_STATEMENT_TIMEOUT | 空 | (未设) | 单查询超时(ms),映射 statement_timeout |
LAGO_DATABASE_IDLE_TX_TIMEOUT | 空 | (未设) | 空闲事务超时(ms) |
LAGO_DATABASE_LOCK_TIMEOUT | 空 | (未设) | 锁等待超时(ms) |
③ Redis 连接族(三角色)
| 变量 | 默认值 | 实测值 | 说明 |
|---|---|---|---|
REDIS_URL | redis://redis:6379 | redis://redis:6379 | Sidekiq 队列 |
REDIS_PASSWORD | 空 | 空 | 队列 Redis 密码 |
LAGO_REDIS_CACHE_URL | redis://redis:6379 | redis://redis:6379 | Rails 缓存 |
LAGO_REDIS_CACHE_POOL_SIZE | 5 | 5 | 缓存连接池 |
LAGO_REDIS_SIDEKIQ_SENTINELS / LAGO_REDIS_CACHE_SENTINELS | 空 | 空 | Sentinel 地址列表,设置即启用对应角色高可用 |
LAGO_REDIS_SIDEKIQ_MASTER_NAME / LAGO_REDIS_CACHE_MASTER_NAME | master | master | Sentinel master 名 |
LAGO_REDIS_CABLE_URL | 空 | 空 | WebSocket 通道 Redis(独立部署时配置) |
④ 密钥与加密
| 变量 | 默认值 | 实测值 | 说明 |
|---|---|---|---|
SECRET_KEY_BASE | your-secret-key-base-hex-64 | 45e4802c…(64 位 hex) | Rails 会话签名 |
LAGO_RSA_PRIVATE_KEY | (无默认,必填) | base64 私钥(openssl 生成) | Webhook JWT 签名 |
LAGO_ENCRYPTION_PRIMARY_KEY | your-encryption-primary-key | 0cbac6ea…(32 位) | 落库加密主密钥 |
LAGO_ENCRYPTION_DETERMINISTIC_KEY | your-encryption-deterministic-key | f5a84005…(32 位) | 落库加密确定性密钥 |
LAGO_ENCRYPTION_KEY_DERIVATION_SALT | your-encryption-derivation-salt | f707a5f7…(32 位) | 密钥派生盐 |
⑤ 首启自动建组织
| 变量 | 默认值 | 实测值 | 说明 |
|---|---|---|---|
LAGO_CREATE_ORG | false | true | 首启 seeding 自动创建管理员组织 |
LAGO_ORG_USER_EMAIL | 空 | admin@lago.local | 管理员账号 |
LAGO_ORG_USER_PASSWORD | 空 | q1w2e3r4 | 管理员密码 |
LAGO_ORG_NAME | 空 | Main | 组织名 |
LAGO_ORG_API_KEY | 空 | 空 | 固定 API Key(不设则随机生成) |
⑥ 功能开关
| 变量 | 默认值 | 实测值 | 说明 |
|---|---|---|---|
LAGO_SIDEKIQ_WEB | 空(关) | true | Sidekiq Web 控制台开关 |
LAGO_DISABLE_SIGNUP | false | false | 关闭自助注册 |
LAGO_DISABLE_PDF_GENERATION | false | false | 关闭发票 PDF 自动生成 |
LAGO_DISABLE_WALLET_REFRESH | 空 | 空 | 关闭钱包余额自动刷新 |
LAGO_DISABLE_SEGMENT | 空 | 空 | 关闭 Segment 埋点上报 |
LAGO_WEBHOOK_ATTEMPTS | 3 | 3 | Webhook 投递失败重试次数 |
LAGO_WEBHOOK_ALLOW_PRIVATE_URLS | false | false | 允许 Webhook 指向内网地址(v1.54 起新增安全默认) |
LAGO_LICENSE | 空 | 空 | 高级版许可密钥 |
⑦ 对象存储
| 变量 | 默认值 | 实测值 | 说明 |
|---|---|---|---|
LAGO_USE_AWS_S3 | false | false | 启用 S3/S3 兼容存储 |
LAGO_AWS_S3_ACCESS_KEY_ID / LAGO_AWS_S3_SECRET_ACCESS_KEY | azerty123456 | azerty123456(未启用) | S3 凭据 |
LAGO_AWS_S3_BUCKET / LAGO_AWS_S3_REGION | bucket / us-east-1 | bucket / us-east-1(未启用) | 桶名与区域 |
LAGO_AWS_S3_ENDPOINT | 空 | 空 | S3 兼容端点(MinIO 等) |
LAGO_USE_GCS / LAGO_GCS_PROJECT / LAGO_GCS_BUCKET / LAGO_GCS_CREDENTIALS | false / 空 / 空 / 空 | 均空 | Google Cloud Storage 族 |
⑧ SMTP 邮件
| 变量 | 默认值 | 实测值 | 说明 |
|---|---|---|---|
LAGO_FROM_EMAIL | 空 | 空 | 发件地址,发邮件必配 |
LAGO_SMTP_ADDRESS / LAGO_SMTP_PORT | 空 / 587 | 空 / 587 | SMTP 服务器与端口 |
LAGO_SMTP_USERNAME / LAGO_SMTP_PASSWORD | 空 | 空 | SMTP 认证 |
LAGO_SMTP_AUTHENTICATION | login | (未设) | 认证方式,none 免认证 |
LAGO_SMTP_ENABLE_STARTTLS_AUTO | true | (未设) | STARTTLS 自动升级 |
⑨ 观测与 SSO
| 变量 | 默认值 | 实测值 | 说明 |
|---|---|---|---|
SENTRY_DSN / SENTRY_DSN_FRONT | 空 | 空 | 后端/前端 Sentry 上报 |
LAGO_RAILS_STDOUT | true | true | 日志输出 stdout |
LAGO_CLICKHOUSE_ENABLED | false | false | ClickHouse 事件存储开关 |
LAGO_DEFAULT_EVENT_STORE | postgres | postgres | 新组织默认事件存储 |
GOOGLE_AUTH_CLIENT_ID / GOOGLE_AUTH_CLIENT_SECRET | 空 | 空 | Google SSO |
五、核心参数分类详解
5.1 PostgreSQL 连接:拼接公式与连接池
Compose 形态下应用侧 DATABASE_URL 由官方编排按以下公式拼接(官方编排原文):
DATABASE_URL=postgresql://${POSTGRES_USER:-lago}:${POSTGRES_PASSWORD:-changeme}@${POSTGRES_HOST:-db}:${POSTGRES_PORT:-5432}/${POSTGRES_DB:-lago}?search_path=${POSTGRES_SCHEMA:-public}
即 Compose 形态只需配 POSTGRES_* 五件,无需手写 DATABASE_URL。连接池容量需按实例数估算:总连接 ≈ DATABASE_POOL × (api + worker + clock 实例数),本环境 3 实例 × 10 ≈ 30,与 3.3 节 pg_stat_activity 实测的 33 条 lago 连接吻合。外接 PostgreSQL(生产推荐)时改配 DATABASE_URL 并注意:仍保留编排内 db 服务会因 POSTGRES_* 同名变量产生双源冲突,官方建议外接时移除编排内 db 服务。
三个数据库超时参数(LAGO_DATABASE_STATEMENT_TIMEOUT / LAGO_DATABASE_IDLE_TX_TIMEOUT / LAGO_DATABASE_LOCK_TIMEOUT,单位 ms)默认不设即不限制;设置后作用于全部 Rails 进程(含 worker 与迁移),官方建议先只在 API 层收紧、观察 24–48 小时再推广,且取值应小于 HTTP 层超时。
5.2 Redis 三角色:队列、缓存与事件存储
Lago 把 Redis 用作三个独立角色,官方编排默认共用一个 redis 服务:
- Sidekiq 队列:
REDIS_URL(实测redis://redis:6379)——任务队列存储; - Rails 缓存:
LAGO_REDIS_CACHE_URL(实测redis://redis:6379)——用量计算中间值等缓存; - 事件存储:
LAGO_REDIS_STORE_URL——事件接入缓冲(默认编排未拆分时与队列共用)。
生产拆分时为每个角色配独立变量组;高可用用 Sentinel(设置 LAGO_REDIS_SIDEKIQ_SENTINELS=sentinel-1:26379,sentinel-2:26379,sentinel-3:26379 即对该角色启用,官方明确 Redis Cluster 不被 Sidekiq 支持,Sentinel 是唯一推荐 HA 方案)。加密连接把 URL scheme 改为 rediss://。
5.3 密钥四件套:生成命令与更换纪律
| 密钥 | 生成命令 | 更换纪律 |
|---|---|---|
SECRET_KEY_BASE | openssl rand -hex 64 | 更换后全部已登录会话失效,低峰执行 |
LAGO_RSA_PRIVATE_KEY | openssl genrsa 2048 | openssl base64 -A | 更换前确认无未消费的 JWT Webhook 队列 |
LAGO_ENCRYPTION_PRIMARY_KEY 等 3 项 | cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1 | ⚠️ 上线后禁止更换:加密落库的第三方凭据(支付 API Key 等)将无法解密 |
四项均应在首次启动前生成完毕(部署指南 4.2 节流程),本环境实测值已回显于 3.1 节。
5.4 首启自动建组织族(效果实测)
LAGO_CREATE_ORG=true + 三个人事变量,使首次启动的 seeding 阶段自动完成「组织 + 管理员 + API Key」三件事,实测核验(迁移日志与数据库三表):
docker logs lago-migrate 2>&1 | grep -v 'level=warning'
Sidekiq Pro is not installed. Reliability features will not be available.
Sidekiq Pro is not installed. Reliability features will not be available.
Sidekiq Pro is not installed. Reliability features will not be available.
Sidekiq Pro is not installed. Reliability features will not be available.
"starting seeding environment"
"ending seeding environment"
docker exec lago-db psql -U lago -d lago -t -c "select email from users;" -c "select value from api_keys;"
admin@lago.local
6dcdbc79-9ce2-4f47-8146-9efdb1064968
💡 说明:该族参数只在「组织不存在时」生效,幂等可重复启动;若需要固定 API Key 供自动化流水线使用,通过
LAGO_ORG_API_KEY预置。
5.5 功能开关效果实测
开关一:LAGO_SIDEKIQ_WEB(默认关,本环境编排默认 true)。开启后 Worker 进程在 8080 端口挂载 Sidekiq Web 控制台,实测:
docker exec lago-worker curl -s -o /dev/null -w '%{http_code}' -m 5 http://localhost:8080/sidekiq
200
关闭(设为 false/空)后同一路径不再提供控制台页面。生产环境若开启,应置于内网或网关鉴权之后——Sidekiq 控制台可重试/删除任务,不宜公网暴露。
开关二:LAGO_DISABLE_SIGNUP(默认 false)。官方语义为「自托管形态关闭自助注册」。实测核实其在 v1.55.0 的作用面:注册入口在 Web 界面注册流程,开源版 API 路由表中已无公开注册端点(bundle exec rails routes 全表 659 条中 organizations 相关路由仅有 GET/PUT,实测输出):
api_v1_organizations GET /api/v1/organizations(.:format) api/v1/organizations#show
PUT /api/v1/organizations(.:format) api/v1/organizations#update
api_v1_organizations_grpc_token GET /api/v1/organizations/grpc_token(.:format) api/v1/organizations#grpc_token
(v2 同构,略)
即多租户开放的「任意人注册」场景在当前开源版由界面开关控制;API 管理面要求管理员凭据,与该开关互补。
开关三:LAGO_DISABLE_PDF_GENERATION(默认 false)。置 true 后发票/贷记单/收据不再自动生成 PDF,对应下载端点同时不可用,适用于只要电子账单数据、不需要 PDF 文档的对接场景;关闭后可显著减少 PDF 服务(gotenberg)的负载。
5.6 专用 Worker 拆分族(SIDEKIQ_*)
高负载场景可把特定任务路由到独立进程,编排中以注释块预留了 8 个专用 Worker 服务(events/pdf/billing/clock/webhook/ai_agent/alerts/analytics),配套环境变量族:
| 变量 | 作用 |
|---|---|
SIDEKIQ_EVENTS=true | 该实例只跑事件接入队列 |
SIDEKIQ_PDFS=true | 只跑 PDF 生成 |
SIDEKIQ_BILLING=true | 只跑出账/发票 |
SIDEKIQ_CLOCK=true | 只跑定时调度 |
SIDEKIQ_WEBHOOK=true | 只跑 Webhook 投递 |
SIDEKIQ_AI_AGENT=true | 只跑 AI 助手任务 |
SIDEKIQ_ALERTS=true | 只跑用量告警 |
SIDEKIQ_CONCURRENCY(官方文档) | Worker 并发线程数,默认 10 |
启用姿势:取消编排中对应服务的注释 + 在普通 Worker 上设对应 SIDEKIQ_X=true 把该类任务路由走。官方生产参考(A1 篇已引用)给出的扩容顺序为 PDF → Webhook → Events → Billing。
5.7 对象存储与 SMTP 要点
- S3 兼容端点(MinIO 等):
LAGO_USE_AWS_S3=true+LAGO_AWS_S3_ENDPOINT+ 五件套凭据;⚠️LAGO_AWS_S3_REGION必须显式设置(如 us-east-1),AWS SDK 强制要求,漏配是兼容端点报错的最常见原因。 - GCS:
LAGO_USE_GCS=true+ 项目/桶/凭据 JSON 文件路径四件,凭据文件需挂载进 api 与 worker 两个服务(部署指南第八章)。 - SMTP:五件套(
LAGO_FROM_EMAIL+LAGO_SMTP_ADDRESS/PORT/USERNAME/PASSWORD)缺一不可,且必须在界面 Settings → Organization 配置组织邮箱后才会真正发信;默认login认证 + STARTTLS 自动升级,仅内网中继场景才改LAGO_SMTP_AUTHENTICATION=none。
六、生产配置模板
适用场景:16GB 内存 / 4 核 / NVMe SSD,中小规模用量计费(日均百万级事件以内),Compose 单机形态。在部署指南 4.3 节基础上追加/收紧以下项:
# ---- 收紧数据库凭据(评估环境 q1w2e3r4 仅限内网演练) ----
POSTGRES_PASSWORD=<32 位随机串>
# ---- 访问地址改为实际域名 ----
LAGO_API_URL=https://lago-api.example.com
LAGO_FRONT_URL=https://lago.example.com
# ---- 数据库保护三件套(先只在 API 层观察) ----
LAGO_DATABASE_STATEMENT_TIMEOUT=15000
LAGO_DATABASE_IDLE_TX_TIMEOUT=60000
LAGO_DATABASE_LOCK_TIMEOUT=5000
# ---- 关闭公网注册 ----
LAGO_DISABLE_SIGNUP=true
# ---- 关闭产品埋点(可选) ----
LAGO_DISABLE_SEGMENT=true
# ---- 邮件(账单投递依赖) ----
LAGO_FROM_EMAIL=billing@example.com
LAGO_SMTP_ADDRESS=smtp.example.com
LAGO_SMTP_PORT=587
LAGO_SMTP_USERNAME=billing@example.com
LAGO_SMTP_PASSWORD=<SMTP 密码>
要点:上生产第一优先级是外接 PostgreSQL 与 Redis(官方 best practice:编排内置 db/redis 仅用于本地试用),其次按 5.6 节按负载拆专用 Worker;密钥四件套沿用首启生成的值不再变更。
七、常见问题
Q1:up -d 时刷屏 The "LAGO_AWS_S3_ENDPOINT" variable is not set. Defaulting to a blank string.?
正常现象。官方编排引用了少量未列入示例 .env 的变量(实测 4 个:LAGO_AWS_S3_ENDPOINT、LAGO_DISABLE_SEGMENT、LAGO_REDIS_CACHE_PASSWORD、LAGO_DISABLE_WALLET_REFRESH),空值即「未启用该特性」,不影响功能;介意可显式写空值消除警告。
Q2:改了 SECRET_KEY_BASE 后所有用户被登出?
预期行为:该密钥参与 Rails 会话签名,更换即全部会话失效,重新登录即可,无数据损失。
Q3:改了 LAGO_ENCRYPTION_* 后读取支付凭据报错?
不可逆事故:三项加密密钥加密落库的第三方凭据,换钥后旧密文无法解密。只能恢复 .env.bak 中的旧钥回滚;因此官方将其列入「建议更换默认值」清单的同时,更换动作必须发生在首启前。
Q4:用了 PgBouncer 后频繁报 prepared statement 不存在?
事务池模式下连接会在事务间复用,预编译语句跨连接不可见。设 DATABASE_PREPARED_STATEMENTS=false 关闭预编译(官方针对此场景提供的开关),并相应调低 DATABASE_POOL 以匹配 PgBouncer 池大小。
Q5:如何确认某个 .env 改动已真正生效?
三步法(第三章):printenv 核对注入值 → curl /health 确认服务健康 → 行为级验证(如本章 5.5 节的开关实测法)。只看 .env 不够——编排的 ${VAR:-默认} 展开与变量传递错误都可能导致「写了但没生效」。
八、参考链接
- 官方自托管环境变量文档:
https://doc.getlago.com/guide/lago-self-hosted/docker - 官方仓库(编排文件与锚点定义):
https://github.com/getlago/lago - 本站关联文档:《Lago 1.55.0 介绍与选型指南》、《Lago 1.55.0 Docker Compose 部署指南》