POTE/scripts/proxmox_setup.sh
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

156 lines
4.2 KiB
Bash
Executable File

#!/bin/bash
# POTE Proxmox/Ubuntu Setup Script
# Run this inside your Proxmox LXC container or Ubuntu VM
set -e
echo "=========================================="
echo " POTE - Proxmox Deployment Setup"
echo "=========================================="
echo ""
# Colors
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
# Configuration
POTE_USER="poteapp"
POTE_HOME="/home/$POTE_USER"
POTE_DIR="$POTE_HOME/pote"
DB_NAME="pote"
DB_USER="poteuser"
DB_PASS="changeme123" # CHANGE THIS!
echo -e "${YELLOW}⚠️ Using default password '$DB_PASS' - CHANGE THIS in production!${NC}"
echo ""
# Check if running as root
if [ "$EUID" -ne 0 ]; then
echo "Please run as root (sudo)"
exit 1
fi
# Step 1: Update system
echo -e "${GREEN}[1/9]${NC} Updating system..."
apt update && apt upgrade -y
# Step 2: Install dependencies
echo -e "${GREEN}[2/9]${NC} Installing dependencies..."
apt install -y \
python3.11 \
python3.11-venv \
python3-pip \
postgresql \
postgresql-contrib \
git \
curl \
build-essential \
libpq-dev \
nano \
htop
# Step 3: Setup PostgreSQL
echo -e "${GREEN}[3/9]${NC} Setting up PostgreSQL..."
sudo -u postgres psql -tc "SELECT 1 FROM pg_database WHERE datname = '$DB_NAME'" | grep -q 1 || \
sudo -u postgres psql << EOF
CREATE DATABASE $DB_NAME;
CREATE USER $DB_USER WITH PASSWORD '$DB_PASS';
GRANT ALL PRIVILEGES ON DATABASE $DB_NAME TO $DB_USER;
ALTER DATABASE $DB_NAME OWNER TO $DB_USER;
EOF
echo "✓ PostgreSQL database '$DB_NAME' created"
# Step 4: Create app user
echo -e "${GREEN}[4/9]${NC} Creating application user..."
id -u $POTE_USER &>/dev/null || useradd -m -s /bin/bash $POTE_USER
echo "✓ User '$POTE_USER' created"
# Step 5: Clone repository (if not exists)
echo -e "${GREEN}[5/9]${NC} Setting up POTE repository..."
if [ ! -d "$POTE_DIR" ]; then
echo "Enter your POTE repository URL (or press Enter to skip git clone):"
read -r REPO_URL
if [ -n "$REPO_URL" ]; then
sudo -u $POTE_USER git clone "$REPO_URL" "$POTE_DIR"
else
echo "Skipping git clone. Make sure code is in $POTE_DIR"
fi
else
echo "✓ Directory $POTE_DIR already exists"
fi
# Step 6: Setup Python environment
echo -e "${GREEN}[6/9]${NC} Setting up Python environment..."
sudo -u $POTE_USER bash << 'EOF'
cd $POTE_DIR
python3.11 -m venv venv
source venv/bin/activate
pip install --upgrade pip
pip install -e .
echo "✓ Python dependencies installed"
EOF
# Step 7: Create .env file
echo -e "${GREEN}[7/9]${NC} Creating environment configuration..."
sudo -u $POTE_USER bash << EOF
cat > $POTE_DIR/.env << ENVEOF
DATABASE_URL=postgresql://$DB_USER:$DB_PASS@localhost:5432/$DB_NAME
QUIVERQUANT_API_KEY=
FMP_API_KEY=
LOG_LEVEL=INFO
ENVEOF
chmod 600 $POTE_DIR/.env
EOF
echo "✓ Environment file created"
# Step 8: Run database migrations
echo -e "${GREEN}[8/9]${NC} Running database migrations..."
sudo -u $POTE_USER bash << 'EOF'
cd $POTE_DIR
source venv/bin/activate
alembic upgrade head
EOF
echo "✓ Database schema initialized"
# Step 9: Setup directories
echo -e "${GREEN}[9/9]${NC} Creating directories..."
sudo -u $POTE_USER mkdir -p $POTE_HOME/logs
sudo -u $POTE_USER mkdir -p $POTE_HOME/backups
echo "✓ Log and backup directories created"
# Summary
echo ""
echo "=========================================="
echo " ✅ POTE Installation Complete!"
echo "=========================================="
echo ""
echo "Next steps:"
echo ""
echo "1. Switch to pote user:"
echo " su - $POTE_USER"
echo ""
echo "2. Activate virtual environment:"
echo " cd pote && source venv/bin/activate"
echo ""
echo "3. Test with fixtures (offline):"
echo " python scripts/ingest_from_fixtures.py"
echo ""
echo "4. Enrich securities:"
echo " python scripts/enrich_securities.py"
echo ""
echo "5. Setup cron jobs (as poteapp user):"
echo " crontab -e"
echo ""
echo " Add these lines:"
echo " 0 6 * * * cd $POTE_DIR && $POTE_DIR/venv/bin/python scripts/fetch_congressional_trades.py --days 7 >> $POTE_HOME/logs/trades.log 2>&1"
echo " 15 6 * * * cd $POTE_DIR && $POTE_DIR/venv/bin/python scripts/enrich_securities.py >> $POTE_HOME/logs/enrich.log 2>&1"
echo ""
echo "⚠️ IMPORTANT: Change database password in .env!"
echo " Edit: $POTE_DIR/.env"
echo ""
echo "📖 Full guide: docs/08_proxmox_deployment.md"
echo ""