# ================================== # 环境配置文件:修改名称example为.env.dev或.env.prod 修改内容:ENVIRONMENT、SECRET_KEY、DATABASE_PASSWORD、REDIS_PASSWORD、OPENAI_API_KEY # ================================== ENVIRONMENT = dev # prod # 服务器配置 SERVER_HOST = localhost SERVER_PORT = 8001 # 前置可信反向代理跳数:docker 部署默认单层 nginx(默认 1);后端直接暴露公网时填 0,防止 X-Forwarded-For 伪造 # TRUSTED_PROXY_HOPS = 1 # 文档配置 DEBUG = True VERSION = 3.1.0 # 是否启用演示模式 DEMO_ENABLE = False # 数据库配置:mysql-3306、postgres-5432、sqlite DATABASE_TYPE = mysql DATABASE_HOST = localhost DATABASE_PORT = 3306 DATABASE_USER = root DATABASE_PASSWORD = your_database_password DATABASE_NAME = fastapiadmin # Redis配置 REDIS_HOST = localhost REDIS_PORT = 6379 REDIS_USER = '' REDIS_PASSWORD = your_redis_password REDIS_DB_NAME = 1 # 日志级别配置 LOGGER_LEVEL = DEBUG # ================================================= # # *************** 安全相关(生产必填)*************** # # ================================================= # # 令牌签名密钥:openssl rand -hex 32(更换后所有已签发令牌失效) SECRET_KEY = change_me_generate_with_openssl_rand_hex_32 # 落库敏感数据加密主密钥:openssl rand -hex 32;留空则由 SECRET_KEY 派生 DATA_ENCRYPTION_KEY = '' # 轮换前的旧主密钥(逗号分隔),仅用于解密历史密文 DATA_ENCRYPTION_OLD_KEYS = '' # 生产跨域白名单(逗号分隔,如 https://admin.example.com,https://www.example.com) # ⚠️ 生产留空 = 拒绝全部跨域请求(安全默认,不再回落通配 "*";同源部署不受影响)。 # 存在站外集成时必须显式列出域名;填 "*" 会被忽略(与 ALLOW_CREDENTIALS=True 组合不可接受)。 PROD_CORS_ORIGINS = '' # 严格启动:true 时「生产未配置 PROD_CORS_ORIGINS」直接启动失败(默认 false 只打 warning) CORS_STRICT_STARTUP = False # 只信任该网段内的反向代理传来的 X-Forwarded-*(切勿使用 *) FORWARDED_ALLOW_IPS = 10.255.178.0/24 # 演示模式:true 时禁止写操作 DEMO_ENABLE = False # ================================================= # # ******************* 定时任务 ******************* # # ================================================= # # 是否允许定时任务执行用户提交的代码块(exec,等同服务器代码执行权限)。 # ⚠️ 默认 False:调成 false(或保持默认)时,**所有「代码块型」节点任务都不会被调度** # (注册/手动执行会返回明确错误:"服务已禁用定时任务代码执行…"),执行结果可在任务执行日志查看; # 这只关闭 exec 能力,不影响调度器本身、也不影响无代码块的其它任务。 # 如确需该能力,请显式置为 true,并按最小权限授予任务管理权限。 SCHEDULER_ALLOW_CODE_EXEC = False # ================================================= # # ******************* 主机名校验 ******************* # # ================================================= # # 允许的 Host 头(逗号分隔的 JSON 数组);生产填真实域名 # ALLOWED_HOSTS = ["service.fastapiadmin.com", "*.fastapiadmin.com"] # 容器内健康检查/本地直连需要 Host: localhost|127.0.0.1|[::1];生产不需要时置 False 收敛校验范围 ALLOW_LOCALHOST_HOSTS = True # OAuth 回调域名白名单(**不再是通配符 "*"**);非生产默认额外放行本机与回环地址 # OAUTH_ALLOWED_HOSTS = ["service.fastapiadmin.com", "*.fastapiadmin.com", "localhost", "127.0.0.1", "[::1]"] # 大模型配置 OPENAI_BASE_URL = https://api.deepseek.com OPENAI_API_KEY = your_api_key OPENAI_MODEL = deepseek-v4-flash # ================================================= # # *********** 升级说明(行为变更,请逐条确认)*********** # ================================================= # # 1) SCHEDULER_ALLOW_CODE_EXEC 默认由 true 改为 false:升级后所有「代码块型」节点任务 # 不再被调度/执行,直至显式配置为 true。健康检查(/api/v1/monitor/health/check)新增 # code_exec_enabled 字段可用于确认当前生效值。 # 2) 生产 PROD_CORS_ORIGINS 未配置时不再回落通配 "*",而是拒绝全部跨域请求 # (同源部署不受影响)。健康检查新增 cors_origins_configured 字段;可用 CORS_STRICT_STARTUP=true # 把它变成启动失败以便尽早发现。 # 3) 业务异常的 HTTP 状态码按语义返回:客户端可修正类为 4xx(参数/验证码 400、无权限 403、 # 资源不存在 404),包装底层异常的内部故障为 500(此前统一 500/后统一 400 均不正确)。 # 4) 代码生成器的列名必须是合法标识符(且不能是 Python 关键字 / JS 保留字), # 列类型必须是「类型名 + 可选(长度[,精度]) + 可选[] + 可选 unsigned」的形状; # 含引号/分号/任意自由文本的类型会被拒绝(ENUM/SET 会归一化为基名)。 # 5) 代码生成落盘前新增结构闸门:.py 产物必须与「哨兵值骨架」AST 一致,.vue/.ts/.toml 做行结构比对, # 任何注入/转义缺口都会在写盘前报错,而不是写出可被启动期 import 的坏文件。 # 6) OAUTH_ALLOWED_HOSTS 默认不再是 "*";如需自定义请在对应环境中显式配置。 # 7) ALLOWED_HOSTS 默认不再无条件包含 localhost:由 ALLOW_LOCALHOST_HOSTS 控制(默认 True 以兼容容器健康检查)。