Linux怎么安装Wiki.js知识库

云静大大_4366

云静大大_4366

2026-06-23

134人浏览

原创

docker compose一键部署wiki.js最省心,无需手动配置node.js、数据库驱动和系统服务;官方镜像ghcr.io/requarks/wiki:2预编译所有依赖,配合postgresql容器可全自动运行;关键在于正确配置docker-compose.yml中的db_pass(避免特殊字符)、volume名称一致性及防火墙/安全组端口放行。

linux怎么安装wiki.js知识库

用 Docker Compose 一键拉起最省心

绝大多数 Linux 用户(Ubuntu/CentOS/Rocky 等)直接走 Docker 方案,不用管 Node.js 版本、数据库驱动兼容性、端口冲突这些琐事。官方镜像 ghcr.io/requarks/wiki:2 已预编译所有依赖,连 PostgreSQL 都能一起跑。

关键不是“能不能装”,而是“别手动装 Node + npm + config.yml + systemd service”。Docker Compose 把整套环境锁死在声明式文件里,升级只需改 image 标签再 docker-compose pull && docker-compose up -d。

  • 确保已安装 docker 和 docker-compose-plugin(新版 Docker 自带,不用单独装 docker-compose 二进制)
  • docker-compose.yml 中的 DB_PASS 必须是纯文本密码,不能含特殊字符如 $、{、},否则 PostgreSQL 客户端解析失败(常见报错:connection refused 或 invalid password)
  • PostgreSQL 容器首次启动会初始化数据库,但若反复删容器重跑,volumes 没配对(比如 db-data 名字拼错),数据就丢了——db-data 和 wiki-data 两个 volume 名必须和 yml 里完全一致

非 Docker 方式:Node.js 版本踩坑最多

Wiki.js 明确要求 Node.js ≥18.0.0,且 不支持奇数版本(如 v19.x、v21.x)。很多用户用 apt install nodejs 装到 v12 或 v16,结果 node server 直接报 ERR_UNSUPPORTED_ESM_URL_SCHEME 或 Cannot find module 'node:fs'。

Obsidian (Linux)
Obsidian (Linux)

操作 Obsidian 库(纯 Markdown 笔记),并通过 notesmd-cli 实现自动化。

下载
  • Ubuntu/Debian 推荐用 Nodesource 源装 v20:curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - && sudo apt-get install -y nodejs
  • CentOS/RHEL 用 EPEL + Nodesource:sudo yum install epel-release && curl -fsSL https://rpm.nodesource.com/setup_20.x | sudo bash - && sudo yum install -y nodejs
  • config.yml 里 db.type 填 postgres 就必须装 pg 包,填 mariadb 就得装 mariadb 客户端库,否则启动时提示 Cannot find module 'mariadb' —— 这个错误不会在 npm install 阶段暴露,而是在 node server 时才炸

数据库权限配置最容易漏掉的点

PostgreSQL 或 MariaDB 装完只是开始,Wiki.js 连不上往往卡在权限上。不是密码错,而是用户没授权、监听没开、认证方式不对。

  • PostgreSQL:检查 /var/lib/postgresql/data/pg_hba.conf 是否有这行:host all all 0.0.0.0/0 md5(允许任意 IP 用密码连接),然后 sudo systemctl restart postgresql
  • MariaDB:执行 GRANT ALL ON wikijs.* TO 'wikijs'@'%' IDENTIFIED BY 'yourpass'; FLUSH PRIVILEGES;,@'localhost' 不够用,因为 Wiki.js 容器内访问的是宿主机 IP,不是 127.0.0.1
  • SQLite 最省事但别用于多用户场景:db.type: sqlite + db.storage: /var/wiki/data.db 即可,但并发编辑会锁表,页面保存失败率高

启动后打不开 http://IP:3000?先查这三件事

容器跑起来了、日志没报错,但浏览器白屏或连接被拒绝,问题通常不在 Wiki.js 本身。

  • 防火墙:Ubuntu ufw 默认关 3000 端口,运行 sudo ufw allow 3000;CentOS firewalld 执行 sudo firewall-cmd --add-port=3000/tcp --permanent && sudo firewall-cmd --reload
  • Docker 网络:确认 docker-compose.yml 里 wiki 服务的 ports 是 - "3000:3000",不是 - "3000:80" 或漏写冒号
  • 云服务器安全组:阿里云/腾讯云后台必须手动放行 3000 端口,光开本地防火墙没用

真正麻烦的从来不是安装步骤,而是数据库网络策略、Docker volume 持久化路径、Node.js ABI 兼容性这三块——它们不出错时无声无息,一出就是 2 小时排查起步。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
js正则表达式
js正则表达式

php中文网为大家提供各种js正则表达式语法大全以及各种js正则表达式使用的方法,还有更多js正则表达式的相关文章、相关下载、相关课程,供大家免费下载体验。

2023.06.20

4416

8

js获取当前时间
js获取当前时间

JS全称JavaScript,是一种具有函数优先的轻量级,解释型或即时编译型的编程语言;它是一种属于网络的高级脚本语言,主要用于Web,常用来为网页添加各式各样的动态功能。js怎么获取当前时间呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.28

1355

5

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.03

1758

5

js是什么意思
js是什么意思

JS是JavaScript的缩写,它是一种广泛应用于网页开发的脚本语言。JavaScript是一种解释性的、基于对象和事件驱动的编程语言,通常用于为网页增加交互性和动态性。它可以在网页上实现复杂的功能和效果,如表单验证、页面元素操作、动画效果、数据交互等。

2023.08.17

9963

11

js删除节点的方法
js删除节点的方法

js删除节点的方法有:1、removeChild()方法,用于从父节点中移除指定的子节点,它需要两个参数,第一个参数是要删除的子节点,第二个参数是父节点;2、parentNode.removeChild()方法,可以直接通过父节点调用来删除子节点;3、remove()方法,可以直接删除节点,而无需指定父节点;4、innerHTML属性,用于删除节点的内容。

2023.09.01

980

4

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.04

2744

5

Js中concat和push的区别
Js中concat和push的区别

Js中concat和push的区别:1、concat用于将两个或多个数组合并成一个新数组,并返回这个新数组,而push用于向数组的末尾添加一个或多个元素,并返回修改后的数组的新长度;2、concat不会修改原始数组,是创建新的数组,而push会修改原数组,将新元素添加到原数组的末尾等等。本专题为大家提供concat和push相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.14

1569

5

js截取字符串的方法介绍
js截取字符串的方法介绍

JavaScript字符串截取方法,包括substring、slice、substr、charAt和split方法。这些方法可以根据具体需求,灵活地截取字符串的不同部分。在实际开发中,根据具体情况选择合适的方法进行字符串截取,能够提高代码的效率和可读性 。

2023.09.21

4689

3

js生成随机数方法
js生成随机数方法

JavaScript生成随机数的方法,包括使用Math.random()方法生成指定范围内的随机整数、生成随机字符串和生成随机颜色。根据具体需求,可以选择适合的方法来生成随机数,以实现各种功能 。

2023.09.25

2715

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Docker 官方文档
Docker 官方文档

共0课时 | 0人学习

Python uv官方安装与入门文档
Python uv官方安装与入门文档

共0课时 | 0人学习

Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习