Fluxer 2026.1025.41605 配置参数详解
Fluxer 2026.1025.41605 配置参数详解:172 项实例参数按 25 个参数域全量梳理,含 rexctl config 用法与改名、注册、SMTP、SSO、换域名调优模板。
Fluxer 2026.1025.41605 配置参数详解
目标:本文系统讲解 Fluxer 自托管实例的配置参数体系——三层配置结构(部署层 / rexctl config 实例行为层 / 内部环境变量层)、
rexctl config四个子命令的实测用法、172 项实例行为参数按 25 个参数域的全量清单与生效时机,以及实例改名、注册策略、SMTP、SSO、域名迁移五个常用调优场景的落地模板。全部命令与回显来自 2026-10-25 的真实实例实测(Ubuntu 22.04.5 LTS / rexctl 与 Fluxer 2026.1025.41605)。
一、环境信息
- 操作系统:Ubuntu 22.04.5 LTS(amd64)
- 组件版本:Fluxer
2026.1025.41605(rexctl 与实例同版本) - 运维工具:rexctl
2026.1025.41605(官方运维 CLI,全部配置操作入口) - 实例目录:
/opt/fluxer(rexctl 托管形态;本文所有命令均带--dir /opt/fluxer) - 实例地址:
https://fluxer.test(评测环境私有后缀域名,边缘以纯 HTTP 监听 8080) - 演示账号:管理员
root/ 密码q1w2e3r4(演示口令,生产必须换强密码) - 实例安装方式:rexctl 非交互安装,注册策略
invite,详见《Ubuntu 22.04 安装 Fluxer 2026.1025.41605 指南》
二、前置条件
动手改参数前,确认以下三件事:
- 实例在运行:
rexctl --dir /opt/fluxer status输出ok Fluxer is running.;停止状态下多数参数仍可改,但标注「Right away」的即时生效无从谈起; - 知道实例目录:rexctl 以
--dir定位实例(默认/opt/fluxer),一台机器多套实例时务必显式带--dir,避免改错对象; - root 或等价权限:rexctl 需要访问运行引擎套接字与实例目录,实测全程以 root 执行。
验证配置通道可用(读一项参数):
rexctl --dir /opt/fluxer config get registration.mode
实测回显:
Setting registration.mode
Value invite
Takes open, approval, invite or closed
Applies Right away
Help Who can create an account. It works like rexctl registration set
能出这张小卡片,说明实例数据库可连、配置通道正常。
三、参数查看与修改方式
3.1 三层配置体系:先搞清楚改哪一层
Fluxer 的配置分三层,修改通道与持久化位置各不相同:
| 层 | 内容 | 修改通道 | 持久化位置 |
|---|---|---|---|
| ① 部署层 | 域名、监听端口、边缘模式、引擎、部署单元版本等「装机参数」 | rexctl install 安装期给出;事后用 rexctl config set 改(会重渲染编排文件) | /opt/fluxer/.rexctl/ 状态 + rexctl 渲染的编排文件(勿手改) |
| ② 实例行为层 | 注册策略、账号生命周期、品牌、SMTP、SSO、策略开关等 172 项 | rexctl config set / 管理面板 | 实例数据库(随 rexctl backup 一起备份) |
| ③ 内部环境变量层 | FLUXER_* 内部变量(内存限额、端点推导值等 518 项全量可见) | 由 rexctl 据①②自动渲染,不直接改 | 渲染进编排文件 |
要点:
- 日常运维只碰第②层(
rexctl config)与少量第①层参数(它们也在 172 项清单里,如domain、edge.*、voice.*); - 第③层用
rexctl config list --all可见(实测 518 项,含全部FLUXER_*),用于排障时核对渲染结果,不要试图用config set直接写它们——友好层参数会覆盖你的推导; - 手工编排(非 rexctl 托管)形态下没有 rexctl,第①③层体现为
.env文件,第②层仍在数据库里、启动后由管理面板或 API 调整,见《Fluxer 2026.1025.41605 Docker Compose 部署指南》。
3.2 rexctl config 四个子命令
rexctl --dir /opt/fluxer config --help
实测回显:
Read and change Fluxer's settings
Usage
rexctl config [command] [--flags]
Commands
get <key> [--flags] Show one setting
list [--flags] List every setting with its value and help
set <key> <value> | <key>=<value>... Change one or more settings
unset <key>... Go back to the default for one or more settings
Flags
--dir Folder with your instance
-h --help Show help for a command
-q --quiet Print only errors and results
--verbose Print every step and command
-y --yes Answer yes to every question and never prompt
四个子命令的职责:
config list:全量列出参数(友好层 172 项;加--all连内部层共 518 项),列为Setting / Value / Applies / Help四栏;config get <键>:读单项,输出取值、可接受值(Takes)、生效时机(Applies)、说明(Help);config set <键> <值>或config set <键>=<值> ...:改一项或一次改多项;config unset <键>...:恢复默认值——注意并非所有参数都能 unset,无默认可回退的会被拒(实测见「七、常见问题」Q1)。
改一项参数并回读的完整闭环(实例改名,品牌域参数):
rexctl --dir /opt/fluxer config set app_public.branding.product_name "Fluxer Lab"
rexctl --dir /opt/fluxer config get app_public.branding.product_name
实测回显:
ok Set app_public.branding.product_name to Fluxer Lab.
Setting app_public.branding.product_name
Value Fluxer Lab
Takes text
Applies Right away
Help Branding product name
3.3 生效时机(Applies)与敏感值显示
每项参数的 Applies 列标注了改动何时生效,实测分布(172 项):
| Applies | 项数 | 含义 |
|---|---|---|
| Right away | 142 | 立即生效,不重启任何服务 |
| Restarts Fluxer | 16 | 整机滚动重启(有秒级到分钟级服务中断) |
| Restarts edge | 4 | 只重启边缘接入 |
| Restarts voice | 4 | 只重启语音视频 |
| Restarts database / cache / queue / search / storage | 各 1 | 只重启对应基础服务 |
| Next command | 1 | 下一条 rexctl 命令起生效(engine.host) |
config set 之后 rexctl 会按该参数的标注自动完成相应重启,无需手工干预;标注「Right away」的改完即用。
敏感值显示规则:口令、密钥类参数在 config list/get 中不回显明文,已配置显示 set、未配置显示 not set(实测 storage.secret_key 显示 set,sso.client_secret、billing.stripe_secret_key 显示 not set)。排障时凭此判断「配没配」,想确认内容只能重设。
四、参数总览
友好层 172 项参数按前缀分为 25 个参数域,分布如下(按项数排序):
| 参数域 | 项数 | 管辖内容 |
|---|---|---|
app_public.* | 19 | 品牌(名称/Logo/favicon/CSS/状态页)与法务链接(条款/隐私/准则) |
integrations.* | 18 | 外发邮件 SMTP(9)、Bluesky(7)、GIF(1)、YouTube(1) |
sso.* | 16 | OIDC 单点登录全参数 |
accounts.* | 12 | 账号生命周期:出生日期、闲置删除、无主账号清理、交互分级 |
policy.* | 12 | 实例级策略:私信/好友/建社区开关、单社区模式、Premium 模式 |
billing.* | 10 | 计费等商业化参数(Stripe) |
domain_migration.* | 10 | 域名迁移灰度 rollout |
voice_p2p.* | 9 | 语音 P2P 直连灰度 |
media.attachment_decay.* | 9 | 附件生命周期衰减 |
gateway_rollout.* | 9 | 网关内部架构 rollout(灰度比例/并发/超时) |
images.* | 8 | 各服务的部署单元镜像与镜像仓库镜像站 |
edge.* | 6 | 边缘接入:模式、绑定地址、HTTP/HTTPS/对外端口、可信代理 |
storage.* | 6 | 对象存储(S3 兼容)端点/区域/路径风格/密钥 |
network.* | 4 | 出向代理与 IPv6 |
guild_visits.* | 5 | 「不加入即可浏览社区」特性灰度 |
voice.* | 3 | 语音视频 TCP/UDP 端口与公网 IP |
registration.* | 3 | 注册策略与注册邮箱域名白名单 |
auth.* | 3 | 登录流程(identifier-first、即时账号) |
captcha.* | 3 | 人机验证(提供方/成本/上限) |
experiment_delivery.* | 2 | 实验配置下发轮询 |
单参数域:domain / notice / memory.profile / engine.host / push_relay.* | 各 1 | 实例域名、全站公告、固定内存规格、引擎套接字、推送中继授权 |
排障提示:rexctl config list --all 会把内部 FLUXER_* 变量一并列出(实测全表 518 项),每项同样带 Applies 标注(如 FLUXER_API_MEMORY_LIMIT 2560mb、FLUXER_API_POSTGRES_MAX_CONNECTIONS 12)。这一层是 rexctl 按机器规格与友好层参数渲染的结果,核对渲染是否符合预期时有用,日常不要直接改。
五、核心参数分类详解
以下按域逐项列出 172 项参数。「默认值」列为本实测实例的当前值(多数即出厂默认;空表示未设置);「生效」列为 Applies 标注。
5.1 站点域名与公告:domain / notice(2 项)
| 参数 | 默认值 | 生效 | 说明 |
|---|---|---|---|
domain | fluxer.test | 重启整机 | 实例对外域名,决定 Web/API/邀请链接的地址。改它等于换域名,正式换域名配合 domain_migration.* 灰度(见 5.13) |
notice | (空) | 立即 | 向全实例所有人展示的公告条,如计划维护通知;清空即撤下 |
5.2 边缘接入:edge.*(6 项)
| 参数 | 默认值 | 生效 | 说明 |
|---|---|---|---|
edge.mode | proxy | 重启整机 | 边缘模式:proxy(前面有自有反向代理/隧道,Fluxer 出纯 HTTP)或自带 HTTPS 终结模式 |
edge.bind | 0.0.0.0:8080 | 重启边缘 | 反向代理/隧道回连的监听地址 |
edge.http_port | 80 | 重启边缘 | 自带 HTTPS 模式下的 HTTP 监听端口(跳转与证书签发用) |
edge.https_port | 443 | 重启整机 | 自带 HTTPS 模式的 HTTPS 监听端口 |
edge.public_port | 443 | 重启整机 | 实例地址里人们实际用的端口(与监听端口不一致时设置,如反代 8443 对外) |
edge.trusted_proxies | private_ranges | 重启边缘 | 信任哪些代理传来的客户端地址头(默认信任私网网段) |
实测环境即 proxy + bind 0.0.0.0:8080 形态(装时 --behind-proxy --bind 0.0.0.0:8080),由前置代理终结 TLS;直接暴露公网则用自带 HTTPS 形态(edge.mode 默认 + 80/443 放行),证书自动签发。
5.3 语音视频:voice.*(3 项)
| 参数 | 默认值 | 生效 | 说明 |
|---|---|---|---|
voice.tcp_port | 7881 | 重启语音 | 语音视频 TCP 端口 |
voice.udp_port | 7882 | 重启语音 | 语音视频 UDP 端口(防火墙需放行 UDP) |
voice.public_ip | (空) | 重启语音 | 语音视频用的公网 IP;Fluxer 自动探测失败时手工指定(NAT/多网卡场景常见) |
5.4 对象存储:storage.*(6 项)
| 参数 | 默认值 | 生效 | 说明 |
|---|---|---|---|
storage.endpoint | http://seaweedfs:8333 | 重启整机 | S3 兼容对象存储端点;默认指向内置存储,改它即切换到外部对象存储(如 MinIO、S3) |
storage.public_endpoint | http://seaweedfs:8333 | 重启整机 | 浏览器侧访问对象存储的地址(与上一项不一致时设置,如外部分发域名) |
storage.region | us-east-1 | 重启整机 | 对象存储区域 |
storage.path_style | true | 重启整机 | 对象存储是否需要 path-style 寻址(MinIO 等需要 true) |
storage.access_key | fluxer | 重启整机 | 对象存储 Access Key |
storage.secret_key | set | 重启整机 | 对象存储 Secret Key(敏感值,只显示 set/not set) |
5.5 出向网络:network.*(4 项)
| 参数 | 默认值 | 生效 | 说明 |
|---|---|---|---|
network.http_proxy | (空) | 重启整机 | 实例出向 HTTP 请求走的代理 |
network.https_proxy | (空) | 重启整机 | 实例出向 HTTPS 请求走的代理 |
network.no_proxy | (空) | 重启整机 | 不走代理的主机清单 |
network.ipv6 | false | 重启整机 | 实例网络是否启用 IPv6 |
服务器访问外网需代理时(如推送中继、外链 unfurl),在这里配,而不是改系统环境变量。
5.6 引擎、部署单元与内存:engine.host / images.* / memory.profile(10 项)
| 参数 | 默认值 | 生效 | 说明 |
|---|---|---|---|
engine.host | unix:///var/run/docker.sock | 下条命令 | 承载 Fluxer 的 Docker/Podman 引擎地址;换远程引擎即改此项 |
images.registry | (空) | 重启整机 | 数据库、缓存、搜索、存储、语音、边缘等部署单元的镜像仓库镜像站(国内加速场景用) |
images.edge | caddy:2.11-alpine | 重启边缘 | 边缘(Caddy)部署单元 |
images.livekit | livekit/livekit-server:v1.12.0 | 重启语音 | 语音(LiveKit)部署单元 |
images.meilisearch | getmeili/meilisearch:v1.53 | 重启搜索 | 搜索(Meilisearch)部署单元 |
images.nats | nats:2.14-alpine | 重启队列 | 消息队列(NATS)部署单元 |
images.postgres | postgres:16-alpine | 重启数据库 | 数据库(PostgreSQL)部署单元 |
images.seaweedfs | chrislusf/seaweedfs:4.47 | 重启存储 | 内置对象存储(SeaweedFS)部署单元 |
images.valkey | valkey/valkey:9.1-alpine | 重启缓存 | 缓存(Valkey)部署单元 |
memory.profile | (空) | 重启整机 | 为各服务指定固定内存额度,替代每次启动按本机规格自动测算;规格漂移或混部机器上建议设置 |
正常情况下 images.* 由 rexctl 随版本统一管理,只有「拉不动官方仓库要换镜像站」(images.registry)或「锁定/替换某个基础组件版本」时才需要动。
5.7 注册、登录与人机验证:registration.* / auth.* / captcha.*(9 项)
| 参数 | 默认值 | 生效 | 说明 |
|---|---|---|---|
registration.mode | invite | 立即 | 谁能建号:open 开放 / approval 审批 / invite 邀请 / closed 关闭。与 rexctl registration set 等效 |
registration.admin_registration_urls_enabled | true | 立即 | 管理员签发的邀请链接是否仍可建号(rexctl registration set 会联动调整) |
registration.allowed_email_domains | (空) | 立即 | 开放注册与换绑邮箱的域名白名单,空为不限制 |
auth.identifier_first | off | 立即 | 客户端是否展示「先输邮箱」的单一登录入口 |
auth.instant_accounts.enabled | false | 立即 | 是否允许只凭昵称即建号(需开启人机验证) |
auth.instant_accounts.pow_escalation_per_hour | 2000 | 立即 | 每小时凭昵称建号每达此数,人机验证成本翻倍 |
captcha.provider | altcha | 立即 | 实例使用的人机验证提供方(默认内置 ALTCHA 工作量证明,无需外部服务) |
captcha.cost | 5000 | 立即 | 人机验证成本(越高越难解) |
captcha.max_counter | 1000 | 立即 | 人机验证计数上限 |
注册策略的日常切换建议用 rexctl registration set <open|approval|invite|closed>(语义化输出,且会联动 registration.admin_registration_urls_enabled),实测见 6.2 与《Fluxer 2026.1025.41605 常用 CLI 命令与工具详解》第六节。
5.8 账号生命周期:accounts.*(12 项)
| 参数 | 默认值 | 生效 | 说明 |
|---|---|---|---|
accounts.verification_basis | auto | 立即 | 账号「完成设置」的判定基准(自动/邮箱等) |
accounts.interaction_tier | enforced | 立即 | 未完成设置的账号受哪档限制(默认强制执行限制) |
accounts.date_of_birth | off | 立即 | 是否要求填写出生日期、对谁强制 |
accounts.guild_join_gate | always | 立即 | 加入社区何时要求「已完成设置的账号」(配合交互分级与社区预览生效) |
accounts.inactivity_deletion.mode | after_inactivity | 立即 | 长期不用的账号是否删除(先发警告邮件,送达后才删) |
accounts.inactivity_deletion.inactive_days | 730 | 立即 | 不用多少天后发警告邮件(默认两年) |
accounts.inactivity_deletion.warning_lead_days | 30 | 立即 | 警告邮件到删除之间的天数 |
accounts.dob_missing_cleanup.mode | after_inactivity | 立即 | 建号时未填且始终未补出生日期的账号是否删除 |
accounts.dob_missing_cleanup.inactive_days | 7 | 立即 | 上述账号不用多少天后删除 |
accounts.unclaimed_account_cleanup.mode | after_inactivity | 立即 | 无法再登录的「无主账号」是否删除 |
accounts.unclaimed_account_cleanup.inactive_days | 90 | 立即 | 无主账号不用多少天后删除 |
accounts.unclaimed_account_cleanup.on_last_session_end | after_grace | 立即 | 无主账号退出最后一个会话时如何处理(宽限后清理) |
这一域是合规与数据占用的关键:长期运营务必审视 inactivity_deletion(默认 730+30 天)与 unclaimed_account_cleanup(默认 90 天)是否符合你的保留策略。
5.9 外发邮件:integrations.email.*(9 项)
| 参数 | 默认值 | 生效 | 说明 |
|---|---|---|---|
integrations.email.delivery | off | 立即 | 邮件发送方式;置空则用环境推导,off 为不发(本实测即此态) |
integrations.email.from_email | noreply@fluxer.test | 立即 | 发件人地址 |
integrations.email.from_name | (空) | 立即 | 发件人显示名 |
integrations.email.disable_new_ip_authorization | false | 立即 | 关闭「新 IP 登录需邮件授权」 |
integrations.email.smtp.host | (空) | 立即 | SMTP 服务器 |
integrations.email.smtp.port | (空) | 立即 | SMTP 端口 |
integrations.email.smtp.username | (空) | 立即 | SMTP 用户名 |
integrations.email.smtp.password | not set | 立即 | SMTP 密码(敏感值) |
integrations.email.smtp.tls_mode | (空) | 立即 | SMTP 加密方式(starttls/implicit/opportunistic/none) |
不配邮件的后果很实际:密码重置、闲置删除警告、新 IP 授权等邮件都发不出去。生产建议尽早配置,模板见 6.3。也可以用 rexctl email 命令组引导配置。
5.10 单点登录:sso.*(16 项)
| 参数 | 默认值 | 生效 | 说明 |
|---|---|---|---|
sso.enabled | false | 立即 | SSO 总开关 |
sso.enforced | false | 立即 | 是否强制只能 SSO 登录 |
sso.issuer | (空) | 立即 | OIDC Issuer |
sso.authorization_url | (空) | 立即 | 授权端点 URL |
sso.token_url | (空) | 立即 | 令牌端点 URL |
sso.userinfo_url | (空) | 立即 | UserInfo 端点 URL |
sso.jwks_url | (空) | 立即 | JWKS URL |
sso.client_id | (空) | 立即 | Client ID |
sso.client_secret | not set | 立即 | Client Secret(敏感值) |
sso.scope | (空) | 立即 | 请求的 scope |
sso.allowed_domains | (空) | 立即 | 允许经 SSO 登录的邮箱域名 |
sso.auto_provision | true | 立即 | 首次 SSO 登录自动建号 |
sso.display_name | (空) | 立即 | SSO 提供方显示名 |
sso.button_label | (空) | 立即 | 登录按钮文案(最长 64 个 UTF-16 码位,禁控制/换行/双向格式字符;空用默认) |
sso.groups_claim | (空) | 立即 | 列出用户组的 claim 名(空默认 groups) |
sso.group_role_mappings | (空) | 立即 | 组到单社区角色的映射(这些角色由 SSO 托管,每次登录按组增删) |
标准 OIDC 参数集,对接 Keycloak/Authentik/Entra ID 等均可。模板见 6.4。
5.11 实例级策略:policy.*(12 项)
| 参数 | 默认值 | 生效 | 说明 |
|---|---|---|---|
policy.direct_messages_disabled | false | 立即 | 全实例禁用私信 |
policy.direct_messages_locked | false | 立即 | 锁定私信现状(不允许新开) |
policy.friends_disabled | false | 立即 | 全实例禁用好友请求;未单独设置时跟随 direct_messages_disabled |
policy.guild_create_access | true | 立即 | 是否允许用户创建社区 |
policy.premium_mode | everyone | 立即 | Premium 权益适用模式 |
policy.single_community_enabled | false | 立即 | 单社区模式:整个实例即一个社区(适合企业/团队内部) |
policy.single_community_guild_id | (空) | 立即 | 指定一个既有社区作为单社区(开启或迁移单社区模式) |
policy.single_community_name | (空) | 立即 | 单社区名称 |
policy.single_community_add_members | (空) | 立即 | 开启时是否把全部既有账号后台拉进单社区 |
policy.services.bluesky_enabled | (空) | 立即 | 是否开放 Bluesky 服务集成 |
policy.services.gif_enabled | (空) | 立即 | 是否开放 GIF 服务集成 |
policy.services.youtube_enabled | (空) | 立即 | 是否开放 YouTube 服务集成 |
5.12 品牌与法务:app_public.*(19 项)
品牌 16 项(全部立即生效,值多为素材 URL):
| 参数 | 默认值 | 说明 |
|---|---|---|
app_public.branding.product_name | Rex Lab(安装时 --name 给定) | 产品名(客户端界面显示) |
app_public.branding.premium_product_name | Premium | Premium 产品名 |
app_public.branding.logo_url / wordmark_url / icon_url / symbol_url | (空) | Logo / 字标 / 图标 / 符号标 URL |
app_public.branding.favicon_url / favicon_dark_url | (空) | favicon(亮色/暗色)URL |
app_public.branding.sign_in_backdrop_url | (空) | 登录页背景图 URL |
app_public.branding.theme_color | (空) | 主题色 |
app_public.branding.custom_css | (空) | 自定义 CSS |
app_public.branding.trusted_domains | (空) | 可信域名 |
app_public.branding.status_page_url / status_page_incident_history_url | (空) | 状态页 / 事故历史页 URL |
app_public.branding.premium_info_url | (空) | Premium 介绍页 URL |
app_public.branding.upload_limit_message | (空) | 上传限制提示文案 |
法务 3 项(均立即生效,空为未设置):app_public.legal.terms_url(服务条款)、app_public.legal.privacy_url(隐私政策)、app_public.legal.guidelines_url(社区准则)。对外开放的实例务必补齐这三项。
品牌调整也可用 rexctl branding 命令组操作;本文 6.1 给出 config set 实测闭环。
5.13 域名迁移:domain_migration.*(10 项)
换域名不是改一下 domain 就完事——旧域名的客户端、外链、媒体地址需要灰度过渡,这一域就是干这个的(全部立即生效):
| 参数 | 默认值 | 说明 |
|---|---|---|
domain_migration.enabled | false | 域名迁移总开关 |
domain_migration.rollout_basis_points | 0 | 登录用户灰度比例(基点,万分比) |
domain_migration.anonymous_rollout_basis_points | 0 | 匿名访问灰度比例(基点) |
domain_migration.rollout_salt | domain-migration-v1 | 灰度分桶盐值 |
domain_migration.rollout_country_codes | (空) | 按国家代码限定灰度范围 |
domain_migration.included_user_ids / excluded_user_ids | (空) | 必定纳入 / 必定排除的用户 ID |
domain_migration.included_guild_ids | (空) | 必定纳入的社区 ID |
domain_migration.include_premium_users | false | 是否纳入 Premium 用户 |
domain_migration.standalone_forwarding | false | 独立转发开关 |
典型顺序:新域名解析就绪 → 开 enabled 并小比例灰度 → 观察 → 拉满 10000 基点 → config set domain <新域名>(重启整机)→ 稳定后关迁移。
5.14 其余参数域速览
以下域面向灰度发布/内部架构/商业化,日常运维很少动,列表备查(均立即生效):
gateway_rollout.*(9 项):网关内部架构 rollout。session_rollout_percentage/guild_rollout_percentage(灰度百分比,均 100)、session_rollout_mode(modulo)、max_concurrent_session_starts(512)/max_concurrent_guild_starts(256)、gateway_dispatch_relay_shards(32)/gateway_dispatch_relay_max_queue(50000)、rpc_request_timeout_ms(10000)、voice_e2ee_scope(guild_feature_only)。voice_p2p.*(9 项):语音 P2P 直连灰度。enabled(false)、max_participants(2)、rollout_basis_points(0)、rollout_salt(voice-p2p-v1)、rollout_country_codes、included/excluded_user_ids、included_guild_ids、include_premium_users(false)。小圈子通话直连省语音服务器流量。guild_visits.*(5 项):「不加入即可浏览社区」灰度。enabled(false,总开关/kill switch)、user_basis_points(0)、user_salt(guild-visits-user-v1)、included/excluded_user_ids。media.attachment_decay.*(9 项):附件衰减清理。enabled、curve、min/max_size_mb、min/max_lifetime_days、max_eligible_size_mb、renew_threshold_days、renew_window_days(全空=未启用)。存储吃紧的实例可按「大而久未被访问的附件先清理」思路启用。billing.*(10 项):商业化计费(Stripe)。enabled、prices、legacy_prices、default_currency、country_currencies、automatic_tax、tax_id_collection、terms_consent_required、stripe_secret_key(敏感)、stripe_webhook_secret(敏感)。自用实例保持空即可。integrations.bluesky.*(7 项):Bluesky 集成(enabled、client_name默认 Fluxer、client_uri、logo_uri、policy_uri、tos_uri、keys)。integrations.gif.klipy_api_key(1 项,敏感):GIF 搜索(Klipy)API Key;integrations.youtube.api_key(1 项,敏感):YouTube 嵌入解析 API Key。experiment_delivery.*(2 项):实验配置下发轮询,poll_interval_seconds(300)、poll_jitter_percent(15)。push_relay.relay_consent_accepted(1 项):是否已同意官方推送中继的服务条款(移动推送走官方中继时需要置 true)。
六、生产配置模板(常用调优场景实测)
6.1 实例改名与品牌
rexctl --dir /opt/fluxer config set app_public.branding.product_name "Fluxer Lab"
rexctl --dir /opt/fluxer config get app_public.branding.product_name
实测回显:
ok Set app_public.branding.product_name to Fluxer Lab.
Setting app_public.branding.product_name
Value Fluxer Lab
Takes text
Applies Right away
Help Branding product name
立即生效,客户端刷新即见。Logo/favicon/主题色等同理(5.12),均「Right away」。
6.2 注册策略切换(开放↔审批↔邀请↔关闭)
语义化命令(推荐,输出人类可读的确认语):
rexctl --dir /opt/fluxer registration set approval -y
rexctl --dir /opt/fluxer registration pending
rexctl --dir /opt/fluxer registration set invite -y
实测回显:
ok Anyone can ask for an account, and an admin approves each one.
Nobody is waiting for approval.
ok Only people with an invite link can create an account.
等价地也可以 config set registration.mode approval,两者写同一处(registration.mode 的 Help 原文即「It works like rexctl registration set」)。审批模式下待审队列的 approve/deny 操作见《Fluxer 2026.1025.41605 常用 CLI 命令与工具详解》第六节。
6.3 SMTP 外发邮件(模板)
安装时 --skip-email 跳过的,事后补配(本实测未接真实 SMTP,以下为按 5.9 参数组织的模板;也可用 rexctl email 命令组引导):
rexctl --dir /opt/fluxer config set \
integrations.email.delivery=smtp \
integrations.email.smtp.host=smtp.example.com \
integrations.email.smtp.port=587 \
integrations.email.smtp.tls_mode=starttls \
integrations.email.smtp.username=fluxer@example.com \
integrations.email.smtp.password='<SMTP密码>' \
integrations.email.from_email=noreply@example.com \
integrations.email.from_name="Fluxer Lab"
配完用一次密码重置链路验证(rexctl users reset-link <用户> 触发的邮件)确认可达。全部邮件参数「Right away」,改完即发。
6.4 对接 OIDC 单点登录(模板)
rexctl --dir /opt/fluxer config set \
sso.enabled=true \
sso.issuer=https://idp.example.com/realms/fluxer \
sso.client_id=fluxer \
sso.client_secret='<Client Secret>' \
sso.display_name="Corporate SSO" \
sso.button_label="用公司账号登录"
要点:sso.auto_provision 默认 true(首登自动建号);只许 SSO 登录再加 sso.enforced=true;限制邮箱域名用 sso.allowed_domains。IdP 侧回调地址按 IdP 文档指向实例域名即可。
6.5 换域名(灰度迁移)
# 1) 新域名解析与证书就绪后,开启迁移并小比例灰度
rexctl --dir /opt/fluxer config set domain_migration.enabled=true domain_migration.rollout_basis_points=500
# 2) 观察无异常后拉满(10000 基点 = 100%)
rexctl --dir /opt/fluxer config set domain_migration.rollout_basis_points=10000
# 3) 切主域名(重启整机,有短暂中断)
rexctl --dir /opt/fluxer config set domain chat.example.com
# 4) 稳定运行一段时间后关闭迁移
rexctl --dir /opt/fluxer config set domain_migration.enabled=false
七、常见问题
Q1:config unset 报 x Fluxer can't clear ... 被拒?
实测:
$ rexctl --dir /opt/fluxer config unset app_public.branding.product_name
x Fluxer can't clear app_public.branding.product_name.
Set another value with rexctl config set app_public.branding.product_name <value>.
[exit=3]
unset 的语义是「回到默认值」;没有默认可回退的参数(如产品名,卸载即无意义)会被拒,退出码 3。按提示用 config set 给一个新值即可。
Q2:为什么 config list 里密码类参数只显示 set / not set?
敏感值不回显明文(3.3)。判断「配没配」看这两个字即可;内容忘了就只能重设,实例数据库里存的是密文。
Q3:改参数会把服务改挂吗?
看 Applies 列:142/172 项「Right away」无感生效;标注「Restarts ...」的会触发对应服务滚动重启(整机级参数有秒级到分钟级中断),config set 后 rexctl 自动完成,无需手工 restart。中断敏感的改动放在低峰期。
Q4:rexctl config 和 /opt/fluxer 下的编排文件是什么关系?
编排文件(docker-compose.yml 等)是 rexctl 依据①②层参数渲染的产物,手改会在下次 rexctl 操作时被打回。一切改动走 rexctl config set(或安装期参数),让 rexctl 负责渲染与重启。手工编排(bundle)形态对应物是 .env,见《Fluxer 2026.1025.41605 Docker Compose 部署指南》。
Q5:config list --all 里的 FLUXER_* 变量能直接 set 吗?
不建议。那是内部渲染层(518 项全量表的一部分),友好层参数会覆盖你的推导值。例如想调 API 内存,正确入口是 memory.profile 这类友好层参数,而不是 FLUXER_API_MEMORY_LIMIT。
Q6:配置会随备份一起走吗?
会。实例行为层(172 项)存在实例数据库里,rexctl backup 产物(/opt/fluxer/backups/*.tar.zst)包含数据库,restore 后配置随之回来。装机参数另存于 /opt/fluxer/.rexctl/ 状态目录,同机恢复无需重答。