瓦力 walle 配置参数详解

walle 2.0.1 四层配置全解:walle.env 环境变量、settings.py 应用参数、项目字段(审核/钩子/通知/路径陷阱)与 Nginx 接入层,含安全配置清单。

瓦力 walle持续交付自托管2026/10/25

瓦力 walle 配置参数详解

walle 2.0.1 的配置分为四层:Compose 环境变量、应用配置文件、项目级配置(界面/数据库)与 Web 接入层。本文逐层逐项解析,全部取值基于官方 alenx/walle-python:2.1 镜像实测(实测日期 2026-10-25),并给出每项的修改方法与生效方式。

一、配置分层总览

层级载体典型内容生效方式
部署变量walle.env / db.env(Compose env_file 注入)数据库连接、会话密钥服务启动时读取,改动需重启后端服务
应用配置/opt/walle_home/walle/config/settings.py、settings_prod.py会话时效、邮箱、日志轮转修改文件后重启后端服务
项目配置界面「项目管理」→ projects 表字段仓库、路径、审核、钩子、通知保存即生效
Web 接入层web 服务 Nginx 配置对外端口、域名、WebSocket 反代改配置后重载 Nginx

层与层的关系:walle.env 提供数据库连接与密钥 → 应用配置消费它们并补充邮箱/日志等 → 项目配置决定每个项目「怎么发布」 → Nginx 决定「从哪访问」。

二、部署变量(walle.env / db.env)

walle 后端通过 environs 库读取以下环境变量(镜像版 walle/config/settings.py 实测):

变量必填示例值说明
MYSQL_HOST是dbMySQL 主机名。Compose 编排内为 db 服务名;裸机部署本地库填 127.0.0.1
MYSQL_PORT是3306MySQL 端口
MYSQL_USER是rootwalle 连库用户
MYSQL_PASSWORD是walle上述用户口令,生产必须修改
MYSQL_DATABASE是walle库名,需与 db 服务初始化的库名一致
MYSQL_ROOT_PASSWORD是walle仅 MySQL 服务(db)初始化 root 口令使用,放 db.env
WALLE_SECRET否任意长随机串Flask 会话签名密钥,缺省值 secret-key(settings.py 源码),生产必须显式设置

注意事项:

  1. walle.env 中的连接五元组必须与 db.env 初始化出的实例匹配(口令一致),否则迁移阶段即报 Can't connect to MySQL server;
  2. 官方 git 仓库 master 分支的 settings_prod.py 仍是硬编码 SETTINGS 字典的旧写法,而官方镜像已改为读环境变量——以镜像实际行为为准;
  3. 数据库连接串由 settings_prod.py 按 mysql://user:password@host:port/db?charset=utf8mb4 拼装,字符集固定 utf8mb4。

三、应用配置(settings.py / settings_prod.py)

文件路径:后端安装目录 walle/config/ 下。关键字段(镜像实测值):

参数默认值说明
VERSION2.0.1版本号
SECRET_KEY环境变量 WALLE_SECRET,缺省 secret-key会话与令牌签名密钥
PERMANENT_SESSION_LIFETIME1 天(timedelta)登录会话有效期
BCRYPT_LOG_ROUNDS13口令哈希强度
WTF_CSRF_ENABLEDFalseCSRF 关闭(内网工具定位;若暴露半公网建议评估开启的兼容性)
CACHE_TYPEsimple进程内缓存,单机部署无需调整
MAIL_SERVERsmtp.exmail.qq.com邮件通知 SMTP 服务器
MAIL_PORT / MAIL_USE_SSL465 / TrueSMTP 端口与 SSL
MAIL_USERNAME / MAIL_PASSWORD项目作者的示例邮箱接入邮件通知前必须替换(源码内置凭据,公开仓库可见)
MAIL_DEFAULT_SENDER同上默认发件人
LOG_PATH<安装目录>/logs日志目录(Compose 中挂载到宿主机 data/logs)
LOG_PATH_ERROR / LOG_PATH_INFOerror.log / info.log错误与信息日志文件
LOG_FILE_MAX_BYTES100 MB单日志文件上限
LOG_FILE_BACKUP_COUNT10轮转保留个数
COOKIE_ENABLEFalse「记住登录」Cookie 开关
HOST / PORT0.0.0.0 / 5000后端监听地址(settings_prod.py),与 Nginx 反代目标一致
SSLFalse后端直连 HTTPS 开关,一般由 Nginx 终结 TLS,保持 False
CODE_BASE/tmp/walle/codebase/代码检出与打包目录(settings_prod.py),Compose 挂载点

改法示例:接入自有邮箱通知,编辑 settings.py(或 settings_prod.py)覆盖 MAIL_* 五项后重启后端服务。

四、项目级配置(projects 字段全解)

创建/编辑项目时的完整字段与实测语义:

字段界面位置说明
name项目名称项目标识,空间内唯一
environment_id环境所属环境(测试/生产),一个项目只属一个环境
status启用状态1=启用(status_open)、0=停用(status_close),停用项目不出现在发布入口
space_id—(由当前空间决定)项目归属的空间
repo_url仓库地址git 协议支持 http(s)/git/ssh;walle 主机必须可达该地址
repo_mode仓库模式branch(按分支选 commit)或 tag(按标签),上线单入口随之变化
target_root目标路径目标机上对外服务的路径,walle 将其管理为软链接,首次发布前不要预建实体目录
target_releases版本库路径历史版本目录(1_上线单ID_时间戳 命名),必须与 target_root 不同路径
is_include + excludes排除/仅包含文件是否启用文件过滤(0 不启用)及规则列表,控制分发内容
master负责人项目主管的用户 ID 列表(逗号分隔),展示与检索用途
server_ids目标服务器参与发布的服务器清单(多选)
keep_version_num保留版本数发布后目标机保留的历史版本数(实测发布链按 tail -n +N 清理旧版本)
task_audit上线审核1 开启:上线单需审核通过才出现「上线」按钮;0 关闭直接可发布
prev_deploy / post_deploy部署前/后钩子在 walle 主机代码检出阶段前后执行的自定义脚本
prev_release / post_release切换前/后钩子在目标机版本切换阶段前后执行的自定义脚本(如重启进程、清理缓存)
task_vars自定义变量发布过程中可引用的变量定义
notice_type通知方式dingding(钉钉机器人)或 email(邮件,需第三节 SMTP 可用)
notice_hook通知地址钉钉机器人的 webhook 地址

配置陷阱(实测复现):target_root 与 target_releases 配成同一路径会让软链管理逻辑自毁目录;二者必须分置(如 /srv/www/demo-web 与 /srv/www/demo-releases)。

五、上线单字段

字段说明
name上线单标题,建议带变更说明
project_id所属项目
servers本次发布生效的服务器(默认全选项目服务器,可裁剪实现按机灰度)
branch发布分支(repo_mode=branch 时)
commit_id发布的具体 commit——必选,实测缺省时部署阶段 git reset --hard 失败

上线单状态机(实测):创建 → (task_audit=1 时)等待审核 → 上线执行 → 成功/失败;每次上线/回滚都在上线单列表留痕,回滚会生成一条 is_rollback=1 的新上线单并重新指向上一版本目录。

六、Web 接入层(Nginx 与域名)

web 服务的 Nginx 配置(镜像内置)要点:

  • 前端静态资源根目录 /data/walle(Vue 构建产物),未匹配路径回落 index.html;
  • /api/ 反代到后端 python:5000,并传递 X-Forwarded-Host(供通知消息里的链接使用);
  • /socket.io/ 反代同一后端,带 WebSocket 升级头(Upgrade / Connection "upgrade"、proxy_http_version 1.1)——实时日志依赖此段,自建反代(如外层再套一层网关)时必须同样透传升级头。

对外端口在 Compose 的 ports 中映射(本文部署指南示例为 8134:80,生产可改 80:80 或配合自有域名/证书网关使用)。使用域名访问时,通知消息中的回跳链接取自 X-Forwarded-Host,因此外层网关需正确传递 Host 信息。

七、权限与通知的联动配置

  1. 审核流:项目 task_audit=1 后,普通成员提交的上线单进入待审核状态;具备审核权限的角色(如项目负责人/空间管理员)在上线单列表中执行「审核」,通过后方可上线。建议生产环境项目统一开启;
  2. 钉钉通知:notice_type=dingding 且 notice_hook 填入群机器人 webhook;发布成功/失败消息会携带项目、上线单与结果摘要;
  3. 邮件通知:notice_type=email,依赖第三节 MAIL_* 配置;默认内置的是项目作者示例邮箱,必须替换。

八、安全配置清单

项缺省建议
超管账号super@walle-web.io / Walle123部署后立即改密
WALLE_SECRETsecret-key设置 32+ 位随机串
MySQL 口令walle修改 walle.env 与 db.env 并保持一致
内置 SMTP 凭据源码硬编码示例邮箱替换为自有 SMTP 账号
CSRF关闭保持内网使用,勿直接暴露公网
目标机 SSH部署公钥免密独立密钥对 + 最小权限用户

配置项的部署落地步骤见《walle v2.0.1 Docker Compose 部署指南》,服务管理与升级命令见《walle v2.0.1 常用 CLI 命令详解》。