#!/bin/bash # ============================================================================== # OnEver Drive — Proxmox VE LXC 1: Backend API Provisioning Script # Target: Debian 12 Bookworm LXC (CT 100) # ============================================================================== set -e echo "=== [1/6] Actualizando paquetes base del sistema Debian 12 ===" apt-get update && apt-get upgrade -y apt-get install -y curl git ufw python3 python3-pip python3-venv postgresql postgresql-contrib nginx echo "=== [2/6] Configurando base de datos PostgreSQL ===" systemctl start postgresql systemctl enable postgresql sudo -u postgres psql -c "CREATE DATABASE onever_drive;" || true sudo -u postgres psql -c "CREATE USER onever_user WITH ENCRYPTED PASSWORD 'OneverSecurePass2026!';" || true sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE onever_drive TO onever_user;" || true sudo -u postgres psql -d onever_drive -c "GRANT ALL ON SCHEMA public TO onever_user;" || true echo "=== [3/6] Preparando directorios de aplicación y almacenamiento ===" mkdir -p /opt/onever_drive mkdir -p /storage/backups/clients mkdir -p /storage/temp chown -R www-data:www-data /storage echo "=== [4/6] Configurando entorno virtual de Python ===" python3 -m venv /opt/onever_drive/venv /opt/onever_drive/venv/pip install --upgrade pip # Copiar archivos de backend (asumiendo clonado en /opt/onever_drive) if [ -f "/opt/onever_drive/backend/requirements.txt" ]; then /opt/onever_drive/venv/pip install -r /opt/onever_drive/backend/requirements.txt fi echo "=== [5/6] Creando servicio systemd para OnEver Drive Backend ===" cat < /etc/systemd/system/onever-backend.service [Unit] Description=OnEver Drive Central API Backend After=network.target postgresql.service [Service] User=root WorkingDirectory=/opt/onever_drive/backend Environment="DATABASE_URL=postgresql+asyncpg://onever_user:OneverSecurePass2026!@127.0.0.1:5432/onever_drive" Environment="STORAGE_ROOT=/storage/backups" Environment="STORAGE_TEMP_ROOT=/storage/temp" Environment="SECRET_KEY=$(openssl rand -hex 32)" Environment="ENVIRONMENT=production" ExecStart=/opt/onever_drive/venv/bin/uvicorn app.main:app --host 0.0.0.0 --port 8000 --workers 4 Restart=always RestartSec=5 [Install] WantedBy=multi-user.target EOF systemctl daemon-reload systemctl enable onever-backend.service systemctl start onever-backend.service echo "=== [6/6] Provisionamiento completado exitosamente ===" echo "El backend de OnEver Drive está activo en http://127.0.0.1:8000"