Docker デプロイガイド
Docker を使用して GEO Wiki Pro をローカルまたはサーバーにクイックデプロイする完全ガイド
# Docker デプロイガイド
> Docker で GEO Wiki Pro をワンクリックデプロイ、ローカル開発とサーバー本番環境をサポート
---
## 📋 前提条件
| 条件 | 最低要件 |
|------|---------|
| オペレーティングシステム | Linux / macOS / Windows (WSL2) |
| Docker | 20.10+ |
| Docker Compose | v2.0+ |
| メモリ | 1GB+ |
| ディスク容量 | 500MB+ |
---
## 🚀 クイックデプロイ(3 ステップ)
### ステップ 1:プロジェクトのクローン
```bash
git clone https://github.com/your-org/geo-wiki-pro.git
cd geo-wiki-pro
```
### ステップ 2:環境変数の設定
```bash
cp .env.example .env
```
`.env` ファイルを編集し、必須パラメータを設定:
```env
# 必須:JWT シークレット(少なくとも 32 文字)
JWT_SECRET=your-super-secret-key-here
# オプション設定
PORT=3002
CORS_ORIGINS=http://localhost:3000
RATE_LIMIT_WINDOW_MS=60000
RATE_LIMIT_MAX_REQUESTS=300
```
::: warning
必ず強力なランダムな `JWT_SECRET` を設定してください。本番環境ではデフォルト値を使用しないでください。
:::
### ステップ 3:サービスの起動
```bash
docker compose up -d
```
サービスステータスの確認:
```bash
curl http://localhost:3002/api/v1/health
```
期待される出力:
```json
{
"status": "ok",
"version": "2.9.0"
}
```
---
## 🏗️ アーキテクチャ概述
GEO Wiki Pro はフロントエンド・バックエンド分離アーキテクチャを採用:
```
┌─────────────────┐ ┌─────────────────┐
│ Nginx │────▶│ Express.js │
│ (静的フロントエンド) │ (API バックエンド) │
│ ポート: 80/443 │ │ ポート: 3002 │
└─────────────────┘ └─────────────────┘
│
▼
┌─────────────┐
│ ファイルシステム │
│ data/ │
│ public/ │
└─────────────┘
```
### サービスコンポーネント
| コンポーネント | 説明 | ポート |
|---------------|------|--------|
| Nginx | リバースプロキシ + 静的ファイル配信 | 80/443 |
| Express.js | API サーバー | 3002 |
| ファイルストレージ | Markdown ドキュメント + メディアファイル | - |
---
## ⚙️ 高度な設定
### カスタムポート
`docker-compose.yml` のポートマッピングを変更:
```yaml
services:
api:
ports:
- "8080:3002" # 外部ポート:内部ポート
```
### データディレクトリのマウント
ホストマシンにデータを永続化:
```yaml
services:
api:
volumes:
- ./data:/app/data
- ./public/media:/app/public/media
```
### HTTPS の設定
本番環境では、リバースプロキシを使用して HTTPS を設定することを推奨:
```nginx
server {
listen 443 ssl;
server_name wiki.example.com;
ssl_certificate /etc/ssl/certs/wiki.example.com.pem;
ssl_certificate_key /etc/ssl/private/wiki.example.com.key;
location / {
proxy_pass http://localhost:3002;
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;
}
}
```
---
## 🔒 セキュリティ設定
### 初回ログイン
デプロイ後、システムは管理者アカウントを自動作成:
1. `http://your-server:3002/login` にアクセス
2. デフォルトの管理者資格情報でログイン
3. **すぐにデフォルトパスワードを変更**
### 環境変数セキュリティ
| 変数 | 説明 | セキュリティ推奨事項 |
|------|------|---------------------|
| `JWT_SECRET` | JWT 署名シークレット | `openssl rand -base64 32` で生成 |
| `CORS_ORIGINS` | 許可された CORS オリジン | 本番環境では実際のドメインに制限 |
| `RATE_LIMIT_*` | レート制限設定 | 予想されるトラフィック量に基づいて調整 |
::: danger
`.env` ファイルをバージョン管理システム(Git)にコミットしないでください。`.gitignore` に `.env` が含まれていることを確認してください。
:::
---
## 🐛 よくある問題
### コンテナの起動失敗
```bash
# ログを確認
docker compose logs api
# よくある原因:
# 1. .env ファイルに JWT_SECRET が設定されていない
# 2. ポートが使用中
# 3. Docker の権限不足
```
### データの永続化
```bash
# データディレクトリを確認
ls -la data/
# データをバックアップ
tar -czf backup-$(date +%Y%m%d).tar.gz data/ public/media/
```
### バージョンの更新
```bash
# 最新コードをプル
git pull origin main
# 再ビルドして起動
docker compose down
docker compose build --no-cache api
docker compose up -d
```
---
## 📊 監視とメンテナンス
### ヘルスチェック
```bash
# API ヘルスステータス
curl http://localhost:3002/api/v1/health
# Docker コンテナステータス
docker compose ps
```
### ログ表示
```bash
# リアルタイムログ
docker compose logs -f api
# 最新 100 行のログ
docker compose logs --tail 100 api
```
---
## 📚 次のステップ
- [最初のナレッジベースを作成](/docs/first-knowledge-base) — ゼロから製品ナレッジベースを構築
- [クイックスタートガイド](/docs/quick-start) — 5 分で製品開発を開始
- [FAQ](/docs/faq) — よくある質問
---
*最終更新: 2026-05-26 | バージョン: v2.9.0*