Спросите свой вопрос и получите сводку документа, используя эту страницу и выбранного вами поставщика AI
Этот документ устарел, базовая версия была обновлена 23 августа 2026 г..
Перейти к английской документацииИстория версий
Содержимое этой страницы было переведено с помощью ИИ.
Смотреть последнюю версию оригинального контента на английскомЕсли у вас есть идея по улучшению этой документации, не стесняйтесь внести свой вклад, подав запрос на вытягивание на GitHub.
Ссылка на документацию GitHubКопировать Markdown документа в буфер обмена
Самостоятельный хостинг Intlayer
Intlayer может полностью работать на вашей собственной инфраструктуре — аккаунт Intlayer Cloud не требуется. Одна команда запускает готовый к production стек:
Одна команда устанавливает всё:
Копировать код в буфер обмена
Установщик загружает docker-compose.yml и .env, автоматически генерирует необходимые секреты и запускает все контейнеры с помощью docker compose up -d.
Единственная внешняя зависимость — это MongoDB: backend подключается к кластеру MongoDB Atlas, который вы предоставляете. Всё остальное работает внутри контейнера.
Оглавление
Архитектура
Копировать код в буфер обмена
Chromium (используемый для генерации скриншотов Puppeteer) включен в образ бэкенда — отдельный контейнер не требуется.
Предварительные требования
- Docker ≥ 24 и Docker Compose ≥ v2. Если что-либо из этого отсутствует, установщик выведет ссылку для установки и завершит работу.
- Порты
3000,3100,8025,9000и9001должны быть доступны на хосте. - Хост на Linux или macOS (или WSL2 на Windows).
Всё остальное — Bun, Redis, MinIO, Chromium — поставляется внутри образа.
Быстрый старт
1. Запустите установщик
Копировать код в буфер обмена
Установщик проверяет наличие установленного и запущенного Docker, создает файл ./intlayer.env с уже сгенерированными BETTER_AUTH_SECRET и S3_SECRET_ACCESS_KEY, и загружает образ. Он не запускает контейнер — backend не может загрузиться без ваших учетных данных базы данных.
Повторный запуск установщика безопасен: существующий файл intlayer.env никогда не будет перезаписан, поэтому это также служит путем для обновления.
2. Заполните ваши учетные данные
Откройте intlayer.env и заполните значения, отмеченные TODO:
Копировать код в буфер обмена
Файл также содержит закомментированные блоки для опциональных функций — SMTP mailer, OPENAI_API_KEY и OAuth провайдеров. Раскомментируйте необходимое.
Файл читается с помощьюdocker run --env-file, который не удаляет кавычки и рассматривает все значение после=как значение. Пишите значения без кавычек и оставляйте комментарии на отдельных строках.
3. Запустите контейнер
Это команда, которую выводит установщик по завершении:
Копировать код в буфер обмена
Затем откройте http://localhost:3000. При первой загрузке инициализируются хранилища данных, поэтому подождите минуту.
Панель управления обслуживается на localhost. См. Ограничения — пользовательские домены не поддерживаются опубликованным образом.
Параметры установщика
Установщик читает несколько переменных окружения. Поскольку он передаётся в sh, передавайте их в shell, а не в curl:
Копировать код в буфер обмена
Открыть таблицу в модальном окне для четкого просмотра всех данных
| Переменная | По умолчанию | Описание |
|---|---|---|
INTLAYER_IMAGE | ghcr.io/aymericzip/intlayer-selfhost:latest | Образ для загрузки |
INTLAYER_ENV_FILE | ./intlayer.env | Где записать env файл |
INTLAYER_CONTAINER_NAME | intlayer | Имя контейнера |
INTLAYER_DATA_VOLUME | intlayer-data | Именованный том, подключённый в /data |
INTLAYER_APP_PORT | 3000 | Порт хоста для панели управления |
INTLAYER_API_PORT | 3100 | Порт хоста для API |
INTLAYER_S3_PORT | 9000 | Порт хоста для MinIO S3 API |
INTLAYER_CONSOLE_PORT | 9001 | Порт хоста для консоли MinIO |
Четыре переменные портов изменяют только хост часть маппинга, выведённую в командеdocker run. Опубликованный образ имеетhttp://localhost:3000,http://localhost:3100иhttp://localhost:9000, встроенные в bundle панели управления во время сборки, поэтому переназначение их оставляет браузер указывающим на старые порты. Сохраняйте значения по умолчанию, если вы не создаёте свой собственный образ — см. Ограничения.
Быстрый старт
Что делает установщик:
- Проверяет наличие
dockerиdocker compose. - Загружает
docker-compose.ymlи.env.exampleв./intlayer/. - Если файл
.envотсутствует, копирует пример и генерирует случайные секреты дляBETTER_AUTH_SECRET,S3_ACCESS_KEY_IDиS3_SECRET_ACCESS_KEYс помощьюopenssl rand. - Запускает
docker compose pull+docker compose up -d. - Выводит URL: панель управления
:3000, API:3100, интерфейс электронной почты:8025, консоль MinIO:9001.
После запуска стека откройте http://localhost:3000 и создайте свою первую учетную запись.
Сервисы
Открыть таблицу в модальном окне для четкого просмотра всех данных
| Сервис | Образ | Порт(ы) хоста | Назначение |
|---|---|---|---|
| app | построен из apps/app/Dockerfile | 3000 | Панель управления TanStack Start (пользовательский интерфейс CMS) |
| backend | построен из apps/backend/Dockerfile | 3100 | REST API Fastify (эндпоинт /health) |
| mongo | mongo:7 | внутренний | Репликационный набор из одного узла (rs0) |
| redis | redis:7-alpine | внутренний | Очереди заданий (BullMQ) и кеширование (ioredis) |
| minio | minio/minio | 9000 (S3), 9001 (консоль) | S3-совместимое объектное хранилище для аватаров и скриншотов |
| mailpit | axllent/mailpit | 1025 (SMTP), 8025 (веб-интерфейс) | Локальный приемник транзакционных электронных писем |
Порт MinIO9000должен быть доступен из браузера, поскольку загруженные активы (аватары, скриншоты) загружаются непосредственно изS3_PUBLIC_URL=http://localhost:9000/intlayer.
Переменные окружения
Обязательно
Открыть таблицу в модальном окне для четкого просмотра всех данных
| Переменная | Пример | Описание |
|---|---|---|
DB_ID | intlayer | Пользователь MongoDB Atlas |
DB_MDP | (ваш пароль) | Пароль MongoDB Atlas |
DB_CLUSTER | cluster0.xxxxx.mongodb.net | Хост кластера MongoDB Atlas (используется в URI mongodb+srv://) |
BETTER_AUTH_SECRET | (сгенерировано) | 32-байтовый секрет для подписания сессии |
S3_SECRET_ACCESS_KEY | (сгенерировано) | Секрет для встроенного MinIO |
RESEND_API_KEY | (ваш ключ) | Транзакционные письма через Resend. Требуется для первоначальной настройки, если вы не настроили глобальный SMTP mailer (см. Global mailer) |
Обязательные (автоматически генерируемые или запрашиваемые)
Открыть таблицу в модальном окне для четкого просмотра всех данных
| Переменная | Пример | Описание |
|---|---|---|
NODE_ENV | production | Среда выполнения |
PORT | 3100 | Порт прослушивания бэкенда |
BACKEND_URL | http://localhost:3100 | Публичный URL API бэкенда |
APP_URL | http://localhost:3000 | Публичный URL панели управления |
DOMAIN | localhost | Домен для файлов cookie |
MONGODB_URI | mongodb://mongo:27017/intlayer?replicaSet=rs0 | Полный URI для подключения к MongoDB |
REDIS_URL | redis://redis:6379 | URL для подключения к Redis |
BETTER_AUTH_SECRET | (сгенерирован) | 32-байтный секрет для подписи сессий |
MAIL_PROVIDER | smtp | Транспорт для почты: smtp или resend |
MAIL_SMTP_HOST | mailpit | Имя хоста SMTP (имя контейнера Mailpit) |
MAIL_SMTP_PORT | 1025 | Порт SMTP |
MAIL_FROM | Intlayer <no-reply@localhost> | Адрес отправителя |
S3_ENDPOINT | http://minio:9000 | S3-совместимый эндпоинт |
S3_PUBLIC_URL | http://localhost:9000/intlayer | Публичный URL для загрузки активов браузером |
S3_BUCKET_NAME | intlayer | Имя корзины |
S3_ACCESS_KEY_ID | (сгенерирован) | Ключ доступа MinIO |
S3_SECRET_ACCESS_KEY | (сгенерирован) | Секретный ключ MinIO |
VITE_BACKEND_URL | http://localhost:3100 | URL бэкенда, встроенный в панель управления во время сборки |
VITE_DOMAIN | localhost | Домен, встроенный в панель управления во время сборки |
Необязательные (функции работают с ограничениями, если отсутствуют)
Открыть таблицу в модальном окне для четкого просмотра всех данных
| Переменная | Функция |
|---|---|
OPENAI_API_KEY | Перевод и аудит контента с помощью ИИ |
STRIPE_SECRET_KEY, STRIPE_WEBHOOK_SECRET, STRIPE_* | Управление счетами и подписками |
RESEND_API_KEY | Транзакционные электронные письма через Resend (переопределяет Mailpit, если установлено) |
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 |
LINKEDIN_CLIENT_ID, LINKEDIN_CLIENT_SECRET | Вход через LinkedIn OAuth |
ATLASSIAN_CLIENT_ID, ATLASSIAN_CLIENT_SECRET | Вход через Atlassian OAuth |
Глобальная почтовая система
По умолчанию все транзакционные письма отправляются через Resend с использованием RESEND_API_KEY. Самостоятельно размещенные развертывания могут вместо этого маршрутизировать все письма — включая письма, не связанные с организацией, такие как сброс пароля и магические ссылки — через глобальную почтовую систему, настроенную с помощью переменных окружения.
Установите MAIL_PROVIDER для её активации. Если она не установлена, используется почтовая система Resend по умолчанию.
Открыть таблицу в модальном окне для четкого просмотра всех данных
| Переменная | Пример | Описание |
|---|---|---|
MAIL_PROVIDER | smtp | Глобальная доставка: smtp или resend. Оставьте не установленной для использования значений по умолчанию |
MAIL_FROM | Intlayer <no-reply@acme.com> | Заголовок отправителя. Принимает простой адрес или формат Name <email> |
MAIL_SMTP_HOST | smtp.acme.com | SMTP-хост (обязателен, когда MAIL_PROVIDER=smtp) |
MAIL_SMTP_PORT | 587 | SMTP-порт (по умолчанию 587) |
MAIL_SMTP_SECURE | false | Неявный TLS. Установите true для порта 465 |
MAIL_SMTP_USER | (ваше имя пользователя) | Имя пользователя SMTP (необязательно; опустите для неаутентифицированных релеев) |
MAIL_SMTP_PASSWORD | (ваш пароль) | Пароль SMTP |
Приоритет: собственная почтовая система организации (настроенная из панели управления Organization) имеет приоритет над глобальной почтовой системой, которая, в свою очередь, имеет приоритет над стандартным ключом 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 самохостинговой панели управления CMS.
* По умолчанию: https://app.intlayer.org
*/
cmsURL: process.env.INTLAYER_CMS_URL, // e.g. http://localhost:3000
/**
* URL самохостингового API бэкенда.
* По умолчанию: https://back.intlayer.org
*/
backendURL: process.env.INTLAYER_BACKEND_URL, // e.g. http://localhost:3100
},
};
export default config;
Установите переменные окружения в файле .env вашего проекта:
Копировать код в буфер обмена
Создайте учетные данные доступа на вашей самохостинговой панели управления в разделе Проекты → Ключи доступа по адресу http://localhost:3000/projects.
SDK @intlayer/api
При программном использовании SDK @intlayer/api явно передайте backendURL:
Копировать код в буфер обмена
Обновление
Это загружает последние образы и перезапускает контейнеры с помощью docker compose pull && docker compose up -d. Существующие тома (mongo-data, redis-data, minio-data) сохраняются — потери данных нет.
Копировать код в буфер обмена
Резервное копирование и восстановление
Все постоянные данные хранятся в трех именованных томах Docker.
Резервное копирование
Копировать код в буфер обмена
Восстановление
Копировать код в буфер обмена
Ограничения
- MongoDB должна быть внешней (Atlas). Backend подключается только через
mongodb+srv://(собирается изDB_ID/DB_MDP/DB_CLUSTER), поэтому обычныйmongodb://host:27017— включая встроенныйmongodконтейнера — не может быть использован. Предоставьте кластер MongoDB Atlas. - Нет пользовательского домена. Все URL-адреса
VITE_*, обращенные к браузеру, встраиваются в приложение во время сборки, и опубликованный образ поставляется со значениямиlocalhost. Доступ к панели управления должен осуществляться черезhttp://localhost:3000; подача его на общедоступный домен потребует перестройки образа с встроенными целевыми URL-адресами и не поддерживается из коробки. - Email требует работающего mailer. Начальная настройка требует проверки электронной почты, поэтому должны быть настроены либо
RESEND_API_KEY, либо глобальный SMTP mailer (MAIL_PROVIDER=smtp+MAIL_SMTP_*). После входа первого администратора каждая организация также может настроить свой собственный SMTP или Resend mailer из панели управления.
Устранение неполадок
Бэкенд циклически перезапускается при первом запуске
MongoDB и Redis должны быть работоспособны до запуска бэкенда. Файл compose использует depends_on с condition: service_healthy. Если вы видите повторяющиеся перезапуски бэкенда, убедитесь, что проверки работоспособности mongo и redis проходят:
Копировать код в буфер обмена
Найдите MongoDB connection error ближе к началу логов.
Панель управления не может связаться с API
Убедитесь, что VITE_BACKEND_URL соответствует URL, по которому бэкенд доступен из браузера (а не из сети Docker). Если вы изменили порт бэкенда или добавили обратный прокси, пересоберите образ панели управления:
Отсутствует корзина MinIO
Если одноразовый сервис minio-init не запустился (или запустился до того, как MinIO был готов), создайте корзину вручную:
Копировать код в буфер обмена
