Files

65 lines
2.5 KiB
Bash

#!/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 <<EOF > /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"