Skip to main content

Self-host it (€30, once)

i18n-keyless is one product, and you can run it yourself: the same API, the same dashboard, the same MCP server as i18n-keyless.com — it is the very Docker image we run — on your own machine, with your own database and your own AI provider. You pay €30 once and own it: no subscription, no usage cap, no expiry, every update for life.

Buy the licence at https://i18n-keyless.com/self-hosted. The key (it starts with ik1.) arrives by email and on the page you land on after the payment.

ONCE is 37signals' open source tool for running Docker apps on your own server: one line to install, then a terminal console for the domain, the TLS certificate, the environment, updates and backups. i18n-keyless follows its conventions, so it is a first-class app there.

On a fresh Linux server:

curl -fsSL https://get.once.com | sh
once

In the console, add an app and enter the image path:

ghcr.io/ambroselli-io/i18n-keyless:latest

Then, in the app's Environment settings, add:

LICENSE_KEY=ik1....          # from your purchase
AI_PROVIDER=mistral # or openai, anthropic, google, openai-compatible
AI_MODEL=mistral-small-latest
AI_API_KEY=... # your key at that provider

Set the hostname, and ONCE takes care of DNS and TLS. Open the URL: the first screen creates your account — the admin of this instance — and your first project.

With docker compose

No ONCE? Two files and Docker:

mkdir i18n-keyless && cd i18n-keyless
curl -fsSL https://raw.githubusercontent.com/arnaudambro/i18n-keyless/main/self-hosted/docker-compose.yml -o docker-compose.yml
curl -fsSL https://raw.githubusercontent.com/arnaudambro/i18n-keyless/main/self-hosted/.env.example -o .env
# fill LICENSE_KEY and the AI_* lines in .env
docker compose up -d
open http://localhost:1800

Put your usual reverse proxy (Caddy, nginx, Traefik) with TLS in front of port 1800, and set APP_URL in .env to the public URL: it decides whether the session cookie is secure, and it is the OAuth issuer the MCP clients see.

The AI provider

Translations are made by the model you choose, on your own account. Any provider the Vercel AI SDK knows:

AI_PROVIDERAI_MODEL (default)Note
mistralmistral-small-latestWhat i18n-keyless.com runs on.
openaigpt-4o-mini
anthropicclaude-haiku-4-5-20251001
googlegemini-2.0-flash
openai-compatiblellama3.1Ollama, Groq, Together, a proxy… set AI_BASE_URL (default http://localhost:11434/v1).

AI_API_KEY is the key at that provider. A whole app costs cents.

Accounts and projects

  • The first account created on an empty instance is the admin. Admins create projects and can make other users admin (PUT /user/admin).
  • Everyone else uses the projects they are invited to. When you add a member, the dashboard shows the invitation message to send them yourself (with the set-password link); the instance sends no email, so there is no mail provider to configure.
  • Pausing a project (admins) stops its key; nothing is deleted.

Point your app at your server

Every SDK takes an API_URL. Add it next to the key:

import * as I18nKeyless from 'i18n-keyless-react';

I18nKeyless.init({
API_KEY: 'your-project-key',
API_URL: 'https://i18n.example.com', // your APP_URL
storage: window.localStorage,
languages: { primary: 'en', supported: ['en', 'fr', 'es'] },
});

The dashboard's snippets already carry it. Node, Vue, Angular and the browser package take the same option; Laravel and Flutter read it from their own config. The MCP server is at https://i18n.example.com/mcp, and the onboarding screen prints the claude mcp add line.

Upgrade, back up

ONCE updates and backs up from its console. With compose: docker compose pull && docker compose up -d; the schema is applied at boot and the volume is kept. The data lives in /storage: i18n-keyless.db (SQLite: users, projects, translations) and secret (signs the sessions). Copy the volume and you have everything.

Prefer Postgres? Set DATABASE_URL=postgresql://…; the image ships both drivers.

What is different from the hosted product

Nothing in the software: it is the same image. What differs is who operates it.

HostedSelf-hosted
PricePer project, per month€30 once
Machine, database, AI accountOursYours
ProjectsOne per subscription, created from the websiteUnlimited, created by your admin
SupportEmailEmail, best effort

Environment reference

VariableRequiredDefaultWhat it does
LICENSE_KEYyesYour lifetime licence. Verified offline at boot.
AI_PROVIDERnomistralSee the table above.
AI_MODELnothe provider's default
AI_API_KEYyesYour key at the provider.
AI_BASE_URLnoFor openai-compatible, or a proxy.
APP_URLrecommendedhttp://localhost:1800The public URL: cookie security, OAuth issuer, invitation links. ONCE sets it from the hostname.
DATABASE_URLnofile:/storage/i18n-keyless.dbSQLite file, or a Postgres URL.
SECRETnogenerated once, kept in /storageJWT secret of the dashboard sessions.
SENTRY_KEYnothe maintainer'sWhere errors are reported. By default they reach us, the maintainers — that is how bugs get fixed. off disables it; your own DSN redirects it.

Lost your licence key?

Write to us with the email you bought it with. There is nothing to revoke or renew: a licence is bound to that email and is valid forever.