Auteur:
    Création:2026-06-30Dernière mise à jour:2026-09-27

    Auto-hébergement d'Intlayer

    Intlayer peut fonctionner sur votre propre infrastructure, aucun compte Intlayer Cloud requis. Trois configurations sont disponibles, toutes gérées par le même installateur (install.sh, install.ps1 sur Windows ou npx intlayer init infra) :

    ConfigurationCe que c'estQuand la choisir
    Application de bureauTableau de bord natif pour macOS, Linux et WindowsUn client local, rien à héberger
    Docker tout-en-unTableau de bord, API, MongoDB, Redis et MinIO dans un seul conteneurEssais et petites installations uniques
    Docker ComposeUn conteneur par service, chaque magasin de données remplaçable par une offre géréeProduction, montée en charge, bases managées

    Table des matières

    Images et paquets publiés

    ArtefactDocker HubMiroir GHCRContenu
    Conteneur tout-en-unintlayer/cms-allghcr.io/aymericzip/intlayer/cms-allapp + backend + MongoDB 8 + Redis + MinIO + Chromium
    Tableau de bord (frontend)intlayer/cms-frontendghcr.io/aymericzip/intlayer/cms-frontendTableau de bord TanStack Start sur Bun
    API (backend)intlayer/cms-backendghcr.io/aymericzip/intlayer/cms-backendAPI REST Fastify sur Bun + Chromium
    Application de bureauReleases GitHubn/a.dmg (macOS), .deb / .rpm / .AppImage (Linux), .exe / .msi (Windows)

    Les trois images sont construites à partir du même docker/selfhost/Dockerfile et publiées à chaque version. La stack Compose télécharge également les images officielles mongo:8, redis:8-alpine et quay.io/minio/minio.

    Configuration

    L'installateur vous demande quelle configuration vous souhaitez, vérifie les prérequis (en proposant d'installer Docker), écrit le fichier d'environnement avec les secrets déjà générés et télécharge les images. Il ne démarre rien de lui-même : les modes Docker nécessitent d'abord un service d'e-mail, il termine donc en affichant la commande à exécuter. Le réexécuter est sans danger : un fichier d'environnement existant n'est jamais écrasé, ce qui en fait également le moyen de mise à niveau.

    Le tableau de bord Intlayer sous forme d'application native, conçu avec Tauri. Il se connecte à Intlayer Cloud (https://app.intlayer.org), il n'y a donc rien à héberger. C'est le bon choix lorsque vous préférez un client local plutôt qu'un onglet de navigateur.

    Installation

    L'installateur télécharge le paquet pour votre système d'exploitation et votre processeur, puis l'ouvre (macOS), l'installe (dpkg / rpm sous Linux) ou lance l'assistant d'installation (Windows). Vous pouvez également le télécharger manuellement depuis la page des releases.

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

    Dans PowerShell :

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

    Prérequis

    • Node.js : l'application intègre le serveur du tableau de bord et le démarre avec le binaire node de la machine. Installez-le depuis nodejs.org si l'application ne démarre pas.
    La version publiée pour ordinateur communique avec le backend Intlayer Cloud. La pointer vers un backend auto-hébergé nécessite de reconstruire l'application avec VITE_BACKEND_URL configuré sur votre API, voir Limitations.

    Tout s'exécute à l'intérieur du conteneur unique intlayer/cms-all, supervisé par s6-overlay, avec chaque magasin de données persisté sous un seul 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
    
    ServicePort(s) hôteRôle
    app3000Tableau de bord (interface utilisateur CMS)
    backend3100API REST (point de terminaison /health)
    mongointerneMongoDB 8, ensemble de réplicas à nœud unique rs0
    redisinterneFiles d'attente de tâches (BullMQ) et mise en cache
    minio9000 (S3), 9001 (console)Stockage d'objets compatible S3 pour avatars et captures

    L'ordre de démarrage est géré par les dépendances s6 (mongod → init replica-set, minio → création du bucket, puis backend, puis app), et les services redémarrent en cas d'arrêt, de sorte que le premier démarrage récupère tout seul.

    Prérequis

    • Docker ≥ 24 : l'installateur propose de l'installer (via get.docker.com sous Linux, Homebrew sur macOS). Sous Windows, installez d'abord Docker Desktop (backend WSL 2).
    • Ports 3000, 3100, 9000 et 9001 libres sur l'hôte. MinIO 9000 doit rester accessible par le navigateur, qui charge les ressources directement depuis S3_PUBLIC_URL.
    • Un service d'envoi d'e-mails : une clé API Resend ou un relais SMTP.

    1. Installation

    Écrit ./intlayer.env avec BETTER_AUTH_SECRET et S3_SECRET_ACCESS_KEY générés, pose quelques questions pour renseigner le reste, et télécharge intlayer/cms-all:latest.

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

    Dans PowerShell :

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

    2. Répondre aux questions de configuration

    L'installateur demande (appuyez sur Entrée pour accepter une suggestion, chaque réponse peut être modifiée dans le fichier par la suite) :

    • Le domaine sur lequel Intlayer est servi. Laissez-le vide pour rester sur localhost. Avec un domaine tel que example.org, il suggère https://cms.example.org pour le tableau de bord, https://back.example.org pour l'API et https://s3.example.org/intlayer pour le stockage objet, et écrit DOMAIN, APP_URL, BACKEND_URL et S3_PUBLIC_URL. Voir Domaine personnalisé pour la suite.
    • Le service d'e-mail : Resend (clé API) ou un relais SMTP (hôte, port, identifiants), ainsi que l'adresse d'expédition. Cette étape peut être ignorée et faite à la main plus tard.
    • Une clé API OpenAI optionnelle pour les fonctionnalités d'IA.

    Sans terminal (par exemple lorsque le script est exécuté depuis la CI), les questions sont ignorées et seuls les secrets sont générés. Ouvrez intlayer.env et renseignez Resend ou SMTP à la main (détails dans Service d'e-mail global) :

    intlayer.env
    # Option A : Resend
    RESEND_API_KEY=<votre-clé-resend>
    
    # Option B : SMTP (prend le relais dès que MAIL_SMTP_HOST est défini)
    MAIL_SMTP_HOST=smtp.example.com
    MAIL_SMTP_PORT=587
    MAIL_SMTP_USER=<utilisateur>
    MAIL_SMTP_PASSWORD=<mot-de-passe>
    MAIL_FROM=Intlayer <no-reply@example.com>
    

    3. Démarrer

    Voici la commande affichée par l'installateur (avec un domaine personnalisé, elle est précédée du docker build qui produit intlayer/cms-all:custom, voir Domaine personnalisé) :

    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
    

    Le CLI exécute l'installateur, qui affiche la commande docker run … montrée dans les autres onglets. Copiez-la dans votre terminal une fois le service de messagerie configuré.

    Ouvrez http://localhost:3000 (ou l'URL de votre tableau de bord) et suivez la Configuration initiale. Le premier démarrage initialise l'ensemble de réplicas et le bucket, laissez-lui une minute.

    Sauvegarde et mise à niveau

    Tout l'état réside dans le volume intlayer-data (/data/mongo, /data/redis, /data/minio).

    sh
    # Sauvegarde (arrêtez d'abord le conteneur pour que les fichiers de MongoDB soient cohérents)
    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
    
    # Restauration
    docker run --rm -v intlayer-data:/data -v "$(pwd)":/backup busybox tar xzf /backup/intlayer-data.tar.gz -C /
    

    Pour mettre à niveau, réexécutez l'installateur (il télécharge la dernière image et conserve intlayer.env), puis faites docker rm -f intlayer et relancez la commande de démarrage. Pour utiliser une base MongoDB gérée à la place de celle intégrée, définissez MONGODB_URI dans intlayer.env.

    Un conteneur par service sur un réseau privé Compose. Le tableau de bord et l'API utilisent les images publiées intlayer/cms-frontend et intlayer/cms-backend ; les magasins de données utilisent les images officielles mongo, redis et 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
    
    ServiceImageRôle
    appintlayer/cms-frontendTableau de bord sur :3000 ; attend que le backend soit sain
    backendintlayer/cms-backendAPI sur :3100 avec Chromium ; attend Mongo, Redis et le bucket MinIO
    mongomongo:8Ensemble de réplicas à nœud unique rs0, initialisé par son propre healthcheck
    redisredis:8-alpineFiles d'attente et cache, persistance append-only
    minioquay.io/minio/minioStockage S3 sur :9000, console sur :9001
    minio-initquay.io/minio/mcTâche ponctuelle : crée le bucket et sa stratégie de téléchargement anonyme

    Les données sont conservées dans les volumes intlayer_mongo-data, intlayer_redis-data et intlayer_minio-data. Le câblage des services (MONGODB_URI, REDIS_URL, S3_ENDPOINT, l'URL interne du backend utilisée par le rendu côté serveur) est fixé dans le fichier compose et prévaut sur .env, qui ne contient que les secrets et intégrations optionnelles.

    Prérequis

    • Docker ≥ 24 avec le plugin Compose : l'installateur propose de l'installer sous Linux et macOS. Sous Windows, installez d'abord Docker Desktop (backend WSL 2).
    • Ports 3000, 3100, 9000 et 9001 libres sur l'hôte.
    • Un service d'envoi d'e-mails : une clé API Resend ou un relais SMTP.

    1. Installation

    Écrit docker-compose.yml et un .env avec les secrets générés dans ./intlayer/, pose les mêmes questions de configuration que le mode tout-en-un (domaine, service d'e-mail, clé OpenAI), et télécharge les images.

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

    Ou manuellement :

    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
    # renseignez BETTER_AUTH_SECRET et S3_SECRET_ACCESS_KEY (openssl rand -hex 32)
    

    Dans PowerShell :

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

    Ou manuellement :

    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
    # renseignez BETTER_AUTH_SECRET et S3_SECRET_ACCESS_KEY
    
    bash
    npx intlayer init infra --mode compose
    

    2. Configurer un service d'e-mail

    Si vous avez ignoré la question sur le service d'e-mail, renseignez Resend ou SMTP dans intlayer/.env, exactement comme pour le conteneur tout-en-un (voir Service d'e-mail global).

    3. Démarrer

    sh
    cd intlayer && docker compose up -d
    

    Avec un domaine personnalisé, l'installateur télécharge également docker-compose.build.yml et la commande de démarrage devient docker compose -f docker-compose.yml -f docker-compose.build.yml up -d --build (voir Domaine personnalisé).

    Ouvrez http://localhost:3000 (ou l'URL de votre tableau de bord) et suivez la Configuration initiale.

    Magasins de données managés

    Supprimez le service que vous remplacez du fichier compose (ainsi que son entrée dans depends_on pour backend), puis surchargez la variable correspondante :

    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 conservent leur signification avec n'importe quel fournisseur compatible S3.

    Montée en charge

    app et backend sont sans état (stateless). Derrière un équilibreur de charge, docker compose up -d --scale backend=3 fonctionne une fois que les mappages de ports fixes de l'hôte sont supprimés et que le proxy s'adresse aux services par leur nom. Les tâches en arrière-plan sont coordonnées via Redis (BullMQ), de sorte que plusieurs répliques de backend partagent la file d'attente en toute sécurité.

    Compilation depuis les sources

    Une surcharge remplace image: par build: pour les deux services Intlayer. Depuis un clone du dépôt :

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

    Sans clone, faites pointer le contexte de build directement sur le dépôt en définissant INTLAYER_BUILD_CONTEXT=https://github.com/aymericzip/intlayer.git#main dans .env. Les arguments de build VITE_* du tableau de bord suivent DOMAIN, APP_URL et BACKEND_URL du même fichier, et c'est ainsi qu'un domaine personnalisé est appliqué.

    Sauvegarde et mise à niveau

    sh
    # Sauvegarder un volume (répéter pour intlayer_redis-data et 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
    
    # Mise à niveau, les volumes sont conservés
    docker compose pull && docker compose up -d
    

    Paramètres de l'installateur

    Sans --mode (ou INTLAYER_MODE), l'installateur affiche un menu : desktop, docker (tout-en-un) ou compose. Il lit également quelques variables d'environnement. Comme il est transmis dans le shell via un pipe, passez-les au shell plutôt qu'à 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
    
    VariableDéfautS'applique àDescription
    INTLAYER_MODE(demandé)tousdesktop, docker ou compose, identique à --mode
    INTLAYER_DOWNLOAD_DIR~/DownloadsdesktopOù l'installateur de l'application est enregistré
    INTLAYER_IMAGEintlayer/cms-all:latestdockerImage tout-en-un à télécharger
    INTLAYER_ENV_FILE./intlayer.envdockerOù écrire le fichier d'environnement
    INTLAYER_CONTAINER_NAMEintlayerdockerNom du conteneur
    INTLAYER_DATA_VOLUMEintlayer-datadockerVolume nommé monté sur /data
    INTLAYER_APP_PORT3000dockerPort hôte pour le tableau de bord
    INTLAYER_API_PORT3100dockerPort hôte pour l'API
    INTLAYER_S3_PORT9000dockerPort hôte pour l'API S3 MinIO
    INTLAYER_CONSOLE_PORT9001dockerPort hôte pour la console MinIO
    INTLAYER_COMPOSE_DIR./intlayercomposeOù docker-compose.yml et .env sont écrits
    INTLAYER_SELFHOST_REFmainles deuxRéférence Git d'où sont récupérés le fichier compose et le modèle env
    INTLAYER_BUILD_CONTEXT…/intlayer.git#mainles deuxContexte de build utilisé lorsqu'un domaine personnalisé impose une reconstruction
    INTLAYER_CUSTOM_IMAGEintlayer/cms-all:customdockerTag de l'image tout-en-un construite pour un domaine personnalisé
    Les variables de port ne modifient que le côté hôte du mappage. Les images publiées intègrent http://localhost:3000, http://localhost:3100 et http://localhost:9000 compilés dans le bundle du tableau de bord, conservez donc les valeurs par défaut à moins de construire vos propres images, voir Limitations.

    Configuration initiale

    Sur une nouvelle instance (base de données vide), l'ouverture du tableau de bord vous redirige vers la page /init :

    1. Créez le premier compte. La collection des utilisateurs étant vide, ce compte est automatiquement promu super administrateur.
    2. Un e-mail de vérification est envoyé via Resend ou votre relais SMTP. La vérification de l'e-mail est obligatoire, c'est pourquoi un service de messagerie doit être configuré avant de démarrer.
    3. Cliquez sur le lien dans l'e-mail, puis connectez-vous.

    Une fois qu'un administrateur existe, /init redirige vers la page de connexion standard.

    Variables d'environnement

    Les deux modes Docker lisent le même fichier (intlayer.env pour le conteneur, .env pour Compose), généré à partir de docker/selfhost/.env.template.

    Obligatoires

    VariableExempleDescription
    BETTER_AUTH_SECRET(généré)Secret de 32 octets pour la signature des sessions
    S3_SECRET_ACCESS_KEY(généré)Secret pour l'instance MinIO intégrée
    RESEND_API_KEY(votre clé)E-mails transactionnels via Resend. Requis pour la configuration initiale à moins qu'un relais SMTP ne soit configuré (voir Service d'e-mail global)

    Fixées par le déploiement

    Celles-ci sont définies par l'image (tout-en-un) ou par le fichier compose, et ne nécessitent d'être surchargées que pour une topologie personnalisée. DOMAIN, APP_URL, BACKEND_URL et S3_PUBLIC_URL font exception : définies dans le fichier env, elles prévalent dans les deux modes (voir Domaine personnalisé).

    VariableTout-en-unDocker ComposeDescription
    PORT31003100Port d'écoute du backend
    APP_URLhttp://localhost:3000http://localhost:3000URL publique du tableau de bord
    BACKEND_URLhttp://localhost:3100http://localhost:3100URL publique de l'API backend
    DOMAINlocalhostlocalhostDomaine du cookie
    SELF_HOSTEDtruetrueDésactive les points de terminaison API cloud uniquement (facturation, abonnements, marketplace)
    MONGODB_URImongodb://127.0.0.1:27017/intlayer?replicaSet=rs0mongodb://mongo:27017/…Chaîne de connexion MongoDB, tout cluster mongodb:// ou mongodb+srv:// fonctionne
    REDIS_URLredis://127.0.0.1:6379redis://redis:6379Redis
    S3_ENDPOINThttp://127.0.0.1:9000http://minio:9000MinIO (serveur à serveur)
    S3_PUBLIC_URLhttp://localhost:9000/intlayerhttp://localhost:9000/intlayerURL publique pour le chargement des ressources dans le navigateur
    S3_BUCKET_NAMEintlayerintlayerNom du bucket
    S3_ACCESS_KEY_IDintlayerintlayerClé d'accès MinIO

    Le service app de Compose reçoit en plus INTLAYER_BACKEND_INTERNAL_URL=http://backend:3100 : le navigateur accède à l'API sur localhost:3100, mais le rendu côté serveur s'exécute à l'intérieur du réseau Compose et doit utiliser le nom du service.

    Domaine personnalisé

    Le backend lit ses URL publiques à l'exécution, mais le tableau de bord les a compilées en dur : les images publiées intlayer/cms-frontend et intlayer/cms-all ne fonctionnent que sur http://localhost:3000. Servir Intlayer sur votre propre domaine demande donc deux choses, toutes deux préparées par l'installateur lorsque vous répondez à la question du domaine :

    1. Quatre variables dans le fichier env, lues par le backend (cookies, liens des e-mails, callbacks OAuth, URL des ressources) et utilisées comme arguments de build par docker-compose.build.yml :

      intlayer.env
      DOMAIN=example.org                          # domaine du cookie, parent des hôtes ci-dessous
      APP_URL=https://cms.example.org
      BACKEND_URL=https://back.example.org
      S3_PUBLIC_URL=https://s3.example.org/intlayer
      
    2. Une image du tableau de bord construite avec ces URL. Docker la construit directement depuis le dépôt, sans clone nécessaire :

      sh
      # Docker Compose : la surcharge lit les arguments de build depuis .env
      docker compose -f docker-compose.yml -f docker-compose.build.yml up -d --build
      
      # Tout-en-un
      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
      

    Placez ensuite un reverse proxy avec TLS devant le conteneur : cms.example.org → port 3000, back.example.org → 3100, s3.example.org → 9000. Les trois hôtes doivent partager le suffixe DOMAIN, puisque le cookie de session y est limité.

    Optionnelles (les fonctionnalités se dégradent en douceur en leur absence)

    VariableFonctionnalité
    OPENAI_API_KEYTraduction assistée par IA et audit de contenu
    GITHUB_CLIENT_ID, GITHUB_CLIENT_SECRETConnexion OAuth GitHub
    GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRETConnexion OAuth Google
    GITLAB_CLIENT_ID, GITLAB_CLIENT_SECRETConnexion OAuth GitLab
    MICROSOFT_CLIENT_ID, MICROSOFT_CLIENT_SECRETConnexion OAuth Microsoft

    Service d'e-mail global

    Chaque e-mail transactionnel, y compris les e-mails hors organisation tels que les réinitialisations de mot de passe et liens magiques, passe par l'un des deux transports globaux :

    • Resend, en utilisant RESEND_API_KEY.
    • SMTP, en utilisant les variables MAIL_SMTP_*. Dès que MAIL_SMTP_HOST est défini, SMTP est utilisé et RESEND_API_KEY est ignoré.

    MAIL_PROVIDER n'est nécessaire que pour forcer un transport lorsque les deux sont configurés (par exemple MAIL_PROVIDER=resend pour conserver Resend alors qu'un hôte SMTP est présent).

    VariableExempleDescription
    MAIL_FROMIntlayer <no-reply@acme.com>En-tête d'expéditeur pour les deux transports. Accepte une adresse simple ou Nom <email>
    MAIL_SMTP_HOSTsmtp.acme.comHôte SMTP. Le définir sélectionne le transport SMTP
    MAIL_SMTP_PORT587Port SMTP (par défaut 587)
    MAIL_SMTP_SECUREfalseTLS implicite. Définir sur true pour le port 465
    MAIL_SMTP_USER(votre utilisateur)Nom d'utilisateur SMTP (optionnel ; omettre pour les relais non authentifiés)
    MAIL_SMTP_PASSWORD(votre mot de passe)Mot de passe SMTP
    MAIL_PROVIDERresendRemplacement optionnel : smtp ou resend. Laisser vide pour la sélection automatique
    Priorité : le service d'e-mail propre à une organisation (configuré depuis le tableau de bord de l'Organisation) a la priorité sur le service global, qui lui-même a la priorité sur la clé Resend par défaut.

    Connecter votre projet Intlayer

    Une fois la stack lancée, faites pointer votre projet vers le backend et le tableau de bord auto-hébergés plutôt que intlayer.org.

    Configuration du projet

    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 du tableau de bord CMS auto-hébergé.
         * Par défaut : https://app.intlayer.org
         */
        cmsURL: process.env.INTLAYER_CMS_URL, // ex. http://localhost:3000
    
        /**
         * URL de l'API backend auto-hébergée.
         * Par défaut : https://back.intlayer.org
         */
        backendURL: process.env.INTLAYER_BACKEND_URL, // ex. http://localhost:3100
      },
    };
    
    export default config;
    

    Définissez les variables d'environnement dans le fichier .env de votre projet :

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

    Créez des identifiants d'accès dans votre tableau de bord auto-hébergé sous Projets → Clés d'accès à l'adresse http://localhost:3000/projects.

    SDK @intlayer/api

    Lorsque vous utilisez le SDK @intlayer/api par programmation, passez backendURL explicitement :

    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();
    

    Limitations

    • Un domaine personnalisé implique une reconstruction. Toutes les URL VITE_* destinées au navigateur sont intégrées au tableau de bord lors de la construction, et les images publiées (ainsi que l'application de bureau) sont fournies avec les valeurs localhost / Intlayer Cloud. Par défaut, le tableau de bord doit être accessible sur http://localhost:3000, l'API sur :3100 et MinIO sur :9000 ; remapper les ports de l'hôte a le même effet. L'installateur prépare tout pour une reconstruction depuis le dépôt lorsque vous lui indiquez un domaine (voir Domaine personnalisé), mais la construction elle-même prend plusieurs minutes. Faire pointer l'application de bureau vers un backend auto-hébergé n'est pas pris en charge.
    • Les e-mails nécessitent un service de messagerie fonctionnel. La configuration initiale impose la vérification par e-mail, de sorte que soit RESEND_API_KEY, soit un relais SMTP (MAIL_SMTP_*) doit être configuré. Une fois le premier administrateur connecté, chaque organisation peut également configurer son propre service SMTP ou Resend depuis le tableau de bord.
    • L'application de bureau nécessite Node.js sur la machine pour démarrer son serveur intégré.
    • Pas d'assistant de documentation. L'assistant IA de documentation d'intlayer.org (/api/ai/ask, /api/search/doc) repose sur environ 130 Mo d'embeddings de documentation pré-calculés que les images auto-hébergées n'embarquent pas ; ces deux routes ne sont pas enregistrées en mode auto-hébergé. Les fonctionnalités d'IA propres au tableau de bord (traduction, audit, autocomplétion, chat) ne sont pas affectées et nécessitent uniquement OPENAI_API_KEY.

    Liens utiles