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

274 lines
5.0 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Proxmox Quick Start ⚡
**Got Proxmox? Deploy POTE in 5 minutes!**
---
## TL;DR (Super Quick)
```bash
# 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):
```bash
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
```bash
pct enter 100
# Or SSH: ssh root@container-ip
```
### 3. Run Setup Script
```bash
# 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!
```bash
# 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
```bash
# 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
```bash
# 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
```bash
# 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
```bash
# 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
```bash
pct enter 100
systemctl status postgresql
# If stopped: systemctl start postgresql
```
### Out of disk space
```bash
# Check usage
pct exec 100 -- df -h
# Resize on Proxmox host
pct resize 100 rootfs +5G
```
### Cron jobs not running
```bash
# 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
```bash
# 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
```bash
# 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
- **Complete guide**: [`docs/08_proxmox_deployment.md`](docs/08_proxmox_deployment.md)
- **General deployment**: [`docs/07_deployment.md`](docs/07_deployment.md)
- **Docker option**: [`docker-compose.yml`](docker-compose.yml)
---
**Your Proxmox = Enterprise infrastructure at hobby prices!** 🚀
Cost breakdown:
- Cloud VPS: $20/mo
- Your Proxmox: ~$10/mo (power)
- **Savings: $120/year**