Спросите свой вопрос и получите сводку документа, используя эту страницу и выбранного вами поставщика AI
Содержимое этой страницы было переведено с помощью ИИ.
Смотреть последнюю версию оригинального контента на английскомЕсли у вас есть идея по улучшению этой документации, не стесняйтесь внести свой вклад, подав запрос на вытягивание на 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 | Локальный клиент, ничего не нужно хостить |
| 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 | Очереди и кэш, постоянство только для добавления |
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/, задает те же вопросы настройки, что и режим «все в одном» (домен, почтовый сервис, ключ OpenAI), и загружает образы.
Копировать код в буфер обмена
Or by hand:
Копировать код в буфер обмена
In PowerShell:
Копировать код в буфер обмена
Or by hand:
Копировать код в буфер обмена
Копировать код в буфер обмена
2. Настройка почтового сервиса
Если вы пропустили вопрос о почтовом сервисе, заполните Resend или SMTP в intlayer/.env точно так же, как для контейнера «все в одном» (см. Глобальный почтовый сервис).
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 (все в одном) или 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) |
Фиксированные развертыванием
Эти переменные задаются образом («все в одном») или файлом 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 |
Служба app в Compose дополнительно получает INTLAYER_BACKEND_INTERNAL_URL=http://backend:3100: браузер обращается к API через localhost:3100, но SSR выполняется внутри сети 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
