Skip to content
Q
QuoteNode

Wiki

Deployment Options

How to deploy QuoteNode — Docker Compose, Coolify, and production topology.

Deployment Options

QuoteNode supports multiple deployment models, all based on Docker containers. Choose the approach that fits your infrastructure.

Docker Compose (Standard)

The standard deployment uses a single docker-compose.yml file that starts all services:

docker compose up -d

Production topology

Internet


Caddy (port 80/443, automatic HTTPS)
  ├── /api/*     → Backend (Java 25, port 8080)
  ├── /offer/*   → Backend (public offer pages)
  └── /*         → Frontend (Vue 3, static assets)

Backend → PostgreSQL (port 5432)
Backend → Gotenberg (port 3000, PDF generation)

backup-worker → PostgreSQL (scheduled backups)

Services

ContainerImagePurpose
frontendVue 3 + CaddyServes the SPA and proxies API requests
backendJava 25 / Spring BootREST API, business logic, PDF generation
postgresPostgreSQL 16 AlpineDatabase
gotenbergGotenberg 8HTML-to-PDF conversion (Chromium-based)
backup-workerSame as backendScheduled database and file backups

Persistent volumes

VolumeContents
postgres_prod_dataDatabase files
backend_prod_uploadsProduct images, company logos
backend_prod_pdfsGenerated PDF documents
backend_prod_backupsBackup archives
backend_prod_geoipMaxMind GeoIP database (optional)

Coolify Deployment

Coolify is an open-source, self-hostable PaaS (Platform as a Service) — an alternative to Heroku, Vercel, or Railway that runs on your own server.

QuoteNode provides a dedicated docker-compose.coolify.yml configuration optimized for Coolify deployments.

Key differences from standard Docker Compose

  • Coolify manages TLS — its own Caddy proxy handles HTTPS certificates and domain routing. The application containers do not include a separate TLS layer.
  • Environment variables via Coolify UI — instead of .env files, all configuration is set through Coolify’s web interface.
  • Health checks — Coolify monitors container health and can auto-restart failed services.
  • Two deployment modes:

Mode A — Build from source

Coolify clones the repository and builds Docker images on deploy:

  • Slower deploys (build step on every deploy)
  • No CI/CD pipeline required
  • Good for getting started quickly

Mode B — Pre-built images

GitHub Actions builds and pushes images to GitHub Container Registry (GHCR), and Coolify pulls the latest image:

  • Fast deploys (just pull + restart)
  • Requires CI/CD workflow setup
  • Recommended for production

Required Coolify configuration

  • Resource type: Dockerfile or Docker Image
  • Internal port: 8080 (Coolify routes external traffic to this port)
  • Health check path: /health
  • Domain: configured at Coolify level (not in the application)
  • HTTPS: enforced by Coolify automatically

Environment Variables Reference

Required (all deployments)

VariableDescription
DB_USERNAMEPostgreSQL username
DB_PASSWORDPostgreSQL password
DB_ENCRYPTION_KEYAES-256 key for sensitive field encryption (64 hex chars = 32 bytes; generate: openssl rand -hex 32)
TIMING_TOKEN_SECRETSecret for timing-based bot detection tokens
PUBLIC_LINK_PASSWORD_SESSION_SECRETSession secret for password-protected public links
CORS_ALLOWED_ORIGINSAllowed origins for CORS (your domain)
VariableDescription
SMTP_HOSTSMTP server hostname
SMTP_PORTSMTP port (typically 587)
SMTP_USERNAMESMTP auth username
SMTP_PASSWORDSMTP auth password
SMTP_AUTHEnable SMTP authentication (default: true)
SMTP_STARTTLSEnable STARTTLS (default: true)

Backup (optional)

VariableDescription
BACKUP_ENABLEDEnable scheduled backups (default: false)
BACKUP_CRONCron expression (default: 0 0 2 * * * — 2 AM daily)
BACKUP_RCLONE_REMOTErclone remote for offsite backup storage
BACKUP_GPG_RECIPIENTGPG key ID for backup encryption

Security (optional)

VariableDescription
FEATURE_2FA_ENABLEDEnable two-factor authentication (default: true)
SECURITY_BOT_DETECTION_ENABLEDEnable timing-based bot detection (default: true)
GEOIP_ENABLEDEnable GeoIP access control (default: false)

Features

VariableDescription
PDF_ENABLEDEnable PDF generation (default: true)
NOTIFICATIONS_ENABLEDEnable notification system (default: true)
NOTIFICATIONS_EMAIL_ENABLEDEnable email notifications (default: false)
LOG_LEVELApplication log level (default: ERROR)

Minimum Server Requirements

DeploymentRAMCPUDisk
Evaluation / solo use2 GB1 core10 GB SSD
Small team (5-10 users)4 GB2 cores20 GB SSD
Mid-size team (10-50 users)8 GB4 cores50 GB SSD

These are conservative estimates. Actual resource usage depends on catalog size, offer volume, and PDF generation frequency.

Last reviewed: Recently