Pose una domanda e ottieni un riassunto del documento facendo riferimento a questa pagina e al provider AI di tua scelta
Il contenuto di questa pagina è stato tradotto con un'IA.
Vedi l'ultima versione del contenuto originale in ingleseSe hai un’idea per migliorare questa documentazione, non esitare a contribuire inviando una pull request su GitHub.
Collegamento GitHub alla documentazioneCopia il Markdown del documento nella porta-documenti
Auto-hosting di Intlayer
Intlayer può essere eseguito sulla tua infrastruttura, nessun account Intlayer Cloud richiesto. Sono disponibili tre configurazioni, tutte gestite dallo stesso programma di installazione (install.sh, install.ps1 su Windows o npx intlayer init infra):
Apri la tabella in una finestra modale per visualizzare tutti i dati in modo chiaro
| Setup | What it is | Pick it for |
|---|---|---|
| Applicazione desktop | Dashboard nativa per macOS, Linux e Windows | Un client locale, nulla da ospitare |
| Docker all-in-one | Dashboard, API, MongoDB, Redis e MinIO in un singolo contenitore | Test e installazioni su singola macchina |
| Docker Compose | Un contenitore per servizio, ogni archivio dati sostituibile con un'offerta gestita | Produzione, scalabilità, database gestiti |
Table of Contents
Immagini e pacchetti pubblicati
Apri la tabella in una finestra modale per visualizzare tutti i dati in modo chiaro
| Artifact | Docker Hub | GHCR mirror | Contents |
|---|---|---|---|
| All-in-one container | intlayer/cms-all | ghcr.io/aymericzip/intlayer/cms-all | app + backend + MongoDB 8 + Redis + MinIO + Chromium |
| Dashboard (frontend) | intlayer/cms-frontend | ghcr.io/aymericzip/intlayer/cms-frontend | TanStack Start dashboard on Bun |
| API (backend) | intlayer/cms-backend | ghcr.io/aymericzip/intlayer/cms-backend | Fastify REST API on Bun + Chromium |
| Desktop app | GitHub releases | n/a | .dmg (macOS), .deb / .rpm / .AppImage (Linux), .exe / .msi (Windows) |
Tutte e tre le immagini sono compilate dallo stesso docker/selfhost/Dockerfile e pubblicate a ogni rilascio. Lo stack Compose scarica anche le immagini ufficiali mongo:8, redis:8-alpine e quay.io/minio/minio.
Configurazione
Il programma di installazione chiede quale configurazione desideri, controlla i prerequisiti (proponendo di installare Docker), scrive il file di ambiente con i segreti già generati e scarica le immagini. Non avvia nulla autonomamente: le modalità Docker richiedono prima un mailer, quindi termina stampando il comando da eseguire. Rieseguirlo è sicuro: un file di ambiente esistente non viene mai sovrascritto, fungendo anche da percorso di aggiornamento.
La dashboard di Intlayer come applicazione nativa, creata con Tauri. Effettua l'accesso a Intlayer Cloud (https://app.intlayer.org), quindi non c'è nulla da ospitare. È la scelta giusta quando si desidera un client locale anziché una scheda del browser.
Installazione
Il programma di installazione scarica il pacchetto per il sistema operativo e la CPU in uso, quindi lo apre (macOS), lo installa (dpkg / rpm su Linux) o avvia la procedura guidata (Windows). Puoi anche scaricarlo manualmente dalla pagina dei rilasci.
Copiare il codice nella clipboard
In PowerShell:
Copiare il codice nella clipboard
Copiare il codice nella clipboard
Requisiti
- Node.js: l'applicazione incorpora il server della dashboard e lo avvia con il binario
nodedella macchina. Installalo da nodejs.org se l'app non si avvia.
La versione desktop pubblicata comunica con il backend Intlayer Cloud. Indirizzarla verso un backend auto-ospitato richiede di ricompilare l'app con VITE_BACKEND_URL impostato sulla tua API, vedi Limitazioni.
Tutto viene eseguito all'interno del singolo contenitore intlayer/cms-all, supervisionato da s6-overlay, con ciascun archivio dati persistito in un unico volume.
Copiare il codice nella clipboard
Apri la tabella in una finestra modale per visualizzare tutti i dati in modo chiaro
| Servizio | Porta/e host | Scopo |
|---|---|---|
| app | 3000 | Dashboard (interfaccia utente CMS) |
| backend | 3100 | REST API (endpoint /health) |
| mongo | interno | MongoDB 8, replica set a nodo singolo rs0 |
| redis | interno | Code di lavoro (BullMQ) e memorizzazione nella cache |
| minio | 9000 (S3), 9001 (console) | Archiviazione oggetti compatibile con S3 per avatar e screenshot |
L'ordine di avvio è regolato dalle dipendenze s6 (mongod → avvio replica-set, minio → creazione bucket, poi backend, quindi app), e i servizi si riavviano in caso di chiusura, garantendo il ripristino autonomo al primo avvio.
Prerequisiti
- Docker ≥ 24: il programma di installazione offre di installarlo (tramite get.docker.com su Linux, Homebrew su macOS). Su Windows, installa prima Docker Desktop (backend WSL 2).
- Porte
3000,3100,9000e9001libere sull'host. MinIO9000deve rimanere raggiungibile dal browser, che carica le risorse direttamente daS3_PUBLIC_URL. - Un mailer: una chiave API Resend o un relay SMTP.
1. Installazione
Scrive ./intlayer.env con BETTER_AUTH_SECRET e S3_SECRET_ACCESS_KEY generati, pone alcune domande per compilare il resto, e scarica intlayer/cms-all:latest.
Copiare il codice nella clipboard
In PowerShell:
Copiare il codice nella clipboard
Copiare il codice nella clipboard
2. Rispondere alle domande di configurazione
Il programma di installazione chiede (premi Invio per accettare un suggerimento; ogni risposta può essere modificata nel file in seguito):
- Il dominio su cui viene servito Intlayer. Lascialo vuoto per restare su
localhost. Con un dominio comeexample.org, suggeriscehttps://cms.example.orgper la dashboard,https://back.example.orgper l'API ehttps://s3.example.org/intlayerper l'object storage, e scriveDOMAIN,APP_URL,BACKEND_URLeS3_PUBLIC_URL. Vedi Dominio personalizzato per i passaggi successivi. - Il mailer: Resend (chiave API) oppure un relay SMTP (host, porta, credenziali), oltre all'indirizzo del mittente. Questo passaggio può essere saltato ed eseguito a mano in seguito.
- Una chiave API OpenAI opzionale per le funzionalità di IA.
Senza un terminale (ad esempio quando lo script viene eseguito dalla CI), le domande vengono saltate e vengono generati solo i segreti. Apri intlayer.env e inserisci Resend oppure SMTP a mano (dettagli in Mailer globale):
Copiare il codice nella clipboard
3. Avviare
Questo è il comando stampato dal programma di installazione (con un dominio personalizzato, è preceduto dal docker build che produce intlayer/cms-all:custom, vedi Dominio personalizzato):
Copiare il codice nella clipboard
Copiare il codice nella clipboard
La CLI esegue il programma di installazione, che stampa il comando docker run … mostrato nelle altre schede. Copialo nel tuo terminale una volta configurato il mailer.
Apri http://localhost:3000 (o l'URL della tua dashboard) e segui la Configurazione iniziale. Il primo avvio inizializza il replica set e il bucket, quindi attendi un minuto.
Backup e aggiornamento
Tutto lo stato risiede nel volume intlayer-data (/data/mongo, /data/redis, /data/minio).
Copiare il codice nella clipboard
Per aggiornare, riesegui l'installatore (scarica l'immagine più recente e mantiene intlayer.env), quindi esegui docker rm -f intlayer e rilancia il comando di avvio. Per utilizzare un MongoDB gestito anziché quello integrato, imposta MONGODB_URI in intlayer.env.
Un contenitore per servizio su una rete privata Compose. La dashboard e l'API utilizzano le immagini pubblicate intlayer/cms-frontend e intlayer/cms-backend; gli archivi dati utilizzano le immagini ufficiali mongo, redis e minio.
Copiare il codice nella clipboard
Apri la tabella in una finestra modale per visualizzare tutti i dati in modo chiaro
| Servizio | Immagine | Ruolo |
|---|---|---|
app | intlayer/cms-frontend | Dashboard su :3000; attende che il backend sia integro |
backend | intlayer/cms-backend | API su :3100 con Chromium; attende Mongo, Redis e il bucket MinIO |
mongo | mongo:8 | Replica set a nodo singolo rs0, inizializzato dal proprio healthcheck |
redis | redis:8-alpine | Code e cache, persistenza append-only |
minio | quay.io/minio/minio | Archiviazione S3 su :9000, console su :9001 |
minio-init | quay.io/minio/mc | Attività una tantum: crea il bucket e la policy di download anonimo |
I dati sono conservati nei volumi intlayer_mongo-data, intlayer_redis-data e intlayer_minio-data. Il collegamento dei servizi (MONGODB_URI, REDIS_URL, S3_ENDPOINT, l'URL interno del backend usato dal rendering lato server) è fissato nel file compose e ha la precedenza su .env, che include solo i segreti e le integrazioni opzionali.
Prerequisiti
- Docker ≥ 24 con il plugin Compose: l'installatore offre di installarlo su Linux e macOS. Su Windows, installa prima Docker Desktop (backend WSL 2).
- Porte
3000,3100,9000e9001libere sull'host. - Un mailer: una chiave API Resend o un relay SMTP.
1. Installazione
Scrive docker-compose.yml e un .env con i segreti generati in ./intlayer/, pone le stesse domande di configurazione della modalità all-in-one (dominio, mailer, chiave OpenAI), e scarica le immagini.
Copiare il codice nella clipboard
Or by hand:
Copiare il codice nella clipboard
In PowerShell:
Copiare il codice nella clipboard
Or by hand:
Copiare il codice nella clipboard
Copiare il codice nella clipboard
2. Configurare un mailer
Se hai saltato la domanda sul mailer, inserisci Resend oppure SMTP in intlayer/.env, esattamente come per il container all-in-one (vedi Mailer globale).
3. Avviare
Copiare il codice nella clipboard
Con un dominio personalizzato, il programma di installazione scarica anche docker-compose.build.yml e il comando di avvio diventa docker compose -f docker-compose.yml -f docker-compose.build.yml up -d --build (vedi Dominio personalizzato).
Apri http://localhost:3000 (o l'URL della tua dashboard) e segui la Configurazione iniziale.
Datastore gestiti
Elimina dal file compose il servizio che stai sostituendo (insieme alla sua voce in depends_on in backend), quindi sovrascrivi la variabile corrispondente:
Copiare il codice nella clipboard
S3_ACCESS_KEY_ID / S3_SECRET_ACCESS_KEY / S3_BUCKET_NAME mantengono il loro significato con qualsiasi provider compatibile con S3.
Scalabilità
app e backend sono privi di stato (stateless). Dietro un bilanciatore di carico, docker compose up -d --scale backend=3 funziona dopo aver rimosso le mappature fisse delle porte host e quando il proxy indirizza i servizi per nome. I processi in background sono coordinati tramite Redis (BullMQ), consentendo a più repliche del backend di condividere la coda in sicurezza.
Compilazione dai sorgenti
Una sovrascrittura commuta i due servizi Intlayer da image: a build:. Da un clone del repository:
Copiare il codice nella clipboard
Senza un clone, punta il contesto di build direttamente al repository impostando INTLAYER_BUILD_CONTEXT=https://github.com/aymericzip/intlayer.git#main in .env. Gli argomenti di build VITE_* della dashboard seguono DOMAIN, APP_URL e BACKEND_URL dello stesso file, ed è così che si applica un dominio personalizzato.
Backup e aggiornamento
Copiare il codice nella clipboard
Impostazioni del programma di installazione
Senza --mode (o INTLAYER_MODE), il programma di installazione mostra un menu: desktop, docker (all-in-one) o compose. Legge anche alcune variabili di ambiente. Poiché viene reindirizzato nella shell, passale alla shell anziché a curl:
Copiare il codice nella clipboard
Copiare il codice nella clipboard
Apri la tabella in una finestra modale per visualizzare tutti i dati in modo chiaro
| Variable | Default | Applies to | Description |
|---|---|---|---|
INTLAYER_MODE | (asked) | all | desktop, docker or compose, same as --mode |
INTLAYER_DOWNLOAD_DIR | ~/Downloads | desktop | Where the app installer is saved |
INTLAYER_IMAGE | intlayer/cms-all:latest | docker | All-in-one image to pull |
INTLAYER_ENV_FILE | ./intlayer.env | docker | Where to write the environment file |
INTLAYER_CONTAINER_NAME | intlayer | docker | Container name |
INTLAYER_DATA_VOLUME | intlayer-data | docker | Named volume mounted at /data |
INTLAYER_APP_PORT | 3000 | docker | Host port for the dashboard |
INTLAYER_API_PORT | 3100 | docker | Host port for the API |
INTLAYER_S3_PORT | 9000 | docker | Host port for the MinIO S3 API |
INTLAYER_CONSOLE_PORT | 9001 | docker | Host port for the MinIO console |
INTLAYER_COMPOSE_DIR | ./intlayer | compose | Where docker-compose.yml and .env are written |
INTLAYER_SELFHOST_REF | main | both | Git ref the compose file and env template are fetched from |
INTLAYER_BUILD_CONTEXT | …/intlayer.git#main | both | Build context used when a custom domain requires a rebuild |
INTLAYER_CUSTOM_IMAGE | intlayer/cms-all:custom | docker | Tag of the all-in-one image built for a custom domain |
Le variabili di porta modificano solo il lato host della mappatura. Le immagini pubblicate includonohttp://localhost:3000,http://localhost:3100ehttp://localhost:9000compilati nel pacchetto della dashboard, quindi mantieni i valori predefiniti a meno che non crei le tue immagini, vedi Limitazioni.
Configurazione iniziale
Su una nuova istanza (database vuoto), l'apertura della dashboard reindirizza alla pagina /init:
- Crea il primo account. Poiché la raccolta degli utenti è vuota, questo account viene automaticamente promosso a super admin.
- Viene inviata un'email di verifica tramite Resend o il relay SMTP. La verifica dell'email è obbligatoria, motivo per cui un gestore di posta deve essere configurato prima di iniziare.
- Fai clic sul link nell'email, quindi accedi.
Una volta che esiste un amministratore, /init reindirizza alla pagina di accesso standard.
Variabili di ambiente
Entrambe le modalità Docker leggono lo stesso file (intlayer.env per il container, .env per Compose), generato da docker/selfhost/.env.template.
Richieste
Apri la tabella in una finestra modale per visualizzare tutti i dati in modo chiaro
| Variable | Example | Description |
|---|---|---|
BETTER_AUTH_SECRET | (generated) | 32-byte secret for session signing |
S3_SECRET_ACCESS_KEY | (generated) | Secret for the bundled MinIO |
RESEND_API_KEY | (your key) | Transactional email via Resend. Required for first-run setup unless an SMTP relay is configured instead (see Global mailer) |
Fissate dal deployment
Queste sono impostate dall'immagine (all-in-one) o dal file compose, e vanno sovrascritte solo per una topologia non standard. DOMAIN, APP_URL, BACKEND_URL e S3_PUBLIC_URL sono l'eccezione: se impostate nel file env, hanno la precedenza in entrambe le modalità (vedi Dominio personalizzato).
Apri la tabella in una finestra modale per visualizzare tutti i dati in modo chiaro
| Variable | All-in-one | Docker Compose | Description |
|---|---|---|---|
PORT | 3100 | 3100 | Backend listening port |
APP_URL | http://localhost:3000 | http://localhost:3000 | Public URL of the dashboard |
BACKEND_URL | http://localhost:3100 | http://localhost:3100 | Public URL of the backend API |
DOMAIN | localhost | localhost | Cookie domain |
SELF_HOSTED | true | true | Disables the cloud-only API endpoints (billing, subscriptions, marketplace) |
MONGODB_URI | mongodb://127.0.0.1:27017/intlayer?replicaSet=rs0 | mongodb://mongo:27017/… | MongoDB connection string, any mongodb:// or mongodb+srv:// cluster works |
REDIS_URL | redis://127.0.0.1:6379 | redis://redis:6379 | Redis |
S3_ENDPOINT | http://127.0.0.1:9000 | http://minio:9000 | MinIO (server-to-server) |
S3_PUBLIC_URL | http://localhost:9000/intlayer | http://localhost:9000/intlayer | Public URL for browser asset loading |
S3_BUCKET_NAME | intlayer | intlayer | Bucket name |
S3_ACCESS_KEY_ID | intlayer | intlayer | MinIO access key |
Il servizio app di Compose riceve inoltre INTLAYER_BACKEND_INTERNAL_URL=http://backend:3100: il browser raggiunge l'API su localhost:3100, ma il rendering lato server viene eseguito all'interno della rete Compose e deve usare il nome del servizio.
Dominio personalizzato
Il backend legge i propri URL pubblici a runtime, ma la dashboard li ha compilati al suo interno: le immagini pubblicate intlayer/cms-frontend e intlayer/cms-all funzionano solo su http://localhost:3000. Servire Intlayer sul tuo dominio richiede quindi due cose, entrambe preparate dal programma di installazione quando rispondi alla domanda sul dominio:
Quattro variabili nel file env, lette dal backend (cookie, link nelle email, callback OAuth, URL delle risorse) e usate come argomenti di build da
docker-compose.build.yml:intlayer.envCopiare il codiceCopiare il codice nella clipboard
Un'immagine della dashboard compilata con quegli URL. Docker la compila direttamente dal repository, senza bisogno di un clone:
shCopiare il codiceCopiare il codice nella clipboard
Poi metti un reverse proxy con TLS davanti al container: cms.example.org → porta 3000, back.example.org → 3100, s3.example.org → 9000. I tre host devono condividere il suffisso DOMAIN, poiché il cookie di sessione è limitato a esso.
Opzionali (le funzionalità degradano dolcemente se assenti)
Apri la tabella in una finestra modale per visualizzare tutti i dati in modo chiaro
| Variable | Feature |
|---|---|
OPENAI_API_KEY | AI-assisted translation and content audit |
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 |
Mailer globale
Ogni email transazionale, comprese le email esterne all'organizzazione come reimpostazioni password e link magici, passa attraverso uno dei due trasporti globali:
- Resend, usando
RESEND_API_KEY. - SMTP, usando le variabili
MAIL_SMTP_*. Non appenaMAIL_SMTP_HOSTviene impostato, viene usato SMTP eRESEND_API_KEYviene ignorato.
MAIL_PROVIDER serve solo a forzare un trasporto quando entrambi sono configurati (ad esempio MAIL_PROVIDER=resend per mantenere Resend pur in presenza di un host SMTP).
Apri la tabella in una finestra modale per visualizzare tutti i dati in modo chiaro
| Variable | Example | Description |
|---|---|---|
MAIL_FROM | Intlayer <no-reply@acme.com> | Sender header for either transport. Accepts a bare address or Name <email> |
MAIL_SMTP_HOST | smtp.acme.com | SMTP host. Setting it selects the SMTP transport |
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 |
MAIL_PROVIDER | resend | Optional override: smtp or resend. Leave unset to auto-select |
Precedenza: il mailer di un'organizzazione (configurato dalla dashboard Organizzazione) ha la precedenza sul mailer globale, che a sua volta ha la precedenza sulla chiave predefinita di Resend.
Connettere il tuo progetto Intlayer
Una volta avviato lo stack, fai puntare il tuo progetto al backend e alla dashboard auto-ospitati invece di intlayer.org.
Configurazione del progetto
Copiare il codice nella clipboard
import type { IntlayerConfig } from "intlayer";
const config: IntlayerConfig = {
editor: {
clientId: process.env.INTLAYER_CLIENT_ID,
clientSecret: process.env.INTLAYER_CLIENT_SECRET,
/**
* URL of the self-hosted CMS dashboard.
* Default: https://app.intlayer.org
*/
cmsURL: process.env.INTLAYER_CMS_URL, // e.g. http://localhost:3000
/**
* URL of the self-hosted backend API.
* Default: https://back.intlayer.org
*/
backendURL: process.env.INTLAYER_BACKEND_URL, // e.g. http://localhost:3100
},
};
export default config;
Set the environment variables in your project's .env:
Copiare il codice nella clipboard
Crea credenziali di accesso nella dashboard auto-ospitata in Progetti → Chiavi di accesso all'indirizzo http://localhost:3000/projects.
SDK @intlayer/api
Quando si utilizza l'SDK @intlayer/api a livello di codice, passare backendURL in modo esplicito:
Copiare il codice nella clipboard
Limitazioni
- Un dominio personalizzato richiede una ricompilazione. Tutti gli URL
VITE_*visibili dal browser sono incorporati nella dashboard in fase di compilazione e le immagini pubblicate (nonché l'app desktop) vengono fornite con i valori dilocalhost/ Intlayer Cloud. Di default la dashboard deve essere accessibile suhttp://localhost:3000, l'API su:3100e MinIO su:9000; rimappare le porte dell'host ha lo stesso effetto. Il programma di installazione predispone tutto per una ricompilazione dal repository quando gli indichi un dominio (vedi Dominio personalizzato), ma la compilazione stessa richiede diversi minuti. Puntare l'app desktop a un backend auto-ospitato non è supportato. - La posta richiede un mailer funzionante. La configurazione iniziale impone la verifica dell'email, pertanto è necessario configurare
RESEND_API_KEYoppure un relay SMTP (MAIL_SMTP_*). Dopo l'accesso del primo amministratore, ciascuna organizzazione può configurare il proprio mailer SMTP o Resend dalla dashboard. - L'applicazione desktop richiede Node.js sulla macchina per avviare il relativo server incorporato.
- Nessun assistente per la documentazione. L'assistente IA per la documentazione di intlayer.org (
/api/ai/ask,/api/search/doc) si basa su circa 130 MB di embedding della documentazione precalcolati che le immagini self-hosted non includono; queste due route non vengono registrate in modalità self-hosted. Le funzionalità di IA proprie della dashboard (traduzione, audit, completamento automatico, chat) non sono interessate e richiedono soloOPENAI_API_KEY.
Link utili
- Documentazione Intlayer CMS
- Riferimento di configurazione
- SDK CMS:
@intlayer/api - Rilasci dell'applicazione desktop
- Docker Hub:
intlayer/cms-all,intlayer/cms-frontend,intlayer/cms-backend, con mirror su GHCR sottoghcr.io/aymericzip/intlayer/ docker/selfhost/: Dockerfile,docker-compose.ymle.env.template
