Stellen Sie Ihre Frage und erhalten Sie einen Resümee des Dokuments, indem Sie diese Seite und den AI-Anbieter Ihrer Wahl referenzieren
Dieses Dokument ist veraltet, die Basisversion wurde aktualisiert am 23. August 2026.
Zur englischen Doku gehenVersionshistorie
Der Inhalt dieser Seite wurde mit einer KI übersetzt.
Den englischen Originaltext ansehenWenn Sie eine Idee haben, um diese Dokumentation zu verbessern, zögern Sie bitte nicht, durch das Einreichen eines Pull-Requests auf GitHub beizutragen.
GitHub-Link zur DokumentationMarkdown des Dokuments in die Zwischenablage kopieren
Intlayer selbst hosten
Intlayer kann vollständig auf Ihrer eigenen Infrastruktur ausgeführt werden – kein Intlayer Cloud-Konto erforderlich. Ein einziger Befehl startet einen produktionsbereiten Stack:
Ein Befehl installiert alles:
Kopieren Sie den Code in die Zwischenablage
Der Installer lädt eine docker-compose.yml und eine .env herunter, generiert automatisch die erforderlichen Secrets und startet alle Container mit docker compose up -d.
Die einzige externe Abhängigkeit ist MongoDB: Das Backend verbindet sich mit einem MongoDB Atlas-Cluster, den Sie bereitstellen. Alles andere läuft im Container.
Inhaltsverzeichnis
Architektur
Kopieren Sie den Code in die Zwischenablage
Chromium (wird für die Erzeugung von Puppeteer-Screenshots verwendet) ist im Backend-Image gebündelt – es wird kein separater Container benötigt.
Voraussetzungen
- Docker ≥ 24 und Docker Compose ≥ v2. Fehlt eines davon, gibt der Installer den Installationslink aus und beendet sich.
- Ports
3000,3100,8025,9000und9001auf dem Host verfügbar. - Ein Linux- oder macOS-Host (oder WSL2 unter Windows).
Alles andere – Bun, Redis, MinIO, Chromium – wird im Image mitgeliefert.
Schnelleinstieg
1. Run the installer
Kopieren Sie den Code in die Zwischenablage
Es überprüft, ob Docker installiert und aktiv ist, schreibt ./intlayer.env mit bereits generierten BETTER_AUTH_SECRET und S3_SECRET_ACCESS_KEY und lädt das Image herunter. Es startet den Container nicht — das Backend kann ohne deine Datenbankanmeldeinformationen nicht booten.
Das erneute Ausführen des Installers ist sicher: Eine vorhandene intlayer.env wird nie überschrieben, daher fungiert sie auch als Upgrade-Pfad.
2. Füllen Sie Ihre Anmeldedaten aus
Öffnen Sie intlayer.env und vervollständigen Sie die mit TODO gekennzeichneten Werte:
Kopieren Sie den Code in die Zwischenablage
Die Datei enthält auch auskommentierte Blöcke für optionale Funktionen — SMTP mailer, OPENAI_API_KEY und die OAuth-Provider. Kommentieren Sie aus, was Sie benötigen.
Die Datei wird vondocker run --env-filegelesen, das Anführungszeichen nicht entfernt und alles nach=als Wert behandelt. Schreiben Sie nackte Werte und behalten Sie Kommentare auf eigenen Zeilen.
3. Container starten
Dies ist der Befehl, den das Installationsprogramm nach Abschluss ausdruckt:
Kopieren Sie den Code in die Zwischenablage
Öffnen Sie dann http://localhost:3000. Der erste Start initialisiert die Datenspeicher, geben Sie ihm also eine Minute Zeit.
Das Dashboard wird auf localhost bereitgestellt. Siehe Limitations — benutzerdefinierte Domains werden vom veröffentlichten Image nicht unterstützt.
Installer-Einstellungen
Das Installationsprogramm liest einige Umgebungsvariablen. Da diese in sh weitergeleitet werden, übergeben Sie sie der Shell anstelle von curl:
Kopieren Sie den Code in die Zwischenablage
Tabelle in einem Modal öffnen, um alle Daten übersichtlich anzuzeigen
| Variable | Standard | Beschreibung |
|---|---|---|
INTLAYER_IMAGE | ghcr.io/aymericzip/intlayer-selfhost:latest | Zu pullendes Image |
INTLAYER_ENV_FILE | ./intlayer.env | Wo die env-Datei geschrieben wird |
INTLAYER_CONTAINER_NAME | intlayer | Container-Name |
INTLAYER_DATA_VOLUME | intlayer-data | Named Volume eingebunden bei /data |
INTLAYER_APP_PORT | 3000 | Host-Port für das Dashboard |
INTLAYER_API_PORT | 3100 | Host-Port für die API |
INTLAYER_S3_PORT | 9000 | Host-Port für die MinIO S3 API |
INTLAYER_CONSOLE_PORT | 9001 | Host-Port für die MinIO-Konsole |
Die vier Port-Variablen ändern nur die Host-Seite des Mappings, das imdocker run-Befehl ausgegeben wird. Das veröffentlichte Image hathttp://localhost:3000,http://localhost:3100undhttp://localhost:9000zur Build-Zeit in das Dashboard-Bundle kompiliert, daher führt deren Neuanordnung dazu, dass der Browser auf die alten Ports zeigt. Behalten Sie die Standardwerte bei, es sei denn, Sie erstellen Ihr eigenes Image — siehe Einschränkungen.
Erstmalige Einrichtung
Bei einer frischen Instanz (leere Datenbank) leitet Sie das Öffnen des Dashboards zur Seite /init weiter:
- Erstellen Sie das erste Konto. Da die users-Collection leer ist, wird dieses Konto automatisch zum super admin befördert.
- Eine Verifizierungs-E-Mail wird gesendet (über Resend). E-Mail-Verifizierung ist erforderlich — deshalb muss
RESEND_API_KEYvor dem Start gesetzt werden. - Klicken Sie auf den Link in der E-Mail und melden Sie sich an.
Sobald ein Admin existiert, leitet /init zur Standard-Anmeldeseite weiter.
Dienste
Tabelle in einem Modal öffnen, um alle Daten übersichtlich anzuzeigen
| Service | Image | Host port(s) | Zweck |
|---|---|---|---|
| app | built from apps/app/Dockerfile | 3000 | TanStack Start Dashboard (CMS-Benutzeroberfläche) |
| backend | built from apps/backend/Dockerfile | 3100 | Fastify REST API (/health Endpunkt) |
| mongo | mongo:7 | intern | Einzelknoten-Replica Set (rs0) |
| redis | redis:7-alpine | intern | Job-Warteschlangen (BullMQ) und Caching (ioredis) |
| minio | minio/minio | 9000 (S3), 9001 (Konsole) | S3-kompatibler Objektspeicher für Avatare und Screenshots |
| mailpit | axllent/mailpit | 1025 (SMTP), 8025 (Web-Benutzeroberfläche) | Lokale Transaktions-E-Mail-Senke |
MinIO-Port9000muss vom Browser erreichbar sein, da hochgeladene Assets (Avatare, Screenshots) direkt vonS3_PUBLIC_URL=http://localhost:9000/intlayergeladen werden.
Umgebungsvariablen
Erforderlich
Tabelle in einem Modal öffnen, um alle Daten übersichtlich anzuzeigen
| Variable | Beispiel | Beschreibung |
|---|---|---|
DB_ID | intlayer | MongoDB Atlas Benutzer |
DB_MDP | (dein Passwort) | MongoDB Atlas Passwort |
DB_CLUSTER | cluster0.xxxxx.mongodb.net | MongoDB Atlas Cluster Host (verwendet in der mongodb+srv:// URI) |
BETTER_AUTH_SECRET | (generiert) | 32-Byte Secret für Session-Signierung |
S3_SECRET_ACCESS_KEY | (generiert) | Secret für das gebündelte MinIO |
RESEND_API_KEY | (dein Schlüssel) | Transaktionale E-Mail via Resend. Erforderlich für das erste Setup, es sei denn, du konfigurierst einen globalen SMTP Mailer (siehe Global mailer) |
Erforderlich (automatisch generiert oder abgefragt)
Tabelle in einem Modal öffnen, um alle Daten übersichtlich anzuzeigen
| Variable | Beispiel | Beschreibung |
|---|---|---|
NODE_ENV | production | Laufzeitumgebung |
PORT | 3100 | Backend-Listenport |
BACKEND_URL | http://localhost:3100 | Öffentliche URL der Backend-API |
APP_URL | http://localhost:3000 | Öffentliche URL des Dashboards |
DOMAIN | localhost | Cookie-Domain |
MONGODB_URI | mongodb://mongo:27017/intlayer?replicaSet=rs0 | Vollständige MongoDB-Verbindungs-URI |
REDIS_URL | redis://redis:6379 | Redis-Verbindungs-URL |
BETTER_AUTH_SECRET | (generiert) | 32-Byte-Secret für die Session-Signierung |
MAIL_PROVIDER | smtp | Mail-Transport: smtp oder resend |
MAIL_SMTP_HOST | mailpit | SMTP-Hostname (Mailpit Container-Name) |
MAIL_SMTP_PORT | 1025 | SMTP-Port |
MAIL_FROM | Intlayer <no-reply@localhost> | Absenderadresse |
S3_ENDPOINT | http://minio:9000 | S3-kompatibler Endpunkt |
S3_PUBLIC_URL | http://localhost:9000/intlayer | Öffentliche URL für das Laden von Browser-Assets |
S3_BUCKET_NAME | intlayer | Bucket-Name |
S3_ACCESS_KEY_ID | (generiert) | MinIO-Zugangsschlüssel |
S3_SECRET_ACCESS_KEY | (generiert) | MinIO-Geheimschlüssel |
VITE_BACKEND_URL | http://localhost:3100 | Backend-URL, die zur Build-Zeit in das Dashboard integriert wird |
VITE_DOMAIN | localhost | Domain, die zur Build-Zeit in das Dashboard integriert wird |
Optional (Funktionen funktionieren bei Abwesenheit eingeschränkt)
Tabelle in einem Modal öffnen, um alle Daten übersichtlich anzuzeigen
| Variable | Funktion |
|---|---|
OPENAI_API_KEY | KI-gestützte Übersetzung und Inhaltsprüfung |
STRIPE_SECRET_KEY, STRIPE_WEBHOOK_SECRET, STRIPE_* | Abrechnung und Abonnementverwaltung |
RESEND_API_KEY | Transaktions-E-Mail über Resend (überschreibt Mailpit, wenn gesetzt) |
GITHUB_CLIENT_ID, GITHUB_CLIENT_SECRET | GitHub OAuth-Login |
GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET | Google OAuth-Login |
GITLAB_CLIENT_ID, GITLAB_CLIENT_SECRET | GitLab OAuth-Login |
MICROSOFT_CLIENT_ID, MICROSOFT_CLIENT_SECRET | Microsoft OAuth-Login |
LINKEDIN_CLIENT_ID, LINKEDIN_CLIENT_SECRET | LinkedIn OAuth-Login |
ATLASSIAN_CLIENT_ID, ATLASSIAN_CLIENT_SECRET | Atlassian OAuth-Login |
Global mailer
By default, all transactional emails are sent through Resend using RESEND_API_KEY. Self-hosted deployments can instead route every email — including non-organization emails such as password resets and magic links — through a global mailer configured with environment variables.
Set MAIL_PROVIDER to activate it. When unset, the default Resend mailer is used.
Tabelle in einem Modal öffnen, um alle Daten übersichtlich anzuzeigen
| Variable | Example | Description |
|---|---|---|
MAIL_PROVIDER | smtp | Global transport: smtp or resend. Leave unset to use defaults |
MAIL_FROM | Intlayer <no-reply@acme.com> | Sender header. Accepts a bare address or Name <email> format |
MAIL_SMTP_HOST | smtp.acme.com | SMTP host (required when MAIL_PROVIDER=smtp) |
MAIL_SMTP_PORT | 587 | SMTP port (defaults to 587) |
MAIL_SMTP_SECURE | false | Implicit TLS. Set true for port 465 |
MAIL_SMTP_USER | (your user) | SMTP username (optional; omit for unauthenticated relays) |
MAIL_SMTP_PASSWORD | (your password) | SMTP password |
Precedence: an organization's own mailer (configured from the Organization dashboard) takes priority over the global mailer, which in turn takes priority over the default Resend key.
Ihr Intlayer-Projekt verbinden
Sobald der Stack läuft, verweisen Sie Ihr Projekt auf das selbst gehostete Backend und Dashboard anstelle von intlayer.org.
Projektkonfiguration
Kopieren Sie den Code in die Zwischenablage
import type { IntlayerConfig } from "intlayer";
const config: IntlayerConfig = {
editor: {
clientId: process.env.INTLAYER_CLIENT_ID,
clientSecret: process.env.INTLAYER_CLIENT_SECRET,
/**
* URL des selbst gehosteten CMS-Dashboards.
* Standard: https://app.intlayer.org
*/
cmsURL: process.env.INTLAYER_CMS_URL, // e.g. http://localhost:3000
/**
* URL der selbst gehosteten Backend-API.
* Standard: https://back.intlayer.org
*/
backendURL: process.env.INTLAYER_BACKEND_URL, // e.g. http://localhost:3100
},
};
export default config;
Setzen Sie die Umgebungsvariablen in der .env Ihres Projekts:
Kopieren Sie den Code in die Zwischenablage
Erstellen Sie Zugangsdaten in Ihrem selbst gehosteten Dashboard unter Projects → Access keys unter http://localhost:3000/projects.
@intlayer/api SDK
Wenn Sie das @intlayer/api SDK programmatisch verwenden, übergeben Sie backendURL explizit:
Kopieren Sie den Code in die Zwischenablage
Upgrade
Ein erneutes Ausführen des Installers auf einer bestehenden Bereitstellung führt ein Rolling-Upgrade durch:
Kopieren Sie den Code in die Zwischenablage
Backup und Wiederherstellung
Alle persistenten Daten befinden sich in drei benannten Docker-Volumes.
Backup
Kopieren Sie den Code in die Zwischenablage
Wiederherstellung
Kopieren Sie den Code in die Zwischenablage
Einschränkungen
- MongoDB muss extern sein (Atlas). Das Backend verbindet sich nur über
mongodb+srv://(zusammengesetzt ausDB_ID/DB_MDP/DB_CLUSTER), daher kann ein einfachesmongodb://host:27017— einschließlich des eigenenmongoddes Containers — nicht verwendet werden. Stellen Sie einen MongoDB Atlas Cluster bereit. - Keine benutzerdefinierte Domain. Alle browsergestützten
VITE_*URLs werden zur Build-Zeit in die App inline eingefügt, und das veröffentlichte Image wird mitlocalhostWerten ausgeliefert. Das Dashboard muss unterhttp://localhost:3000aufgerufen werden; das Serving auf einer öffentlichen Domain würde ein Neubau des Images mit den eingebetteten Ziel-URLs erfordern und wird out-of-the-box nicht unterstützt. - E-Mail erfordert einen funktionierenden Mailer. Das Setup beim ersten Durchlauf erzwingt eine E-Mail-Verifizierung, daher muss entweder
RESEND_API_KEYoder ein globaler SMTP Mailer (MAIL_PROVIDER=smtp+MAIL_SMTP_*) konfiguriert sein. Nach der ersten Anmeldung eines Administrators kann jede Organisation auch ihren eigenen SMTP oder Resend Mailer vom Dashboard aus konfigurieren.
Fehlerbehebung
Backend-Absturzschleifen beim ersten Start
MongoDB und Redis müssen fehlerfrei sein, bevor das Backend startet. Die Compose-Datei verwendet depends_on mit condition: service_healthy. Wenn Sie wiederholte Backend-Neustarts sehen, überprüfen Sie, ob die mongo- und redis-Healthchecks erfolgreich sind:
Kopieren Sie den Code in die Zwischenablage
Suchen Sie nach MongoDB connection error oben im Log.
E-Mail wird nicht gesendet
Standardmäßig werden alle ausgehenden E-Mails von Mailpit abgefangen. Öffnen Sie http://localhost:8025, um gesendete Nachrichten anzuzeigen. Um echte E-Mails zu senden, setzen Sie MAIL_PROVIDER=resend und RESEND_API_KEY=<Ihr-Schlüssel> in .env und starten Sie dann das Backend neu:
MinIO-Bucket fehlt
Wenn der minio-init-One-Shot-Service nicht ausgeführt wurde (oder vor der Bereitschaft von MinIO lief), erstellen Sie den Bucket manuell:
Kopieren Sie den Code in die Zwischenablage
