Autore:
    Creazione:2026-06-30Ultimo aggiornamento:2026-09-27

    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):

    SetupWhat it isPick it for
    Applicazione desktopDashboard nativa per macOS, Linux e WindowsUn client locale, nulla da ospitare
    Docker all-in-oneDashboard, API, MongoDB, Redis e MinIO in un singolo contenitoreTest e installazioni su singola macchina
    Docker ComposeUn contenitore per servizio, ogni archivio dati sostituibile con un'offerta gestitaProduzione, scalabilità, database gestiti

    Table of Contents

    Immagini e pacchetti pubblicati

    ArtifactDocker HubGHCR mirrorContents
    All-in-one containerintlayer/cms-allghcr.io/aymericzip/intlayer/cms-allapp + backend + MongoDB 8 + Redis + MinIO + Chromium
    Dashboard (frontend)intlayer/cms-frontendghcr.io/aymericzip/intlayer/cms-frontendTanStack Start dashboard on Bun
    API (backend)intlayer/cms-backendghcr.io/aymericzip/intlayer/cms-backendFastify REST API on Bun + Chromium
    Desktop appGitHub releasesn/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.

    sh
    curl -fsSL https://intlayer.org/install.sh | sh -s -- --mode desktop
    

    In PowerShell:

    powershell
    $env:INTLAYER_MODE = "desktop"; irm https://intlayer.org/install.ps1 | iex
    
    bash
    npx intlayer init infra --mode desktop
    

    Requisiti

    • Node.js: l'applicazione incorpora il server della dashboard e lo avvia con il binario node della 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.

    plaintext
                    ┌─────────────────────────────┐
     browser ──────▶ │  app  (TanStack Start)  :3000│ ──┐
     (localhost)    └─────────────────────────────┘   │ VITE_BACKEND_URL (baked at build)
                    ┌─────────────────────────────┐   │
                    │  backend (Fastify/Bun)  :3100│ ◀─┘
                    └──────────────┬──────────────┘
              ┌──────────┬─────────┼──────────────┐
              ▼          ▼         ▼               ▼
          mongo:27017  redis:6379  minio:9000   Chromium
          /data/mongo  /data/redis /data/minio  (in-image)
          (1-node RS)              minio:9001
    
    ServizioPorta/e hostScopo
    app3000Dashboard (interfaccia utente CMS)
    backend3100REST API (endpoint /health)
    mongointernoMongoDB 8, replica set a nodo singolo rs0
    redisinternoCode di lavoro (BullMQ) e memorizzazione nella cache
    minio9000 (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, 9000 e 9001 libere sull'host. MinIO 9000 deve rimanere raggiungibile dal browser, che carica le risorse direttamente da S3_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.

    sh
    curl -fsSL https://intlayer.org/install.sh | sh -s -- --mode docker
    

    In PowerShell:

    powershell
    $env:INTLAYER_MODE = "docker"; irm https://intlayer.org/install.ps1 | iex
    
    bash
    npx intlayer init infra --mode docker
    

    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 come example.org, suggerisce https://cms.example.org per la dashboard, https://back.example.org per l'API e https://s3.example.org/intlayer per l'object storage, e scrive DOMAIN, APP_URL, BACKEND_URL e S3_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):

    intlayer.env
    # Option A: Resend
    RESEND_API_KEY=<your-resend-key>
    
    # Option B: SMTP (takes over from Resend as soon as MAIL_SMTP_HOST is set)
    MAIL_SMTP_HOST=smtp.example.com
    MAIL_SMTP_PORT=587
    MAIL_SMTP_USER=<user>
    MAIL_SMTP_PASSWORD=<password>
    MAIL_FROM=Intlayer <no-reply@example.com>
    

    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):

    sh
    docker run -d --name intlayer \
      --restart unless-stopped \
      -p 3000:3000 -p 3100:3100 -p 9000:9000 -p 9001:9001 \
      -v intlayer-data:/data \
      --env-file ./intlayer.env \
      intlayer/cms-all:latest
    
    powershell
    docker run -d --name intlayer `
      --restart unless-stopped `
      -p 3000:3000 -p 3100:3100 -p 9000:9000 -p 9001:9001 `
      -v intlayer-data:/data `
      --env-file ./intlayer.env `
      intlayer/cms-all:latest
    

    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).

    sh
    # Backup (stop the container first so MongoDB's files are consistent)
    docker stop intlayer
    docker run --rm -v intlayer-data:/data -v "$(pwd)":/backup busybox tar czf /backup/intlayer-data.tar.gz /data
    docker start intlayer
    
    # Restore
    docker run --rm -v intlayer-data:/data -v "$(pwd)":/backup busybox tar xzf /backup/intlayer-data.tar.gz -C /
    

    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.

    plaintext
                    ┌───────────────────┐
     browser ──────▶ │  app        :3000 │ ── SSR ──▶ http://backend:3100
     (localhost)    └───────────────────┘
                    ┌───────────────────┐
     browser ──────▶ │  backend    :3100 │
     (localhost)    └─────────┬─────────┘
              ┌───────────────┼───────────────┐
              ▼               ▼               ▼
         mongo:27017     redis:6379      minio:9000 ◀── browser (assets)
         (1-node RS)                     minio:9001
    
    ServizioImmagineRuolo
    appintlayer/cms-frontendDashboard su :3000; attende che il backend sia integro
    backendintlayer/cms-backendAPI su :3100 con Chromium; attende Mongo, Redis e il bucket MinIO
    mongomongo:8Replica set a nodo singolo rs0, inizializzato dal proprio healthcheck
    redisredis:8-alpineCode e cache, persistenza append-only
    minioquay.io/minio/minioArchiviazione S3 su :9000, console su :9001
    minio-initquay.io/minio/mcAttività 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, 9000 e 9001 libere 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.

    sh
    curl -fsSL https://intlayer.org/install.sh | sh -s -- --mode compose
    

    Or by hand:

    sh
    mkdir intlayer && cd intlayer
    curl -fsSLO https://raw.githubusercontent.com/aymericzip/intlayer/main/docker/selfhost/docker-compose.yml
    curl -fsSL  https://raw.githubusercontent.com/aymericzip/intlayer/main/docker/selfhost/.env.template -o .env
    # fill in BETTER_AUTH_SECRET and S3_SECRET_ACCESS_KEY (openssl rand -hex 32)
    

    In PowerShell:

    powershell
    $env:INTLAYER_MODE = "compose"; irm https://intlayer.org/install.ps1 | iex
    

    Or by hand:

    powershell
    mkdir intlayer; cd intlayer
    irm https://raw.githubusercontent.com/aymericzip/intlayer/main/docker/selfhost/docker-compose.yml -OutFile docker-compose.yml
    irm https://raw.githubusercontent.com/aymericzip/intlayer/main/docker/selfhost/.env.template -OutFile .env
    # fill in BETTER_AUTH_SECRET and S3_SECRET_ACCESS_KEY
    
    bash
    npx intlayer init infra --mode compose
    

    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

    sh
    cd intlayer && docker compose up -d
    

    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:

    docker-compose.yml
    services:
      backend:
        environment:
          MONGODB_URI: mongodb+srv://user:password@cluster0.xxxxx.mongodb.net/intlayer
          REDIS_URL: rediss://default:password@redis.example.com:6380
          S3_ENDPOINT: https://s3.eu-west-1.amazonaws.com
          S3_PUBLIC_URL: https://intlayer-assets.s3.eu-west-1.amazonaws.com
    

    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:

    sh
    cd docker/selfhost
    docker compose -f docker-compose.yml -f docker-compose.build.yml up -d --build
    

    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

    sh
    # Backup one volume (repeat for intlayer_redis-data and intlayer_minio-data)
    docker compose stop
    docker run --rm -v intlayer_mongo-data:/data -v "$(pwd)":/backup busybox tar czf /backup/mongo-data.tar.gz /data
    docker compose start
    
    # Upgrade, volumes are kept
    docker compose pull && docker compose up -d
    

    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:

    sh
    curl -fsSL https://intlayer.org/install.sh | INTLAYER_COMPOSE_DIR=./cms sh -s -- --mode compose
    
    powershell
    $env:INTLAYER_MODE = "compose"; $env:INTLAYER_COMPOSE_DIR = ".\cms"; irm https://intlayer.org/install.ps1 | iex
    
    VariableDefaultApplies toDescription
    INTLAYER_MODE(asked)alldesktop, docker or compose, same as --mode
    INTLAYER_DOWNLOAD_DIR~/DownloadsdesktopWhere the app installer is saved
    INTLAYER_IMAGEintlayer/cms-all:latestdockerAll-in-one image to pull
    INTLAYER_ENV_FILE./intlayer.envdockerWhere to write the environment file
    INTLAYER_CONTAINER_NAMEintlayerdockerContainer name
    INTLAYER_DATA_VOLUMEintlayer-datadockerNamed volume mounted at /data
    INTLAYER_APP_PORT3000dockerHost port for the dashboard
    INTLAYER_API_PORT3100dockerHost port for the API
    INTLAYER_S3_PORT9000dockerHost port for the MinIO S3 API
    INTLAYER_CONSOLE_PORT9001dockerHost port for the MinIO console
    INTLAYER_COMPOSE_DIR./intlayercomposeWhere docker-compose.yml and .env are written
    INTLAYER_SELFHOST_REFmainbothGit ref the compose file and env template are fetched from
    INTLAYER_BUILD_CONTEXT…/intlayer.git#mainbothBuild context used when a custom domain requires a rebuild
    INTLAYER_CUSTOM_IMAGEintlayer/cms-all:customdockerTag 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 includono http://localhost:3000, http://localhost:3100 e http://localhost:9000 compilati 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:

    1. Crea il primo account. Poiché la raccolta degli utenti è vuota, questo account viene automaticamente promosso a super admin.
    2. 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.
    3. 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

    VariableExampleDescription
    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).

    VariableAll-in-oneDocker ComposeDescription
    PORT31003100Backend listening port
    APP_URLhttp://localhost:3000http://localhost:3000Public URL of the dashboard
    BACKEND_URLhttp://localhost:3100http://localhost:3100Public URL of the backend API
    DOMAINlocalhostlocalhostCookie domain
    SELF_HOSTEDtruetrueDisables the cloud-only API endpoints (billing, subscriptions, marketplace)
    MONGODB_URImongodb://127.0.0.1:27017/intlayer?replicaSet=rs0mongodb://mongo:27017/…MongoDB connection string, any mongodb:// or mongodb+srv:// cluster works
    REDIS_URLredis://127.0.0.1:6379redis://redis:6379Redis
    S3_ENDPOINThttp://127.0.0.1:9000http://minio:9000MinIO (server-to-server)
    S3_PUBLIC_URLhttp://localhost:9000/intlayerhttp://localhost:9000/intlayerPublic URL for browser asset loading
    S3_BUCKET_NAMEintlayerintlayerBucket name
    S3_ACCESS_KEY_IDintlayerintlayerMinIO 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:

    1. 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.env
      DOMAIN=example.org                          # cookie domain, parent of the hosts below
      APP_URL=https://cms.example.org
      BACKEND_URL=https://back.example.org
      S3_PUBLIC_URL=https://s3.example.org/intlayer
      
    2. Un'immagine della dashboard compilata con quegli URL. Docker la compila direttamente dal repository, senza bisogno di un clone:

      sh
      # Docker Compose: the override reads the build args from .env
      docker compose -f docker-compose.yml -f docker-compose.build.yml up -d --build
      
      # All-in-one
      docker build -f docker/selfhost/Dockerfile \
        --build-arg VITE_DOMAIN=example.org \
        --build-arg VITE_SITE_URL=https://cms.example.org \
        --build-arg VITE_IDE_URL=https://cms.example.org \
        --build-arg VITE_BACKEND_URL=https://back.example.org \
        -t intlayer/cms-all:custom \
        https://github.com/aymericzip/intlayer.git#main
      

    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)

    VariableFeature
    OPENAI_API_KEYAI-assisted translation and content audit
    GITHUB_CLIENT_ID, GITHUB_CLIENT_SECRETGitHub OAuth login
    GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRETGoogle OAuth login
    GITLAB_CLIENT_ID, GITLAB_CLIENT_SECRETGitLab OAuth login
    MICROSOFT_CLIENT_ID, MICROSOFT_CLIENT_SECRETMicrosoft 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 appena MAIL_SMTP_HOST viene impostato, viene usato SMTP e RESEND_API_KEY viene 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).

    VariableExampleDescription
    MAIL_FROMIntlayer <no-reply@acme.com>Sender header for either transport. Accepts a bare address or Name <email>
    MAIL_SMTP_HOSTsmtp.acme.comSMTP host. Setting it selects the SMTP transport
    MAIL_SMTP_PORT587SMTP port (defaults to 587)
    MAIL_SMTP_SECUREfalseImplicit 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_PROVIDERresendOptional 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

    intlayer.config.ts
    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:

    sh
    INTLAYER_CMS_URL=http://localhost:3000
    INTLAYER_BACKEND_URL=http://localhost:3100
    INTLAYER_CLIENT_ID=<your-client-id>
    INTLAYER_CLIENT_SECRET=<your-client-secret>
    

    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:

    cms.ts
    import { createIntlayerCMS } from "@intlayer/api";
    import { dictionaryEndpoint } from "@intlayer/api/dictionary";
    
    const cms = createIntlayerCMS({
      editor: {
        clientId: process.env.INTLAYER_CLIENT_ID,
        clientSecret: process.env.INTLAYER_CLIENT_SECRET,
        backendURL: process.env.INTLAYER_BACKEND_URL, // http://localhost:3100
      },
    });
    
    const { data: dictionaries } = await dictionaryEndpoint(cms).getDictionaries();
    

    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 di localhost / Intlayer Cloud. Di default la dashboard deve essere accessibile su http://localhost:3000, l'API su :3100 e 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_KEY oppure 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 solo OPENAI_API_KEY.