From 907cd4a68e09ba53152f3ae61dfb9686c7364cb3 Mon Sep 17 00:00:00 2001 From: DillusDev001 Date: Fri, 18 Sep 2026 22:51:23 -0400 Subject: [PATCH] feat: agregar docker-compose para backend y worker --- .gitignore | 6 ++ README.md | 139 +++++++++++++++++++++++++++ paqueteria-nest/.env.example | 31 ++++++ paqueteria-nest/docker-compose.yml | 40 ++++++++ paqueteria-worker/.env.example | 13 +++ paqueteria-worker/docker-compose.yml | 17 ++++ 6 files changed, 246 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100644 paqueteria-nest/.env.example create mode 100644 paqueteria-nest/docker-compose.yml create mode 100644 paqueteria-worker/.env.example create mode 100644 paqueteria-worker/docker-compose.yml diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d5a8695 --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +# Environment variables (contienen secretos) +.env + +# Docker +*.log +docker-compose.override.yml diff --git a/README.md b/README.md new file mode 100644 index 0000000..13a0d30 --- /dev/null +++ b/README.md @@ -0,0 +1,139 @@ +# Deploy Manual - Paquetería + +## Prerrequisitos + +- Docker y Docker Compose instalados +- Acceso SSH al servidor +- Git instalado en el servidor + +## Estructura en el servidor + +``` +/home/dillus/ +├── repos/ ← Código fuente (clonado de Forgejo) +│ ├── app-paqueteria-nest/ +│ │ ├── src/ +│ │ └── Dockerfile +│ ├── app-paqueteria-worker/ +│ │ ├── src/ +│ │ └── Dockerfile +│ └── docker/ ← Archivos de deploy +│ ├── paqueteria-nest/ +│ │ ├── docker-compose.yml +│ │ └── .env +│ └── paqueteria-worker/ +│ ├── docker-compose.yml +│ └── .env +│ +└── Dockge administra /home/dillus/repos/docker/ +``` + +## Paso 1: Clonar repositorios + +```bash +cd /home/dillus/repos + +# Clonar desde Forgejo +git clone http://git.alphaxdev.cc/dillus/app-paqueteria-nest.git +git clone http://git.alphaxdev.cc/dillus/app-paqueteria-worker.git +git clone http://git.alphaxdev.cc/dillus/docker.git +``` + +## Paso 2: Configurar variables de entorno + +```bash +cd /home/dillus/repos/docker/paqueteria-nest +cp .env.example .env +nano .env # Editar con valores reales + +cd /home/dillus/repos/docker/paqueteria-worker +cp .env.example .env +nano .env # Editar con valores reales +``` + +## Paso 3: Deploy con Dockge + +1. Abrir Dockge en `http://tu-servidor:5000` +2. Configurar la ruta de los stacks en Dockge Settings: + - Path: `/home/dillus/repos/docker` +3. Los stacks aparecerán automáticamente +4. Hacer clic en "Pull & Start" en cada stack + +## Paso 4: Deploy manual (sin Dockge) + +```bash +# Backend (incluye PostgreSQL) +cd /home/dillus/repos/docker/paqueteria-nest +docker compose up -d --build + +# Worker +cd /home/dillus/repos/docker/paqueteria-worker +docker compose up -d --build +``` + +## Paso 5: Verificar + +```bash +# Ver logs +docker logs paqueteria-nest -f +docker logs paqueteria-worker -f + +# Verificar que corren +docker ps | grep paqueteria +``` + +## Paso 6: Configurar Nginx Proxy Manager + +En la UI de NPM, crear proxy hosts: + +### Backend API +- Domain: `api.alphaxdev.cc` +- Forward to: `paqueteria-nest:3000` +- WebSocket: Sí +- SSL: Let's Encrypt + +### OpenWA (ya configurado) +- Domain: `whatsapp.alphaxdev.cc` +- Forward to: `whatsapp-host:2785` + +## Actualizaciones + +```bash +# Pull cambios +cd /home/dillus/repos/app-paqueteria-nest +git pull + +# Rebuild y deploy +cd /home/dillus/repos/docker/paqueteria-nest +docker compose up -d --build + +# Repetir para worker +``` + +## Troubleshooting + +```bash +# Ver logs de un servicio +docker logs paqueteria-nest -f --tail 100 + +# Entrar al contenedor +docker exec -it paqueteria-nest sh + +# Verificar conexión a DB +docker exec -it postgres-dev psql -U postgres -d paqueteria + +# Reiniciar un servicio +cd /home/dillus/repos/docker/paqueteria-nest +docker compose restart paqueteria-nest +``` + +## Archivos en git + +### Subir a git ✓ +- `Dockerfile` (en cada proyecto) +- `docker-compose.yml` +- `.env.example` +- `README.md` + +### NO subir a git ✗ +- `.env` (contiene contraseñas) diff --git a/paqueteria-nest/.env.example b/paqueteria-nest/.env.example new file mode 100644 index 0000000..1f3600a --- /dev/null +++ b/paqueteria-nest/.env.example @@ -0,0 +1,31 @@ +# Database +DB_HOST=paqueteria-db +DB_PORT=5432 +DB_USERNAME=postgres +DB_PASSWORD=postgres +DB_NAME=paqueteria + +# JWT +JWT_SECRET=tu-jwt-secret-aqui +JWT_EXPIRATION=15d + +# API Key +API_KEY=tu-api-key-aqui + +# OCR Provider (tesseract | ocrspace | google-vision | mimo) +OCR_PROVIDER=mimo + +# mimo key (si OCR_PROVIDER=mimo) +MIMO_API_KEY=tu-mimo-key-aqui + +# Worker +WORKER_KEY=tu-worker-key-aqui + +# App +PORT=3000 + +# Logo Empresa +EMPRESA_LOGO_MAX_SIZE=200 +EMPRESA_LOGO_WIDTH=400 +EMPRESA_LOGO_HEIGHT=400 +EMPRESA_LOGO_QUALITY=80 diff --git a/paqueteria-nest/docker-compose.yml b/paqueteria-nest/docker-compose.yml new file mode 100644 index 0000000..5c5c787 --- /dev/null +++ b/paqueteria-nest/docker-compose.yml @@ -0,0 +1,40 @@ +services: + paqueteria-nest: + build: + context: ${NEST_CONTEXT:-../app-paqueteria-nest} + dockerfile: Dockerfile + container_name: paqueteria-nest + restart: unless-stopped + ports: + - "3000:3000" + env_file: + - .env + volumes: + - uploads_data:/app/uploads + networks: + - paqueteria-net + depends_on: + - paqueteria-db + + paqueteria-db: + image: postgres:16-alpine + container_name: postgres-dev + restart: unless-stopped + ports: + - "5432:5432" + environment: + POSTGRES_DB: ${DB_NAME:-paqueteria} + POSTGRES_USER: ${DB_USERNAME:-postgres} + POSTGRES_PASSWORD: ${DB_PASSWORD:-postgres} + volumes: + - pg_data:/var/lib/postgresql/data + networks: + - paqueteria-net + +volumes: + pg_data: + uploads_data: + +networks: + paqueteria-net: + driver: bridge diff --git a/paqueteria-worker/.env.example b/paqueteria-worker/.env.example new file mode 100644 index 0000000..04678c8 --- /dev/null +++ b/paqueteria-worker/.env.example @@ -0,0 +1,13 @@ +# API Principal +API_URL=http://paqueteria-nest:3000/v1 + +# API KEY para conectar con el API principal +WORKER_KEY=tu-worker-key-aqui + +# OpenWA +OPENWA_URL=https://whatsapp.alphaxdev.cc +OPENWA_API_KEY=tu-openwa-api-key-aqui + +# Configuración del worker +WORKER_INTERVAL=3000 +PORT=3001 diff --git a/paqueteria-worker/docker-compose.yml b/paqueteria-worker/docker-compose.yml new file mode 100644 index 0000000..aaa5886 --- /dev/null +++ b/paqueteria-worker/docker-compose.yml @@ -0,0 +1,17 @@ +services: + paqueteria-worker: + build: + context: ${WORKER_CONTEXT:-../app-paqueteria-worker} + dockerfile: Dockerfile + container_name: paqueteria-worker + restart: unless-stopped + ports: + - "3001:3001" + env_file: + - .env + networks: + - paqueteria-net + +networks: + paqueteria-net: + driver: bridge