diff --git a/README.md b/README.md index 47d0e18..3c1f3c6 100644 --- a/README.md +++ b/README.md @@ -106,12 +106,74 @@ El menú desplegable **Gestión** en la barra de navegación organiza las áreas ## 🚀 Instalación y Puesta en Marcha -### Prerrequisitos +### ⚡ Opción A — Deploy Automático en Debian 12 LXC (Recomendado) + +El repositorio incluye un instalador interactivo (`install.sh`) que configura todo el entorno de producción automáticamente: dependencias del sistema, PostgreSQL, entorno virtual Python, inicialización de base de datos y servicio systemd con Gunicorn. + +#### Prerrequisitos +* Contenedor LXC o servidor con **Debian 12 (Bookworm)** +* Acceso **root** (o `sudo`) +* Conexión a Internet + +#### Pasos + +```bash +# 1. Clonar el repositorio +git clone https://gitea.oemspot.com.ar/carlostellocba/admin-edu-space.git +cd admin-edu-space + +# 2. Dar permisos de ejecución al instalador +chmod +x install.sh + +# 3. Ejecutar el instalador como root +sudo bash install.sh +``` + +Durante la ejecución el instalador solicitará únicamente la **contraseña para el usuario de base de datos** (si se deja vacío usa `eduspace2024` por defecto). + +#### Qué instala y configura automáticamente + +| Paso | Acción | +| :--- | :--- | +| 1 | Configura locale `en_US.UTF-8` en el sistema (previene errores de encoding) | +| 2 | Instala Python 3, venv, pip, build-tools, libpq-dev y PostgreSQL | +| 3 | Inicia y habilita el servicio PostgreSQL para el arranque automático | +| 4 | Genera `SECRET_KEY` aleatoria y crea el archivo `.env` de producción | +| 5 | Crea el usuario `eduspace_user` y la base de datos `classrooms_db` en PostgreSQL | +| 6 | Crea el virtualenv e instala todas las dependencias + Gunicorn | +| 7 | Ejecuta `init_db.py` (tablas, roles RBAC, edificios y usuario admin inicial) | +| 8 | Crea el usuario del sistema `eduspace` (sin shell, por seguridad) | +| 9 | Registra y arranca el servicio systemd `admin-edu-space` en el puerto **5000** | +| 10 | Muestra resumen con URL, credenciales y comandos de gestión | + +#### Comandos de gestión post-instalación + +```bash +# Ver estado del servicio +systemctl status admin-edu-space + +# Ver logs en tiempo real +journalctl -u admin-edu-space -f + +# Reiniciar la aplicación +systemctl restart admin-edu-space + +# Detener la aplicación +systemctl stop admin-edu-space +``` + +> **Nota:** Si el archivo `.env` ya existe en el directorio (por ejemplo, copiado manualmente antes de correr el instalador), el script lo conserva sin sobrescribirlo. + +--- + +### 🖥️ Opción B — Instalación Manual (Desarrollo Local) + +#### Prerrequisitos 1. **Python 3.10 o superior** 2. **PostgreSQL** en ejecución con una base de datos creada (ej. `classrooms_db`). 3. **Git** -### Pasos de Configuración +#### Pasos de Configuración 1. **Clonar el repositorio:** ```bash @@ -137,7 +199,10 @@ El menú desplegable **Gestión** en la barra de navegación organiza las áreas ``` 4. **Configurar variables de entorno (`.env`):** - Crear o editar el archivo `.env` en la raíz del proyecto: + Copiar la plantilla y editar con los valores de tu entorno: + ```bash + cp .env.example .env + ``` ```env SECRET_KEY=clave-secreta-de-produccion-cambiar-en-despliegue DATABASE_URL=postgresql://postgres:postgres@localhost:5432/classrooms_db @@ -170,6 +235,8 @@ El menú desplegable **Gestión** en la barra de navegación organiza las áreas | :--- | :--- | :--- | :--- | | **Administrador del Sistema** | `admin@edu-space.com` | `admin123` | `Admin` (Acceso Total) | +> ⚠️ **Importante:** Cambiá la contraseña del administrador inmediatamente después del primer acceso. + --- ## 📁 Estructura del Proyecto @@ -233,6 +300,7 @@ admin-edu-space/ │ └── decorators.py # Decoradores RBAC (@permission_required, can_manage, etc.) ├── config/ # Configuraciones de entorno (desarrollo, testing, prod) ├── translations/ # Catálogos GNU gettext compilados (es / en) +├── install.sh # Instalador automático para Debian 12 LXC ├── init_db.py # Inicializador DDL y semillero de datos ├── CHANGELOG_SESSION.md # Historial técnico cronológico ├── requirements.txt # Dependencias Python