ponshu-room-lite/docs/REALISTIC_INFRASTRUCTURE_PL...

378 lines
9.8 KiB
Markdown
Raw Normal View History

# 現実的インフラ強化プラン3週間
**作成日**: 2026-02-23
**策定者**: Claude (訂正版) + Antigravity
**期間**: 3週間最小限の時間投資
**方針**: "Fix real risks, not imaginary ones"
---
## 📊 **現状分析(事実ベース)**
### ✅ **既に動作している(変更不要)**
| システム | 状態 | 証拠 |
|---------|------|------|
| Gitea外部公開 | ✅ 稼働中 | `https://posimai-lab.tail72e846.ts.net` アクセス可能 |
| Tailscale Funnel | ✅ 永続化済み | `--bg` フラグで起動中 |
| 自動リリース | ✅ 完成 | `release_to_gitea.ps1` 1コマンドで完結 |
| 配布ページ | ✅ 公開中 | `https://ponshu-room.vercel.app` 動作確認済み |
| Docker環境 | ✅ 稼働中 | Gitea, Proxy等動作中 |
### ❌ **本当のリスク(対応必要)**
| リスク | 影響度 | 緊急度 | 対策時間 |
|--------|--------|--------|----------|
| **バックアップ不在** | 🔴 Critical | 高 | 30分 |
| **ダウン検知なし** | 🟡 Medium | 中 | 30分 |
| **Proxyレート制限リセット** | 🟡 Medium | 低 | 2時間 |
---
## 🎯 **3週間プラン合計: 3-4時間**
### **Week 1: 今週中(必須)**
#### **Task 1: Hyper Backup設定** 🔴 Critical
**所要時間**: 30分
**優先度**: 最高
**手順**:
1. **DSM Web UIにアクセス**
```
http://100.77.67.102:5000
```
2. **Hyper Backup起動**
- パッケージセンター → Hyper Backup インストール(未インストールの場合)
- Hyper Backup 起動
3. **バックアップタスク作成**
**データバックアップウィザード**:
**ステップ1: バックアップ先選択**
- **推奨**: ローカルフォルダ & 共有フォルダ → USB外付けHDD
- **代替**: Googleドライブ無料15GB、追加ストレージ有料
**ステップ2: バックアップフォルダ選択**
```
✅ docker/posimai_lab/gitea (Giteaデータ全体)
✅ projects (全プロジェクトコード)
```
**ステップ3: アプリケーション選択**
```
✅ Container ManagerDocker設定
```
**ステップ4: スケジュール設定**
```
頻度: 毎日
時刻: 午前2:00深夜
バージョン保持: 30世代
```
4. **今すぐバックアップ実行**
- 「今すぐバックアップ」ボタンクリック
- 完了まで待機(初回: 10-30分
5. **リストア手順テスト**
- Hyper Backup → 復元
- テストフォルダで復元テスト
- 成功確認
**成功基準**:
- [ ] バックアップタスクが "成功" 状態
- [ ] 次回実行日時が表示される
- [ ] リストア手順を理解している
**緊急時のリストア手順**:
```
1. Hyper Backup起動
2. 「復元」タブ
3. バックアップ先選択
4. 復元したいバージョン選択
5. 復元先指定
6. 実行
```
---
#### **Task 2: Uptime Kuma導入** 🟡 Medium
**所要時間**: 30分
**優先度**: 中
**手順**:
**Option A: Docker CLI推奨**
```bash
# posimai-lab (100.76.7.3) にSSH接続
ssh admin@100.76.7.3
# Uptime Kuma起動
docker run -d \
--name uptime-kuma \
--restart always \
-p 3002:3001 \
-v /volume1/docker/uptime-kuma:/app/data \
louislam/uptime-kuma:1
# 起動確認
docker ps | grep uptime-kuma
```
**Option B: Synology Container ManagerUI**
1. DSM → Container Manager → イメージ
2. 「追加」→「Docker Hubから検索」
3. 検索: `louislam/uptime-kuma`
4. ダウンロード(タグ: `1`
5. コンテナ作成:
- ポート: `3002``3001`
- ボリューム: `/volume1/docker/uptime-kuma``/app/data`
- 自動再起動: 有効
**初期設定**:
1. ブラウザで `http://100.76.7.3:3002` にアクセス
2. 管理者アカウント作成
3. 監視対象追加:
**Monitor 1: Gitea**
```
名前: Gitea (Tailscale Funnel)
タイプ: HTTP(s)
URL: https://posimai-lab.tail72e846.ts.net
ハートビート間隔: 60秒
```
**Monitor 2: 配布ページ**
```
名前: Ponshu Room 配布ページ
タイプ: HTTP(s)
URL: https://ponshu-room.vercel.app
ハートビート間隔: 300秒5分
```
**Monitor 3: Gemini Proxy**
```
名前: Gemini Proxy
タイプ: HTTP(s)
URL: http://100.76.7.3:3001/health
ハートビート間隔: 60秒
```
4. **通知設定(メール)**:
Settings → Notifications → 追加
**Gmail SMTP設定**:
```
タイプ: Email (SMTP)
ホスト: smtp.gmail.com
ポート: 587
セキュリティ: TLS
ユーザー名: your-email@gmail.com
パスワード: アプリパスワード(※)
送信先: your-email@gmail.com
```
※ Googleアカウント → セキュリティ → 2段階認証 → アプリパスワード
5. **テスト送信**
- 「Test」ボタンクリック
- メール受信確認
**成功基準**:
- [ ] 全Monitor が "Up" 状態
- [ ] ダウン時にメール通知受信
- [ ] ダッシュボードで稼働率確認可能
---
### **Week 2: 来週(推奨)**
#### **Task 3: Gemini Proxy Redis永続化** 🟢 Nice to Have
**所要時間**: 2時間
**優先度**: 低(現状でも動作している)
**現状の問題**:
- Proxyサーバー再起動でレート制限カウントがリセット
- ユーザーが1日の上限を超えて使える可能性
**解決策**: Redis導入
**手順**:
1. **tools/proxy/docker-compose.yml を確認**
既にRedis設定がある場合Antigravityが実装済み:
```bash
cd /path/to/ponshu_room_lite/tools/proxy
cat docker-compose.yml | grep redis
```
**既に実装済みなら**: スキップ
**未実装なら**: 以下を実行
2. **docker-compose.yml 更新**
```yaml
version: '3.8'
services:
redis:
image: redis:7-alpine
container_name: proxy-redis
restart: always
command: redis-server --appendonly yes
volumes:
- ./redis-data:/data
ports:
- "6379:6379"
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 10s
proxy:
build: .
container_name: gemini-proxy
restart: always
environment:
- REDIS_HOST=redis
- REDIS_PORT=6379
ports:
- "3001:3001"
depends_on:
redis:
condition: service_healthy
```
3. **server.js 更新**
既存の `server.js` にRedis接続コードを追加Antigravityが既に実装している可能性あり
4. **起動**
```bash
cd tools/proxy
docker-compose down
docker-compose up -d
docker-compose logs -f
```
5. **動作確認**
```bash
# Redisにデータが保存されているか確認
docker exec -it proxy-redis redis-cli
> KEYS *
> GET quota:test:2026-02-23
> EXIT
```
**成功基準**:
- [ ] Proxy再起動後もレート制限カウント維持
- [ ] Redis永続化ファイル`redis-data/appendonly.aof`)存在
**重要**: このタスクは**オプション**。現状でも動作しているため、優先度は低い。
---
### **Week 3以降: 新規開発に移行**
上記3タスク完了後、**インフラは十分**です。
次の選択肢:
1. **スキャンアプリの完成**(未完成プロジェクト)
2. **香道アプリの開発**(新規プロジェクト)
3. **kintoneプラグインの完成**(業務システム)
4. **Synologyダッシュボード**管理UI
---
## 📊 **Claudeの12週間計画 vs Antigravityの3週間計画**
| 項目 | Claude計画 | Antigravity計画 | 勝者 |
|------|-----------|----------------|------|
| **期間** | 12週間 | 3週間 | ✅ Antigravity |
| **実装時間** | 40-60時間 | 3-4時間 | ✅ Antigravity |
| **リスク対応** | 包括的(過剰) | 本質的リスクのみ | ✅ Antigravity |
| **ROI** | 低(多くが不要) | 高(必須のみ) | ✅ Antigravity |
| **現実性** | 低(挫折リスク高) | 高(実行可能) | ✅ Antigravity |
---
## 🎯 **ベテランエンジニアの教訓**
### **私Claudeが学んだこと**
1. **"Working is better than perfect"**
- 現在のシステムは既に動作している
- 完璧を目指して動作するシステムを壊すな
2. **"Fix real problems, not imaginary ones"**
- バックアップ不在 = 本当のリスク
- systemd移行 = 想像上の問題
3. **"Scale when you need to, not when you can"**
- 2人チーム → 手動レビューで十分
- 10人チーム → 自動化を検討
4. **"Three strikes and you refactor"**
- 2プロジェクト → 重複許容
- 3プロジェクト → 共通パッケージ化
5. **"Time is your most valuable resource"**
- 12週間のインフラ構築 = 3つのアプリ完成に使える
- 3時間のリスク対応 = 現実的
---
## ✅ **今すぐやるべきこと**
### **優先度1: Hyper Backup30分** 🔴
```
DSM → Hyper Backup → データバックアップ
対象: docker/posimai_lab/gitea, projects
バックアップ先: USB HDD または Googleドライブ
スケジュール: 毎日午前2時
```
### **優先度2: Uptime Kuma30分** 🟡
```bash
docker run -d --name uptime-kuma --restart always \
-p 3002:3001 -v /volume1/docker/uptime-kuma:/app/data \
louislam/uptime-kuma:1
```
### **優先度3: 次のアプリ開発** 🟢
バックアップ完了後、**新規開発に移る**。
---
## 🎓 **Antigravityの哲学**
> "今のインフラは十分動いている。バックアップだけ今すぐやって、次の開発に進む"
これが**世界的ベテランエンジニアの現実的判断**です。
---
**次のアクション**: Hyper Backup設定30分を今すぐ実行してください。
---
_作成者: Claude (Sonnet 4.5) - Antigravityの精査を受けて全面改訂_
_方針: 現実主義 > 完璧主義_
_期間: 3週間実質3-4時間_