DocRouter Open Source

Self-hosted document processing with full source code access

Open Source Benefits

DocRouter source code is available under an Apache 2.0 license, giving you complete control over your document processing infrastructure. Deploy on your own infrastructure, customize the processing pipeline, and maintain full data sovereignty.

DocRouter is also available under an Enterprise license, including support, maintenance and upgrades.

Quick Start: Docker Compose

Install the DocRouter:
curl -fsSL https://raw.githubusercontent.com/analytiq-hub/doc-router/main/tools/run-doc-router-docker.sh | bash -s -- up
Configure the DocRouter:
  • Open http://localhost:8080
  • Log in as admin / admin
  • Click the User Icon (top right) > Settings > Development
  • Click AWS Setup > Manage, then follow the instructions to set up your AWS account with an S3 bucket and IAM permissions.
  • Click LLM Configuration > Manage. Set up the desired LLM key under Actions > Edit Token.

Alternative: Kubernetes (Helm)

Install DocRouter from the Helm chart published to GitHub Container Registry (oci://ghcr.io/analytiq-hub/doc-router). Prerequisites: Helm 3.8+, a Kubernetes cluster, an nginx ingress controller, MongoDB (Atlas or in-cluster), an AWS S3 bucket, and (for HTTPS) cert-manager with a letsencrypt-prod ClusterIssuer — the chart enables TLS by default.

If you cloned the doc-router repository, prefer ./deploy/scripts/k8s-deploy.sh <overlay> with a .env.<overlay> file (see deploy/README.md). That script creates the namespace and secret, runs the same Helm upgrade, and restarts pods after secret changes. The steps below are the equivalent manual install.

1. Create secrets (before Helm)

Credentials live in a Kubernetes Secret named doc-router-secrets, not in Helm values. Create or update it before helm upgrade --install — a pre-install migration Job reads only this Secret. Minimum keys: NEXTAUTH_SECRET, MONGODB_URI, ADMIN_EMAIL, ADMIN_PASSWORD, AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_S3_BUCKET_NAME. Add LLM keys (OPENAI_API_KEY, etc.) in the Secret or configure them later in the UI.

kubectl create namespace doc-router --dry-run=client -o yaml | kubectl apply -f -

kubectl create secret generic doc-router-secrets \
  --namespace doc-router \
  --from-literal=NEXTAUTH_SECRET='change-me' \
  --from-literal=MONGODB_URI='mongodb+srv://user:pass@cluster.example.net/' \
  --from-literal=ADMIN_EMAIL='admin@example.com' \
  --from-literal=ADMIN_PASSWORD='change-me' \
  --from-literal=AWS_ACCESS_KEY_ID='...' \
  --from-literal=AWS_SECRET_ACCESS_KEY='...' \
  --from-literal=AWS_S3_BUCKET_NAME='your-bucket' \
  --dry-run=client -o yaml | kubectl apply -f -

2. Install the chart

Replace app.example.com with your hostname (DNS must point at the ingress LoadBalancer). Pin --version to the chart version in Chart.yaml (currently 0.3.7). With empty image tags, the chart pulls ghcr.io/analytiq-hub/doc-router-frontend and doc-router-backend at the chart appVersion (e.g. v27.0.1).

helm upgrade --install doc-router oci://ghcr.io/analytiq-hub/doc-router \
  --version 0.3.7 \
  --namespace doc-router \
  --set ingress.host=app.example.com \
  --set ingress.className=nginx \
  --set config.nextauthUrl=https://app.example.com \
  --set config.appBucketName=your-bucket \
  --set config.region=us-east-1 \
  --set config.environment=prod \
  --atomic \
  --timeout 10m

After install: https://app.example.com (API docs at /fastapi/docs). If you change the Secret later, restart workloads: kubectl rollout restart deployment/frontend deployment/backend -n doc-router. Rollbacks: helm history doc-router -n doc-router, helm rollback doc-router -n doc-router. More detail: Deploying Doc Router on Kubernetes and deploy/README.md.

Ready to Self-Host?

Get started with DocRouter open source or contact us for enterprise support and services.

View on GitHub