DockerでのWiki.jsのデプロイ: 包括的ガイド
約2分
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
セキュリティ強化チェックリスト
シークレット管理
- 認証情報を暗号化されたDockerシークレットに保存
echo "wikijsrocks" | docker secret create db_password -
ネットワークの分離
services: db: networks: wikinet: aliases: - database.internal
SSL設定
environment: LETSENCRYPT_DOMAIN: wiki.example.com LETSENCRYPT_EMAIL: [email protected] SSL_ACTIVE: "1"
リソース制限
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%の一般的な問題を未然に防ぐことができます。