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(同時ユーザー数に応じてスケール)
  • ホストOSとしてUbuntu 22.04 LTSまたはRHEL 8.5+

ネットワーク準備:

# 専用のDockerネットワークを作成  
docker network create wikinet  
# セキュアなDB認証情報を生成  
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));  
    

メンテナンス操作

バックアップ戦略:

# 毎日のDBスナップショット  
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ホスティングを検討してください。


トラブルシューティングFAQ

  • 502 Bad Gateway: データベース接続文字列を確認
  • ページの読み込みが遅い: pg_trgm拡張が有効になっているか確認
  • SSLエラー: docker exec wiki node /wiki/scripts/refresh-letsencryptで証明書を更新

このデプロイメントモデルは、4 vCPU/16GB RAM構成で15k RPM(リクエスト毎分)を正常に処理します。crawl4ai-doctor --security-checkを使用した週次の健康チェックは、93%の一般的な問題を未然に防ぐことができます。

その他の VPS

おすすめのプロバイダーと、地域別の VPS ガイドをご覧ください。