Ship translations with confidence
Everything you need to install, configure, deploy and maintain i18n Dashboard โ whether you're a solo developer or an enterprise team.
Framework guides
Deployment
Administration
- SMTP setup
Email verification & password reset.
- Translation providers
Google, DeepL, OpenAI, Claude, Gemini, Azure, custom endpoints.
- User roles & SSO
Admin, Moderator, Translator. SSO via central auth.
- Webhooks & integrations
Slack, Discord, GitHub Action, GitLab CI.
- Backup & restore
JSON backup, merge/replace import, CLI commands.
Quality & collaboration
Reference
Billing & pricing
Support
Quickstart with Docker
The official image arnaudprioul/i18n-dashboard ships on Docker Hub for both linux/amd64 and linux/arm64. Three ways to run it depending on your team size.
๐ข Local mode SQLite, no auth
Single user, single team. Translations live in a Docker volume. Best for self-hosting up to ~100k keys. Save this as docker-compose.yml and run docker compose up -d:
services:
webapp:
image: arnaudprioul/i18n-dashboard:latest
container_name: i18n-dashboard
restart: unless-stopped
ports:
- "6001:6001"
environment:
I18N_APP_MODE: local
NUXT_DB_CLIENT: better-sqlite3
NUXT_DB_CONNECTION: /data/i18n-dashboard.db
volumes:
- i18n_data:/data
volumes:
i18n_data:Full quickstart, env vars and troubleshooting on the Docker Hub overview.
๐ต Server mode Postgres + central auth
Multi-team, JWT-verified via JWKS. The webapp validates tokens offline against your auth server's /api/auth/.well-known/jwks.json.
I18N_APP_MODE=server
NUXT_DB_CLIENT=pg
NUXT_DB_HOST=db
NUXT_SESSION_SECRET=$(openssl rand -hex 32)
NUXT_CENTRAL_AUTH_URL=https://auth.example.com
NUXT_PUBLIC_CENTRAL_AUTH_URL=https://auth.example.com๐ฅ๏ธ Desktop mode Tauri, offline
Native macOS / Windows / Linux build with embedded Nitro server and SQLite. No Docker, no network.
Environment variables
Every runtimeConfig value is overridable at runtime via the NUXT_* prefix โ Nitro's canonical convention. Bare names like I18N_DB_HOST are silently ignored unless explicitly listed as wire-protocol vars.
The full reference (every variable, default, scope, and migration note) lives on the Docker Hub page where it stays close to the image:
Most common knobs
I18N_APP_MODEโlocal/server/desktop. Server mode requires a real DB and a central auth.NUXT_DB_CLIENT+NUXT_DB_HOST+NUXT_DB_NAME+NUXT_DB_USER+NUXT_DB_PASSWORDโ Postgres / SQLite / MySQL connection.NUXT_SESSION_SECRETโ required in production. Generate withopenssl rand -hex 32.NUXT_CENTRAL_AUTH_URL+NUXT_PUBLIC_CENTRAL_AUTH_URLโ server-side and browser-side URLs of your auth issuer (must be JWKS-compatible).NUXT_AUTH_JWT_ISSUER+NUXT_AUTH_JWT_AUDIENCEโ expectediss/audclaims on access tokens.NUXT_INTERNAL_API_SECRETโ shared HMAC for webapp โ central-auth side calls. Must be identical on both sides.NUXT_SMTP_HOST+NUXT_SMTP_PORT+NUXT_SMTP_USER+NUXT_SMTP_PASS+NUXT_SMTP_FROMโ workflow notifications. Leave host empty to disable email.NUXT_DASHBOARD_URLโ the public URL of this webapp instance, used in transactional email links.
SMTP setup in 30 seconds
Pick any SMTP relay and pass the four values below โ the image will deliver email through it on every workflow event.
NUXT_SMTP_HOST=smtp.sendgrid.net # or smtp.resend.com / smtp.mailgun.org / email-smtp.eu-west-1.amazonaws.com
NUXT_SMTP_PORT=587
NUXT_SMTP_USER=apikey # provider-specific
NUXT_SMTP_PASS=SG.xxxxxxxxxxxxxxxxxxxxxx
NUXT_SMTP_FROM=noreply@example.com For local dev / smoke testing, point to the bundled Mailpit service: NUXT_SMTP_HOST=mailpit, NUXT_SMTP_PORT=1025.