源码湾

Wiki.js 知识库系统:团队文档协作,Markdown 编辑

源码湾
10月14日发布
资源信息 解压即用,含完整源码与已跑通的成品包。
今天的游客额度(10 个)已经用完了。登录之后不限量,也不用再等第二天。
版本
v3.0.0-beta.672
授权
AGPL-3.0
体积
181 MB
语言
JavaScript
今日额度已用完 登录后不限量下载 去登录

今日下载 0 累计下载 0 还剩 0 个

你要装 Wiki.js 3.0.0-beta,先确认三件事:

  1. Node 必须是 26 以上
  2. PostgreSQL 必须是 17 以上
  3. Windows 上有一个 ESM 的 bug,得自己改一行代码

这三条缺一条它就不启动。不是「建议」,是启动时直接退出。

我在 Windows 上把它跑通了,站也搭起来了,过程记在下面。

登录页

Wiki.js 能干什么

一句话:给团队做一个有权限、有留痕的内部知识库,不是给自己写笔记用的。

按用途对号入座——

  • 公司内部文档:产品文档、流程规范、运维手册,谁能看哪个目录单独授权
  • 对外产品手册:挂在自己域名下,客户按目录翻,比 PDF 好用
  • 多语言文档站:一份内容几种语言,各语言单独维护
  • 要把权限管到很细:按路径、按标签、按语言分别授权,这是它最强的地方
  • 要接公司账号体系:LDAP、OAuth2、SAML 都能接,员工用公司账号直接登
  • 需要审计:谁改的、改了什么、什么时候改的,版本历史里都有

一个人记笔记别用它——装一遍 Node 26 加 PostgreSQL 17 的代价,够你把 Memos 用熟了。

核心功能亮点

  • 细粒度权限:读、写、管分开,作用域能细到单页、整个路径、某个标签、某种语言
  • 三种编辑器:Markdown、可视化(WYSIWYG)、代码,写文档的人自己挑
  • 版本历史:每次保存留一版,能对比、能回滚
  • 全文搜索:基于 PostgreSQL 或者外接搜索引擎
  • 多语言:同一篇内容挂多个语言版本
  • 认证源:本地账号、LDAP/AD、OAuth2、SAML、GitHub 之类
  • GraphQL API:能把内容拉给别的系统用
  • 主题和外观可改:Logo、配色、页脚都能换

一、下载

版本 3.0.0-beta.672,2026-10-16 发布,GitHub 上只有 tag 归档,没有放出来的 release 包,得自己去 tag 页拉。

61.3MB,解压 215MB。node_modules 是预装好的,这点比很多 Node 项目省事,不用自己 npm install 半小时。

二、第一个坑:Node 版本

我本机是 Node 22,起服务直接:

ERROR: Node.js 26.x or later required!

backend/package.json 里写的是 engines: { node: ">=26.0" },它在启动时真的会检查,不是警告。

去 nodejs.org 下了 v26.12.0 的 zip 便携版,解压就能用,不用改系统环境变量。

三、第二个坑:PostgreSQL 版本

本机原来装着 PostgreSQL 16.4,配置连上去,迁移开始前被拦住:

error: Your PostgreSQL database version (16) is too old and unsupported by Wiki.js.
Requires >= 17. Exiting...

Wiki.js 3 用到了 PG 17 的特性,这个也是硬校验。

系统信息

我去 EnterpriseDB 下了 postgresql-17.7-1-windows-x64-binaries.zip,331MB。解压完 552MB——其中 pgAdmin 4 目录就占 448MB。真正跑服务只要 bin、lib、share 三个目录,加起来 78MB。

初始化数据目录:

pgsql\bin\initdb.exe -D D:\wikijs_pg\pgdata17 -U artex -E UTF8 --locale=C

这里踩了一个坑,值得单独说。

第一次我把数据目录放在项目目录下,路径里有中文。initdb 跑到 post-bootstrap 阶段挂了:

FATAL: invalid byte sequence for encoding "UTF8": 0xcf 0xee

0xcf 0xee 是 GBK 编码的「项」字。initdb 会把自己的路径按系统 ANSI 编码写进 UTF8 的数据库里,中文路径就会炸。

换成 D:\wikijs_pg\pgdata17 纯英文路径,一次通过。

四、第三个坑:Windows 上的 ESM

数据库连上了,迁移跑完,默认设置也写进库了,日志看起来一切正常,然后:

Error [ERR_UNSUPPORTED_ESM_URL_SCHEME]: Only URLs with a scheme in: file, data, and node
are supported by the default ESM loader. On Windows, absolute paths must be valid file:// URLs.
Received protocol 'd:'

Node 的 ESM 加载器不认 D:\... 这种 Windows 绝对路径,必须传 file:// URL。而 backend/core/scheduler.ts 第 136 行是这么写的:

this.tasks[taskName] = (await import(path.join(WIKI.SERVERPATH, 'tasks/simple', f))).task

改两行:

import { pathToFileURL } from 'node:url'
// ...
this.tasks[taskName] = (
  await import(pathToFileURL(path.join(WIKI.SERVERPATH, 'tasks/simple', f)).href)
).task

打完补丁,20 秒后站点起来了。

这个 bug 只在 Windows 上有,Linux 上不会触发。beta 版没做过 Windows 测试,能理解。

五、装完是什么样

首页长这样,左边是页面树,右边是文章目录,顶上一条品牌色的导航:

首页

整页截下来是这样(长图):

整页

文章页有自动生成的目录、标签、最后编辑人,代码块和表格都能正常渲染:

文章页

表格是这样,表头是深色,行之间有细线:

表格

搜索是 Ctrl+K 唤起,边打边出建议:

搜索

手机上也能用,左侧的页面树收起来了,正文按屏幕宽度排版:

手机首页

手机文章

后台是很完整的,站点、用户、权限、审计、API、调度器都有:

后台

配色、Logo、登录页背景都能在后台改,改完立刻生效:

主题设置

站点设置里能改标题、描述、横幅、SEO:

站点设置

用户组是重头戏,每条规则可以按路径、按标签、按语言分别授权:

用户组

用户管理里能看到登录时间、提供商、二次验证状态:

用户

编辑器分 Markdown 和可视化两套,左边写右边实时预览:

编辑器

页脚的署名也是可以改的,我这里改成了「基于 Wiki.js 构建」:

页脚

六、还有几个小坑

七、缺点

重。 一个空站,Node 主进程 89MB,PostgreSQL 一组 69MB,加起来 160MB 起步。1 核 1G 的机器能跑,但没余量,跑满一年不重启大概率会卡。

默认英文。 中文语言包要在后台 Locale 里单独下载,而且装完还是有些文案没翻译——我看了下,乱码倒没有,就是混着。

移动端表格会溢出。 390 宽的屏幕上,表格右侧被切掉,得在内容区里横向滑。页面本身没有横向滚动条,所以不仔细看会以为内容被吞了。

beta 就是 beta。 我这个包是打完补丁才启动的。普通用户下载原版,配好 Node 26 和 PG 17,最后卡在一个 Node 的路径问题上,很难自己想到去改源码。

离不开 node_modules。 它不像 PHP 项目扔进目录就能跑,少一个依赖就是一堆 TS 文件。

八、自己动手的成本

装 Wiki.js 本身不费事,下载解压二十分钟。吃时间的是把环境凑齐,这篇里记的坑一个都绕不过去:

  1. Node 26。engines 是硬校验,本机的 22 直接退出,报一句 Node.js 26.x or later required!,得另下一个便携版
  2. PostgreSQL 17。16 被拒。官方 Windows 包 331MB,解压 552MB,光 pgAdmin 4 就占 448MB —— 跑服务其实只要 bin/lib/share 那 78MB
  3. initdb 的路径。数据目录落在中文路径上必炸,报 invalid byte sequence ... 0xcf 0xee(那是 GBK 的「项」字),只能换到纯英文路径从头再来一遍
  4. 改 scheduler.ts 那一行。import(path.join(...)) 得换成 pathToFileURL(...).href,不改站点永远起不来,而报错只说 Received protocol 'd:',跟 Wiki.js 一点关系都看不出来
  5. 权限调试。Guests 组默认 DENY,装完退出登录首页就是 403;页面权限写在 rules 里而不是 permissions,我在这上面浪费了半小时

我这边的时间账:PG 解压加 initdb 重来是最大一块;补丁改完到站点起来只用 20 秒;后台权限又是半小时。这几小时我在下面那章里替你走完了。

九、我打的这个包

内容说明
wiki\Wiki.js 3.0.0-beta.672,含 node_modules,已打补丁
node\Node.js 26.12.0 便携版
pgsql\PostgreSQL 17.7 精简版(bin/lib/share)
pgdata\初始化好的数据库,5 篇示例文章、品牌配置都在
启动.bat双击启动,自动开浏览器

解压到纯英文路径(比如 D:\wikijs),双击「启动.bat」,浏览器自动打开 http://localhost:3300。

后台是 /_admin,账号 admin@yuanmawan.com,密码 Yuanmawan@2026,上线前记得改。

数据库里我放了 5 篇示例文章:Typecho 主题的三个坑、Fluid 的 h2 竖线、还有这篇 Wiki.js 的实测记录。想清空就后台删。

两个小提醒:

  1. 建议先「转存到自己网盘」再下载——直接下载的链接容易失效,转存后就是你自己的了,随时能下;
  2. 手机上操作:点开链接 → 右下角「保存到网盘」→ 回夸克 App 的「我的网盘」里下载。

十、谁适合用

Wiki.js 的价值在多人对权限:谁能看哪个目录、谁能改、改了留什么痕。它的权限模型是我用过的开源 wiki 里最细的,细到可以按路径、按标签、按语言分别授权。

一个人记笔记,用不着这个。Memos 或者一个静态文档生成器省事得多。

团队要一个有权限、有审计、能接 LDAP 的内部知识库,那它值得。前提是你能接受 beta 的脾气——这次是 Windows 上的补丁,下次不知道是什么。

包里所有源码保持原样,只改了四处:调度器那行 ESM、站内品牌名、后台头部的字样、页脚署名。AGPL-3.0 的 LICENSE 文件一个没删。
实测说明

本文截图全部来自本站实测环境(源码湾 yuanmawan.com),实测版本 Wiki.js v3.0.0-beta.672,许可证 AGPL-3.0。

© 版权声明
THE END
喜欢就支持一下吧
点赞 0 分享 收藏
评论 抢沙发
OωO
取消