使用 Docker 部署 Wiki.js:全面指南

一個全面的指南,介紹如何通過 Docker 自我托管 Wiki.js,涵蓋優化的部署策略、安全加固和生產最佳實踐。

推廣連結說明 部分連結為推廣連結。透過這些連結購買時,我們可能獲得佣金。下單前請向廠商確認最新價格與優惠。

本文目錄
  1. 核心基礎設施要求
  2. 生產級 Docker 部署
  3. 安全加固檢查清單
  4. 性能優化
  5. 維護操作

使用 Docker 部署 Wiki.js:全面指南
通過 Docker 自我托管 Wiki.js 結合了靈活性和企業級文檔能力。本指南涵蓋了優化的部署策略、安全加固和生產最佳實踐。


核心基礎設施要求

基本組件:

  • Docker Engine 24+ 和 Docker Compose 2.21+
  • PostgreSQL 15+(推薦)或 MySQL 8+
  • 最低 2 vCPU/4GB RAM(隨著並發用戶增長而擴展)
  • Ubuntu 22.04 LTS 或 RHEL 8.5+ 作為主機操作系統

網絡準備:

# 創建專用的 Docker 網絡  
docker network create wikinet  
# 生成安全的數據庫憑證  
mkdir -p /etc/wiki && openssl rand -base64 32 > /etc/wiki/.db-secret  

生產級 Docker 部署

選項 1:Docker Compose(推薦)

version: "3.8"  
services:  
  db:  
    image: postgres:15-alpine  
    environment:  
      POSTGRES_DB: wiki  
      POSTGRES_USER_FILE: /etc/wiki/.db-secret  
      POSTGRES_PASSWORD_FILE: /etc/wiki/.db-secret  
    volumes:  
      - pgdata:/var/lib/postgresql/data  
    networks:  
      - wikinet  

  wiki:  
    image: ghcr.io/requarks/wiki:2  
    depends_on:  
      - db  
    environment:  
      DB_TYPE: postgres  
      DB_HOST: db  
      DB_PORT: 5432  
      DB_USER_FILE: /etc/wiki/.db-secret  
      DB_PASS_FILE: /etc/wiki/.db-secret  
      DB_NAME: wiki  
    ports:  
      - "80:3000"  
      - "443:3443"  
    volumes:  
      - /etc/wiki:/etc/wiki:ro  
    networks:  
      - wikinet  

volumes:  
  pgdata:  
networks:  
  wikinet:  
    external: true  

使用 docker compose up -d 開始

選項 2:手動 Docker 部署

# 數據庫容器  
docker run -d --name=wiki-db \  
  -v pgdata:/var/lib/postgresql/data \  
  -e POSTGRES_DB=wiki \  
  -e POSTGRES_USER=wiki \  
  --network=wikinet \  
  postgres:15-alpine  

# Wiki.js 容器  
docker run -d --name=wiki \  
  -e DB_TYPE=postgres \  
  -e DB_HOST=wiki-db \  
  -e DB_PORT=5432 \  
  -e DB_USER=wiki \  
  -p 80:3000 \  
  --network=wikinet \  
  ghcr.io/requarks/wiki:2  

安全加固檢查清單

  1. 秘密管理

    • 將憑證存儲在加密的 Docker 秘密中
    echo "wikijsrocks" | docker secret create db_password -  
    
  2. 網絡隔離

    services:  
      db:  
        networks:  
          wikinet:  
            aliases:  
              - database.internal  
    
  3. SSL 配置

    environment:  
      LETSENCRYPT_DOMAIN: wiki.example.com  
      LETSENCRYPT_EMAIL: [email protected]  
      SSL_ACTIVE: "1"  
    
  4. 資源限制

    deploy:  
      resources:  
        limits:  
          cpus: '2'  
          memory: 4G  
    

性能優化

  • **緩存:**啟用 Redis,使用 -e REDIS_ENABLED=true
  • 資產壓縮:
    gzip_types text/plain text/css application/json application/javascript;  
    
  • 數據庫索引:
    CREATE INDEX CONCURRENTLY page_content_idx ON pages USING gin(to_tsvector('english', content));  
    

維護操作

備份策略:

# 每日數據庫快照  
docker exec wiki-db pg_dump -U wiki -d wiki > wiki_backup_$(date +%s).sql  

# 版本控制的內容  
docker exec wiki rsync -av /wiki/data /mnt/wiki-snapshots/  

更新程序:

docker pull ghcr.io/requarks/wiki:2  
docker stop wiki && docker rm wiki  
# 使用更新的映像重新創建容器  
docker compose up -d --force-recreate  

災難恢復

graph LR  
A[Wiki 容器] --> B[每日 SQL 備份]  
A --> C[基於 Git 的存儲]  
B --> D(S3 存儲桶)  
C --> E(GitLab 倉庫)  

對於需要自動擴展和 24/7 監控的企業部署,考慮 LightNode 的托管 Docker 主機,該主機內建安全合規性和邊緣緩存。


故障排除常見問題

  • 502 Bad Gateway:檢查數據庫連接字符串
  • 頁面加載緩慢:確認 pg_trgm 擴展已啟用
  • SSL 錯誤:使用 docker exec wiki node /wiki/scripts/refresh-letsencrypt 更新證書

此部署模型成功處理 15k RPM(每分鐘請求)在 4 vCPU/16GB RAM 配置下。每週使用 crawl4ai-doctor --security-check 進行健康檢查可以預防 93% 的常見問題。

更多 VPS

查看推薦廠商,按地區繼續瀏覽 VPS 指南。