不灭的焱

革命尚未成功,同志仍须努力 下载Java21

作者:AlbertWen  添加时间:2026-04-05 11:32:20  修改时间:2026-04-05 19:47:11  分类:06.Linux软件安装  编辑

Wiki.js 是一款基于 Node.js 开发的现代化、开源、轻量级的 Wiki 引擎与知识管理平台,主打易用、美观、强大且灵活,非常适合搭建团队知识库、内部文档、个人笔记或公共 Wiki。

1. 系统要求(推荐配置)

  • Node.js:18.x 或更高版本(手动安装时需要)。
  • 数据库:官方推荐 PostgreSQL(性能最好),也支持 MySQL/MariaDB、SQLite、MSSQL。
  • 内存:至少 1GB(推荐 2GB+)。
  • 操作系统:Linux(Ubuntu/Debian/CentOS 等)最常见,Windows/Mac 也支持(用 Docker Desktop)。

2. 最推荐:使用 Docker Compose 一键部署(官方推荐)

这是最简单的方法,几分钟就能跑起来。

2.1 配置宿主主机上的PostgreSQL

使用 Docker Compose 部署 Wiki.js 时,如果想连接主机上已经安装好的外部 PostgreSQL(而不是在 compose 中再启动一个 db 服务),修改方式非常简单。

参考:PostgreSQL 允许远程访问设置方法

(1) 创建数据库和用户(如果还没创建)

-- 登录你的 PostgreSQL(用 psql 或 pgAdmin)
CREATE USER wikijs WITH PASSWORD '你的强密码';
CREATE DATABASE wiki OWNER wikijs;
GRANT ALL PRIVILEGES ON DATABASE wiki TO wikijs;
\c wiki
CREATE EXTENSION IF NOT EXISTS pg_trgm;   -- 推荐启用,用于全文搜索

(2) 允许 Docker 容器连接(最容易出错的地方)

步骤1:编辑 PostgreSQL 配置文件 postgresql.conf

listen_addresses = '*'

步骤2:编辑 pg_hba.conf,在文件末尾添加(根据你的网络情况):

# 允许 Docker 容器通过主机 IP 或 host.docker.internal 连接
host    all             all             172.17.0.0/16           md5     # Docker 默认桥接网络
host    all             all             172.18.0.0/16           md5     # 如果用了自定义网络
host    all             all             10.0.0.0/8              md5     # 根据你的主机网络
host    all             all             ::1/128                 md5
host    all             all             127.0.0.1/32            md5

步骤3:重启 PostgreSQL 服务:

systemctl restart postgresql

2.2 安装 Docker 和 Docker Compose(如果没有):

【Docker】CentOS 离线安装最新版的 docker 和 docker-compose

2.3 创建目录并编写 docker-compose.yml

# 创建工作目录
mkdir -pv /data/server/wikijs && cd /data/server/wikijs

# 创建空的配置文件
touch /data/server/wikijs/config.yml

# 创建compose配置文件
vim docker-compose.yml

粘贴以下内容(强烈建议修改数据库密码):

version: "3"
services:
  wiki:
    image: ghcr.io/requarks/wiki:latest   # 或 requarks/wiki:latest
    container_name: wikijs
    restart: unless-stopped
    ports:
      - "4000:3000"   # 主机端口:容器端口,可改成 8080:3000 等
    environment:
      DB_TYPE: postgres
      #DB_HOST: host.docker.internal             # 【方式1】关键:指向主机上的 PostgreSQL
      DB_HOST: 172.17.0.1                        # 【方式2】如果 host.docker.internal 不行,可尝试这个(Linux 常见)
      # DB_HOST: 你的主机实际IP(如 192.168.1.100) # 【方式3】最后通过实践,【方式1】不行,【方式2,3】可以
      DB_PORT: 65432
      DB_USER: user_wikijs
      DB_PASS: RMJR3F63fXXsCPiY
      DB_NAME: wikijs
    
    # 可选:挂载 config.yml(高级用户推荐,用于更复杂配置)
    volumes:
      - ./config.yml:/wiki/config.yml

2.4 启动服务

docker-compose up -d

2.5 云主机开放端口4000

在阿里云、宝塔面板 等后台开放端口4000

2.6 初始化 Wiki.js

  • 浏览器访问 http://你的服务器IP:4000
  • 第一次会进入安装向导:输入管理员邮箱、密码、站点 URL(例如 http://你的IP:4000),点击 Install
  • 安装完成后即可登录使用。

2.7 常用操作

  • 启动docker-compose up -d
  • 查看日志docker-compose logs -f wiki
  • 停止docker-compose down
  • 重启docker compose restart
  • 更新:拉取新镜像后 docker-compose up -d --pull always

3. 使用 Nginx 反向代理(推荐生产环境)

为了使用域名、HTTPS 和 80/443 端口,建议加 Nginx:

  • 安装 Nginx。
  • 配置 /etc/nginx/sites-available/wikijs(示例):
    server {
        listen 80;
        server_name wiki.你的域名.com;
    
        location / {
            proxy_pass http://127.0.0.1:4000;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    }
    
  • 申请 SSL(用 certbot 或宝塔面板),改成 HTTPS。

4. 常见问题与提示

  • 中文支持:安装后在管理后台(/admin)可以设置语言为中文,支持中文全文搜索(可额外配置 Elasticsearch,但默认 PostgreSQL 已够用)。
  • 端口冲突:改 docker-compose.yml 中的端口映射。
  • 数据持久化:数据库 volume 很重要,别删错了。
  • 备份:定期备份数据库 volume 和 Wiki 配置。
  • 升级:Docker 方式直接 pull 新镜像重启即可;手动方式参考官方升级指南。

官方文档(最权威):https://docs.requarks.io/install

GitHub:https://github.com/requarks/wiki

5. 常见问题排查

(1) 连接失败(Connection refused / EHOSTUNREACH):

  • 确认 DB_HOST 正确(Linux 推荐用主机实际 IP 或 172.17.0.1;Windows/Mac 用 host.docker.internal)。
  • 检查 PostgreSQL 是否监听所有地址(listen_addresses = '*')。
  • 查看日志:docker compose logs -f wiki

(2) host.docker.internal 不生效:

Linux 上通常无效,改用主机真实 IP(如 192.168.x.x)或在 docker-compose 中加入 extra_hosts

extra_hosts:
  - "host.docker.internal:host-gateway"

(3) 权限错误:

确保数据库用户有足够的权限(ALL PRIVILEGES),且数据库 owner 是该用户。

(4) 想使用 config.yml 而不是环境变量:

config.sample.yml 复制为 config.yml,修改 db 部分,然后挂载到容器:

volumes:
  - ./config.yml:/wiki/config.yml

此时可以移除 environment 中的 DB_ 开头的变量。