Flagsmith 自托管环境变量完全参考指南:API 与前端配置速查手册

发布时间:2026/10/8 7:54:22
Flagsmith 自托管环境变量完全参考指南:API 与前端配置速查手册 后端前端【免费下载链接】flagsmithFlagsmith is an open-source feature flag platform with remote config, experimentation, and self-hosted or cloud deployment options.项目地址https://gitcode.com/gh_mirrors/fl/flagsmith点击查看免费下载本指南以 docs/docs/deployment-self-hosting/core-configuration/environment-variables.md 为骨架系统梳理 Flagsmith 自托管部署中 API 与前端全部核心环境变量的作用、默认值与典型取值并补充仓库源码中的真实读取逻辑与配置示例。读完本文你将能够在本地、云主机或 Kubernetes 上快速定位并修正任何一处部署配置理解每个变量在 API 设置文件 与 前端 Node 服务 中的实际作用路径同时掌握用户注册、OAuth、遥测与分析等关键能力的开启方式。为什么自托管需要一份环境变量参考Flagsmith 是一个开源的功能开关feature flag平台其自托管形态由 Django 后端 API 与 React 前端两部分组成。与 SaaS 版本由官方托管配置不同自托管实例的几乎每一项行为——数据库连接、域名白名单、登录策略、日志输出、行为分析 SDK——都由环境变量驱动。这份参考页的价值在于单一事实来源API 与前端两套变量集中在同一份参考中避免部署时在 Docker、Kubernetes、Heroku 等不同平台间来回翻文档可审计每个变量都能在 api/app/settings/common.py 中找到对应的env()读取语句配置生效路径可验证贴近实战变量覆盖了从「最小可用部署」到「带 OAuth、InfluxDB、OpenTelemetry 的完整生产部署」的全部梯度。API 环境变量以下变量由 API 进程Django在启动时读取。绝大多数读取逻辑集中在 api/app/settings/common.py该文件使用environs库的Env()对象解析环境因此支持字符串、布尔、整数、列表等多种类型。参考页中未给出默认值的变量通常表示「不设置即关闭该能力」下文会结合源码逐一说明。基础运行与安全变量作用默认值/取值DJANGO_ALLOWED_HOSTS允许访问 API 的域名列表逗号分隔或*允许任意域名空列表DJANGO_SECRET_KEY用于加密签名的长随机唯一字符串随机生成ENV应用运行环境标识如prod见下DJANGO_SETTINGS_MODULE当前环境对应的 Python 设置模块路径如app.settings.develop—ALLOW_ADMIN_INITIATION_VIA_CLI是否启用bootstrap管理命令用于创建默认管理员、组织与项目FalseADMIN_EMAIL默认超管邮箱adminexample.comORGANISATION_NAME默认组织名Default OrganisationPROJECT_NAME默认项目名Default ProjectENABLE_GZIP_COMPRESSIONDjango 是否对 HTTP 响应做 gzip 压缩FalseTRUST_RELATIONSHIP_ACCESS_TOKEN_LIFETIME_SECONDSOIDC 信任关系令牌交换签发的访问令牌有效期秒3600OIDC_TOKEN_EXCHANGE_THROTTLE_RATEOIDC 令牌交换端点的限流频率60/minACCESS_LOG_LOCATIONDocker 容器中 Gunicorn Web 日志的存放位置不设置则不落盘设为-则输出到stdout—关键说明DJANGO_ALLOWED_HOSTS在 api/app/settings/common.py#L72 中通过env.list解析即逗号分隔多个域名会被拆成列表生产环境务必替换为真实域名而不是沿用 docker-compose.yml 中演示用的*。DJANGO_SECRET_KEY默认值由get_random_secret_key()随机生成见 api/app/settings/common.py#L60。这意味着每次重启进程签名密钥都可能变化会导致已签发的 token 失效自托管时务必显式设置一个固定值。DJANGO_SETTINGS_MODULEENV变量在源码中实际读取的是ENVIRONMENT见 api/app/settings/common.py#L43并校验其取值必须为local、dev、staging、production之一否则给出警告DJANGO_SETTINGS_MODULE则指向具体的设置模块如app.settings.develop、app.settings.production二者共同决定加载哪一份配置。首次初始化ALLOW_ADMIN_INITIATION_VIA_CLI开启后启动时bootstrap命令会用ADMIN_EMAIL、ORGANISATION_NAME、PROJECT_NAME创建默认超管、组织和项目源码注释见 api/app/settings/common.py#L545-L562。若你更习惯交互式初始化可参考 initial-setup.md本地执行python manage.py createsuperuser云环境访问/api/v1/users/config/init/页面。数据库与连接池变量作用默认值DATABASE_URLPostgreSQL 数据库连接 URLpostgres://与postgresql://两种 schema 均支持未设置则回退旧式参数DJANGO_DB_CONN_MAX_AGE数据库连接存活时间秒-1表示每个请求结束后关闭Django 默认行为60DJANGO_DB_CONN_HEALTH_CHECKS复用持久连接前是否做健康检查False源码层面的实现细节api/app/settings/common.py#L189-L214DJANGO_DB_CONN_MAX_AGE的-1会被换算为 Django 的0db_conn_max_age 0 if db_conn_max_age -1 else db_conn_max_age即「连接即用即关」DATABASE_URL通过dj_database_url.parse()解析并强制为 PostgreSQL 设置READ_COMMITTED隔离级别若未设置DATABASE_URL则会回退读取旧的DJANGO_DB_NAME、DJANGO_DB_USER、DJANGO_DB_PASSWORD、DJANGO_DB_HOST、DJANGO_DB_PORT拆分式配置同一文件还支持ANALYTICS_DATABASE_URL独立分析库、REPLICA_DATABASE_URLS只读副本含REPLICA_READ_STRATEGY选择DISTRIBUTED或SEQUENTIAL以及TASK_PROCESSOR_DATABASE_URL任务处理器独立库属于参考页之外、面向大规模部署的扩展能力。日志、监控与错误上报变量作用默认值LOG_LEVEL日志级别取值DEBUG/INFO/WARNING/ERROR/CRITICALWARNINGLOG_FORMAT日志格式取值generic或jsongenericSENTRY_DSN将错误上报到 Sentry 的 DSN—SENTRY_TRACE_SAMPLE_RATESentry 事务采样百分比1.0OTEL_EXPORTER_OTLP_ENDPOINTOTLP/HTTP 基础端点如http://collector:4318不设置则禁用 OpenTelemetry—OTEL_SERVICE_NAME附加到所有 OTel 遥测的service.name资源属性flagsmith-apiOTEL_TRACING_EXCLUDED_URL_PATHS从 OTel 追踪中排除的 URL 路径逗号分隔如health/liveness,health/readiness—日志配置在 api/app/settings/common.py#L687-L689 中读取且设置了LOGGING_CONFIG None日志实际由 flagsmith-common 的setup_logging()在 Django 加载前完成装配Sentry 采样率源码中为DEFAULT_SENTRY_TRACE_SAMPLE_RATE env.float(SENTRY_TRACE_SAMPLE_RATE, default1.0)api/app/settings/common.py#L1027即默认 100% 采样生产流量较大时建议调低OTel 三件套与 opentelemetry.md 指南配套使用OTEL_EXPORTER_OTLP_ENDPOINT是总开关未设置时整个 OTel 链路不启用。用户注册与登录策略变量作用默认值USER_CREATE_PERMISSIONS新建用户所需权限逗号分隔的 djoser / rest_framework 权限类自托管可借此关闭公开注册rest_framework.permissions.AllowAnyALLOW_REGISTRATION_WITHOUT_INVITE是否允许无邀请直接注册设为False或0禁用禁用后新用户必须通过邮件邀请TruePREVENT_SIGNUP是否阻止新的注册FalseENABLE_EMAIL_ACTIVATION新用户注册是否走邮件激活流程False源码实现细节USER_CREATE_PERMISSIONS在 api/app/settings/common.py#L922-L924 中通过env.list解析并注入到DJOSER[PERMISSIONS][user_create]参考页示例的djoser.permissions.CurrentUserOrAdmin即表示「仅当前用户或管理员可创建用户」适合关闭公网注册的自托管场景ENABLE_EMAIL_ACTIVATION直接映射到 djoser 的SEND_ACTIVATION_EMAILapi/app/settings/common.py#L932配合邮件配置可参考 email-setup.mdPREVENT_SIGNUP在前端侧同样被读取frontend/api/index.js#L52 中的preventSignup前后端协同关闭注册入口。分析与事件追踪变量作用默认值GOOGLE_ANALYTICS_KEY需要 Google Analytics 时填入的追踪码空字符串GOOGLE_SERVICE_ACCOUNT访问 Google API 的服务账号 JSON用于统计组织用量需analytics.readonly权限—GA_TABLE_ID查询组织用量时的 GA 表 IDview—INFLUXDB_TOKEN向 InfluxDB 发送 API 事件所需的写入 token空字符串INFLUXDB_URLInfluxDB 数据库 URL空字符串INFLUXDB_ORGInfluxDB API 调用中的组织字符串空字符串源码侧api/app/settings/common.py#L420-L434GOOGLE_ANALYTICS_KEY一旦非空会向MIDDLEWARE追加app_analytics.middleware.GoogleAnalyticsMiddlewareapi/app/settings/common.py#L425-L426即按域名注入 GA 追踪InfluxDB 相关变量在 app_analytics 模块中被消费用于记录 API 使用量注意INFLUXDB_BUCKETbucket 名虽未列在参考页但同样是 Influx 写入必需的配置项若希望完全绕开 InfluxDB、改用 PostgreSQL 存储分析数据源码还支持USE_POSTGRES_FOR_ANALYTICS开关属于参考页之外的扩展。初始化命令行示例结合 docker-compose.yml 中的演示配置一个最小可用的 API 环境变量组合大致如下# docker-compose.yml 中 API 服务的部分示例 DATABASE_URL: postgresql://postgres:passwordpostgres:5432/flagsmith DJANGO_ALLOWED_HOSTS: * # 生产环境务必替换为真实域名 DJANGO_SECRET_KEY: secret # 生产环境务必替换为随机长字符串 REDIS_URL: redis://... ENV: prod DJANGO_SETTINGS_MODULE: app.settings.production LOG_LEVEL: INFO LOG_FORMAT: generic ALLOW_ADMIN_INITIATION_VIA_CLI: true ADMIN_EMAIL: adminexample.com ORGANISATION_NAME: Default Organisation PROJECT_NAME: Default Project前端环境变量前端React 应用 Node 服务器的变量由 frontend/api/index.js 在启动时读取并经由/config/project-overrides端点注入浏览器运行时。参考页列出的变量与源码中values数组的字段一一对应见 frontend/api/index.js#L51-L127。API 接入与代理变量作用说明FLAGSMITH_API_URL前端请求的 API 地址如https://edge.api.flagsmith.com/api/v1/需包含/api/v1/路径PROXY_API_URL通过本应用代理 API设置为被代理 API 的主机名/api/v1/会被自动追加设置后FLAGSMITH_API_URL被忽略浏览器请求走前端 Node 服务器实现细节当FLAGSMITH_PROXY_API_URL被设置时前端api字段被固定为/api/v1/apiProxyEnabled为truefrontend/api/index.js#L73-L81Node 服务器随即用http-proxy-middleware将/api/v1/路径转发到代理目标并开启changeOrigin与xfwd透传 X-Forwarded-* 头见 frontend/api/index.js#L138-L150代理模式同时会启用/_backend_version接口用于展示后端版本frontend/api/index.js#L216-L230。源码注释特别强调FLAGSMITH_PROXY_API_URL应以主机名结尾不要带/api/v1/。Flagsmith 自举Flagsmith on Flagsmith变量作用说明FLAGSMITH_ON_FLAGSMITH_API_KEY用于管理自身功能的 Flagsmith 环境 key前端据此加载自身 feature flagFLAGSMITH_ON_FLAGSMITH_API_URLFlagsmith 客户端应通信的 API URL自托管时通常指向本实例域名Flagsmith 用 Flagsmith 来管理自身功能详见 running-flagsmith-on-flagsmith.md。在源码中FLAGSMITH_ON_FLAGSMITH_API_KEY直接注入window.projectOverrides.flagsmithFLAGSMITH_ON_FLAGSMITH_API_URL注入flagsmithClientAPIfrontend/api/index.js#L65、frontend/api/index.js#L84-L86前端 SDK 据此读取本实例定义的功能开关——例如 Google OAuth 是否在实例内可用。分析、行为追踪与第三方 Key变量作用说明DISABLE_ANALYTICS_FEATURES关闭应用内分析功能API 用量图表、flag 分析如DISABLE_ANALYTICS_FEATURES1布尔值ENABLE_FLAG_EVALUATION_ANALYTICS是否让 Flagsmith SDK 发送使用分析开启 Flag Analytics 时设置如ENABLE_FLAG_EVALUATION_ANALYTICS1布尔值GOOGLE_ANALYTICS_API_KEY追踪 API 用量的 Google Analytics key—AMPLITUDE_API_KEYAmplitude 行为追踪 key—REO_API_KEYReo 行为追踪 key—MIXPANEL_API_KEYMixpanel 分析 key—SENTRY_API_KEYSentry 错误上报 key—ALBACROSS_CLIENT_IDAlbacross 行为追踪 client ID—PYLON_APP_IDPylon 站内聊天组件 App ID—FIRST_PROMOTER_ID结账联盟affiliateFirst Promoter ID—源码说明DISABLE_ANALYTICS_FEATURES与ENABLE_FLAG_EVALUATION_ANALYTICS分别映射到disableAnalytics与flagsmithAnalyticsfrontend/api/index.js#L88-L94API 侧还有一个等价的DISABLE_INFLUXDB_FEATURES旧变量会被DISABLE_ANALYTICS_FEATURES一并兼容api/app/settings/common.py#L1063-L1065。注册与安全策略变量作用默认值/说明ALLOW_SIGNUPS已废弃被 API 的PREVENT_SIGNUP取代设为任意值表示允许注册—PREVENT_FORGOT_PASSWORD禁止忘记密码功能LDAP/SAML 场景常用设为任意值即启用—PREVENT_EMAIL_PASSWORD禁用邮箱地址注册、登录与修改邮箱功能—ENABLE_MAINTENANCE_MODE将站点置于维护模式设为任意值即启用—BASE_URL指定从子目录提供服务时路由忽略的基础 URL 路径—USE_SECURE_COOKIES是否使用安全 cookie私网无域名/SSL 证书部署时应禁用以保证会话 token 持久化trueCOOKIE_SAME_SITE前端会话 token cookie 的 SameSite 属性值none安全相关的三条变量在 api/app/settings/common.py#L1260-L1262 中同样存在COOKIE_AUTH_ENABLED、USE_SECURE_COOKIES、COOKIE_SAME_SITE说明它们同时影响 API 侧的 cookie 认证前端useSecureCookies与cookieSameSite则注入浏览器端frontend/api/index.js#L112-L113。若在纯内网环境无域名、无 SSL部署务必把USE_SECURE_COOKIES设为false否则浏览器不会持久化会话 cookie。OAuth 配置参考页将 OAuth 单列一节强调「外部 OAuth 供应商能否在实例内可用取决于 Flagsmith 自身的 flag」这一自举设计。Google OAuth配置步骤在部署平台上设置 Google OAuth 客户端凭据OAUTH_CLIENT_ID、OAUTH_CLIENT_SECRETAPI 侧在 api/app/settings/common.py#L505-L506 读取用于 Django Admin SSO按照 oauth.md 创建Flagsmith on Flagsmithflag该 flag 控制 Google SSO 是否在实例中显示。GitHub OAuth配置步骤在环境中设置GITHUB_CLIENT_ID与GITHUB_CLIENT_SECRETapi/app/settings/common.py#L998-L1000 读取默认空字符串创建Flagsmith on Flagsmithflag同见 oauth.md实例前端随即出现 GitHub SSO 选项。注意区分两组变量OAUTH_CLIENT_ID/OAUTH_CLIENT_SECRET服务于 Django Admin 的 SSO 登录DJANGO_ADMIN_SSO_OAUTH_CLIENT_ID而GITHUB_CLIENT_ID/GITHUB_CLIENT_SECRET服务于实例的 GitHub 登录入口。参考页之外值得了解的配套变量完整环境变量参考页有意保持「高频使用」的聚焦而 api/app/settings/common.py全文 1600 行中还包含一批面向进阶部署的变量与其配合使用可以进一步压榨自托管能力数据库扩展ANALYTICS_DATABASE_URL、REPLICA_DATABASE_URLS含REPLICA_DATABASE_URL_0编号式与逗号分隔式两种写法api/app/settings/common.py#L215-L263、CROSS_REGION_REPLICA_DATABASE_URLS、TASK_PROCESSOR_DATABASE_URL缓存与性能ENVIRONMENT_CACHE_SECONDS、GET_FLAGS_ENDPOINT_CACHE_SECONDS、GET_IDENTITIES_ENDPOINT_CACHE_SECONDS、CACHE_FLAGS_SECONDS等api/app/settings/common.py#L699-L771详细策略见 caching-strategies.md限流LOGIN_THROTTLE_RATE默认20/min、SIGNUP_THROTTLE_RATE默认10000/min、OIDC_TOKEN_EXCHANGE_THROTTLE_RATE默认60/min等api/app/settings/common.py#L351-L388任务处理器TASK_RUN_METHODTASK_PROCESSOR或SEPARATE_THREAD、TASK_DELETE_RETENTION_DAYS等LDAP/SAMLLDAP_AUTH_URL、LDAP_AUTH_SEARCH_BASE、LDAP_SYNCED_GROUPS等一整套变量api/app/settings/common.py#L1341-L1424详见 ldap.md 与 saml.mdClickHouseCLICKHOUSE_URL或CLICKHOUSE_HOST加离散字段组合api/app/settings/common.py#L1534-L1542邮件EMAIL_BACKEND默认按SENDGRID_API_KEY是否设置选择 SendGrid 或 SMTP、EMAIL_HOST、EMAIL_PORT等详见 email-setup.md。配置排查建议先定位进程再查变量API 变量由 Django 在启动时读取修改后需重启 API 进程前端变量由 Node 服务在启动时读取并注入/config/project-overrides修改后需重启前端服务并刷新浏览器该端点带s-max-age1, stale-while-revalidate缓存头见 frontend/api/index.js#L129。布尔值的两种写法参考页与源码均接受true/1与false/0frontend/api/index.js#L36-L42 的envToBool同时判定true与1在不同编排平台间迁移时注意保持一致。用文档默认值对照源码参考页给出的默认值均可追溯到 api/app/settings/common.py 中env()的第二个参数若某变量在文档中未标默认值通常意味着源码默认也为空/关闭属于可选能力。安全三件套必改DJANGO_ALLOWED_HOSTS放开*、DJANGO_SECRET_KEY随机值、USE_SECURE_COOKIES私网部署置 false是自托管最常见的三个隐患点。总结环境变量是 Flagsmith 自托管部署的控制面板。以 environment-variables.md 为索引、以 api/app/settings/common.py 与 frontend/api/index.js 为实现你可以逐项核对 API 与前端每一个开关的真实读取路径与默认值并在此基础上组合出从最小单机部署到带副本库、InfluxDB 分析、OAuth/SSO、OTel 可观测性的完整生产方案。当遇到「某个功能为什么没生效」的疑问时按「变量是否设置 → 源码是否读取 → 进程是否重启」的顺序排查即可快速定位。赞分享后端前端【免费下载链接】flagsmithFlagsmith is an open-source feature flag platform with remote config, experimentation, and self-hosted or cloud deployment options.项目地址https://gitcode.com/gh_mirrors/fl/flagsmith点击查看免费下载相关推荐Jellium Desktop界面元素隐藏自定义显示哪些控件的终极指南Jellium Desktop界面元素隐藏自定义显示哪些控件的终极指南 Jellium Desktop作为一款非官方的Jellyfin桌面客户端提供了丰富的桌面应用音视频77 条完整公共 Tracker 清单trackerslist 每日自动检测告别 BT 下载卡尾段77 条完整公共 Tracker 清单trackerslist 每日自动检测告别 BT 下载卡尾段 trackerslist是一个每天自动检测公共TrackDiceBear HTTP API 自托管完全指南Docker 与 Node.js 部署、样式元数据端点与环境变量参考DiceBear HTTP API 自托管完全指南Docker 与 Node.js 部署、样式元数据端点与环境变量参考 导读 DiceBear 的公开 HTUI组件后端上一篇竖排文字识别终极指南免费离线OCR工具让古籍数字化不再翻车下一篇如何解决CrystalDiskInfo与JMicron USB RAID控制器的兼容性问题创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询