Skip to content

インフラ(Proxmox)

関連: アーキテクチャ / セットアップ / Discord / Cloudflare

ページ 内容
Cloudflare nkjm.dev / Tunnel / Access / Bearer

方針

  • 自宅 Proxmox 上に構築する
  • 採用: pve-02 上の一体型 VM finance-manager
  • Grafana は 既存 VM(pve-03)を再利用
  • 外向き通信(Discord Gateway / Gemini API / 後から cloudflared)ができればよい
  • Discord → 自宅は Bot が外向き WebSocket でつなぐため、受信専用のポート開放は不要

構成案

MVP: 一体型 VM(採用)

項目
ノード pve-02
種別 VM(Terraform: pve-infra module.vm_212
名前 finance-manager
VM ID 212
vCPU 2
RAM 4 GB
Disk 40 GB
OS Debian 13 cloud image + cloud-init
IP 192.168.40.212/24
FQDN finance.home
ユーザー debian

app + PostgreSQL は当面この VM に同居。後から DB 分離してもよい。
Grafana は既存 VM(pve-03)を再利用。

参考: LXC で分ける場合(採用しない)

役割 種別 名前案 vCPU RAM Disk OS 目安
finance-manager アプリ LXC (unprivileged) finance-app 2 2 GB 16 GB Debian 12 / Ubuntu 24.04
PostgreSQL LXC または既存 finance-db / 既存 PG 1 1 GB 20 GB 同上
Grafana 既存 VM (既存) 変更最小(データ源追加のみ)
cloudflared finance-app に同居 Tunnel 導入時に追加

もっと小さく始める: 一体型 LXC(参考)

最初に切るのが面倒なら、一時的に1台でも可。

役割 種別 名前案 vCPU RAM Disk
app + PostgreSQL LXC finance-manager 2 2–4 GB 32 GB

後から DB を分離してもよい。Grafana は引き続き既存 VM。

フル VM にする場合

Docker を好きに使いたい / カーネルまで分けたいときだけ。

役割 種別 vCPU RAM Disk
finance-manager VM 2 4 GB 40 GB

個人用途の Bot + API なら LXC で十分

ネットワーク

項目 方針
IP LAN 内固定 or DHCP予約
外向き HTTPS(Gemini / Discord)を許可
内向き公開 MVP 初期は不要(Discord Bot Gateway は外向き)
Tunnel Tasker 自動取込を入れる段階で cloudflaredfinance-app に追加
Grafana → PG 自宅 LAN 内で PostgreSQL 5432 に接続(PG は LAN のみ listen)

ソフトウェア構成(finance-app)

MVP 最初のスライス(Discord Bot + Gemini):

  • Discord Bot(Gateway 常駐)
  • Gemini API クライアント(text + vision)
  • PostgreSQL クライアント
  • (後)ingest API(FastAPI 等)
  • (後)IMAP worker
  • (後)cloudflared

常駐方法の候補: systemd または Docker Compose(好みで)。

PostgreSQL

  • DB 名例: finance_manager
  • アプリ用ロールを分ける
  • バックアップ: 日次 pg_dump を別ストレージへ(後で可)
  • Grafana 用に読み取り専用ユーザーがあると安心

スペック選定の考え方

負荷 目安
Discord メッセージ数回/日 CPU ほぼ暇
Gemini API 計算はクラウド側。アプリは待ち受け中心
画像解析 一時的にメモリを食うので RAM 2 GB あると安心
PostgreSQL(個人明細) 1 GB で十分
将来の余裕 app を 2 vCPU / 2 GB にしておけばしばらく困らない

作成チェックリスト(自宅サーバ整え)

  1. pve-infra の PR を merge / apply し finance-manager(VM 212)を作成
  2. 192.168.40.212 へ SSH(debian)できることを確認
  3. 外向き HTTPS 疎通確認
  4. 同一 VM に PostgreSQL を入れる(または後で分離)
  5. Discord Bot トークン / Gemini API キーを env で置けるようにする
  6. (任意)既存 Grafana から DB へ疎通確認
  7. Tunnel / Tasker / IMAP は Bot が動いてから

実装の始め方(合意)

いったん自宅側を整えたら、最初の開発スライスはこれ:

  1. Discord Bot + Gemini + PostgreSQL
  2. テキスト / 画像の手動入力
  3. 厳し目返信
  4. Grafana で最低限の可視化
  5. Cloudflare Tunnel + Tasker(PayPay 自動)
  6. メール / CSV

つまり「まず Gemini を使った Discord 経由 Bot」からで正しい。