HelloJohn / docs
Self-Hosting

Self-Hosting HelloJohn

Run HelloJohn on your own infrastructure with full control over data, configuration, and scaling.

Self-Hosting HelloJohn

HelloJohn OSS can be deployed on any infrastructure you control — a single VPS, a Kubernetes cluster, or a managed container platform. You own your data, your keys, and your configuration.

What you need

ComponentMinimumRecommended
CPU1 vCPU2+ vCPU
RAM512 MB1 GB+
PostgreSQL14+15+ (managed, e.g. RDS, Supabase, Neon)
RedisOptional6+ (for rate limiting + sessions)
Reverse proxyAnynginx or Caddy

HelloJohn is a single Go binary with no runtime dependencies beyond PostgreSQL. Redis is optional but recommended for high-traffic deployments.

Deployment options

Docker Compose (quickest)

The fastest way to get HelloJohn running locally or on a single server:

curl -fsSL https://hellojohn.dev/install/docker-compose.yml -o docker-compose.yml
docker compose up -d

See the Docker guide for the full reference.

Binary

Download and run the pre-built binary directly:

# Linux amd64
curl -fsSL https://github.com/hellojohn/hellojohn/releases/latest/download/hellojohn-linux-amd64.tar.gz | tar xz
./hellojohn serve

Binaries are available for Linux (amd64, arm64), macOS (arm64), and Windows.

Kubernetes / Helm

A community Helm chart is available:

helm repo add hellojohn https://charts.hellojohn.dev
helm install hellojohn hellojohn/hellojohn \
  --set config.databaseUrl=postgres://...

Railway / Render / Fly.io

HelloJohn ships a Dockerfile and runs as a standard 12-factor app. Any platform that supports Docker containers works out of the box.

Architecture overview

                ┌──────────────────────────────────┐
                │           Your App               │
                │  (frontend + backend services)   │
                └─────────────────┬────────────────┘
                                  │ HTTPS
                ┌─────────────────▼────────────────┐
                │         Reverse Proxy            │
                │       (nginx / Caddy)            │
                └──────────┬───────────────────────┘

              ┌────────────▼────────────┐
              │      HelloJohn          │
              │   (single binary)       │
              │   :3000 (API)           │
              └──────┬──────────────────┘

         ┌───────────┼───────────────┐
         │           │               │
    ┌────▼───┐  ┌────▼───┐  ┌───────▼───┐
    │ Postgres│  │ Redis  │  │  Storage  │
    │  (DB)  │  │(cache) │  │  (S3/R2)  │
    └────────┘  └────────┘  └───────────┘

Quick health check

Once running, verify HelloJohn is alive:

curl https://auth.yourdomain.com/health
# {"status":"ok","version":"1.2.3","db":"connected"}

Next steps

On this page