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_PASSWORDYesPostgreSQL password
HMAC_SECRETYesHMAC key for challenge binding
TOKEN_SECRETYesToken signing key
COOKIE_SECRETYesSession cookie encryption
BETTER_AUTH_SECRETYesAuth session crypto
CORS_ORIGINYesDashboard origin URL
REDIS_PASSWORDYesRedis auth password
DATA_RETENTION_DAYSNo30Auto-delete age for verifications
GEOIP_DB_PATHNodata/geoipPath to MaxMind .mmdb files
SMTP_HOSTNoSMTP server for email alerts
SMTP_PORTNo587SMTP port
SMTP_USERNoSMTP username
SMTP_PASSNoSMTP password
SMTP_FROMNoAlert sender address
ALERT_EMAILNoAlert recipient address