Fluxer 2026.1025.41605 配置参数详解

Fluxer 2026.1025.41605 配置参数详解:172 项实例参数按 25 个参数域全量梳理,含 rexctl config 用法与改名、注册、SMTP、SSO、换域名调优模板。

FluxerFluxer即时通讯自托管2026/10/25

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 指南》

二、前置条件

动手改参数前,确认以下三件事:

  1. 实例在运行:rexctl --dir /opt/fluxer status 输出 ok Fluxer is running.;停止状态下多数参数仍可改,但标注「Right away」的即时生效无从谈起;
  2. 知道实例目录:rexctl 以 --dir 定位实例(默认 /opt/fluxer),一台机器多套实例时务必显式带 --dir,避免改错对象;
  3. 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 away142立即生效,不重启任何服务
Restarts Fluxer16整机滚动重启(有秒级到分钟级服务中断)
Restarts edge4只重启边缘接入
Restarts voice4只重启语音视频
Restarts database / cache / queue / search / storage各 1只重启对应基础服务
Next command1下一条 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.*16OIDC 单点登录全参数
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 项)

参数默认值生效说明
domainfluxer.test重启整机实例对外域名,决定 Web/API/邀请链接的地址。改它等于换域名,正式换域名配合 domain_migration.* 灰度(见 5.13)
notice(空)立即向全实例所有人展示的公告条,如计划维护通知;清空即撤下

5.2 边缘接入:edge.*(6 项)

参数默认值生效说明
edge.modeproxy重启整机边缘模式:proxy(前面有自有反向代理/隧道,Fluxer 出纯 HTTP)或自带 HTTPS 终结模式
edge.bind0.0.0.0:8080重启边缘反向代理/隧道回连的监听地址
edge.http_port80重启边缘自带 HTTPS 模式下的 HTTP 监听端口(跳转与证书签发用)
edge.https_port443重启整机自带 HTTPS 模式的 HTTPS 监听端口
edge.public_port443重启整机实例地址里人们实际用的端口(与监听端口不一致时设置,如反代 8443 对外)
edge.trusted_proxiesprivate_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_port7881重启语音语音视频 TCP 端口
voice.udp_port7882重启语音语音视频 UDP 端口(防火墙需放行 UDP)
voice.public_ip(空)重启语音语音视频用的公网 IP;Fluxer 自动探测失败时手工指定(NAT/多网卡场景常见)

5.4 对象存储:storage.*(6 项)

参数默认值生效说明
storage.endpointhttp://seaweedfs:8333重启整机S3 兼容对象存储端点;默认指向内置存储,改它即切换到外部对象存储(如 MinIO、S3)
storage.public_endpointhttp://seaweedfs:8333重启整机浏览器侧访问对象存储的地址(与上一项不一致时设置,如外部分发域名)
storage.regionus-east-1重启整机对象存储区域
storage.path_styletrue重启整机对象存储是否需要 path-style 寻址(MinIO 等需要 true)
storage.access_keyfluxer重启整机对象存储 Access Key
storage.secret_keyset重启整机对象存储 Secret Key(敏感值,只显示 set/not set)

5.5 出向网络:network.*(4 项)

参数默认值生效说明
network.http_proxy(空)重启整机实例出向 HTTP 请求走的代理
network.https_proxy(空)重启整机实例出向 HTTPS 请求走的代理
network.no_proxy(空)重启整机不走代理的主机清单
network.ipv6false重启整机实例网络是否启用 IPv6

服务器访问外网需代理时(如推送中继、外链 unfurl),在这里配,而不是改系统环境变量。

5.6 引擎、部署单元与内存:engine.host / images.* / memory.profile(10 项)

参数默认值生效说明
engine.hostunix:///var/run/docker.sock下条命令承载 Fluxer 的 Docker/Podman 引擎地址;换远程引擎即改此项
images.registry(空)重启整机数据库、缓存、搜索、存储、语音、边缘等部署单元的镜像仓库镜像站(国内加速场景用)
images.edgecaddy:2.11-alpine重启边缘边缘(Caddy)部署单元
images.livekitlivekit/livekit-server:v1.12.0重启语音语音(LiveKit)部署单元
images.meilisearchgetmeili/meilisearch:v1.53重启搜索搜索(Meilisearch)部署单元
images.natsnats:2.14-alpine重启队列消息队列(NATS)部署单元
images.postgrespostgres:16-alpine重启数据库数据库(PostgreSQL)部署单元
images.seaweedfschrislusf/seaweedfs:4.47重启存储内置对象存储(SeaweedFS)部署单元
images.valkeyvalkey/valkey:9.1-alpine重启缓存缓存(Valkey)部署单元
memory.profile(空)重启整机为各服务指定固定内存额度,替代每次启动按本机规格自动测算;规格漂移或混部机器上建议设置

正常情况下 images.* 由 rexctl 随版本统一管理,只有「拉不动官方仓库要换镜像站」(images.registry)或「锁定/替换某个基础组件版本」时才需要动。

5.7 注册、登录与人机验证:registration.* / auth.* / captcha.*(9 项)

参数默认值生效说明
registration.modeinvite立即谁能建号:open 开放 / approval 审批 / invite 邀请 / closed 关闭。与 rexctl registration set 等效
registration.admin_registration_urls_enabledtrue立即管理员签发的邀请链接是否仍可建号(rexctl registration set 会联动调整)
registration.allowed_email_domains(空)立即开放注册与换绑邮箱的域名白名单,空为不限制
auth.identifier_firstoff立即客户端是否展示「先输邮箱」的单一登录入口
auth.instant_accounts.enabledfalse立即是否允许只凭昵称即建号(需开启人机验证)
auth.instant_accounts.pow_escalation_per_hour2000立即每小时凭昵称建号每达此数,人机验证成本翻倍
captcha.provideraltcha立即实例使用的人机验证提供方(默认内置 ALTCHA 工作量证明,无需外部服务)
captcha.cost5000立即人机验证成本(越高越难解)
captcha.max_counter1000立即人机验证计数上限

注册策略的日常切换建议用 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_basisauto立即账号「完成设置」的判定基准(自动/邮箱等)
accounts.interaction_tierenforced立即未完成设置的账号受哪档限制(默认强制执行限制)
accounts.date_of_birthoff立即是否要求填写出生日期、对谁强制
accounts.guild_join_gatealways立即加入社区何时要求「已完成设置的账号」(配合交互分级与社区预览生效)
accounts.inactivity_deletion.modeafter_inactivity立即长期不用的账号是否删除(先发警告邮件,送达后才删)
accounts.inactivity_deletion.inactive_days730立即不用多少天后发警告邮件(默认两年)
accounts.inactivity_deletion.warning_lead_days30立即警告邮件到删除之间的天数
accounts.dob_missing_cleanup.modeafter_inactivity立即建号时未填且始终未补出生日期的账号是否删除
accounts.dob_missing_cleanup.inactive_days7立即上述账号不用多少天后删除
accounts.unclaimed_account_cleanup.modeafter_inactivity立即无法再登录的「无主账号」是否删除
accounts.unclaimed_account_cleanup.inactive_days90立即无主账号不用多少天后删除
accounts.unclaimed_account_cleanup.on_last_session_endafter_grace立即无主账号退出最后一个会话时如何处理(宽限后清理)

这一域是合规与数据占用的关键:长期运营务必审视 inactivity_deletion(默认 730+30 天)与 unclaimed_account_cleanup(默认 90 天)是否符合你的保留策略。

5.9 外发邮件:integrations.email.*(9 项)

参数默认值生效说明
integrations.email.deliveryoff立即邮件发送方式;置空则用环境推导,off 为不发(本实测即此态)
integrations.email.from_emailnoreply@fluxer.test立即发件人地址
integrations.email.from_name(空)立即发件人显示名
integrations.email.disable_new_ip_authorizationfalse立即关闭「新 IP 登录需邮件授权」
integrations.email.smtp.host(空)立即SMTP 服务器
integrations.email.smtp.port(空)立即SMTP 端口
integrations.email.smtp.username(空)立即SMTP 用户名
integrations.email.smtp.passwordnot set立即SMTP 密码(敏感值)
integrations.email.smtp.tls_mode(空)立即SMTP 加密方式(starttls/implicit/opportunistic/none)

不配邮件的后果很实际:密码重置、闲置删除警告、新 IP 授权等邮件都发不出去。生产建议尽早配置,模板见 6.3。也可以用 rexctl email 命令组引导配置。

5.10 单点登录:sso.*(16 项)

参数默认值生效说明
sso.enabledfalse立即SSO 总开关
sso.enforcedfalse立即是否强制只能 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_secretnot set立即Client Secret(敏感值)
sso.scope(空)立即请求的 scope
sso.allowed_domains(空)立即允许经 SSO 登录的邮箱域名
sso.auto_provisiontrue立即首次 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_disabledfalse立即全实例禁用私信
policy.direct_messages_lockedfalse立即锁定私信现状(不允许新开)
policy.friends_disabledfalse立即全实例禁用好友请求;未单独设置时跟随 direct_messages_disabled
policy.guild_create_accesstrue立即是否允许用户创建社区
policy.premium_modeeveryone立即Premium 权益适用模式
policy.single_community_enabledfalse立即单社区模式:整个实例即一个社区(适合企业/团队内部)
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_nameRex Lab(安装时 --name 给定)产品名(客户端界面显示)
app_public.branding.premium_product_namePremiumPremium 产品名
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.enabledfalse域名迁移总开关
domain_migration.rollout_basis_points0登录用户灰度比例(基点,万分比)
domain_migration.anonymous_rollout_basis_points0匿名访问灰度比例(基点)
domain_migration.rollout_saltdomain-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_usersfalse是否纳入 Premium 用户
domain_migration.standalone_forwardingfalse独立转发开关

典型顺序:新域名解析就绪 → 开 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/ 状态目录,同机恢复无需重答。

八、参考链接