No description
Find a file
2025-12-01 01:54:58 -03:00
.idea Se prueba webhook 2025-12-01 01:52:13 -03:00
backend Se actualiza proyecto 2025-11-30 20:37:11 -03:00
fe-plus Se arreglan problemas con Typescript 2025-11-30 20:57:28 -03:00
postgres-init Se actualiza proyecto 2025-11-30 20:37:11 -03:00
.env Se inicia repositorio de plusultra98 2025-10-19 20:53:13 -03:00
.env.example Se agrega archivo deploy prod 2025-12-01 00:43:54 -03:00
.env.local Se actualiza proyecto 2025-11-30 20:37:11 -03:00
.gitattributes Agregar .gitattributes para normalizar finales de línea 2025-12-01 00:48:42 -03:00
.gitignore Se actualiza proyecto 2025-11-30 20:37:11 -03:00
backup.sh Se actualiza proyecto 2025-11-30 20:37:11 -03:00
Caddyfile Ajustes varios 2025-12-01 00:07:44 -03:00
deploy-prod.sh Se prueba webhook 2025-12-01 01:34:22 -03:00
DEPLOY.md Se actualiza proyecto 2025-11-30 20:37:11 -03:00
deploy.sh Se actualiza proyecto 2025-11-30 20:37:11 -03:00
docker-compose.override.yml Se actualiza proyecto 2025-11-30 20:37:11 -03:00
docker-compose.prod.yml Ajustes varios 2025-12-01 00:07:44 -03:00
docker-compose.yml Se actualiza proyecto 2025-11-30 20:37:11 -03:00
fix_packages.py Se reorganiza proyecto 2025-11-25 21:43:24 -03:00
LEEME_PRIMERO.md Se actualiza proyecto 2025-11-30 20:37:11 -03:00
PRODUCCION.md Se actualiza proyecto 2025-11-30 20:37:11 -03:00
README.md test webhook con SSH keys copiadas 2025-12-01 01:54:58 -03:00
update-production.sh Se actualiza proyecto 2025-11-30 20:37:11 -03:00

Plus Ultra - Sistema de Gestión

Sistema de gestión para la Logia Plus Ultra, desarrollado con Spring Boot (backend) y React + Vite (frontend).

📋 Tabla de Contenidos

🏗️ Estructura de Despliegue

El proyecto utiliza una estructura de Docker Compose modular:

plusultra/
├── docker-compose.yml          # ← Configuración BASE (compartida)
├── docker-compose.override.yml # ← DESARROLLO (auto-cargado con 'docker compose up')
├── docker-compose.prod.yml     # ← PRODUCCIÓN (cargado con flag -f)
├── .env                        # ← Variables de entorno (gitignored)
├── .env.local                  # ← Template para desarrollo
├── .env.example                # ← Template general
└── .env.production             # ← Para producción (gitignored)

Diferencias Clave: Desarrollo vs Producción

Característica Desarrollo Producción
Comando docker compose up docker compose -f docker-compose.yml -f docker-compose.prod.yml up -d
Archivos usados docker-compose.yml + docker-compose.override.yml docker-compose.yml + docker-compose.prod.yml
Backend Profile dev prod
Frontend Vite dev server (puerto 5173) Build + Nginx (puerto 3000)
Postgres Puerto 5433 (expuesto) Solo interno
Logs DEBUG WARN/INFO
Hot Reload Sí (frontend) No

🚀 Inicio Rápido

Prerrequisitos

  • Docker 20.10 o superior
  • Docker Compose v2 o superior
  • Git
  • Node.js 20 (solo para desarrollo frontend)

Verificar Docker Compose v2

# Verifica que uses docker compose (v2), NO docker-compose (v1)
docker compose version

💻 Desarrollo Local

1. Configurar Variables de Entorno

# Copiar el template de desarrollo
cp .env.local .env

# Editar si es necesario
nano .env

2. Iniciar Backend y Base de Datos

# Opción A: Usar el script automático
./deploy.sh

# Opción B: Manual
docker compose up -d

Esto levantará:

  • PostgreSQL en puerto 5433
  • Backend API en puerto 8081

3. Iniciar Frontend (Desarrollo)

# En otra terminal
cd fe-plus
npm install
npm run dev

El frontend estará en http://localhost:5173 con hot reload.

4. Verificar que todo funciona

# Ver logs del backend
docker compose logs -f backend

# Ver estado de servicios
docker compose ps

Accede a:

Detener Desarrollo

# Detener servicios Docker
docker compose down

# El frontend se detiene con Ctrl+C

🌐 Despliegue en Producción

1. En el servidor VPS

# Clonar o actualizar repositorio
git clone <url-repo>
cd plusultra

2. Configurar Variables de Entorno

# Copiar y editar el archivo .env
cp .env.example .env
nano .env

Variables críticas para producción:

# Usa contraseñas seguras
POSTGRES_PASSWORD=password_super_seguro_aqui

# Genera un JWT secret seguro
JWT_SECRET=$(openssl rand -base64 32)

# Configura R2 de Cloudflare
CLOUDFLARE_ACCESS_KEY_ID=tu_access_key
CLOUDFLARE_SECRET_ACCESS_KEY=tu_secret_key
CLOUDFLARE_R2_PUBLIC_URL=https://tu-bucket.r2.cloudflarestorage.com

# CORS para tu dominio
CORS_ALLOWED_ORIGINS=https://sitioprueba.plusultra98.cl,https://plusultra98.cl

3. Iniciar Servicios de Producción

# Opción A: Usar el script automático
./update-production.sh

# Opción B: Manual
docker compose -f docker-compose.yml -f docker-compose.prod.yml up -d --build

4. Configurar Caddy (Reverse Proxy)

# Editar configuración de Caddy
sudo nano /etc/caddy/Caddyfile

Pega el contenido del archivo Caddyfile del proyecto.

# Recargar Caddy
sudo systemctl reload caddy

5. Verificar Despliegue

# Ver logs
docker compose -f docker-compose.yml -f docker-compose.prod.yml logs -f

# Ver estado
docker compose -f docker-compose.yml -f docker-compose.prod.yml ps

Accede a: https://sitioprueba.plusultra98.cl

📊 Comandos Útiles

Desarrollo

# Levantar servicios
docker compose up -d

# Ver logs en tiempo real
docker compose logs -f

# Ver logs solo del backend
docker compose logs -f backend

# Reiniciar un servicio
docker compose restart backend

# Detener todo
docker compose down

# Reconstruir imágenes
docker compose build --no-cache
docker compose up -d

# Ver estado de servicios
docker compose ps

# Acceder a la base de datos
docker exec -it postgres-db psql -U plusultranoventayocho -d usuarios_db

Producción

# Todos los comandos de producción usan:
docker compose -f docker-compose.yml -f docker-compose.prod.yml [comando]

# Ejemplos:
docker compose -f docker-compose.yml -f docker-compose.prod.yml up -d
docker compose -f docker-compose.yml -f docker-compose.prod.yml logs -f
docker compose -f docker-compose.yml -f docker-compose.prod.yml restart backend
docker compose -f docker-compose.yml -f docker-compose.prod.yml down
docker compose -f docker-compose.yml -f docker-compose.prod.yml ps

# Alias recomendado (agregar a ~/.bashrc):
alias dc-prod='docker compose -f docker-compose.yml -f docker-compose.prod.yml'

# Luego puedes usar:
dc-prod up -d
dc-prod logs -f

Backups

# Crear backup
./backup.sh

# Ver backups existentes
ls -lh backups/

# Restaurar backup
docker exec -i postgres-db psql -U plusultranoventayocho usuarios_db < backups/backup_YYYYMMDD_HHMMSS.sql

🔧 Troubleshooting

Backend no se conecta a la base de datos

# Verificar que postgres esté healthy
docker compose ps postgres-db

# Ver logs de postgres
docker compose logs postgres-db

# Reiniciar postgres
docker compose restart postgres-db

Frontend no carga (Producción)

# Ver logs del contenedor frontend
docker compose -f docker-compose.yml -f docker-compose.prod.yml logs frontend

# Verificar que nginx esté corriendo
docker compose -f docker-compose.yml -f docker-compose.prod.yml exec frontend nginx -t

# Reiniciar frontend
docker compose -f docker-compose.yml -f docker-compose.prod.yml restart frontend

Error de CORS

  1. Verifica que tu dominio esté en CORS_ALLOWED_ORIGINS en .env
  2. Reinicia el backend: docker compose restart backend
  3. Verifica en backend/src/main/java/cl/plusultra/backend/shared/config/SecurityConfig.java:66

Permisos de archivos

# Dar permisos de ejecución a scripts
chmod +x deploy.sh
chmod +x update-production.sh
chmod +x backup.sh

Ver uso de recursos

# Ver CPU y memoria de contenedores
docker stats

# Ver espacio en disco
df -h

# Limpiar recursos no usados
docker system prune -f

📝 Notas Importantes

  1. Nunca commitees archivos .env al repositorio (están en .gitignore)
  2. Crea backups antes de actualizar en producción
  3. Usa contraseñas seguras en producción
  4. El archivo docker-compose.override.yml se carga automáticamente en desarrollo
  5. En producción siempre usa -f docker-compose.yml -f docker-compose.prod.yml

🆘 Soporte

Para problemas o preguntas:

  1. Revisa los logs: docker compose logs -f
  2. Verifica el estado: docker compose ps
  3. Consulta la documentación en DEPLOY.md y PRODUCCION.md
  4. Contacta al equipo de desarrollo

Se ha agregado un script de deploy para produccion que ayuda a automatizar el proceso de despliegue. Ahora no deberia fallar Desarrollado para Logia Plus Ultra 98 // Test con SSH keys de root