ci: Coolify deployment config — docker-compose, env example, docs, dockerignore
This commit is contained in:
+87
-129
@@ -1,132 +1,90 @@
|
||||
# ══════════════════════════════════════════════════════════════
|
||||
# Moraworld Imports — Variables de entorno
|
||||
# Sincronizado con documentacion.html v1.1
|
||||
# ══════════════════════════════════════════════════════════════
|
||||
# ═══════════════════════════════════════════════════════════════
|
||||
# Moraworld Imports — Variables de entorno para Coolify (producción)
|
||||
# ═══════════════════════════════════════════════════════════════
|
||||
# Copia este archivo a .env en Coolify → Project → Environment Variables
|
||||
# ═══════════════════════════════════════════════════════════════
|
||||
|
||||
# ─── Base de datos ───────────────────────────────────────────
|
||||
# Opción A — Coolify (PostgreSQL gestionado):
|
||||
# DATABASE_URL="postgresql://USER:PASSWORD@HOST:5432/NOMBRE_BD?schema=moraworld"
|
||||
# ─── Base ──────────────────────────────────────────────────────
|
||||
NODE_ENV=production
|
||||
NEXT_PUBLIC_API_URL=https://api.tu-dominio.com
|
||||
NEXT_PUBLIC_WS_URL=https://api.tu-dominio.com
|
||||
|
||||
# ─── Base de datos (Coolify managed PostgreSQL) ────────────────
|
||||
# Coolify inyecta DATABASE_URL automáticamente si creas un servicio Postgres
|
||||
# y lo enlazas al proyecto. Formato:
|
||||
# postgresql://usuario:password@host:puerto/database?schema=imports
|
||||
DATABASE_URL=postgresql://moraworld:supersecret@postgres:5432/moraworld?schema=imports
|
||||
|
||||
# ─── Redis (Coolify managed Redis) ────────────────────────────
|
||||
# Coolify inyecta REDIS_URL automáticamente.
|
||||
# redis://:password@host:puerto/db
|
||||
REDIS_URL=redis://:supersecret@redis:6379/2
|
||||
|
||||
# ─── Auth / JWT ───────────────────────────────────────────────
|
||||
# Genera con: openssl rand -base64 48
|
||||
JWT_SECRET=tu-jwt-secret-base64-de-48-caracteres-minimo
|
||||
JWT_REFRESH_SECRET=tu-refresh-secret-base64-distinto-del-de-arriba
|
||||
AUDIT_HMAC_SECRET=tu-hmac-secret-para-auditoria-32-chars-min
|
||||
|
||||
# ─── CORS ──────────────────────────────────────────────────────
|
||||
# URLs permitidas (separadas por coma, sin espacios al final)
|
||||
CORS_ORIGINS=https://app.tu-dominio.com,https://www.tu-dominio.com
|
||||
|
||||
# ─── Almacenamiento S3 / MinIO (opcional — para fotos/facturas) ────
|
||||
# Si no configuras S3_ENDPOINT, usa disco local (./uploads)
|
||||
S3_ENDPOINT=https://s3.tu-proveedor.com
|
||||
S3_ACCESS_KEY=minioadmin
|
||||
S3_SECRET_KEY=minioadmin
|
||||
S3_BUCKET=moraworld-imports
|
||||
S3_REGION=us-east-1
|
||||
S3_PUBLIC_URL=https://cdn.tu-dominio.com
|
||||
|
||||
# ─── Stripe (pagos — Checkout Session) ────────────────────────
|
||||
STRIPE_WEBHOOK_SECRET=whsec_... # De Stripe Dashboard → Webhooks
|
||||
|
||||
# ─── Integraciones (claves se guardan en BD vía Admin → Integraciones) ──
|
||||
# Estas NO van en .env; se configuran en la UI tras el primer deploy.
|
||||
# Zeptomail, SENAE, Amazon SP-API, Twilio, WhatsApp Business, INEN, Couriers, etc.
|
||||
|
||||
# ─── Opcional: Worker / Cron ──────────────────────────────────
|
||||
# ENABLE_WORKER=true
|
||||
# CRON_SENAE_POLL=0 */30 * * * *
|
||||
|
||||
# ═══════════════════════════════════════════════════════════════
|
||||
# NOTAS DE DESPLIEGUE EN COOLIFY
|
||||
# ═══════════════════════════════════════════════════════════════
|
||||
#
|
||||
# Opción B — Local con docker compose:
|
||||
DATABASE_URL="postgresql://moraworld:moraworld_dev@localhost:5432/moraworld?schema=public"
|
||||
|
||||
# ─── Redis (colas de notificaciones, sesiones) ───────────────
|
||||
# Opción A — Coolify:
|
||||
# REDIS_URL="redis://:PASSWORD@HOST:6379"
|
||||
# REDIS_URL="rediss://:PASSWORD@HOST:6380" # si TLS
|
||||
# 1. Crea un Project en Coolify → "New Resource" → "Docker Compose"
|
||||
# Apunta a este repo, archivo: coolify-compose.yml
|
||||
#
|
||||
# Opción B — Local:
|
||||
REDIS_URL="redis://localhost:6379"
|
||||
|
||||
# ─── API (NestJS) ────────────────────────────────────────────
|
||||
API_PORT=3001
|
||||
API_URL="http://localhost:3001"
|
||||
|
||||
# JWT — Autenticación OAuth 2.0 + JWT + MFA (doc §05)
|
||||
JWT_SECRET="change-me-in-production-min-32-chars-long-abc123"
|
||||
JWT_EXPIRES_IN="15m"
|
||||
JWT_REFRESH_EXPIRES_IN="7d"
|
||||
|
||||
# ─── Web (Next.js) ───────────────────────────────────────────
|
||||
WEB_PORT=3000
|
||||
NEXT_PUBLIC_API_URL="http://localhost:3001"
|
||||
|
||||
# ─── CORS (coma separada; en Coolify usar dominio real) ──────
|
||||
CORS_ORIGINS="http://localhost:3000"
|
||||
|
||||
# ─── Moraworld — Bodega NJ (doc §02) ─────────────────────────
|
||||
# Dirección: 150 N Day St, City of Orange, NJ 07050, EE.UU.
|
||||
WAREHOUSE_ADDRESS_STREET="150 N Day St"
|
||||
WAREHOUSE_ADDRESS_CITY="City of Orange"
|
||||
WAREHOUSE_ADDRESS_STATE="NJ"
|
||||
WAREHOUSE_ADDRESS_ZIP="07050"
|
||||
WAREHOUSE_ADDRESS_COUNTRY="US"
|
||||
|
||||
# ─── Amazon SP-API (doc §14 — registro por enlace) ───────────
|
||||
# https://developer-docs.amazon.com/sp-api/docs
|
||||
AMAZON_SP_CLIENT_ID=""
|
||||
AMAZON_SP_CLIENT_SECRET=""
|
||||
AMAZON_SP_REFRESH_TOKEN=""
|
||||
AMAZON_SP_MARKETPLACE_ID="ATVPDKIKX0DER" # US marketplace
|
||||
|
||||
# ─── WebService SENAE (doc §11 — declaración aduanera) ───────
|
||||
# SOAP / REST — Portal electrónico aduana Ecuador
|
||||
SENAE_ENDPOINT="https://declaraciones.aduana.gob.ec/wsDeclaraciones"
|
||||
SENAE_USERNAME=""
|
||||
SENAE_PASSWORD=""
|
||||
SENAE_CERT_PATH="" # Certificado digital PEM
|
||||
SENAE_CERT_PASSPHRASE=""
|
||||
|
||||
# ─── Pasarela de pagos (doc §09 paso 8 / §18) ────────────────
|
||||
# Stripe (internacional)
|
||||
STRIPE_SECRET_KEY=""
|
||||
STRIPE_WEBHOOK_SECRET=""
|
||||
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=""
|
||||
|
||||
# PayPhone (Ecuador)
|
||||
PAYPHONE_APP_ID=""
|
||||
PAYPHONE_TOKEN=""
|
||||
PAYPHONE_STORE_ID=""
|
||||
|
||||
# ─── WhatsApp Business API (doc §16 / §18) ───────────────────
|
||||
# Notificaciones automáticas + botón flotante de contacto
|
||||
WHATSAPP_API_URL="https://graph.facebook.com/v19.0"
|
||||
WHATSAPP_PHONE_NUMBER_ID=""
|
||||
WHATSAPP_ACCESS_TOKEN=""
|
||||
# Número NJ (operaciones) y Cuenca (aduana) — doc §21
|
||||
WHATSAPP_NJ_NUMBER="+15550000001"
|
||||
WHATSAPP_CUENCA_NUMBER="+5939900000001"
|
||||
|
||||
# ─── Email (doc §16) ─────────────────────────────────────────
|
||||
# SendGrid
|
||||
SENDGRID_API_KEY=""
|
||||
EMAIL_FROM="noreply@moraworldimports.com"
|
||||
|
||||
# AWS SES (alternativa)
|
||||
# AWS_SES_REGION="us-east-1"
|
||||
# AWS_SES_ACCESS_KEY=""
|
||||
# AWS_SES_SECRET_KEY=""
|
||||
|
||||
# ─── SMS Gateway (doc §16) ───────────────────────────────────
|
||||
SMS_PROVIDER="twilio" # twilio | vonage
|
||||
TWILIO_ACCOUNT_SID=""
|
||||
TWILIO_AUTH_TOKEN=""
|
||||
TWILIO_PHONE_NUMBER=""
|
||||
|
||||
# ─── Couriers internacionales (doc §18) ──────────────────────
|
||||
# FedEx
|
||||
FEDEX_CLIENT_ID=""
|
||||
FEDEX_CLIENT_SECRET=""
|
||||
FEDEX_ACCOUNT_NUMBER=""
|
||||
|
||||
# DHL
|
||||
DHL_API_KEY=""
|
||||
DHL_API_SECRET=""
|
||||
|
||||
# UPS
|
||||
UPS_CLIENT_ID=""
|
||||
UPS_CLIENT_SECRET=""
|
||||
|
||||
# ─── S3 / Almacenamiento de archivos (doc §05) ───────────────
|
||||
# Fotos de paquetes, facturas, documentos SENAE
|
||||
# AWS S3
|
||||
S3_BUCKET="moraworld-files"
|
||||
S3_REGION="us-east-1"
|
||||
S3_ACCESS_KEY=""
|
||||
S3_SECRET_KEY=""
|
||||
|
||||
# MinIO local (docker-compose — desarrollo):
|
||||
# S3_ENDPOINT="http://localhost:9000"
|
||||
# S3_BUCKET="moraworld"
|
||||
# S3_ACCESS_KEY="minioadmin"
|
||||
# S3_SECRET_KEY="minioadmin"
|
||||
# S3_REGION="us-east-1"
|
||||
# S3_FORCE_PATH_STYLE="true"
|
||||
|
||||
# ─── SIEM / Monitoreo (doc §05 ISO A.12) ─────────────────────
|
||||
# Datadog / New Relic / Sentry
|
||||
SENTRY_DSN=""
|
||||
# DATADOG_API_KEY=""
|
||||
|
||||
# ─── Entorno ─────────────────────────────────────────────────
|
||||
NODE_ENV="development" # development | staging | production
|
||||
# 2. Añade servicios gestionados:
|
||||
# - PostgreSQL 16 (nombre lógico: postgres)
|
||||
# - Redis 7 (nombre lógico: redis)
|
||||
# Coolify inyectará DATABASE_URL y REDIS_URL automáticamente.
|
||||
#
|
||||
# 3. En "Environment Variables" del proyecto, pega el contenido
|
||||
# de este archivo (ajusta valores reales).
|
||||
#
|
||||
# 4. Dominios (Coolify → Project → Domains):
|
||||
# - api.tu-dominio.com → servicio: api, puerto: 3001
|
||||
# - app.tu-dominio.com → servicio: web, puerto: 3000
|
||||
# - ws.tu-dominio.com → servicio: api, puerto: 3001 (WebSocket)
|
||||
# Coolify genera certificados TLS automáticos (Let's Encrypt).
|
||||
#
|
||||
# 5. WebSocket: el gateway corre en /ws bajo el mismo puerto 3001.
|
||||
# Configura el dominio ws.tu-dominio.com apuntando al servicio api.
|
||||
#
|
||||
# 6. Health checks:
|
||||
# - API: GET /api/health
|
||||
# - Web: GET /status
|
||||
#
|
||||
# 7. Primer deploy → entra a https://app.tu-dominio.com/admin/configuracion
|
||||
# y guarda las claves de integración (Zeptomail, SENAE, Stripe, etc.).
|
||||
#
|
||||
# 8. Stripe Webhook URL en Dashboard:
|
||||
# https://api.tu-dominio.com/api/payments/webhook?tenant=mi-tenant-slug
|
||||
#
|
||||
# 9. Para actualizar: push a main → Coolify auto-deploy (si configurado)
|
||||
# o "Deploy" manual en la UI.
|
||||
#
|
||||
# ═══════════════════════════════════════════════════════════════
|
||||
|
||||
Reference in New Issue
Block a user