Files
nofx/DOCKER_DEPLOY.ja.md
T
icy 7d58f56e49 feat: implement hybrid database architecture and frontend encryption
- Add PostgreSQL + SQLite hybrid database support with automatic switching
- Implement frontend AES-GCM + RSA-OAEP encryption for sensitive data
- Add comprehensive DatabaseInterface with all required methods
- Fix compilation issues with interface consistency
- Update all database method signatures to use DatabaseInterface
- Add missing UpdateTraderInitialBalance method to PostgreSQL implementation
- Integrate RSA public key distribution via /api/config endpoint
- Add frontend crypto service with proper error handling
- Support graceful degradation between encrypted and plaintext transmission
- Add directory creation for RSA keys and PEM parsing fixes
- Test both SQLite and PostgreSQL modes successfully
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: tinkle-community <tinklefund@gmail.com>
2025-11-06 01:50:06 +08:00

473 lines
11 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 🐳 Dockerワンクリックデプロイガイド
このガイドは、Dockerを使用してNOFX AIトレーディング競争システムを迅速にデプロイする方法を説明します。
## 📋 前提条件
開始する前に、システムに以下が必要です:
- **Docker**: バージョン20.10以上
- **Docker Compose**: バージョン2.0以上
### Dockerのインストール
#### macOS / Windows
[Docker Desktop](https://www.docker.com/products/docker-desktop/)をダウンロードしてインストール
#### Linux (Ubuntu/Debian)
> #### Docker Composeバージョンに関する注意
>
> **新規ユーザー推奨:**
> - **Docker Desktopを使用**: 最新のDocker Composeが自動的に含まれ、別途インストールは不要
> - シンプルなインストール、ワンクリックセットアップ、GUI管理を提供
> - macOS、Windows、一部のLinuxディストリビューションをサポート
>
> **既存ユーザー向け注意:**
> - **スタンドアロンdocker-composeの非推奨**: 独立したDocker Composeバイナリのダウンロードは推奨されません
> - **組み込みバージョンを使用**: Docker 20.10+には`docker compose`コマンド(スペース付き)が含まれています
> - 古い`docker-compose`をまだ使用している場合は、新しい構文にアップグレードしてください
*推奨:Docker Desktop(利用可能な場合)またはCompose組み込みのDocker CEを使用*
```bash
# Dockerをインストール(composeを含む)
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
# dockerグループにユーザーを追加
sudo usermod -aG docker $USER
newgrp docker
# インストールを確認(新しいコマンド)
docker --version
docker compose --version # Docker 24+にはこれが含まれており、別途インストール不要
```
## 🚀 クイックスタート(3ステップ)
### ステップ1:設定ファイルを準備
```bash
# 設定テンプレートをコピー
cp config.json.example config.json
# APIキーで設定ファイルを編集
nano config.json # または他のエディタを使用
```
**必須フィールド:**
```json
{
"traders": [
{
"id": "my_trader",
"name": "My AI Trader",
"ai_model": "deepseek",
"binance_api_key": "YOUR_BINANCE_API_KEY", // ← BinanceのAPIキー
"binance_secret_key": "YOUR_BINANCE_SECRET_KEY", // ← Binanceのシークレットキー
"deepseek_key": "YOUR_DEEPSEEK_API_KEY", // ← DeepSeekのAPIキー
"initial_balance": 1000.0,
"scan_interval_minutes": 3
}
],
"use_default_coins": true,
"api_server_port": 8080
}
```
### ステップ2:ワンクリック起動
```bash
# すべてのサービスをビルドして起動(初回実行)
docker compose up -d --build
# 以降の起動(リビルドなし)
docker compose up -d
```
**起動オプション:**
- `--build`: Dockerイメージをビルド(初回実行またはコード更新後に使用)
- `-d`: デタッチモードで実行(バックグラウンド)
### ステップ3:システムにアクセス
デプロイが完了したら、ブラウザを開いて以下にアクセス:
- **Webインターフェース**: http://localhost:3000
- **APIヘルスチェック**: http://localhost:8080/health
## 📊 サービス管理
### 実行状態を表示
```bash
# すべてのコンテナステータスを表示
docker compose ps
# サービスヘルスステータスを表示
docker compose ps --format json | jq
```
### ログを表示
```bash
# すべてのサービスログを表示
docker compose logs -f
# バックエンドログのみを表示
docker compose logs -f backend
# フロントエンドログのみを表示
docker compose logs -f frontend
# 最後の100行を表示
docker compose logs --tail=100
```
### サービスを停止
```bash
# すべてのサービスを停止(データを保持)
docker compose stop
# コンテナを停止して削除(データを保持)
docker compose down
# コンテナとボリュームを停止して削除(すべてのデータをクリア)
docker compose down -v
```
### サービスを再起動
```bash
# すべてのサービスを再起動
docker compose restart
# バックエンドのみを再起動
docker compose restart backend
# フロントエンドのみを再起動
docker compose restart frontend
```
### サービスを更新
```bash
# 最新のコードをプル
git pull
# リビルドして再起動
docker compose up -d --build
```
## 🔧 高度な設定
### ポートを変更
`docker-compose.yml`を編集してポートマッピングを変更:
```yaml
services:
backend:
ports:
- "8080:8080" # "your_port:8080"に変更
frontend:
ports:
- "3000:80" # "your_port:80"に変更
```
### リソース制限
`docker-compose.yml`にリソース制限を追加:
```yaml
services:
backend:
deploy:
resources:
limits:
cpus: '2'
memory: 2G
reservations:
cpus: '1'
memory: 1G
```
### 環境変数
`.env`ファイルを作成して環境変数を管理:
```bash
# .env
TZ=Asia/Tokyo
BACKEND_PORT=8080
FRONTEND_PORT=3000
```
次に`docker-compose.yml`で使用:
```yaml
services:
backend:
ports:
- "${BACKEND_PORT}:8080"
```
## 📁 データの永続化
システムは自動的にデータをローカルディレクトリに永続化します:
- `./decision_logs/`: AI判断ログ
- `./coin_pool_cache/`: コインプールキャッシュ
- `./config.json`: 設定ファイル(マウント済み)
**データの場所:**
```bash
# データディレクトリを表示
ls -la decision_logs/
ls -la coin_pool_cache/
# データをバックアップ
tar -czf backup_$(date +%Y%m%d).tar.gz decision_logs/ coin_pool_cache/ config.json
# データを復元
tar -xzf backup_20241029.tar.gz
```
## 🐛 トラブルシューティング
### コンテナが起動しない
```bash
# 詳細なエラーメッセージを表示
docker compose logs backend
docker compose logs frontend
# コンテナステータスを確認
docker compose ps -a
# リビルド(キャッシュをクリア)
docker compose build --no-cache
```
### ポートが既に使用中
```bash
# ポートを使用しているプロセスを検索
lsof -i :8080 # バックエンドポート
lsof -i :3000 # フロントエンドポート
# プロセスを強制終了
kill -9 <PID>
```
### 設定ファイルが見つからない
```bash
# config.jsonが存在することを確認
ls -la config.json
# 存在しない場合、テンプレートをコピー
cp config.json.example config.json
```
### ヘルスチェックが失敗
```bash
# ヘルスステータスを確認
docker inspect nofx-backend | jq '.[0].State.Health'
docker inspect nofx-frontend | jq '.[0].State.Health'
# ヘルスエンドポイントを手動でテスト
curl http://localhost:8080/health
curl http://localhost:3000/health
```
### フロントエンドがバックエンドに接続できない
```bash
# ネットワーク接続を確認
docker compose exec frontend ping backend
# バックエンドサービスが実行中か確認
docker compose exec frontend wget -O- http://backend:8080/health
```
### Dockerリソースをクリーン
```bash
# 未使用のイメージをクリーン
docker image prune -a
# 未使用のボリュームをクリーン
docker volume prune
# すべての未使用リソースをクリーン(注意して使用)
docker system prune -a --volumes
```
## 🔐 セキュリティ推奨事項
1. **config.jsonをGitにコミットしない**
```bash
# config.jsonが.gitignoreに含まれていることを確認
echo "config.json" >> .gitignore
```
2. **機密データには環境変数を使用**
```yaml
# docker-compose.yml
services:
backend:
environment:
- BINANCE_API_KEY=${BINANCE_API_KEY}
- BINANCE_SECRET_KEY=${BINANCE_SECRET_KEY}
```
3. **APIアクセスを制限**
```yaml
# ローカルアクセスのみを許可
services:
backend:
ports:
- "127.0.0.1:8080:8080"
```
4. **イメージを定期的に更新**
```bash
docker compose pull
docker compose up -d
```
## 🌐 本番環境デプロイ
### Nginxリバースプロキシの使用
```nginx
# /etc/nginx/sites-available/nofx
server {
listen 80;
server_name your-domain.com;
location / {
proxy_pass http://localhost:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
location /api/ {
proxy_pass http://localhost:8080/api/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
```
### HTTPSの設定(Let's Encrypt
```bash
# Certbotをインストール
sudo apt-get install certbot python3-certbot-nginx
# SSL証明書を取得
sudo certbot --nginx -d your-domain.com
# 自動更新
sudo certbot renew --dry-run
```
### Docker Swarmの使用(クラスタデプロイ)
```bash
# Swarmを初期化
docker swarm init
# スタックをデプロイ
docker stack deploy -c docker-compose.yml nofx
# サービスステータスを表示
docker stack services nofx
# サービスをスケール
docker service scale nofx_backend=3
```
## 📈 監視&ロギング
### ログ管理
```bash
# ログローテーションを設定(docker-compose.ymlで既に設定済み)
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
# ログ統計を表示
docker compose logs --timestamps | wc -l
```
### 監視ツール統合
Prometheus + Grafanaで監視を統合:
```yaml
# docker-compose.yml(監視サービスを追加)
services:
prometheus:
image: prom/prometheus
ports:
- "9090:9090"
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
grafana:
image: grafana/grafana
ports:
- "3001:3000"
```
## 🆘 ヘルプを取得
- **GitHub Issues**: [Issueを提出](https://github.com/yourusername/open-nofx/issues)
- **ドキュメント**: [README.md](README.md)を確認
- **コミュニティ**: Discord/Telegramグループに参加
## 📝 コマンドチートシート
```bash
# 起動
docker compose up -d --build # ビルドして起動
docker compose up -d # 起動(リビルドなし)
# 停止
docker compose stop # サービスを停止
docker compose down # コンテナを停止して削除
docker compose down -v # コンテナとデータを停止して削除
# 表示
docker compose ps # ステータスを表示
docker compose logs -f # ログを表示
docker compose top # プロセスを表示
# 再起動
docker compose restart # すべてのサービスを再起動
docker compose restart backend # バックエンドを再起動
# 更新
git pull && docker compose up -d --build
# クリーン
docker compose down -v # すべてのデータをクリア
docker system prune -a # Dockerリソースをクリーン
```
---
🎉 おめでとうございます!NOFX AIトレーディング競争システムのデプロイに成功しました!
問題が発生した場合は、[トラブルシューティング](#-トラブルシューティング)セクションを確認するか、Issueを提出してください。