Skip to the content.

Deployment

qhook runs as a long-running process. Choose a platform that supports persistent services (not serverless/Lambda).

Platform Comparison

  AWS ECS Kubernetes Fly.io Railway Render
Best for Production at scale K8s-native infra Simple deployment Quick prototyping Easy setup
Database RDS Postgres Any Postgres Fly Postgres Railway Postgres Render Postgres
SQLite support EFS volume PVC Fly Volume Limited Disk (Standard+)
TLS ALB (auto) Ingress controller Built-in Built-in Built-in
Multi-instance Yes (Fargate) Yes (HPA) Yes No No
Cost Pay-per-use Cluster-dependent From $0 From $0 From $0
Custom domain Route 53 / ALB Ingress fly certs Dashboard Dashboard

Guides

General Requirements

Docker

# Development (SQLite)
docker compose up

# Production (Postgres)
DATABASE_URL=postgres://user:pass@db:5432/qhook docker compose -f docker-compose.prod.yaml up

The Docker image (ghcr.io/totte-dev/qhook) exposes port 8888 and expects a config file at /data/qhook.yaml.

TLS / HTTPS

qhook does not terminate TLS itself. All deployment platforms above provide TLS termination:

For self-hosted (EC2, VPS), use a reverse proxy like Caddy (auto HTTPS) or nginx + Let’s Encrypt. See the AWS guide for an nginx example.