Set up Humlens Localization
Run Localization on your own servers with one Docker Compose file: the app with video processing built in, Postgres, Redis and your own storage, using your own AI provider keys.
- Time
- About 20 minutes with Docker Compose
- Local ports
- App 4002
- Who does what
- A developer installs; your team does the first-run setup in the app.
Before you start
Docker and Docker Compose
On any Linux server or cloud VM
A domain and reverse proxy
nginx, Caddy or Traefik in front for HTTPS; the container serves plain HTTP
OpenAI API key
Required: powers translation, transcription and dubbing. Anthropic and Mistral are optional extras for text.
SMTP
For invitations, magic links and password resets
Storage
An S3-compatible bucket, or the bundled MinIO
For your developer
Install
- 1
Create the settings file
At minimum set NEXTAUTH_SECRET, APP_URL and NEXTAUTH_URL, POSTGRES_PASSWORD, OPENAI_API_KEY and the SMTP settings.
cd humlens/apps/humlens-localization cp .env.selfhost.example .env - 2
Start everything
This starts the app on port 4002, applies database migrations once, and runs Postgres 16 and Redis 7.
docker compose -f docker-compose.selfhost.yml up -d - 3
No S3 bucket? Add MinIO
MinIO is defined but only starts with its profile. Set MINIO_ROOT_USER and MINIO_ROOT_PASSWORD first.
docker compose -f docker-compose.selfhost.yml --profile minio up -d - 4
Put HTTPS in front
Point your reverse proxy at the app port (APP_PORT, default 4002) and terminate TLS there.
For your developer
Settings
These go in the .env file, or your host's secret manager in production.
| Setting | Needed | What it is |
|---|---|---|
| APP_URL, NEXTAUTH_URL | Required | The app's public address |
| NEXTAUTH_SECRET | Required | Random string; also secures the app's internal video-processing calls |
| POSTGRES_USER, POSTGRES_PASSWORD, POSTGRES_DB | Required | Change the example password before production |
| OPENAI_API_KEY | Required | Your own key: translation, transcription and dubbing |
| SMTP_HOST, SMTP_PORT, SMTP_USER, SMTP_PASSWORD, SMTP_FROM | Required | Outbound email |
| ANTHROPIC_API_KEY, MISTRAL_API_KEY | Optional | Extra providers for text workflows |
| AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_REGION | Optional | Your S3-compatible bucket; or use MinIO |
| GITHUB_CLIENT_*, GOOGLE_CLIENT_*, AUTH_PROVIDERS | Optional | Social sign-in |
| DEPLOYMENT_MODE, LICENSE_KEY, FEATURE_TEAM_* | Optional | Enterprise features (SSO, directory sync, audit log) need a license, the matching flag, and their service (BoxyHQ Jackson or Retraced). |
For your team
First-run setup
Done in the app's own screens, in this order. No code involved.
- 01
Create your account and team
Open your address, sign up and create the team. The creator is its Owner.
- 02
Invite your team
Invite translators, reviewers and admins by email; invitations use your SMTP settings.
- 03
Create your first project
Add the languages you're localizing into, then bring in your strings, documents or media.
- 04
Set your quality rules
Add glossary terms and tone rules so AI drafts and review agents follow your brand.
Check it works
- The app loads over HTTPS at your address and you can sign up.
- Invitation and sign-in emails arrive.
- A short text translates, and a short video transcribes, which confirms the OpenAI key.
- Uploaded media appears in your bucket (or MinIO).
Troubleshooting
Translations or video jobs fail
Check OPENAI_API_KEY and that the account has credit.
Emails don't arrive
Check the SMTP_* settings and your provider's sending limits.
SSO, directory sync or audit log don't appear
They need DEPLOYMENT_MODE=selfhost, a license, the FEATURE_TEAM_* flag, and their service running.
Browsers warn the site isn't secure
Put a reverse proxy with TLS in front; the container itself serves plain HTTP.
Going live
- Fresh NEXTAUTH_SECRET per deployment; example passwords changed.
- Back up Postgres daily: docker compose -f docker-compose.selfhost.yml exec db pg_dump …
- Back up your storage bucket separately.
- Upgrade by pulling, rebuilding app and migrate, backing up, then starting migrate before app.
- Keep SECURITY_HEADERS_ENABLED=true and the app behind TLS.
Rather have us set it up?
Our team can install Localization in your AWS, GCP or Azure account and configure it with you.