ponshu-room-lite/docs/architecture/archive/FINAL_ARCHITECTURE_SIMPLIFI...

303 lines
10 KiB
Markdown
Raw Normal View History

# 最終アーキテクチャ決定版Synology中心構成
**作成日**: 2026-01-19
**決定**: Synology VM内でDokployを動かす構成を採用
---
## 🎯 **最終構成の全体像**
### **基本思想**
```
全てをSynology内で完結させる
外部VPSは使わないコストゼロ化
DokployはSynology VM内で動かす
```
---
## 📐 **物理構成**
```
┌─────────────────────────────────────────────────┐
│ あなたの自宅 Synology NAS (16GB) │
│ │
│ ┌───────────────────────────────────────────┐ │
│ │ DSMSynology OS │ │
│ │ - Container Manager │ │
│ │ - Virtual Machine Manager (VMM) │ │
│ └───────────────────────────────────────────┘ │
│ │
│ ┌───────────────────────────────────────────┐ │
│ │ VM #1: Ubuntu Server (4GB RAM割当) │ │
│ │ ┌─────────────────────────────────────┐ │ │
│ │ │ Dokploy (自動デプロイエンジン) │ │ │
│ │ │ - Traefik (リバースプロキシ) │ │ │
│ │ │ - Docker (アプリコンテナ) │ │ │
│ │ └─────────────────────────────────────┘ │ │
│ └───────────────────────────────────────────┘ │
│ │
│ ┌───────────────────────────────────────────┐ │
│ │ Docker Containers (DSM直下) │ │
│ │ - PostgreSQL (データベース) │ │
│ │ - Redis (キャッシュ) │ │
│ │ - Immich (写真管理+AI検索) │ │
│ │ - Ollama (ローカルAI) │ │
│ └───────────────────────────────────────────┘ │
│ │
│ ┌───────────────────────────────────────────┐ │
│ │ Gitea (DSM直下Dockerコンテナ) │ │
│ │ - コード管理 │ │
│ │ - Webhook → Dokploy連携 │ │
│ └───────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────┘
│ Tailscale VPN (安全な通信)
┌─────────────────────────────────────────────────┐
│ あなたのPC (開発環境) │
│ - Cursor / Claude Code │
│ - Git → Giteaにプッシュ │
└─────────────────────────────────────────────────┘
```
---
## 🔌 **ネットワーク構成**
```
外部インターネット
Tailscale Funnel (HTTPS公開エンドポイント)
https://posimai.ts.net
Synology VM (Dokploy)
┌─────────────────────────────────────┐
│ VM内のDockerコンテナ │
│ - sake-app (日本酒アプリAPI) │
│ - incense-app (お香アプリAPI) │
│ - nail-salon (ネイルサロンWeb) │
└─────────────────────────────────────┘
↓ データアクセス
┌─────────────────────────────────────┐
│ Synology DSM直下 │
│ - PostgreSQL (100.x.x.x:5432) │
│ - Redis (100.x.x.x:6379) │
└─────────────────────────────────────┘
```
---
## 💾 **メモリ配分16GB**
| コンポーネント | 割当メモリ | 用途 |
|---------------|-----------|------|
| **DSM本体** | 2GB | Synology OS |
| **VM (Ubuntu + Dokploy)** | 4GB | 自動デプロイ + アプリ実行 |
| **PostgreSQL** | 2GB | データベース |
| **Immich** | 2-3GB | 写真管理+CLIP検索 |
| **Ollama** | 4GB | ローカルAI夜間起動 |
| **Redis + その他** | 1-2GB | キャッシュ等 |
| **予備** | 1GB | バッファ |
**合計**: 16GBギリギリだが実現可能
---
## 🔄 **自動化フロー**
```
1. コード編集
┌─────────────────┐
│ Cursor/Claude │
│ Code → Git編集 │
└────────┬────────┘
2. Git Push
┌─────────────────┐
│ Gitea (Synology)│
│ リポジトリ受信 │
└────────┬────────┘
│ Webhook
3. 自動デプロイ
┌─────────────────┐
│ Dokploy (VM内) │
│ - コードpull │
│ - Build │
│ - Deploy │
└────────┬────────┘
4. 本番更新
┌─────────────────┐
│ アプリ稼働 │
│ (VM内Docker) │
└─────────────────┘
```
**所要時間**: Git Pushから30秒-2分
---
## 🚀 **なぜこの構成が最適か**
### **1. コストゼロ**
- ✅ 外部VPS不要
- ✅ 月額費用: Synology電気代のみ¥800程度
- ✅ 年間コスト: ¥9,600
### **2. レイテンシ最小**
- ✅ VM ↔ PostgreSQL: 同一物理マシン内(<1ms
- ✅ データ転送ゼロ(内部通信)
### **3. データ主権**
- ✅ すべてのデータが手元
- ✅ クラウド依存ゼロ
### **4. Synologyの強みを最大活用**
- ✅ 16GBメモリを全て使い切る
- ✅ VMM仮想マシン機能の活用
- ✅ Container Managerとの共存
---
## ⚠️ **この構成の注意点**
### **1. ポート80/443問題の解決**
```
問題: DSMとDokployTraefikが両方Port 80/443を使いたい
解決: VM内で完結させる
- DSM: Port 80/443を維持管理画面用
- VM: 独自のIPアドレスTailscaleで公開
- → ポート競合なし
```
### **2. メモリ不足リスク**
```
対策:
- Ollamaは夜間バッチのみ起動常駐させない
- Immichは必要時のみ起動
- Dokploy VM: 必要最低限の4GB
```
### **3. CPU負荷**
```
懸念: VM + Docker二重仮想化でCPU負荷増
現実:
- Synology CPUIntel/AMDは十分強力
- アプリがシンプルなら問題なし
- 負荷テストで要確認
```
---
## 📊 **VPS案との比較**
| 観点 | VPS + Synology案 | Synology VM案最終採用 |
|------|-----------------|------------------------|
| **月額コスト** | ¥1,300 | **¥800** |
| **レイテンシ** | VPS↔Synology: 1-5ms | **VM↔DB: <1ms** |
| **メモリ余裕** | Synology: 10GB余裕 | Synology: 1GB余裕 |
| **設定複雑度** | VPS設定 + Tailscale | **VMM設定のみ** |
| **障害時影響** | VPS停止 or Synology停止 | **Synology停止のみ** |
**結論**: Synology VM案が最適
---
## 🛠️ **実装手順Week 1-4**
### **Week 1: VM準備**
```bash
1. Synology VMM (Virtual Machine Manager) インストール
- パッケージセンターから検索
2. Ubuntu Server 22.04 LTS ダウンロード
- https://ubuntu.com/download/server
3. VM作成
- CPU: 2コア
- メモリ: 4GB
- ストレージ: 40GB
```
### **Week 2: Dokployインストール**
```bash
# VM内で実行
curl -sSL https://dokploy.com/install.sh | sh
# 管理画面アクセス
# Synology DSM → VMM → VM IPアドレス確認
# http://vm-ip:3000
```
### **Week 3: Tailscale設定**
```bash
# VM内でTailscaleインストール
curl -fsSL https://tailscale.com/install.sh | sh
tailscale up
# Funnel有効化HTTPS公開
tailscale funnel 3000
# → https://vm-name.ts.net でアクセス可能
```
### **Week 4: Gitea連携**
```yaml
# Dokploy管理画面で設定
Repository: http://synology-tailscale-ip:3000/user/sake-app.git
Branch: main
Auto Deploy: ON
Environment Variables:
DATABASE_URL: postgresql://user:pass@synology-ip:5432/posimai
```
---
## 🎯 **開発者がやること(通常運用)**
```
1. Cursorでコード編集
2. git add . && git commit -m "新機能追加"
3. git push origin main
→ 30秒後、本番環境に自動反映
あなたがやること: これだけ。
```
---
## 📝 **次のアクション**
### **今すぐできること**
```
1. Synology DSMにログイン
2. パッケージセンター → "Virtual Machine Manager" インストール
3. Ubuntu Server 22.04 ISOダウンロード
```
**所要時間**: 15分
---
## 🔗 **関連ドキュメント**
- [VPS比較分析](./VPS_CRITICAL_COMPARISON.md)
- [自動化安全プロトコル](./AUTOMATION_SAFETY_PROTOCOL.md)
- [アーキテクチャ決定記録](./ARCHITECTURE_DECISION_RECORD.md)
---
**更新履歴**:
- 2026-01-19: VPS案からSynology VM案に変更最終決定