Self-Hosted Deployment

Run CareerLens on your own infrastructure with your own API keys. Free forever.

Quick Start — Docker

docker run -d \
  -p 3000:3000 \
  -v careerlens-data:/data \
  -e GEMINI_API_KEY=your-gemini-api-key \
  -e JWT_SECRET=your-random-secret \
  careerlens:latest

Open http://localhost:3000

Docker Compose

# Create .env with your credentials, then:
docker compose up -d

Kubernetes (Helm)

kubectl create secret generic careerlens-secrets \
  --from-literal=GEMINI_API_KEY=your-gemini-api-key

helm install careerlens ./helm/careerlens \
  --set env.JWT_SECRET=$(openssl rand -hex 32)

Add --set ingress.enabled=true --set ingress.host=your.domain for ingress

Environment Variables

VariableRequiredDescription
GEMINI_API_KEYYesGoogle Gemini API key
JWT_SECRETYesSecret for JWT token signing
DATABASE_URLNoSQLite path (default: /data/careerlens.db)
STRIPE_SECRET_KEYNoStripe key (optional, for payments)

Data & Privacy

  • SQLite database stored at /data/careerlens.db
  • Mount a volume to /data for persistence
  • Reports auto-expire after 7 days
  • No data leaves your infrastructure (except Gemini API calls)