Автор:
    Дата створення:2026-06-30Останнє оновлення:2026-10-08

    Власний хостинг Intlayer

    Intlayer може працювати на вашій власній інфраструктурі без необхідності створювати обліковий запис Intlayer Cloud. Доступні три конфігурації, які встановлюються одним інсталятором (install.sh, install.ps1 на Windows або npx intlayer init infra):

    КонфігураціяЩо це такеДля чого обрати
    Десктопний застосунокНативна панель керування для macOS, Linux та WindowsЛокальний клієнт, нічого не потрібно хостити
    All-in-one DockerПанель керування, API, MongoDB, Redis та MinIO в одному контейнеріПробні та невеликі локальні інсталяції
    Docker ComposeОдин контейнер на сервіс, кожне сховище можна замінити керованою базою данихПродакшн, масштабування, керовані бази даних

    Table of Contents

    Опубліковані образи та пакети

    АртефактDocker HubДзеркало GHCRВміст
    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)

    Усі три образи створюються з одного docker/selfhost/Dockerfile і публікуються з кожним релізом. Стек Compose також завантажує офіційні образи mongo:8, redis:8-alpine та quay.io/minio/minio.

    Налаштування

    Інсталятор запитує бажану конфігурацію, перевіряє вимоги (пропонуючи встановити Docker), записує файл середовища зі згенерованими секретами та завантажує образи. Він нічого не запускає самостійно: режимам Docker спочатку потрібен поштовий сервіс, тому в кінці виводиться команда для запуску. Повторний запуск безпечний: наявний файл середовища ніколи не перезаписується, що робить його також шляхом оновлення.

    Панель керування Intlayer як нативний застосунок, створений на Tauri. Вона підключається до Intlayer Cloud (https://app.intlayer.org), тому нічого не потрібно хостити. Це правильний вибір, коли потрібен локальний клієнт замість вкладки браузера.

    Встановлення

    Інсталятор завантажує пакет для вашої ОС та процесора, а потім відкриває його (macOS), встановлює (dpkg / rpm на Linux) або запускає майстер встановлення (Windows). Ви також можете завантажити його вручну зі сторінки релізів.

    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
    

    Вимоги

    • Node.js: застосунок містить сервер панелі керування і запускає його системним бінарним файлом node. Встановіть його з nodejs.org, якщо застосунок не запускається.
    Опублікована збірка взаємодіє з бекендом Intlayer Cloud. Підключення до власного бекенду вимагає перебудови застосунку з VITE_BACKEND_URL, спрямованим на ваш API, див. Обмеження.

    Усе працює всередині єдиного контейнера intlayer/cms-all під керуванням s6-overlay, а кожне сховище зберігається в одному томі даних.

    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
    
    СервісПорт(и) хостаПризначення
    app3000Панель керування (інтерфейс CMS)
    backend3100REST API (ендпоінт /health)
    mongoвнутрішнійMongoDB 8, набір реплік з одного вузла rs0
    redisвнутрішнійЧерги завдань (BullMQ) та кешування
    minio9000 (S3), 9001 (консоль)S3-сумісне сховище об'єктів для аватарів і скріншотів

    Порядок запуску визначається залежностями s6 (mongod → ініціалізація replica-set, minio → створення бакета, далі backend, далі app), а сервіси перезапускаються при виході, тому перший запуск відновлюється автоматично.

    Попередні вимоги

    • Docker ≥ 24: інсталятор пропонує встановити його (через get.docker.com на Linux, Homebrew на macOS). На Windows спершу встановіть Docker Desktop (бекенд WSL 2).
    • Вільні порти 3000, 3100, 9000 та 9001 на хості. MinIO 9000 має залишатися доступним для браузера, який завантажує ресурси прямо з S3_PUBLIC_URL.
    • Поштовий сервіс: API-ключ Resend або реле SMTP.

    1. Встановлення

    Записує ./intlayer.env зі згенерованими BETTER_AUTH_SECRET та S3_SECRET_ACCESS_KEY, ставить кілька запитань, щоб заповнити решту, і завантажує 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. Відповіді на запитання налаштування

    Інсталятор запитує (натисніть Enter, щоб прийняти запропоноване значення; будь-яку відповідь можна згодом змінити у файлі):

    • Домен, на якому працює Intlayer. Залиште поле порожнім, щоб залишитися на localhost. Для домену на кшталт example.org він пропонує https://cms.example.org для панелі керування, https://back.example.org для API та https://s3.example.org/intlayer для об'єктного сховища і записує DOMAIN, APP_URL, BACKEND_URL та S3_PUBLIC_URL. Подальші кроки описано в розділі Власний домен.
    • Поштовий сервіс: Resend (API-ключ) або SMTP-релей (хост, порт, облікові дані), а також адреса відправника. Цей крок можна пропустити та виконати вручну пізніше.
    • Необов'язковий API-ключ OpenAI для функцій ШІ.

    Без терміналу (наприклад, коли скрипт запускається з CI) запитання пропускаються і генеруються лише секрети. Відкрийте intlayer.env і вручну вкажіть Resend або SMTP (детальніше у розділі Глобальний поштовий сервіс):

    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. Запуск

    Це команда, яку виводить інсталятор (з власним доменом їй передує docker build, який створює intlayer/cms-all:custom, див. Власний домен):

    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
    

    CLI запускає інсталятор, який виводить команду docker run …, показану на інших вкладках. Скопіюйте її в термінал після налаштування пошти.

    Відкрийте http://localhost:3000 (або URL вашої панелі керування) та виконайте кроки Першого запуску. Перший запуск ініціалізує набір реплік та бакет, зачекайте хвилину.

    Резервне копіювання та оновлення

    Усі дані зберігаються в томі 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 /
    

    Для оновлення повторно запустіть інсталятор (він завантажить найновіший образ і збереже intlayer.env), потім виконайте docker rm -f intlayer і запустіть команду старту знову. Щоб використовувати керовану MongoDB замість інтегрованої, задайте MONGODB_URI в intlayer.env.

    Один контейнер на сервіс у приватній мережі Compose. Панель керування та API використовують опубліковані образи intlayer/cms-frontend та intlayer/cms-backend; сховища даних використовують офіційні образи mongo, redis та 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
    
    СервісОбразРоль
    appintlayer/cms-frontendПанель керування на :3000; очікує готовності бекенда
    backendintlayer/cms-backendAPI на :3100 з Chromium; очікує Mongo, Redis та бакет MinIO
    mongomongo:8Набір реплік з одного вузла rs0, ініціалізований власним healthcheck
    redisredis:8-alpineЧерги та кешування, збереження append-only
    minioquay.io/minio/minioСховище S3 на :9000, консоль на :9001
    minio-initquay.io/minio/mcОдноразовий запуск: створює бакет і політику анонімного завантаження

    Дані зберігаються в томах intlayer_mongo-data, intlayer_redis-data та intlayer_minio-data. З'єднання сервісів (MONGODB_URI, REDIS_URL, S3_ENDPOINT, внутрішня URL-адреса бекенда для SSR) зафіксовано у файлі compose і має перевагу над .env, що містить лише секрети та додаткові інтеграції.

    Попередні вимоги

    • Docker ≥ 24 із плагіном Compose: інсталятор пропонує встановити його на Linux та macOS. На Windows спершу встановіть Docker Desktop (бекенд WSL 2).
    • Вільні порти 3000, 3100, 9000 та 9001 на хості.
    • Поштовий сервіс: API-ключ Resend або реле SMTP.

    1. Встановлення

    Записує docker-compose.yml та .env зі згенерованими секретами в ./intlayer/, ставить ті самі запитання налаштування, що й режим all-in-one (домен, поштовий сервіс, ключ OpenAI), і завантажує образи.

    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. Налаштування поштового сервісу

    Якщо ви пропустили запитання про поштовий сервіс, вкажіть Resend або SMTP у intlayer/.env так само, як для контейнера all-in-one (див. Глобальний поштовий сервіс).

    3. Запуск

    sh
    cd intlayer && docker compose up -d
    

    З власним доменом інсталятор також завантажує docker-compose.build.yml, і команда запуску стає docker compose -f docker-compose.yml -f docker-compose.build.yml up -d --build (див. Власний домен).

    Відкрийте http://localhost:3000 (або URL вашої панелі керування) та виконайте кроки Першого запуску.

    Керовані сховища даних

    Видаліть сервіс, який ви замінюєте, з файлу compose (а також його запис у depends_on в backend), після чого перевизначте відповідну змінну:

    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 зберігають своє значення для будь-якого S3-сумісного провайдера.

    Масштабування

    app та backend є stateless (без стану). За балансувальником навантаження команда docker compose up -d --scale backend=3 працює після видалення фіксованих портів хоста, коли проксі адресує сервіси за назвою. Фонові завдання координуються через Redis (BullMQ), тому кілька реплік бекенда безпечно розділяють чергу.

    Збірка з вихідного коду

    Файл перевизначення перемикає обидва сервіси Intlayer з image: на build:. З клонованого репозиторію:

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

    Без клону вкажіть сам репозиторій як контекст збірки, задавши INTLAYER_BUILD_CONTEXT=https://github.com/aymericzip/intlayer.git#main у .env. Аргументи збірки VITE_* панелі керування беруться з DOMAIN, APP_URL та BACKEND_URL того самого файлу - саме так застосовується власний домен.

    Резервне копіювання та оновлення

    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
    

    Налаштування інсталятора

    Без прапорця --mode (або INTLAYER_MODE) інсталятор показує меню: desktop, docker (all-in-one) або compose. Він також зчитує кілька змінних середовища. Оскільки запуск відбувається через пайплайн у командну оболонку, передавайте їх оболонці, а не 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
    
    ЗміннаЗа замовчуваннямЗастосовується доОпис
    INTLAYER_MODE(запитується)alldesktop, docker or compose, same as --mode
    INTLAYER_DOWNLOAD_DIR~/DownloadsdesktopКуди зберігається інсталятор застосунку
    INTLAYER_IMAGEintlayer/cms-all:latestdockerОбраз all-in-one для завантаження
    INTLAYER_ENV_FILE./intlayer.envdockerКуди записувати файл середовища
    INTLAYER_CONTAINER_NAMEintlayerdockerІм'я контейнера
    INTLAYER_DATA_VOLUMEintlayer-datadockerІменований том, змонтований у /data
    INTLAYER_APP_PORT3000dockerПорт хоста для панелі керування
    INTLAYER_API_PORT3100dockerПорт хоста для API
    INTLAYER_S3_PORT9000dockerПорт хоста для MinIO S3 API
    INTLAYER_CONSOLE_PORT9001dockerПорт хоста для консолі MinIO
    INTLAYER_COMPOSE_DIR./intlayercomposeКуди записуються docker-compose.yml та .env
    INTLAYER_SELFHOST_REFmainbothGit ref, з якого завантажуються compose-файл і шаблон env
    INTLAYER_BUILD_CONTEXT…/intlayer.git#mainbothКонтекст збірки, якщо власний домен вимагає перебудови
    INTLAYER_CUSTOM_IMAGEintlayer/cms-all:customdockerТег образу all-in-one, зібраного для власного домену
    Змінні портів змінюють лише сторону хоста у відображенні. Опубліковані образи мають значення http://localhost:3000, http://localhost:3100 та http://localhost:9000, скомпільовані в пакет панелі керування, тому зберігайте значення за замовчуванням, якщо не збираєте власні образи, див. Обмеження.

    Перший запуск

    На новому екземплярі (порожня база даних) відкриття панелі керування перенаправляє на сторінку /init:

    1. Створіть перший обліковий запис. Оскільки колекція користувачів порожня, цей акаунт автоматично стає суперадміністратором.
    2. Лист для підтвердження надсилається через Resend або ваше реле SMTP. Підтвердження електронної пошти є обов'язковим, тому поштовий сервіс має бути налаштований до старту.
    3. Перейдіть за посиланням у листі, після чого увійдіть.

    Коли адміністратор вже існує, /init перенаправляє на стандартну сторінку входу.

    Змінні середовища

    Обидва режими Docker читають один файл (intlayer.env для контейнера, .env для Compose), згенерований з docker/selfhost/.env.template.

    Обов'язкові

    ЗміннаПрикладОпис
    BETTER_AUTH_SECRET(generated)32-байтний секрет для підпису сесій
    S3_SECRET_ACCESS_KEY(generated)Секрет для вбудованого MinIO
    RESEND_API_KEY(your key)Транзакційна пошта через Resend. Обов'язкова для першого налаштування, якщо не налаштовано SMTP-реле (див. Глобальний поштовий сервіс)
    Образ all-in-one також приймає порожній S3_SECRET_ACCESS_KEY: він генерує його під час першого запуску та зберігає в /data/.s3-secret-access-key. Для Docker Compose він і надалі обов'язковий.

    Фіксовані розгортанням

    Ці змінні задаються образом (all-in-one) або файлом compose, і перевизначати їх потрібно лише для нестандартної топології. Виняток становлять DOMAIN, APP_URL, BACKEND_URL та S3_PUBLIC_URL: задані в env-файлі, вони мають пріоритет в обох режимах (див. Власний домен).

    ЗміннаAll-in-oneDocker ComposeОпис
    PORT31003100Порт прослуховування бекенда
    APP_URLhttp://localhost:3000http://localhost:3000Публічна URL-адреса панелі керування
    BACKEND_URLhttp://localhost:3100http://localhost:3100Публічна URL-адреса REST API бекенда
    DOMAINlocalhostlocalhostДомен для файлів cookie
    SELF_HOSTEDtruetrueВимикає ендпоінти, доступні лише в хмарі (білінг, підписки, маркетплейс)
    MONGODB_URImongodb://127.0.0.1:27017/intlayer?replicaSet=rs0mongodb://mongo:27017/…Рядок підключення до MongoDB, підходить будь-який кластер mongodb:// або mongodb+srv://
    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/intlayerПублічна URL-адреса для завантаження ресурсів браузером
    S3_BUCKET_NAMEintlayerintlayerНазва бакета
    S3_ACCESS_KEY_IDintlayerintlayerКлюч доступу MinIO

    Сервіс Compose app додатково отримує INTLAYER_BACKEND_INTERNAL_URL=http://backend:3100: браузер звертається до API через localhost:3100, але серверний рендеринг виконується всередині мережі Compose і повинен використовувати ім'я сервісу.

    Власний домен

    Бекенд зчитує свої публічні URL під час виконання, але в панелі керування вони вкомпільовані: опубліковані образи intlayer/cms-frontend та intlayer/cms-all працюють лише на http://localhost:3000. Тому для роботи Intlayer на власному домені потрібні дві речі, і обидві готує інсталятор, коли ви відповідаєте на запитання про домен:

    1. Чотири змінні в env-файлі, які зчитує бекенд (cookie, посилання в листах, OAuth-колбеки, URL ресурсів) і які 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. Образ панелі керування, зібраний з цими URL. Docker збирає його безпосередньо з репозиторію, клонувати нічого не потрібно:

      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
      

    Потім розмістіть перед контейнером зворотний проксі з TLS: cms.example.org → порт 3000, back.example.org → 3100, s3.example.org → 9000. Усі три хости повинні мати спільний суфікс DOMAIN, оскільки сесійний cookie обмежено ним.

    Необов'язкові (функціональність м'яко деградує за їх відсутності)

    ЗміннаМожливість
    OPENAI_API_KEYПереклад за допомогою AI та аудит контенту
    GITHUB_CLIENT_ID, GITHUB_CLIENT_SECRETВхід через GitHub OAuth
    GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRETВхід через Google OAuth
    GITLAB_CLIENT_ID, GITLAB_CLIENT_SECRETВхід через GitLab OAuth
    MICROSOFT_CLIENT_ID, MICROSOFT_CLIENT_SECRETВхід через Microsoft OAuth

    Глобальний поштовий сервіс

    Кожен транзакційний лист, включно з позаорганізаційними листами (скидання пароля, магічні посилання), проходить через один із двох глобальних транспортів:

    • Resend, з використанням RESEND_API_KEY.
    • SMTP, з використанням змінних MAIL_SMTP_*. Щойно встановлено MAIL_SMTP_HOST, використовується SMTP, а RESEND_API_KEY ігнорується.

    MAIL_PROVIDER потрібен лише для примусового вибору транспорту, коли налаштовано обидва (наприклад, MAIL_PROVIDER=resend, щоб зберегти Resend за наявності SMTP-хоста).

    VariableExampleDescription
    MAIL_FROMIntlayer <no-reply@acme.com>Заголовок відправника для будь-якого транспорту. Приймає чисту адресу або Ім'я <email>
    MAIL_SMTP_HOSTsmtp.acme.comХост SMTP. Його задання вмикає транспорт SMTP
    MAIL_SMTP_PORT587Порт SMTP (за замовчуванням 587)
    MAIL_SMTP_SECUREfalseНеявний TLS. Встановіть true для порту 465
    MAIL_SMTP_USER(your user)Ім'я користувача SMTP (необов'язково; опустіть для реле без автентифікації)
    MAIL_SMTP_PASSWORD(your password)Пароль SMTP
    MAIL_PROVIDERresendНеобов'язкове перевизначення: smtp або resend. Залиште порожнім для автовибору
    Пріоритет: власний поштовий сервіс організації (налаштований на панелі Організація) має пріоритет над глобальним поштовим сервісом, який у свою чергу має пріоритет над ключем Resend за замовчуванням.

    Підключення вашого проєкту Intlayer

    Після запуску стека спрямуйте свій проєкт на власний бекенд і панель керування замість intlayer.org.

    Конфігурація проєкту

    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;
    

    Встановіть змінні середовища у файлі .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>
    

    Створіть облікові дані доступу у вашій панелі керування в розділі Проєкти → Ключі доступу за адресою http://localhost:3000/projects.

    SDK @intlayer/api

    При програмному використанні SDK @intlayer/api передавайте backendURL явно:

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

    Обмеження

    • Власний домен вимагає перебудови. Усі URL VITE_* для браузера вбудовано в панель керування під час збірки, а опубліковані образи (і десктопний застосунок) постачаються зі значеннями localhost / Intlayer Cloud. За замовчуванням доступ до панелі має здійснюватися за адресою http://localhost:3000, до API - за :3100, а до MinIO - за :9000; перепризначення портів хоста має той самий ефект. Коли ви вказуєте домен, інсталятор готує все для перебудови з репозиторію (див. Власний домен), але сама збірка триває кілька хвилин. Підключення десктопного застосунку до власного бекенду не підтримується.
    • Для роботи пошти потрібен робочий поштовий сервіс. Перший запуск вимагає перевірки електронної пошти, тому необхідно налаштувати RESEND_API_KEY або реле SMTP (MAIL_SMTP_*). Після входу першого адміністратора кожна організація може налаштувати власний SMTP або Resend з панелі керування.
    • Десктопному застосунку потрібен Node.js на комп'ютері для запуску вбудованого сервера.
    • Немає асистента з документації. ШІ-асистент з документації intlayer.org (/api/ai/ask, /api/search/doc) спирається на ~130 МБ попередньо обчислених ембедингів документації, яких немає в образах для самостійного розгортання; у цьому режимі ці два маршрути не реєструються. Власні функції ШІ панелі керування (переклад, аудит, автодоповнення, чат) не зачіпаються і потребують лише OPENAI_API_KEY.

    Корисні посилання