Ir al contenido
Q
QuoteNode

Installation

Instalar con Coolify

Despliega QuoteNode con Coolify usando el build pack de Docker Compose y el archivo compose dedicado para Coolify.

Instalar con Coolify

Coolify es la ruta de despliegue pública recomendada en beta cuando necesitas HTTPS gestionado, despliegues basados en Git, health checks de contenedores y una interfaz web para variables de entorno.

Configuración del repositorio

Crea una aplicación desde el repositorio de QuoteNode y usa estos ajustes:

AjusteValor
Build PackDocker Compose
Base Directory/
Docker Compose Location/infra/docker-compose.coolify.yml
Public domainconfigurar solo en frontend, por ejemplo https://crm2.prodata.cc
Backend domaindejar vacío a menos que sepas por qué debe ser público
Backup worker domaindejar vacío
Gotenberg domaindejar vacío

El proxy de Coolify debe enrutar el dominio al servicio frontend. El backend, backup worker, PostgreSQL y Gotenberg permanecen internos. No asignes dominios públicos a backend, backup-worker, postgres ni gotenberg; exponer esos servicios directamente aumenta la superficie de ataque y puede saltarse el límite previsto de frontend/proxy.

Comandos de build y start

Para despliegues normales de Coolify, deja los comandos personalizados vacíos a menos que tu instalación de Coolify los requiera. Si Coolify muestra comandos generados, pueden parecerse a:

docker compose build
docker compose up -d

No dependas de los ajustes Nixpacks Node para el runtime de QuoteNode en este modo. Los Dockerfiles y el archivo Compose definen el runtime.

Opciones avanzadas

Valores recomendados por defecto:

Opción de CoolifyRecomendación
Inject Build Args to Dockerfilehabilitado
Auto Deployhabilitado para staging, opcional para producción
Git Submodulessolo si tu checkout los necesita
LFSsolo si el repo usa assets de Git LFS
Shallow Cloneaceptable
Proxy Force HTTPShabilitado
Enable Gzip Compressionhabilitado
Strip Prefixesdejar por defecto a menos que se despliegue bajo un prefijo de ruta

Revisa las Watch Paths antes de usarlas. Una ruta como services/api/** es obsoleta para este layout de repositorio; el código del backend vive bajo backend/** y el del frontend bajo frontend/**.

Variables de entorno requeridas

Configura estas en la interfaz de entorno de Coolify:

DB_NAME=quotenode
DB_USERNAME=quotenode
DB_PASSWORD=<random-32+-characters>
DB_URL=jdbc:postgresql://postgres:5432/quotenode
DB_ENCRYPTION_KEY=<64-hex-characters>
TIMING_TOKEN_SECRET=<random-32+-characters>
PUBLIC_LINK_PASSWORD_SESSION_SECRET=<random-32+-characters>
CORS_ALLOWED_ORIGINS=https://<frontend-domain>
NOTIFICATIONS_PUBLIC_PREFERENCES_URL=https://<frontend-domain>/notifications/preferences
PDF_ENABLED=true
NOTIFICATIONS_ENABLED=true
NOTIFICATIONS_EMAIL_ENABLED=false
FEATURE_2FA_ENABLED=true
BACKUP_ENABLED=false
BACKUP_CRON=0 0 2 * * *
SECURITY_BOT_DETECTION_ENABLED=true
# La IP del cliente se detecta automáticamente tras proxies internos y CDNs (incluido Cloudflare) — déjalo vacío.
# Defínelo solo para un proxy inusual cuyo par de transporte sea una dirección PÚBLICA a confiar (IP/CIDR o nombre de host).
SECURITY_TRUSTED_PROXIES=
GEOIP_ENABLED=false
LOG_LEVEL=INFO
VITE_RELEASE_CHECK_ENABLED=true
VITE_RELEASE_MANIFEST_URL=https://quotenode.dev/releases/latest.json

Si la entrega de correo está habilitada, configura también:

NOTIFICATIONS_EMAIL_ENABLED=true
SMTP_HOST=smtp.example.com
SMTP_PORT=587
SMTP_USERNAME[email protected]
SMTP_PASSWORD=<smtp-password>
SMTP_AUTH=true
SMTP_STARTTLS=true

BACKUP_CRON usa el formato cron de seis campos de Spring, así que 0 0 2 * * * significa a las 02:00 todos los días.

Algunas plantillas de operador también incluyen SERVICE_URL_FRONTEND=https://<frontend-domain>. Mantenlo alineado con el dominio del frontend si tu proceso de despliegue lo usa. El archivo compose actual de Coolify no consume esta variable directamente; el acceso del navegador se controla mediante CORS_ALLOWED_ORIGINS, y los enlaces de preferencias de notificación usan NOTIFICATIONS_PUBLIC_PREFERENCES_URL.

Metadatos de release

Los despliegues desde fuente de Coolify pueden dejar APP_VERSION vacío a menos que se esté construyendo un tag de release. Configura los metadatos cuando tu CI o pipeline de Coolify pueda proporcionarlos:

# APP_VERSION puede omitirse para despliegues desde fuente hasta que se construya un tag de release.
APP_CHANNEL=beta
APP_COMMIT_SHA=<commit-sha>
APP_BUILD_TIME=<iso-time>
APP_BUILD_NUMBER=<build-number>
APP_SOURCE_REF=<branch-or-tag>
APP_IMAGE_TAG=<image-tag>

Usa APP_CHANNEL=alpha, beta, rc, dev o stable según el release que despliegues.

Seguridad de licencias

Para despliegues beta y públicos reales:

LICENSE_SKIP_SIGNATURE_CHECK=false

Configúralo explícitamente a false para despliegues beta reales. El archivo compose también usa false por defecto cuando la variable se omite, pero los operadores en producción no deben depender de la ambigüedad. Configurarlo a true deshabilita la verificación de autenticidad de la licencia y puede violar los términos de licencia; úsalo solo en entornos de desarrollo locales desechables.

Comprobaciones post-despliegue

Después de que el despliegue esté saludable en Coolify:

  1. Abre https://<frontend-domain>/health.
  2. Abre el dominio del frontend en un navegador.
  3. Inicia sesión con el administrador predefinido solo para el primer arranque, luego cambia la contraseña.
  4. Crea una oferta.
  5. Genera un PDF.
  6. Crea y abre un enlace público.
  7. Si el correo está habilitado, verifica SMTP y los enlaces de preferencias de notificación.
  8. Comprueba el área de licencia/versión del administrador para ver la versión actual y el estado de aviso de release.

Problemas comunes de Coolify

  • Los enlaces públicos fallan cuando CORS_ALLOWED_ORIGINS no coincide exactamente con el origen del navegador.
  • Los enlaces de preferencias de notificación fallan cuando NOTIFICATIONS_PUBLIC_PREFERENCES_URL sigue apuntando a localhost o a un dominio antiguo.
  • Gotenberg no debe recibir un dominio público; es un servicio interno de PDF.
  • El HTTPS gestionado por Coolify requiere que el dominio del frontend resuelva al servidor de Coolify.
  • Si los metadatos de build están vacíos, la aplicación puede seguir funcionando, pero la pantalla de versión del administrador puede mostrar menos detalle del release.

Last reviewed: Recently