10 KiB
10 KiB
最終アーキテクチャ決定版(Synology中心構成)
作成日: 2026-01-19 決定: Synology VM内でDokployを動かす構成を採用
🎯 最終構成の全体像
基本思想
全てをSynology内で完結させる
↓
外部VPSは使わない(コストゼロ化)
↓
DokployはSynology VM内で動かす
📐 物理構成
┌─────────────────────────────────────────────────┐
│ あなたの自宅 Synology NAS (16GB) │
│ │
│ ┌───────────────────────────────────────────┐ │
│ │ DSM(Synology 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とDokploy(Traefik)が両方Port 80/443を使いたい
解決: VM内で完結させる
- DSM: Port 80/443を維持(管理画面用)
- VM: 独自のIPアドレス(Tailscaleで公開)
- → ポート競合なし
2. メモリ不足リスク
対策:
- Ollamaは夜間バッチのみ起動(常駐させない)
- Immichは必要時のみ起動
- Dokploy VM: 必要最低限の4GB
3. CPU負荷
懸念: VM + Docker二重仮想化でCPU負荷増
現実:
- Synology CPU(Intel/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準備
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インストール
# VM内で実行
curl -sSL https://dokploy.com/install.sh | sh
# 管理画面アクセス
# Synology DSM → VMM → VM IPアドレス確認
# http://vm-ip:3000
Week 3: Tailscale設定
# 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連携
# 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分
🔗 関連ドキュメント
更新履歴:
- 2026-01-19: VPS案からSynology VM案に変更(最終決定)