No description
| .idea | ||
| backend | ||
| fe-plus | ||
| postgres-init | ||
| .env | ||
| .env.example | ||
| .env.local | ||
| .gitattributes | ||
| .gitignore | ||
| backup.sh | ||
| Caddyfile | ||
| deploy-prod.sh | ||
| DEPLOY.md | ||
| deploy.sh | ||
| docker-compose.override.yml | ||
| docker-compose.prod.yml | ||
| docker-compose.yml | ||
| fix_packages.py | ||
| LEEME_PRIMERO.md | ||
| PRODUCCION.md | ||
| README.md | ||
| update-production.sh | ||
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
- Inicio Rápido
- Desarrollo Local
- Despliegue en Producción
- Comandos Útiles
- Troubleshooting
🏗️ 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:
- Frontend: http://localhost:5173
- Backend API: http://localhost:8081
- Base de datos: localhost:5433
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
- Verifica que tu dominio esté en
CORS_ALLOWED_ORIGINSen.env - Reinicia el backend:
docker compose restart backend - 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
- Nunca commitees archivos
.enval repositorio (están en.gitignore) - Crea backups antes de actualizar en producción
- Usa contraseñas seguras en producción
- El archivo
docker-compose.override.ymlse carga automáticamente en desarrollo - En producción siempre usa
-f docker-compose.yml -f docker-compose.prod.yml
🆘 Soporte
Para problemas o preguntas:
- Revisa los logs:
docker compose logs -f - Verifica el estado:
docker compose ps - Consulta la documentación en
DEPLOY.mdyPRODUCCION.md - 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