378 lines
9.8 KiB
Markdown
378 lines
9.8 KiB
Markdown
# 現実的インフラ強化プラン(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 Manager(Docker設定)
|
||
```
|
||
|
||
**ステップ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 Manager(UI)**
|
||
|
||
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 Backup(30分)** 🔴
|
||
|
||
```
|
||
DSM → Hyper Backup → データバックアップ
|
||
対象: docker/posimai_lab/gitea, projects
|
||
バックアップ先: USB HDD または Googleドライブ
|
||
スケジュール: 毎日午前2時
|
||
```
|
||
|
||
### **優先度2: Uptime Kuma(30分)** 🟡
|
||
|
||
```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時間)_
|