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

303 lines
10 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.

# 最終アーキテクチャ決定版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** |
| **レイテンシ** | VPSSynology: 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案に変更最終決定