Wiki.js 2.5 配置参数详解
Wiki.js 2.5.315 配置全解:config.yml 全参数逐项说明、环境变量对照表、管理后台关键设置、22 项组权限位与页面规则、存储连接器与生产配置模板,实测核对回显。
Wiki.js 2.5 配置参数详解
目标:系统梳理 Wiki.js 2.5.315 的全部配置入口与参数——以服务器安装目录下的
config.yml启动配置为核心,覆盖环境变量对照、管理后台(Administration Area)关键设置、组权限模型与存储连接器,全部参数说明基于官方 config.sample.yml 与 2.5.315 实例实测,已在 Ubuntu 22.04 实测通过。
一、环境信息
- 操作系统:Ubuntu 22.04 LTS(x86_64)
- Wiki.js 版本:2.5.315(GitHub Releases 最新稳定版,2026-09-25)
- 数据库:PostgreSQL 16.15
- Node.js 运行时:v24.21.0(官方要求 Node.js ≥ 20)
- Wiki.js 安装目录:本文以
/opt/wiki为例(原生部署时为程序解压根目录,含config.yml与server/目录;部署方式不同路径不同,参数含义一致) - 配置生效层级实测依据:配置文件模板取自官方仓库 v2.5.315 tag 的
config.sample.yml;运行期配置取自实测实例的管理界面与 GraphQL 接口真实响应 - 管理账号:administrator / admin@example.com / q1w2e3r4(实测演示账号)
二、前置条件
- 已有一套可访问的 Wiki.js 2.5.315 实例(部署方法见 《Wiki.js Docker Compose 部署指南》)。
- 涉及数据库连接参数修改时,需持有数据库账号(本文示例库为
wiki,账号wikijs)。 - 修改
config.yml需具备服务器文件编辑权限;修改管理后台配置需manage:system权限账号(Administrators 组默认具备)。
三、参数查看与修改方式
Wiki.js 的参数分布在三个层级,先厘清「谁管什么」再动手,可以避免改错地方不生效。
| 层级 | 载体 | 管什么 | 生效方式 |
|---|---|---|---|
| 启动层 | 安装目录 config.yml(由官方 config.sample.yml 复制而来) | 监听端口、数据库连接、内置 HTTPS、日志、离线模式、高可用 | 重启进程后生效 |
| 注入层 | 环境变量(DB_TYPE、DB_HOST 等) | 与 config.yml 的启动项重叠,适合托管环境注入 | 进程启动时替换 config.yml 中 $(VAR) 占位后生效 |
| 运行层 | 管理后台(Administration Area)/ GraphQL API | 站点标题、语言、认证策略、组权限、存储、搜索、渲染、主题、邮件等 | 保存即入库即时生效(个别项需重启) |
三层的落地位置:启动层写在文件里;运行层保存后写入数据库 settings 表(可用数据库客户端核对,实测查询见 3.3)。推荐分工:连接与进程相关的改启动层,站点与业务相关的改管理后台。
3.1 查看 config.yml
config.yml 位于安装根目录,官方发行包内附样例 config.sample.yml,首次配置时复制而来:
cd /opt/wiki && ls -la config*.yml && cat config.yml
实测回显(该实例的 config.yml 全文):
port: 3000
bindIP: 0.0.0.0
db:
type: $(DB_TYPE)
host: '$(DB_HOST)'
port: $(DB_PORT)
user: '$(DB_USER)'
pass: '$(DB_PASS)'
db: $(DB_NAME)
storage: $(DB_FILEPATH)
ssl: $(DB_SSL)
ssl:
enabled: $(SSL_ACTIVE)
port: 3443
provider: letsencrypt
domain: $(LETSENCRYPT_DOMAIN)
subscriberEmail: $(LETSENCRYPT_EMAIL)
logLevel: $(LOG_LEVEL:info)
logFormat: $(LOG_FORMAT:default)
ha: $(HA_ACTIVE)
关键解读:$(VAR) 是 Wiki.js 的占位替换语法——进程启动时读取同名环境变量替换之,$(LOG_LEVEL:info) 表示「优先环境变量 LOG_LEVEL,缺省 info」。原生安装时既可直接写实际值,也可保留占位交给环境变量注入。
3.2 修改方式
- 改启动层:编辑
/opt/wiki/config.yml后重启 Wiki.js 进程(systemd 部署sudo systemctl restart wiki,进程托管按对应方式重启)。 - 改注入层:在服务定义(如 systemd unit 的
Environment=、或部署平台的变量区)中设置变量后重启进程。 - 改运行层:浏览器打开
http://<服务器IP>:<端口>以管理员登录,右上角进入 Administration Area(管理区),左侧按分类修改,页面顶部保存。 - API 方式:管理接口走 GraphQL(端点
/graphql),适合批量与自动化,实测样例见 《Wiki.js 2.5 API 使用详解》。
3.3 核对参数是否生效
启动层看进程启动日志第一行(实测回显):
Loading configuration from /wiki/config.yml... OK
运行层核对数据库 settings 表(运行层配置全部入库,实测):
psql -h 127.0.0.1 -U wikijs -d wiki -c "SELECT key, value FROM settings WHERE key IN ('host','title','lang','api') ORDER BY key;"
实测回显:
key | value
-------+---------------------------------------------------------------------
api | {"isEnabled":true}
host | {"v":"http://192.168.146.128:3101"}
lang | {"code":"en","autoUpdate":true,"namespacing":false,"namespaces":[]}
title | {"v":"Wiki.js"}
(4 rows)
关键解读:settings 表每行是一个配置组(JSON 存储)。host 即站点对外地址、title 站点标题、api 是否开放 API——与管理后台所见一致,可直接核对「改了后台是否真入库」。
四、参数总览
config.yml 全部参数一览(官方 config.sample.yml,v2.5.315 全文实取):
| 参数 | 默认值 | 作用 |
|---|---|---|
port | 3000 | HTTP 监听端口 |
bindIP | 0.0.0.0 | 监听网卡地址(0.0.0.0 为全部) |
db.type | postgres | 数据库引擎:postgres/mysql/mariadb/mssql/sqlite |
db.host / db.port | localhost / 5432 | 数据库地址与端口 |
db.user / db.pass / db.db | wikijs / wikijsrocks / wiki | 数据库账号/密码/库名 |
db.ssl | false | 数据库连接 TLS |
db.sslOptions.* | auto: true | TLS 细节(rejectUnauthorized/ca/cert/key/pfx/passphrase) |
db.schema | public | PostgreSQL 专用 schema |
db.storage | path/to/database.sqlite | SQLite 专用:数据库文件路径 |
ssl.enabled | false | 内置 HTTPS 开关 |
ssl.port | 3443 | HTTPS 监听端口 |
ssl.provider | custom | 证书来源:custom(自带证书)/ letsencrypt(自动签发) |
ssl.format | pem | 自带证书格式:pem / pfx |
ssl.key / ssl.cert | path/to/*.pem | PEM 私钥/证书路径 |
ssl.pfx / ssl.passphrase | null | PFX 证书路径与口令 |
ssl.dhparam | null | Diffie-Hellman 参数(≥1024 位) |
ssl.domain / ssl.subscriberEmail | — | Let's Encrypt 域名与申请邮箱 |
pool.min / pool.max | 2 / 10 | 数据库连接池上下限 |
logLevel | info | 日志级别:error/warn/info/verbose/debug/silly |
logFormat | default | 日志格式:default / json |
offline | false | 离线模式(断网环境侧载语言包/更新文件) |
ha | false | 多实例高可用(必须 PostgreSQL) |
dataPath | ./data | 可写数据目录(缓存与临时上传) |
bodyParserLimit | 5mb | API 请求体大小上限(不含文件上传) |
关键解读:日常最常改的是 db.*(连库)与 port;ssl.* 在无反代场景使用内置 HTTPS;ha 与 pool 是进生产前的两个「顺手项」——多实例开 ha,并发高调大连接池。
五、核心参数分类详解
5.1 监听与网络(port / bindIP / bodyParserLimit)
port: 3000
bindIP: 0.0.0.0
bodyParserLimit: 5mb
逐项说明:
port:进程监听端口。原生部署若要与 Nginx 同机共存,改为 127.0.0.1 绑定 + 非冲突端口是常见做法(如 3101)。bindIP:仅本机反代访问时设127.0.0.1更安全;独立对外服务保持0.0.0.0。bodyParserLimit:API 请求体上限,默认 5mb;通过 API 写入超长页面内容时按需调大。
验证:改端口重启后,启动日志出现 HTTP Server on port: [ 3000 ](实测回显,端口随配置变化),并用 curl -I http://localhost:<port>/ 确认 HTTP/1.1 200 OK。
5.2 数据库连接(db.*)
db:
type: postgres
host: localhost
port: 5432
user: wikijs
pass: wikijsrocks
db: wiki
ssl: false
schema: public
逐项说明:
| 参数 | 取值约束 |
|---|---|
type | postgres(9.5+,推荐)/ mysql(8.0+)/ mariadb(10.2.7+)/ mssql(2012+)/ sqlite(3.9+);3.0 起仅支持 PostgreSQL,新建实例务必选 postgres |
host/port | 数据库地址;同机部署写 localhost,独立库服务器写内网 IP 或域名 |
user/pass/db | 连接凭据;pass 建议引用环境变量占位 $(DB_PASS) 而非明文 |
ssl | 数据库链路加密开关,云托管库(如 RDS)通常需 true |
sslOptions | TLS 细节:auto: true 自动协商;自签证书场景 rejectUnauthorized: false 或提供 ca |
schema | 仅 PostgreSQL 生效,默认 public;多套 Wiki 共用一个库时可用 schema 隔离 |
storage | 仅 SQLite 生效,数据库文件相对/绝对路径 |
💡 技术拓展:数据库搜索能力差异——PostgreSQL 可启用 pg_trgm 模糊搜索扩展(contrib 包自带,主流发行版软件源直接提供);MySQL/MariaDB 使用自带全文索引,中文分词效果一般;SQLite 不适合并发写入。搜索体验优先级:PostgreSQL + pg_trgm > 外接 Elasticsearch/Meilisearch > MySQL 全文索引。本文实际采用 PostgreSQL 16,理由即官方首推与搜索扩展能力。
验证:连接参数错误时启动即报错退出(如 Database Connection Failed),正确时日志(实测回显):
Using database driver pg for postgres [ OK ]
Connecting to database...
Database Connection Successful [ OK ]
5.3 连接池(pool)
pool:
min: 2
max: 10
min:常驻连接数;max:峰值连接数。默认 2/10 适合中小团队(几十并发编辑)。- 大规模部署(百人以上同时在线、外接搜索引擎重建索引)可调至
min: 5, max: 20,同时确认数据库端max_connections有余量(PostgreSQL 默认 100)。
5.4 内置 HTTPS(ssl.*)
ssl:
enabled: true
port: 3443
provider: letsencrypt
domain: wiki.example.com
subscriberEmail: admin@example.com
provider: letsencrypt:自动向 Let's Encrypt 申请与续期证书,需domain公网可解析、80 端口可达;enabled: true后 HTTPS 监听在ssl.port(3443),HTTP 3000 仍保留用于证书签发。provider: custom:自带证书场景,PEM 用key/cert指向文件路径,PFX 用pfx+passphrase;dhparam可选增强握手安全。- 已有 Nginx/Caddy 反代统一终结 TLS 时,
ssl.enabled: false,证书由反代管理(官方也推荐反代方案,可获更灵活的路由与缓存)。
验证:开启后 curl -kI https://wiki.example.com:3443/ 应返回 HTTP/1.1 200 OK,日志出现 HTTPS server 启动条目。
5.5 日志(logLevel / logFormat)
logLevel:error → warn → info(默认)→ verbose → debug → silly 逐级更详细;排障临时开debug,查完改回info。logFormat: json:改为结构化日志,便于接入日志采集器(Loki/ELK)解析。
实测各级别差异:info 下每次页面保存有 Page ... updated 级别条目;debug 下会追加请求级细节(会话校验、渲染管线计时等)。
5.6 运行模式(offline / ha / dataPath)
offline: true:彻底断网的服务器开启;语言包、更新清单等改为手动侧载(官方提供离线文件包下载后放入dataPath)。ha: true:同一数据库跑多个 Wiki.js 实例(负载均衡/K8s 多副本)时开启,实例间通过数据库广播配置与内容变更;必须 PostgreSQL。单实例务必保持false,避免多余的开销。dataPath:缓存与临时上传目录,确保进程属主可写;空间不足会引起资产上传失败与渲染缓存报错。
5.7 环境变量对照表
环境变量注入与 config.yml 的对应关系(依据官方安装文档与发行包内置配置模板对照整理,查询日期 2026-10-18):
| 环境变量 | 对应 config.yml 键 | 说明 |
|---|---|---|
DB_TYPE | db.type | postgres/mysql/mariadb/mssql/sqlite |
DB_HOST | db.host | 数据库主机 |
DB_PORT | db.port | 数据库端口 |
DB_USER | db.user | 数据库用户 |
DB_PASS | db.pass | 数据库密码;DB_PASS_FILE 可改为密钥文件路径 |
DB_NAME | db.db | 数据库名 |
DB_SSL | db.ssl | 1/true 启用 |
DB_SSL_CA | db.sslOptions.ca | CA 证书内容(单行字符串) |
DB_FILEPATH | db.storage | SQLite 文件路径 |
SSL_ACTIVE | ssl.enabled | 1/true 启用内置 HTTPS |
LETSENCRYPT_DOMAIN | ssl.domain | Let's Encrypt 域名 |
LETSENCRYPT_EMAIL | ssl.subscriberEmail | 申请邮箱 |
HA_ACTIVE | ha | 1/true 启用高可用 |
LOG_LEVEL | logLevel | 缺省 info |
LOG_FORMAT | logFormat | 缺省 default |
关键解读:环境变量适合「变量来自部署平台、值不落盘」的场景;DB_PASS_FILE 与 $(DB_PASS) 占位是两条不落明文的路径,二选一即可。
5.8 管理后台关键设置(运行层)
管理后台(Administration Area)按左侧菜单分组,重点项与实测路径如下:
| 菜单 | 关键设置 | 实测要点 |
|---|---|---|
| General(常规) | Site URL、站点标题、Logo、SEO 描述 | host 入 settings 表(见 3.3 实测回显);Site URL 必须与实际访问地址一致,否则资源引用错位 |
| Locale(区域) | 下载/启用语言包、默认语言 | 默认仅英文;中文站先下载 zh(后台下载或 GraphQL downloadLocale,实测返回 Locale downloaded successfully) |
| Authentication(认证) | 认证策略启停与参数 | 实测默认启用 Local 策略(21 个内置策略模块:Local、LDAP、OIDC、SAML、CAS、GitHub、GitLab、Google、Azure、Keycloak、Okta、Auth0、Slack、Discord 等);Local 策略可配置「是否允许自助注册」「域名白名单」「自动加入组」 |
| Groups(组) | 权限位 + 页面规则 | 权限模型见 5.9;Guests 默认只读规则实测见 5.9 回显 |
| Storage(存储) | 11 个存储连接器 | 实测内置:Disk(本地磁盘)、Git、S3、S3 Generic(任意 S3 兼容)、Azure、Box、DigitalOcean、Dropbox、Google Drive、OneDrive、SFTP;默认未启用任何目标,内容仅入库,建议生产至少启用 Disk 或 Git 定期导出 |
| Search(搜索) | 9 个搜索引擎模块 | 默认启用 Database 内置搜索;PostgreSQL 部署推荐启用 pg_trgm;大规模可外接 Elasticsearch/Meilisearch |
| Rendering(渲染) | 27 个渲染流水线插件 | Markdown 核心渲染 + Mermaid/PlantUML/KaTeX/Prism 高亮等按需启停 |
| Theme(主题) | 主题选择、暗色模式、图标集、自定义 CSS/JS | 默认 default 主题 + mdi 图标集 |
| Mail(邮件) | SMTP 发件配置 | 配置后才能使用忘记密码/邀请邮件 |
| API(接口) | API 开关 | 默认关闭!首次用 API Key 前必须在此开启(实测未开启时调用返回 API is disabled. You must enable it from the Administration Area first.) |
| System Info(系统信息) | 版本/运行时/数据库信息 | GraphQL 实测回显见 5.10 |
5.9 组权限模型与页面规则
Wiki.js 权限 = 组(Group)权限位集合 + 页面规则(Page Rules)。权限位控制「能做什么操作类别」,页面规则控制「对哪些路径/语言生效」,两者求交集。
全量权限位清单(2.5.315 服务端源码实测提取,共 22 项):
| 类别 | 权限位 |
|---|---|
| 页面 | read:pages、write:pages、manage:pages、delete:pages、read:source、read:history |
| 资产 | read:assets、write:assets、manage:assets |
| 评论 | read:comments、write:comments、manage:comments |
| 用户与组 | read:users(列表页可见性由 read 系控制)、write:users、manage:users、write:groups、manage:groups |
| 外观与脚本 | write:styles、write:scripts |
| 导航与系统 | manage:navigation、manage:theme、manage:api、manage:system |
关键解读:manage:system 是超级权限(Administrators 组唯一持有,可访问整个管理后台);日常内容组给 read:pages + write:pages 即可;write:styles/write:scripts 允许注入全站 CSS/JS,只授予可信人员。
实测默认两组(GraphQL groups.single 真实回显):
组: Administrators (id 1)
permissions: ["manage:system"]
pageRules: []
组: Guests (id 2)
permissions: ["read:pages", "read:assets", "read:comments"]
pageRules: [{"id": "guest", "path": "", "match": "START", "roles": ["read:pages", "read:assets", "read:comments"], "deny": false, "locales": []}]
页面规则字段解读:
| 字段 | 含义 |
|---|---|
path | 匹配路径前缀,空串即全站 |
match | 匹配方式:START(前缀)/END(后缀)/EXACT(精确)/REGEX(正则) |
roles | 该规则授予的权限(页面维度,如 read:pages) |
deny | true 时为拒绝规则(拒绝优先) |
locales | 限定语言,空为全部 |
典型用法:新建「编辑组」,权限位给 read:pages、write:pages、read:history,页面规则加一条 path: docs/, match: START, deny: false, roles: [write:pages]——该组只能编辑 docs/ 前缀页面。
5.10 系统信息核对
版本与运行时核对(GraphQL system.info 实测回显):
{
"data": {
"system": {
"info": {
"dbType": "PostgreSQL",
"dbVersion": "16.15",
"latestVersion": "2.5.316",
"nodeVersion": "24.21.0",
"platform": "docker",
"currentVersion": "2.5.315"
}
}
}
}
关键解读:currentVersion 与 latestVersion 对照可判断是否落后;platform 显示部署形态。该接口也是升级前巡检的固定动作。
六、生产配置模板
适用场景:50 人以内团队知识库,8GB 内存、NVMe SSD、独立 PostgreSQL 16 库服务器(或同机高配),Nginx 反代终结 TLS。
port: 3000
bindIP: 127.0.0.1
db:
type: postgres
host: 192.168.1.100
port: 5432
user: wikijs
pass: '$(DB_PASS)'
db: wiki
ssl: false
schema: public
pool:
min: 5
max: 20
ssl:
enabled: false
logLevel: info
logFormat: json
offline: false
ha: false
dataPath: ./data
bodyParserLimit: 5mb
逐项说明:
bindIP: 127.0.0.1:仅反代可达,应用端口不直接暴露公网。db.host指向独立库服务器,pass经环境变量注入不落明文。pool min 5 / max 20:百人级并发余量;库端max_connections需 ≥ 50。ssl.enabled: false:TLS 交给 Nginx(proxy_pass http://127.0.0.1:3000),并设置X-Forwarded-Proto头保证 HTTPS 检测正确。logFormat: json:接入集中日志。ha: false:单实例;如上双实例负载均衡,改true并确保共享同一 PostgreSQL。
七、常见问题(FAQ)
Q1:改了 config.yml 不生效?
- 排查顺序:①确认改的是进程实际加载的 config.yml(启动日志第一行
Loading configuration from /wiki/config.yml... OK中的路径);②是否重启了进程(config.yml 仅启动时读取);③是否被环境变量覆盖($(VAR)占位优先取环境变量值)。 - 运行层配置(后台改的)本来就「不在 config.yml」,查 settings 表核对(见 3.3 实测)。
Q2:管理后台改了站点标题,数据库里没查到?
- settings 表按配置组分键存储,标题在
title键:SELECT value FROM settings WHERE key='title';。查不到说明改动未保存成功(页面顶部有报错横幅,常见为权限不足或会话过期)。
Q3:连接数据库报 Database Connection Failed?
- 逐项核对五元组:
host是否可达(telnet <host> 5432测试)、账号密码是否正确、db是否存在、PostgreSQL 端pg_hba.conf是否允许该来源连接、云库是否要求ssl: true。
Q4:页面保存后搜索不到新内容?
- 默认 Database 搜索引擎有索引延迟;立即生效可在管理后台 Search 页执行「Rebuild Index」。外接搜索引擎时检查该引擎连接器状态与索引任务日志。
Q5:bodyParserLimit 调大后 API 仍上传失败?
- 该参数只管 API 请求体,资产(图片/附件)上传走独立通道且受管理后台 Asset 上传限制与反代
client_max_body_size约束,反代侧需同步调大。
Q6:多实例部署后,一边改配置另一边不刷新?
- 未开启高可用广播。确认所有实例使用同一 PostgreSQL 且
ha: true,配置变更会经由数据库通知各实例重载。
八、参考链接
- 官方安装文档(config.yml 与环境变量):https://docs.requarks.io/install
- config.sample.yml(v2.5.315):https://github.com/requarks/wiki/blob/v2.5.315/config.sample.yml
- 官方 Docker 部署与环境变量表:https://docs.requarks.io/install/docker
- 系统要求(数据库矩阵):https://docs.requarks.io/install/requirements
- 本专栏相关篇目:《Wiki.js 2.5 介绍与选型指南》、《Wiki.js Docker Compose 部署指南》、《Wiki.js 2.5 API 使用详解》