Quick Start: All-in-One Container
The fastest way to get Helicone running is with the all-in-one Docker image that bundles all services into a single container.Local Development
For local development and testing:http://localhost:3000.
Exposed Ports:
3000- Web dashboard8585- Jawn API + LLM proxy9080- MinIO S3 storage (for request/response bodies)
Production Deployment
When deploying to a remote server (EC2, VPS, etc.), configure public URLs:Data Persistence
For production deployments, mount Docker volumes to persist data:Docker Compose Setup
For more control and development workflows, use Docker Compose to run services separately.Prerequisites
- Docker 20.10+
- Docker Compose 2.0+
Initial Setup
- Clone the Helicone repository:
- Create environment file:
- Update
.envwith your configuration (see Environment Variables section below)
Start Services
Option 1: Infrastructure + Core Services (Recommended for production):- Infrastructure: PostgreSQL, ClickHouse, MinIO, Redis
- Core services: Jawn API, Web Dashboard
- Database migrations run automatically
Available Profiles
Docker Compose uses profiles to control which services run:Verify Deployment
Environment Variables
Required for Production
Database Configuration
Storage Configuration
Service Ports
User Account Setup
Create Account
Navigate tohttp://YOUR_IP:3000/signup and create your account.
Email Verification
The container doesn’t include production email services. Manually verify users:Organization Setup
Users must belong to an organization:Testing the Deployment
Test Web Dashboard
Visithttp://YOUR_IP:3000 and sign in.
Test LLM Proxy
Test with OpenAI:Supported LLM Providers
The self-hosted version supports:- OpenAI:
http://YOUR_IP:8585/v1/gateway/oai/v1/chat/completions - Anthropic:
http://YOUR_IP:8585/v1/gateway/anthropic/v1/messages
Other providers (Vertex AI, AWS Bedrock, Azure OpenAI) are not supported in the self-hosted version.
Security Best Practices
Authentication
Mitigate this by:- Firewall Rules: Restrict access to port 8585 to trusted IPs
- VPN: Deploy behind a VPN for internal-only access
- Reverse Proxy: Add authentication at the reverse proxy layer
HTTPS Setup
For production deployments, use a reverse proxy for HTTPS: Example with Caddy:Troubleshooting
API calls fail with connection refused
The web app tries to connect tolocalhost:8585 instead of your public IP.
Solution: Verify environment variables:
Infinite redirect loop
Cause: MissingNEXT_PUBLIC_IS_ON_PREM=true environment variable.
Solution: Add the environment variable and restart the container.
”Invalid origin” error on sign-in
Cause: Mismatched URL origins in environment variables. Solution: Ensure all URL variables use the same origin (either all localhost or all public IP/domain):“No organization ID found” error
Cause: User not added to an organization. Solution: See the Organization Setup section above.Database connection errors
Cause: Services starting before databases are ready. Solution: Docker Compose has health checks. Wait for healthy status:Migration errors
Cause: Database schema not initialized. Solution: Check migration logs:Maintenance
Updating Helicone
Pull the latest images and restart:Viewing Logs
Backup Data
Restore Data
Next Steps
- Configure your application to use the Helicone proxy
- Explore the AI Gateway for easier integration
- Set up monitoring and alerts for production deployments
- For scalable production deployments, see Kubernetes Setup