Задайте питання та отримайте підсумок документа, вказавши цю сторінку та обраного вами постачальника штучного інтелекту
Вміст цієї сторінки перекладено за допомогою штучного інтелекту.
Переглянути останню версію оригінального вмісту англійськоюЯкщо у вас є ідея щодо покращення цієї документації, будь ласка, долучіться, надіславши pull request на GitHub.
Посилання на документацію на GitHubСкопіювати документацію у форматі Markdown в буфер обміну
Власний хостинг Intlayer
Intlayer може працювати на вашій власній інфраструктурі без необхідності створювати обліковий запис Intlayer Cloud. Доступні три конфігурації, які встановлюються одним інсталятором (install.sh, install.ps1 на Windows або npx intlayer init infra):
Відкрийте таблицю в модальному вікні, щоб чітко переглянути всі дані
| Setup | What it is | Pick it for |
|---|---|---|
| Десктопний застосунок | Нативна панель керування для macOS, Linux та Windows | Локальний клієнт, нічого не потрібно хостити |
| All-in-one Docker | Панель керування, API, MongoDB, Redis та MinIO в одному контейнері | Пробні та невеликі локальні інсталяції |
| Docker Compose | Один контейнер на сервіс, кожне сховище можна замінити керованою базою даних | Продакшн, масштабування, керовані бази даних |
Table of Contents
Опубліковані образи та пакети
Відкрийте таблицю в модальному вікні, щоб чітко переглянути всі дані
| 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) |
Усі три образи створюються з одного 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). Ви також можете завантажити його вручну зі сторінки релізів.
Скопіюйте код у буфер обміну
In PowerShell:
Скопіюйте код у буфер обміну
Скопіюйте код у буфер обміну
Вимоги
- Node.js: застосунок містить сервер панелі керування і запускає його системним бінарним файлом
node. Встановіть його з nodejs.org, якщо застосунок не запускається.
Опублікована збірка взаємодіє з бекендом Intlayer Cloud. Підключення до власного бекенду вимагає перебудови застосунку з VITE_BACKEND_URL, спрямованим на ваш API, див. Обмеження.
Усе працює всередині єдиного контейнера intlayer/cms-all під керуванням s6-overlay, а кожне сховище зберігається в одному томі даних.
Скопіюйте код у буфер обміну
Відкрийте таблицю в модальному вікні, щоб чітко переглянути всі дані
| Сервіс | Порт(и) хоста | Призначення |
|---|---|---|
| app | 3000 | Панель керування (інтерфейс CMS) |
| backend | 3100 | REST API (ендпоінт /health) |
| mongo | внутрішній | MongoDB 8, набір реплік з одного вузла rs0 |
| redis | внутрішній | Черги завдань (BullMQ) та кешування |
| minio | 9000 (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на хості. MinIO9000має залишатися доступним для браузера, який завантажує ресурси прямо зS3_PUBLIC_URL. - Поштовий сервіс: API-ключ Resend або реле SMTP.
1. Встановлення
Записує ./intlayer.env зі згенерованими BETTER_AUTH_SECRET та S3_SECRET_ACCESS_KEY, ставить кілька запитань, щоб заповнити решту, і завантажує intlayer/cms-all:latest.
Скопіюйте код у буфер обміну
In PowerShell:
Скопіюйте код у буфер обміну
Скопіюйте код у буфер обміну
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 (детальніше у розділі Глобальний поштовий сервіс):
Скопіюйте код у буфер обміну
3. Запуск
Це команда, яку виводить інсталятор (з власним доменом їй передує docker build, який створює intlayer/cms-all:custom, див. Власний домен):
Скопіюйте код у буфер обміну
Скопіюйте код у буфер обміну
CLI запускає інсталятор, який виводить команду docker run …, показану на інших вкладках. Скопіюйте її в термінал після налаштування пошти.
Відкрийте http://localhost:3000 (або URL вашої панелі керування) та виконайте кроки Першого запуску. Перший запуск ініціалізує набір реплік та бакет, зачекайте хвилину.
Резервне копіювання та оновлення
Усі дані зберігаються в томі intlayer-data (/data/mongo, /data/redis, /data/minio).
Скопіюйте код у буфер обміну
Для оновлення повторно запустіть інсталятор (він завантажить найновіший образ і збереже intlayer.env), потім виконайте docker rm -f intlayer і запустіть команду старту знову. Щоб використовувати керовану MongoDB замість інтегрованої, задайте MONGODB_URI в intlayer.env.
Один контейнер на сервіс у приватній мережі Compose. Панель керування та API використовують опубліковані образи intlayer/cms-frontend та intlayer/cms-backend; сховища даних використовують офіційні образи mongo, redis та minio.
Скопіюйте код у буфер обміну
Відкрийте таблицю в модальному вікні, щоб чітко переглянути всі дані
| Сервіс | Образ | Роль |
|---|---|---|
app | intlayer/cms-frontend | Панель керування на :3000; очікує готовності бекенда |
backend | intlayer/cms-backend | API на :3100 з Chromium; очікує Mongo, Redis та бакет MinIO |
mongo | mongo:8 | Набір реплік з одного вузла rs0, ініціалізований власним healthcheck |
redis | redis:8-alpine | Черги та кешування, збереження append-only |
minio | quay.io/minio/minio | Сховище S3 на :9000, консоль на :9001 |
minio-init | quay.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), і завантажує образи.
Скопіюйте код у буфер обміну
Or by hand:
Скопіюйте код у буфер обміну
In PowerShell:
Скопіюйте код у буфер обміну
Or by hand:
Скопіюйте код у буфер обміну
Скопіюйте код у буфер обміну
2. Налаштування поштового сервісу
Якщо ви пропустили запитання про поштовий сервіс, вкажіть Resend або SMTP у intlayer/.env так само, як для контейнера all-in-one (див. Глобальний поштовий сервіс).
3. Запуск
Скопіюйте код у буфер обміну
З власним доменом інсталятор також завантажує 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), після чого перевизначте відповідну змінну:
Скопіюйте код у буфер обміну
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:. З клонованого репозиторію:
Скопіюйте код у буфер обміну
Без клону вкажіть сам репозиторій як контекст збірки, задавши INTLAYER_BUILD_CONTEXT=https://github.com/aymericzip/intlayer.git#main у .env. Аргументи збірки VITE_* панелі керування беруться з DOMAIN, APP_URL та BACKEND_URL того самого файлу — саме так застосовується власний домен.
Резервне копіювання та оновлення
Скопіюйте код у буфер обміну
Налаштування інсталятора
Без прапорця --mode (або INTLAYER_MODE) інсталятор показує меню: desktop, docker (all-in-one) або compose. Він також зчитує кілька змінних середовища. Оскільки запуск відбувається через пайплайн у командну оболонку, передавайте їх оболонці, а не curl:
Скопіюйте код у буфер обміну
Скопіюйте код у буфер обміну
Відкрийте таблицю в модальному вікні, щоб чітко переглянути всі дані
| 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 |
Змінні портів змінюють лише сторону хоста у відображенні. Опубліковані образи мають значенняhttp://localhost:3000,http://localhost:3100таhttp://localhost:9000, скомпільовані в пакет панелі керування, тому зберігайте значення за замовчуванням, якщо не збираєте власні образи, див. Обмеження.
Перший запуск
На новому екземплярі (порожня база даних) відкриття панелі керування перенаправляє на сторінку /init:
- Створіть перший обліковий запис. Оскільки колекція користувачів порожня, цей акаунт автоматично стає суперадміністратором.
- Лист для підтвердження надсилається через Resend або ваше реле SMTP. Підтвердження електронної пошти є обов'язковим, тому поштовий сервіс має бути налаштований до старту.
- Перейдіть за посиланням у листі, після чого увійдіть.
Коли адміністратор вже існує, /init перенаправляє на стандартну сторінку входу.
Змінні середовища
Обидва режими Docker читають один файл (intlayer.env для контейнера, .env для Compose), згенерований з docker/selfhost/.env.template.
Обов'язкові
Відкрийте таблицю в модальному вікні, щоб чітко переглянути всі дані
| 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) |
Фіксовані розгортанням
Ці змінні задаються образом (all-in-one) або файлом compose, і перевизначати їх потрібно лише для нестандартної топології. Виняток становлять DOMAIN, APP_URL, BACKEND_URL та S3_PUBLIC_URL: задані в env-файлі, вони мають пріоритет в обох режимах (див. Власний домен).
Відкрийте таблицю в модальному вікні, щоб чітко переглянути всі дані
| 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 |
Сервіс Compose app додатково отримує INTLAYER_BACKEND_INTERNAL_URL=http://backend:3100: браузер звертається до API через localhost:3100, але серверний рендеринг виконується всередині мережі Compose і повинен використовувати ім'я сервісу.
Власний домен
Бекенд зчитує свої публічні URL під час виконання, але в панелі керування вони вкомпільовані: опубліковані образи intlayer/cms-frontend та intlayer/cms-all працюють лише на http://localhost:3000. Тому для роботи Intlayer на власному домені потрібні дві речі, і обидві готує інсталятор, коли ви відповідаєте на запитання про домен:
Чотири змінні в env-файлі, які зчитує бекенд (cookie, посилання в листах, OAuth-колбеки, URL ресурсів) і які
docker-compose.build.ymlвикористовує як аргументи збірки:intlayer.envКопіювати кодСкопіюйте код у буфер обміну
Образ панелі керування, зібраний з цими URL. Docker збирає його безпосередньо з репозиторію, клонувати нічого не потрібно:
shКопіювати кодСкопіюйте код у буфер обміну
Потім розмістіть перед контейнером зворотний проксі з TLS: cms.example.org → порт 3000, back.example.org → 3100, s3.example.org → 9000. Усі три хости повинні мати спільний суфікс DOMAIN, оскільки сесійний cookie обмежено ним.
Необов'язкові (функціональність м'яко деградує за їх відсутності)
Відкрийте таблицю в модальному вікні, щоб чітко переглянути всі дані
| 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 |
Глобальний поштовий сервіс
Кожен транзакційний лист, включно з позаорганізаційними листами (скидання пароля, магічні посилання), проходить через один із двох глобальних транспортів:
- Resend, з використанням
RESEND_API_KEY. - SMTP, з використанням змінних
MAIL_SMTP_*. Щойно встановленоMAIL_SMTP_HOST, використовується SMTP, аRESEND_API_KEYігнорується.
MAIL_PROVIDER потрібен лише для примусового вибору транспорту, коли налаштовано обидва (наприклад, MAIL_PROVIDER=resend, щоб зберегти Resend за наявності SMTP-хоста).
Відкрийте таблицю в модальному вікні, щоб чітко переглянути всі дані
| 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 |
Пріоритет: власний поштовий сервіс організації (налаштований на панелі Організація) має пріоритет над глобальним поштовим сервісом, який у свою чергу має пріоритет над ключем Resend за замовчуванням.
Підключення вашого проєкту Intlayer
Після запуску стека спрямуйте свій проєкт на власний бекенд і панель керування замість intlayer.org.
Конфігурація проєкту
Скопіюйте код у буфер обміну
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:
Скопіюйте код у буфер обміну
Створіть облікові дані доступу у вашій панелі керування в розділі Проєкти → Ключі доступу за адресою http://localhost:3000/projects.
SDK @intlayer/api
При програмному використанні SDK @intlayer/api передавайте backendURL явно:
Скопіюйте код у буфер обміну
Обмеження
- Власний домен вимагає перебудови. Усі 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.
Корисні посилання
- Документація Intlayer CMS
- Довідник конфігурації
- CMS SDK:
@intlayer/api - Релізи десктопного застосунку
- Docker Hub:
intlayer/cms-all,intlayer/cms-frontend,intlayer/cms-backend, дзеркало на GHCR підghcr.io/aymericzip/intlayer/ docker/selfhost/: Dockerfile,docker-compose.ymlта.env.template
