Janus
Getting Started

Docker Deployment

Production deployment with Docker Compose.

The production Docker Compose stack runs 5 containers with health checks, persistent volumes, and Nginx for TLS termination and rate limiting.

One-click alternatives

Don't want to manage Docker yourself? Deploy with Render, Coolify, or AWS.

Containers

ContainerImagePortPurpose
nginxnginx:1.27-alpine80, 443Reverse proxy, TLS, rate limiting, security headers
janus-apiDockerfile.api3001 (internal)Backend API
janus-dashboardDockerfile.dashboard3000 (internal)Admin UI
postgrespostgres:16-alpine5432 (internal)Primary database
redisredis:7-alpine6379 (internal)Rate limiting, caching, metrics

Environment Variables

VariableRequiredDefaultDescription
DB_PASSWORDYes—PostgreSQL password
HMAC_SECRETYes—HMAC key for challenge binding
TOKEN_SECRETYes—Token signing key
COOKIE_SECRETYes—Session cookie encryption
BETTER_AUTH_SECRETYes—Auth session crypto
CORS_ORIGINYes—Dashboard origin URL
REDIS_PASSWORDYes—Redis auth password
DATA_RETENTION_DAYSNo30Auto-delete age for verifications
GEOIP_DB_PATHNodata/geoipPath to MaxMind .mmdb files
SMTP_HOSTNo—SMTP server for email alerts
SMTP_PORTNo587SMTP port
SMTP_USERNo—SMTP username
SMTP_PASSNo—SMTP password
SMTP_FROMNo—Alert sender address
ALERT_EMAILNo—Alert recipient address