proxMon/docs/deployment-overview.md

2.5 KiB

Deployment Overview

Two artifacts, built independently, deployed independently.

                ┌─────────────────────────┐
                │   Server (LXC in RZ)    │
  agents ──WSS─>│  - Phoenix release      │
                │  - SQLite               │
                │  - Caddy (TLS)          │
                └─────────────────────────┘
                        ▲
                        │ ssh
                        │
                ┌─────────────────────────┐
                │  Operator workstation   │
                │  - Builds server release│
                │  - Builds agent binary  │
                └─────────────────────────┘
                        │ scp
                        ▼
                ┌─────────────────────────┐
                │ Proxmox host (any of N) │
                │  - Burrito agent binary │
                │  - systemd unit         │
                └─────────────────────────┘

What runs where

Component Host Port / Path
Caddy Server LXC 443 public, forwards → 127.0.0.1:4000
Phoenix Server LXC 127.0.0.1:4000 (HTTP + WS)
SQLite Server LXC file at $DATABASE_PATH
Agent Proxmox host no listening ports

Secrets the operator must provide

Variable Where How to generate
SECRET_KEY_BASE Server env mix phx.gen.secret
DASHBOARD_PASSWORD_HASH Server env mix run -e 'IO.puts(Argon2.hash_pwd_salt("..."))'
Agent token Server DB Admin UI → "Add host" reveals it once

Build flow

  1. cd server && MIX_ENV=prod mix release → produces _build/prod/rel/server/
  2. cd agent && ./scripts/build-linux.sh → produces dist/proxmox-monitor-agent_linux_amd64

See server/docs/deploy-lxc.md and agent/docs/install.md for step-by-step.