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

10 KiB
Raw Blame 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準備

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案に変更最終決定