POTE/PROXMOX_QUICKSTART.md
ilia 204cd0e75b Initial commit: POTE Phase 1 complete
- PR1: Project scaffold, DB models, price loader
- PR2: Congressional trade ingestion (House Stock Watcher)
- PR3: Security enrichment + deployment infrastructure
- 37 passing tests, 87%+ coverage
- Docker + Proxmox deployment ready
- Complete documentation
- Works 100% offline with fixtures
2025-12-14 20:45:34 -05:00

5.0 KiB

Proxmox Quick Start

Got Proxmox? Deploy POTE in 5 minutes!


TL;DR (Super Quick)

# 1. Create Ubuntu 22.04 LXC container (2GB RAM, 2 cores, 8GB disk)

# 2. Enter container and run:
curl -fsSL https://raw.githubusercontent.com/your-repo/pote/main/scripts/proxmox_setup.sh | sudo bash

# 3. Switch to app user and test:
su - poteapp
cd pote && source venv/bin/activate
python scripts/ingest_from_fixtures.py

# Done! ✅

Step-by-Step (10 minutes)

1. Create LXC Container

Via Proxmox Web UI:

  1. Click "Create CT"
  2. Template: Ubuntu 22.04
  3. Hostname: pote
  4. Memory: 2048 MB
  5. CPU cores: 2
  6. Disk: 8 GB
  7. Network: Bridge, DHCP
  8. Create!

Via Command Line (on Proxmox host):

pct create 100 local:vztmpl/ubuntu-22.04-standard_22.04-1_amd64.tar.zst \
  --hostname pote \
  --memory 2048 \
  --cores 2 \
  --rootfs local-lvm:8 \
  --net0 name=eth0,bridge=vmbr0,ip=dhcp \
  --unprivileged 1

pct start 100

2. Enter Container

pct enter 100
# Or SSH: ssh root@container-ip

3. Run Setup Script

# Option A: If repo already cloned
cd /path/to/pote
sudo bash scripts/proxmox_setup.sh

# Option B: Download and run
curl -fsSL https://your-repo/scripts/proxmox_setup.sh | sudo bash

4. Test It!

# Switch to app user
su - poteapp

# Activate venv
cd pote
source venv/bin/activate

# Test with fixtures (offline)
python scripts/ingest_from_fixtures.py

# Should see:
# ✓ Officials created: 4
# ✓ Trades ingested: 5

5. Setup Cron Jobs

# As poteapp user
crontab -e

# Add these lines:
0 6 * * * cd /home/poteapp/pote && /home/poteapp/pote/venv/bin/python scripts/fetch_congressional_trades.py --days 7 >> /home/poteapp/logs/trades.log 2>&1
15 6 * * * cd /home/poteapp/pote && /home/poteapp/pote/venv/bin/python scripts/enrich_securities.py >> /home/poteapp/logs/enrich.log 2>&1

6. Done! 🎉

Your POTE instance is now running and will:

  • Fetch congressional trades daily at 6 AM
  • Enrich securities daily at 6:15 AM
  • Store everything in PostgreSQL

What You Get

Full PostgreSQL database
Automated daily updates (via cron)
Isolated environment (LXC container)
Easy backups (Proxmox snapshots)
Low resource usage (500MB RAM)
Cost: Just electricity (
$5-10/mo)


Quick Commands

# Enter container
pct enter 100

# Check status
systemctl status postgresql

# View logs
tail -f /home/poteapp/logs/trades.log

# Manual ingestion
su - poteapp
cd pote && source venv/bin/activate
python scripts/fetch_congressional_trades.py --days 30

# Database backup
sudo -u postgres pg_dump pote > backup.sql

# Check database size
sudo -u postgres psql -c "SELECT pg_size_pretty(pg_database_size('pote'));"

Resource Usage

Idle:

  • RAM: ~500 MB
  • CPU: <1%
  • Disk: ~2 GB

During ingestion:

  • RAM: ~800 MB
  • CPU: 10-20%
  • Duration: ~30 seconds

After 1 month:

  • Disk: ~3-4 GB
  • Database: ~500 MB

Maintenance

Weekly

# Backup database
pct exec 100 -- sudo -u postgres pg_dump pote > pote_backup_$(date +%Y%m%d).sql

# Or via Proxmox snapshots (easier!)
# Web UI: Container → Snapshots → Take Snapshot

Monthly

# Update system
pct exec 100 -- apt update && apt upgrade -y

# Vacuum database
pct exec 100 -- sudo -u postgres psql pote -c "VACUUM ANALYZE;"

# Clean old logs
pct exec 100 -- find /home/poteapp/logs -name "*.log" -mtime +30 -delete

Troubleshooting

Can't connect to database

pct enter 100
systemctl status postgresql
# If stopped: systemctl start postgresql

Out of disk space

# Check usage
pct exec 100 -- df -h

# Resize on Proxmox host
pct resize 100 rootfs +5G

Cron jobs not running

# Check cron is running
pct exec 100 -- systemctl status cron

# Check crontab
pct exec 100 -- su - poteapp -c "crontab -l"

# Check logs
pct exec 100 -- tail -f /home/poteapp/logs/trades.log

Python errors

# Reinstall dependencies
pct enter 100
su - poteapp
cd pote
rm -rf venv
python3.11 -m venv venv
source venv/bin/activate
pip install -e .

Next Steps

  1. Container running
  2. POTE installed
  3. Data ingested
  4. ⏭️ Setup Proxmox backups (Web UI → Datacenter → Backup)
  5. ⏭️ Configure static IP (if needed)
  6. ⏭️ Build Phase 2 analytics
  7. ⏭️ Add FastAPI dashboard

Advanced: Static IP

# On Proxmox host, edit container config
nano /etc/pve/lxc/100.conf

# Change:
net0: name=eth0,bridge=vmbr0,ip=192.168.1.50/24,gw=192.168.1.1

# Restart
pct restart 100

Full Documentation


Your Proxmox = Enterprise infrastructure at hobby prices! 🚀

Cost breakdown:

  • Cloud VPS: $20/mo
  • Your Proxmox: ~$10/mo (power)
  • Savings: $120/year