Claude Code クラウドサーバー配置ガイド
このガイドはクラウドサーバーにVitePressプロジェクトを配置し、PM2を使用してプロセスを管理し、SSH接続が切断された後もサービスが継続実行されるようにする方法を詳しく説明します。
🛠 環境要件
- オペレーティングシステム: Linux (Ubuntu/CentOS)
- Node.js: v22.11.0 (
/www/server/nodejs/v22.11.0/bin
にインストール) - PM2: プロセスマネージャー
- メモリ: 最小512MB
- ストレージ: 最小1GB利用可能領域
📋 配置手順
1. サーバー環境設定
1.1 Node.js環境変数設定
bash
# ~/.bashrcまたは~/.profileに追加
echo 'export PATH=$PATH:/www/server/nodejs/v22.11.0/bin' >> ~/.bashrc
source ~/.bashrc
# Node.jsバージョン確認
node --version
npm --version
1.2 プロジェクトディレクトリ作成
bash
# プロジェクトディレクトリ作成
mkdir -p /www/wwwroot/claudecode
cd /www/wwwroot/claudecode
2. プロジェクトファイルアップロード
2.1 SCPを使用したアップロード(推奨)
bash
# ローカルで実行(your-server-ipを実際のIPに置換)
scp -r /c:/Users/PC/Desktop/claudecode.blueshirtmap.com_eN7Pt/* root@your-server-ip:/www/wwwroot/claudecode/
2.2 Gitクローン使用(Gitリポジトリがある場合)
bash
# サーバーで実行
git clone https://github.com/your-username/claudecode.git .
3. プロジェクト依存関係インストール
bash
# プロジェクトディレクトリに移動
cd /www/wwwroot/claudecode
# プロジェクト依存関係インストール
npm install
# 権限問題が発生する場合、次のコマンドを使用
npm install --unsafe-perm
4. プロダクション版ビルド
bash
# プロジェクトビルド
npm run docs:build
# ビルド結果確認
ls -la .vitepress/dist/
5. PM2インストールと設定
5.1 PM2グローバルインストール
bash
npm install -g pm2
# インストール確認
pm2 --version
5.2 PM2設定ファイル作成
bash
# PM2設定ファイル作成
cat > ecosystem.config.js << 'EOF'
module.exports = {
apps: [
{
name: 'claudecode-docs',
script: 'npm',
args: 'run docs:preview',
cwd: '/www/wwwroot/claudecode',
instances: 1,
exec_mode: 'fork',
env: {
NODE_ENV: 'production',
PORT: 4173
},
error_file: '/www/wwwroot/claudecode/logs/err.log',
out_file: '/www/wwwroot/claudecode/logs/out.log',
log_file: '/www/wwwroot/claudecode/logs/combined.log',
time: true,
restart_delay: 1000,
max_restarts: 5,
min_uptime: '10s',
max_memory_restart: '1G',
watch: false,
ignore_watch: ['node_modules', 'logs', '.git']
}
]
}
EOF
5.3 ログディレクトリ作成
bash
mkdir -p /www/wwwroot/claudecode/logs
6. サービス開始
6.1 PM2を使用してプロジェクト開始
bash
# サービス開始
pm2 start ecosystem.config.js
# サービス状態確認
pm2 status
# ログ確認
pm2 logs claudecode-docs
6.2 PM2自動開始設定
bash
# PM2設定保存
pm2 save
# 自動開始設定
pm2 startup
# 上記コマンドの出力コマンドを実行(通常sudoコマンド)
7. リバースプロキシ設定(オプション)
ドメインを使用してアクセスする必要がある場合、Nginxリバースプロキシを設定できます:
7.1 Nginx設定例
nginx
server {
listen 80;
server_name claudecode.blueshirtmap.com;
location / {
proxy_pass http://localhost:4173;
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;
# 静的ファイルキャッシュ
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ {
expires 1y;
add_header Cache-Control "public, immutable";
proxy_pass http://localhost:4173;
}
}
}
8. 配置検証
8.1 サービス状態確認
bash
# PM2状態確認
pm2 status
# プロセス詳細確認
pm2 show claudecode-docs
# リアルタイムログ確認
pm2 logs claudecode-docs --lines 50
8.2 ウェブサイトアクセステスト
bash
# ローカルテスト
curl -I http://localhost:4173
# リモートテスト(実際のIPに置換)
curl -I http://your-server-ip:4173
🔧 一般的なPM2管理コマンド
基本コマンド
bash
# すべてのプロセス確認
pm2 list
# サービス再起動
pm2 restart claudecode-docs
# サービス停止
pm2 stop claudecode-docs
# サービス削除
pm2 delete claudecode-docs
# 設定再読み込み
pm2 reload claudecode-docs
ログ管理
bash
# ログ確認
pm2 logs claudecode-docs
# ログクリア
pm2 flush claudecode-docs
# リアルタイムログ
pm2 logs claudecode-docs --lines 100 -f
監視コマンド
bash
# リアルタイム監視
pm2 monit
# メモリ使用量確認
pm2 show claudecode-docs
🚀 パフォーマンス最適化提案
1. 静的ファイル配置(推奨)
bash
# Nginxを使用する場合、静的ファイルを直接配置可能
cp -r .vitepress/dist/* /www/wwwroot/claudecode-static/
2. Gzip圧縮有効化
nginx
# Nginx設定に追加
gzip on;
gzip_vary on;
gzip_min_length 1024;
gzip_proxied any;
gzip_comp_level 6;
gzip_types text/plain text/css text/xml text/javascript application/javascript application/xml+rss application/json;
3. PM2設定調整
javascript
// サーバーパフォーマンスに応じて調整
instances: 'max', // すべてのCPUコアを使用
max_memory_restart: '500M', // 利用可能メモリに応じて調整
🛡️ セキュリティ設定
1. ファイアウォール設定
bash
# 必要なポートを開放
ufw allow 22 # SSH
ufw allow 80 # HTTP
ufw allow 443 # HTTPS
ufw allow 4173 # VitePress(直接アクセスする場合)
2. プロセス権限
bash
# 専用ユーザー作成(オプション)
useradd -m -s /bin/bash claudecode
chown -R claudecode:claudecode /www/wwwroot/claudecode
📊 監視とメンテナンス
1. 定期バックアップ
bash
# バックアップスクリプト作成
cat > /root/backup-claudecode.sh << 'EOF'
#!/bin/bash
DATE=$(date +%Y%m%d_%H%M%S)
tar -czf /backup/claudecode_$DATE.tar.gz /www/wwwroot/claudecode
find /backup -name "claudecode_*.tar.gz" -mtime +7 -delete
EOF
chmod +x /root/backup-claudecode.sh
# スケジュールタスクに追加
crontab -e
# 追加: 0 2 * * * /root/backup-claudecode.sh
2. ログローテーション
bash
# logrotate設定
cat > /etc/logrotate.d/claudecode << 'EOF'
/www/wwwroot/claudecode/logs/*.log {
daily
rotate 7
compress
delaycompress
missingok
notifempty
postrotate
pm2 reloadLogs
endscript
}
EOF
🐛 一般的な問題解決
1. ポート占有
bash
# ポート占有確認
netstat -tlnp | grep 4173
lsof -i :4173
# 占有プロセス終了
kill -9 <PID>
2. 権限問題
bash
# 権限修正
chown -R $USER:$USER /www/wwwroot/claudecode
chmod -R 755 /www/wwwroot/claudecode
3. メモリ不足
bash
# メモリ使用量確認
free -h
pm2 show claudecode-docs
# サービス再起動でメモリ解放
pm2 restart claudecode-docs
4. ビルド失敗
bash
# キャッシュクリア後再ビルド
rm -rf node_modules package-lock.json
npm cache clean --force
npm install
npm run docs:build
📞 配置後確認チェックリスト
- [ ] ✅ Node.js環境が正しく設定された
- [ ] ✅ プロジェクトファイルが正常にアップロードされた
- [ ] ✅ 依存関係インストール完了
- [ ] ✅ プロジェクトビルド成功
- [ ] ✅ PM2が正常に実行している
- [ ] ✅ サービスに正常にアクセス可能
- [ ] ✅ ログ出力が正常
- [ ] ✅ 自動開始設定完了
- [ ] ✅ リバースプロキシ設定(必要な場合)
- [ ] ✅ ファイアウォールとセキュリティ設定
上記手順を完了すると、Claude Codeドキュメントウェブサイトがクラウドサーバーで安定実行され、SSH接続が切断されてもサービスに影響しません。