@intlayer/docs 9.0.0-canary.10 → 9.0.0-canary.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/generated/docs.entry.cjs +20 -0
- package/dist/cjs/generated/docs.entry.cjs.map +1 -1
- package/dist/esm/generated/docs.entry.mjs +20 -0
- package/dist/esm/generated/docs.entry.mjs.map +1 -1
- package/dist/types/generated/docs.entry.d.ts +1 -0
- package/dist/types/generated/docs.entry.d.ts.map +1 -1
- package/docs/ar/intlayer_CMS.md +16 -1
- package/docs/ar/releases/v9.md +58 -1
- package/docs/ar/self_hosting.md +349 -0
- package/docs/bn/intlayer_CMS.md +570 -0
- package/docs/bn/releases/v9.md +358 -0
- package/docs/cs/releases/v9.md +358 -0
- package/docs/de/intlayer_CMS.md +117 -1
- package/docs/de/releases/v9.md +61 -1
- package/docs/de/self_hosting.md +349 -0
- package/docs/en/intlayer_CMS.md +171 -1
- package/docs/en/releases/v9.md +45 -2
- package/docs/en/self_hosting.md +349 -0
- package/docs/en-GB/intlayer_CMS.md +16 -1
- package/docs/en-GB/releases/v9.md +47 -2
- package/docs/en-GB/self_hosting.md +349 -0
- package/docs/es/intlayer_CMS.md +117 -1
- package/docs/es/releases/v9.md +61 -1
- package/docs/es/self_hosting.md +349 -0
- package/docs/fr/intlayer_CMS.md +117 -1
- package/docs/fr/releases/v9.md +61 -1
- package/docs/fr/self_hosting.md +349 -0
- package/docs/hi/intlayer_CMS.md +16 -1
- package/docs/hi/releases/v9.md +59 -1
- package/docs/hi/self_hosting.md +349 -0
- package/docs/id/releases/v9.md +31 -1
- package/docs/id/self_hosting.md +349 -0
- package/docs/it/intlayer_CMS.md +117 -1
- package/docs/it/releases/v9.md +61 -1
- package/docs/it/self_hosting.md +349 -0
- package/docs/ja/intlayer_CMS.md +191 -10
- package/docs/ja/releases/v9.md +31 -1
- package/docs/ja/self_hosting.md +349 -0
- package/docs/ko/intlayer_CMS.md +189 -6
- package/docs/ko/releases/v9.md +30 -1
- package/docs/ko/self_hosting.md +349 -0
- package/docs/nl/releases/v9.md +358 -0
- package/docs/pl/intlayer_CMS.md +16 -1
- package/docs/pl/releases/v9.md +58 -1
- package/docs/pl/self_hosting.md +349 -0
- package/docs/pt/intlayer_CMS.md +117 -1
- package/docs/pt/releases/v9.md +61 -1
- package/docs/pt/self_hosting.md +349 -0
- package/docs/ru/intlayer_CMS.md +196 -15
- package/docs/ru/releases/v9.md +59 -1
- package/docs/ru/self_hosting.md +349 -0
- package/docs/tr/intlayer_CMS.md +16 -1
- package/docs/tr/releases/v9.md +46 -1
- package/docs/tr/self_hosting.md +349 -0
- package/docs/uk/intlayer_CMS.md +16 -1
- package/docs/uk/releases/v9.md +58 -1
- package/docs/uk/self_hosting.md +349 -0
- package/docs/vi/releases/v9.md +31 -1
- package/docs/vi/self_hosting.md +349 -0
- package/docs/zh/releases/v9.md +31 -1
- package/docs/zh/self_hosting.md +349 -0
- package/package.json +6 -6
- package/src/generated/docs.entry.ts +20 -0
package/docs/ru/releases/v9.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2026-06-14
|
|
3
|
-
updatedAt: 2026-06-
|
|
3
|
+
updatedAt: 2026-06-30
|
|
4
4
|
title: Новый Intlayer v9 — Что нового?
|
|
5
5
|
description: Узнайте, что нового в Intlayer v9. Представляем пакеты совместимости drop-in для популярных библиотек i18n, а также поддержку Collections и Variants.
|
|
6
6
|
keywords:
|
|
@@ -9,6 +9,9 @@ keywords:
|
|
|
9
9
|
- Миграция
|
|
10
10
|
- Collections
|
|
11
11
|
- Variants
|
|
12
|
+
- Self-Hosting
|
|
13
|
+
- Docker
|
|
14
|
+
- CMS SDK
|
|
12
15
|
- i18next
|
|
13
16
|
- next-intl
|
|
14
17
|
- vue-i18n
|
|
@@ -299,6 +302,59 @@ npm install intlayer react-native-intlayer
|
|
|
299
302
|
|
|
300
303
|
---
|
|
301
304
|
|
|
305
|
+
## CMS SDK: используйте Intlayer как headless-базу данных контента
|
|
306
|
+
|
|
307
|
+
Intlayer v9 включает аккуратный SDK с автоматической аутентификацией в `@intlayer/api` для программного взаимодействия с CMS — получать проекты, получать словари, а также отправлять или обновлять их с вашего сервера, скриптов или CI. Аутентификация (OAuth2 `client_credentials`) выполняется и обновляется за вас.
|
|
308
|
+
|
|
309
|
+
SDK разделён на **два отдельных импорта**, чтобы ваш бандл включал только те домены, которые вы действительно используете:
|
|
310
|
+
|
|
311
|
+
1. `createIntlayerCMS` — лёгкий **аутентификатор**, который хранит учётные данные и управляемый токен (клиенты доменов не включаются).
|
|
312
|
+
2. `dictionaryEndpoint`, `projectEndpoint`, … — **привязки эндпоинтов** по доменам, каждая импортируется из своего подпути.
|
|
313
|
+
|
|
314
|
+
```ts fileName="cms.ts"
|
|
315
|
+
import { createIntlayerCMS } from "@intlayer/api";
|
|
316
|
+
import { dictionaryEndpoint } from "@intlayer/api/dictionary";
|
|
317
|
+
|
|
318
|
+
// Конфигурация необязательна: учётные данные берутся из INTLAYER_CLIENT_ID /
|
|
319
|
+
// INTLAYER_CLIENT_SECRET, разрешаемых через `@intlayer/config/built`.
|
|
320
|
+
const cms = createIntlayerCMS();
|
|
321
|
+
|
|
322
|
+
// Чтение
|
|
323
|
+
const { data: dictionaries } = await dictionaryEndpoint(cms).getDictionaries();
|
|
324
|
+
|
|
325
|
+
// Запись — используйте CMS как базу данных
|
|
326
|
+
await dictionaryEndpoint(cms).pushDictionaries([myDictionary]);
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
> Безопасность: учётные данные CMS дают доступ к вашему контенту на запись. Создавайте аутентификатор только **на стороне сервера** — никогда не передавайте `clientId` / `clientSecret` в браузер.
|
|
330
|
+
|
|
331
|
+
---
|
|
332
|
+
|
|
333
|
+
## Самостоятельное размещение (Self-Hosting)
|
|
334
|
+
|
|
335
|
+
Intlayer v9 поставляется с первоклассной поддержкой запуска собственного экземпляра Intlayer с помощью одной команды — учётная запись Intlayer Cloud не требуется.
|
|
336
|
+
|
|
337
|
+
```sh
|
|
338
|
+
curl -fsSL https://intlayer.org/install.sh | sh
|
|
339
|
+
```
|
|
340
|
+
|
|
341
|
+
Установщик загружает `docker-compose.yml` и `.env`, автоматически генерирует необходимые секреты и запускает `docker compose up -d`. Всё — дашборд, API, база данных, хранилище объектов и транзакционная электронная почта — работает локально в контейнерах.
|
|
342
|
+
|
|
343
|
+
### Включённые сервисы
|
|
344
|
+
|
|
345
|
+
| Сервис | Назначение |
|
|
346
|
+
| ---------------------------------------- | -------------------------------------------------------------------------------- |
|
|
347
|
+
| **app** (TanStack Start) | Дашборд UI на порту `3000` |
|
|
348
|
+
| **backend** (Fastify/Bun) | REST API на порту `3100` |
|
|
349
|
+
| **MongoDB 7** (одноузловой набор реплик) | Основная база данных |
|
|
350
|
+
| **Redis 7** | Очереди задач и кэширование |
|
|
351
|
+
| **MinIO** | S3-совместимое хранилище объектов (аватары, скриншоты) |
|
|
352
|
+
| **Mailpit** | Локальный SMTP-приёмник + веб-интерфейс для транзакционной почты на порту `8025` |
|
|
353
|
+
|
|
354
|
+
Chromium (используемый для генерации скриншотов через Puppeteer) встроен в образ бэкенда — дополнительный контейнер не требуется.
|
|
355
|
+
|
|
356
|
+
---
|
|
357
|
+
|
|
302
358
|
## Примечания по миграции с v8
|
|
303
359
|
|
|
304
360
|
Если вы обновляетесь с v8, обратите внимание, что v9 не содержит ломающих изменений (breaking changes). Однако вот ключевые изменения:
|
|
@@ -314,3 +370,5 @@ npm install intlayer react-native-intlayer
|
|
|
314
370
|
- [Руководство по пакетам адаптеров совместимости](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/compat/index.md)
|
|
315
371
|
- [Динамические словари — Collections и Variants](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/dynamic_dictionaries/index.md)
|
|
316
372
|
- [Справочник по конфигурации](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/configuration.md)
|
|
373
|
+
- [CMS SDK — программный доступ через @intlayer/api](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/intlayer_CMS.md)
|
|
374
|
+
- [Руководство по самостоятельному размещению](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/self_hosting.md)
|
|
@@ -0,0 +1,349 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2026-06-30
|
|
3
|
+
updatedAt: 2026-06-30
|
|
4
|
+
title: Самостоятельный хостинг Intlayer
|
|
5
|
+
description: Запустите полноценный экземпляр Intlayer на собственной инфраструктуре с помощью одной команды. Аккаунт Intlayer Cloud не требуется.
|
|
6
|
+
keywords:
|
|
7
|
+
- Самостоятельный хостинг
|
|
8
|
+
- Docker
|
|
9
|
+
- Docker Compose
|
|
10
|
+
- Intlayer
|
|
11
|
+
- CMS
|
|
12
|
+
- Установка
|
|
13
|
+
- Инфраструктура
|
|
14
|
+
slugs:
|
|
15
|
+
- doc
|
|
16
|
+
- self-hosting
|
|
17
|
+
author: aymericzip
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
# Самостоятельный хостинг Intlayer
|
|
21
|
+
|
|
22
|
+
Intlayer может полностью работать на вашей собственной инфраструктуре — аккаунт Intlayer Cloud не требуется. Одна команда запускает готовый к production стек:
|
|
23
|
+
|
|
24
|
+
```sh
|
|
25
|
+
curl -fsSL https://intlayer.org/install.sh | sh
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Установщик загружает `docker-compose.yml` и `.env`, автоматически генерирует необходимые секреты и запускает все контейнеры с помощью `docker compose up -d`.
|
|
29
|
+
|
|
30
|
+
## Оглавление
|
|
31
|
+
|
|
32
|
+
<TOC/>
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## Архитектура
|
|
37
|
+
|
|
38
|
+
```
|
|
39
|
+
┌─────────────────────────────┐
|
|
40
|
+
браузер ──────▶ │ приложение (TanStack Start) :3000│ ──┐
|
|
41
|
+
└─────────────────────────────┘ │ VITE_BACKEND_URL
|
|
42
|
+
┌─────────────────────────────┐ │
|
|
43
|
+
│ бэкенд (Fastify/Bun) :3100│ ◀─┘
|
|
44
|
+
└──────────────┬──────────────┘
|
|
45
|
+
┌──────────┬─────────┼──────────┬───────────┐
|
|
46
|
+
▼ ▼ ▼ ▼ ▼
|
|
47
|
+
mongo:27017 redis:6379 minio:9000 mailpit:1025 Chromium
|
|
48
|
+
(RS из 1 узла) (API S3) (SMTP) (в образе)
|
|
49
|
+
minio:9001 mailpit:8025
|
|
50
|
+
(консоль) (веб-интерфейс)
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
Chromium (используемый для генерации скриншотов Puppeteer) включен в образ бэкенда — отдельный контейнер не требуется.
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## Предварительные требования
|
|
58
|
+
|
|
59
|
+
- **Docker** ≥ 24 и **Docker Compose** ≥ v2. Если что-либо из этого отсутствует, установщик выведет ссылку для установки и завершит работу.
|
|
60
|
+
- Порты `3000`, `3100`, `8025`, `9000` и `9001` должны быть доступны на хосте.
|
|
61
|
+
- Хост на Linux или macOS (или WSL2 на Windows).
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
## Быстрый старт
|
|
66
|
+
|
|
67
|
+
```sh
|
|
68
|
+
curl -fsSL https://intlayer.org/install.sh | sh
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
Что делает установщик:
|
|
72
|
+
|
|
73
|
+
1. Проверяет наличие `docker` и `docker compose`.
|
|
74
|
+
2. Загружает `docker-compose.yml` и `.env.example` в `./intlayer/`.
|
|
75
|
+
3. Если файл `.env` отсутствует, копирует пример и генерирует случайные секреты для `BETTER_AUTH_SECRET`, `S3_ACCESS_KEY_ID` и `S3_SECRET_ACCESS_KEY` с помощью `openssl rand`.
|
|
76
|
+
4. Запускает `docker compose pull` + `docker compose up -d`.
|
|
77
|
+
5. Выводит URL: панель управления `:3000`, API `:3100`, интерфейс электронной почты `:8025`, консоль MinIO `:9001`.
|
|
78
|
+
|
|
79
|
+
После запуска стека откройте **http://localhost:3000** и создайте свою первую учетную запись.
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
## Сервисы
|
|
84
|
+
|
|
85
|
+
| Сервис | Образ | Порт(ы) хоста | Назначение |
|
|
86
|
+
| ----------- | ------------------------------------- | ------------------------------------- | ----------------------------------------------------------------- |
|
|
87
|
+
| **app** | построен из `apps/app/Dockerfile` | `3000` | Панель управления TanStack Start (пользовательский интерфейс CMS) |
|
|
88
|
+
| **backend** | построен из `apps/backend/Dockerfile` | `3100` | REST API Fastify (эндпоинт `/health`) |
|
|
89
|
+
| **mongo** | `mongo:7` | внутренний | Репликационный набор из одного узла (`rs0`) |
|
|
90
|
+
| **redis** | `redis:7-alpine` | внутренний | Очереди заданий (BullMQ) и кеширование (ioredis) |
|
|
91
|
+
| **minio** | `minio/minio` | `9000` (S3), `9001` (консоль) | S3-совместимое объектное хранилище для аватаров и скриншотов |
|
|
92
|
+
| **mailpit** | `axllent/mailpit` | `1025` (SMTP), `8025` (веб-интерфейс) | Локальный приемник транзакционных электронных писем |
|
|
93
|
+
|
|
94
|
+
Внутренние порты (mongo, redis) по умолчанию не открыты на хосте.
|
|
95
|
+
|
|
96
|
+
> Порт MinIO `9000` должен быть доступен из браузера, поскольку загруженные активы (аватары, скриншоты) загружаются непосредственно из `S3_PUBLIC_URL=http://localhost:9000/intlayer`.
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
## Переменные окружения
|
|
101
|
+
|
|
102
|
+
Установщик генерирует готовый к использованию файл `.env`. В таблице ниже описана каждая переменная.
|
|
103
|
+
|
|
104
|
+
### Обязательные (автоматически генерируемые или запрашиваемые)
|
|
105
|
+
|
|
106
|
+
| Переменная | Пример | Описание |
|
|
107
|
+
| ---------------------- | ----------------------------------------------- | ----------------------------------------------------------- |
|
|
108
|
+
| `NODE_ENV` | `production` | Среда выполнения |
|
|
109
|
+
| `PORT` | `3100` | Порт прослушивания бэкенда |
|
|
110
|
+
| `BACKEND_URL` | `http://localhost:3100` | Публичный URL API бэкенда |
|
|
111
|
+
| `APP_URL` | `http://localhost:3000` | Публичный URL панели управления |
|
|
112
|
+
| `DOMAIN` | `localhost` | Домен для файлов cookie |
|
|
113
|
+
| `MONGODB_URI` | `mongodb://mongo:27017/intlayer?replicaSet=rs0` | Полный URI для подключения к MongoDB |
|
|
114
|
+
| `REDIS_URL` | `redis://redis:6379` | URL для подключения к Redis |
|
|
115
|
+
| `BETTER_AUTH_SECRET` | _(сгенерирован)_ | 32-байтный секрет для подписи сессий |
|
|
116
|
+
| `MAIL_PROVIDER` | `smtp` | Транспорт для почты: `smtp` или `resend` |
|
|
117
|
+
| `MAIL_SMTP_HOST` | `mailpit` | Имя хоста SMTP (имя контейнера Mailpit) |
|
|
118
|
+
| `MAIL_SMTP_PORT` | `1025` | Порт SMTP |
|
|
119
|
+
| `MAIL_FROM` | `Intlayer <no-reply@localhost>` | Адрес отправителя |
|
|
120
|
+
| `S3_ENDPOINT` | `http://minio:9000` | S3-совместимый эндпоинт |
|
|
121
|
+
| `S3_PUBLIC_URL` | `http://localhost:9000/intlayer` | Публичный URL для загрузки активов браузером |
|
|
122
|
+
| `S3_BUCKET_NAME` | `intlayer` | Имя корзины |
|
|
123
|
+
| `S3_ACCESS_KEY_ID` | _(сгенерирован)_ | Ключ доступа MinIO |
|
|
124
|
+
| `S3_SECRET_ACCESS_KEY` | _(сгенерирован)_ | Секретный ключ MinIO |
|
|
125
|
+
| `VITE_BACKEND_URL` | `http://localhost:3100` | URL бэкенда, встроенный в панель управления во время сборки |
|
|
126
|
+
| `VITE_DOMAIN` | `localhost` | Домен, встроенный в панель управления во время сборки |
|
|
127
|
+
|
|
128
|
+
### Необязательные (функции работают с ограничениями, если отсутствуют)
|
|
129
|
+
|
|
130
|
+
| Переменная | Функция |
|
|
131
|
+
| -------------------------------------------------------- | ----------------------------------------------------------------------------------------- |
|
|
132
|
+
| `OPENAI_API_KEY` | Перевод и аудит контента с помощью ИИ |
|
|
133
|
+
| `STRIPE_SECRET_KEY`, `STRIPE_WEBHOOK_SECRET`, `STRIPE_*` | Управление счетами и подписками |
|
|
134
|
+
| `RESEND_API_KEY` | Транзакционные электронные письма через Resend (переопределяет Mailpit, если установлено) |
|
|
135
|
+
| `GITHUB_CLIENT_ID`, `GITHUB_CLIENT_SECRET` | Вход через GitHub OAuth |
|
|
136
|
+
| `GOOGLE_CLIENT_ID`, `GOOGLE_CLIENT_SECRET` | Вход через Google OAuth |
|
|
137
|
+
| `GITLAB_CLIENT_ID`, `GITLAB_CLIENT_SECRET` | Вход через GitLab OAuth |
|
|
138
|
+
| `MICROSOFT_CLIENT_ID`, `MICROSOFT_CLIENT_SECRET` | Вход через Microsoft OAuth |
|
|
139
|
+
| `LINKEDIN_CLIENT_ID`, `LINKEDIN_CLIENT_SECRET` | Вход через LinkedIn OAuth |
|
|
140
|
+
| `ATLASSIAN_CLIENT_ID`, `ATLASSIAN_CLIENT_SECRET` | Вход через Atlassian OAuth |
|
|
141
|
+
|
|
142
|
+
---
|
|
143
|
+
|
|
144
|
+
## Подключение вашего проекта Intlayer
|
|
145
|
+
|
|
146
|
+
После запуска стека направьте свой проект на самохостинговый бэкенд и панель управления вместо `intlayer.org`.
|
|
147
|
+
|
|
148
|
+
### Конфигурация проекта
|
|
149
|
+
|
|
150
|
+
```typescript fileName="intlayer.config.ts" codeFormat={["typescript", "esm", "commonjs"]}
|
|
151
|
+
import type { IntlayerConfig } from "intlayer";
|
|
152
|
+
|
|
153
|
+
const config: IntlayerConfig = {
|
|
154
|
+
editor: {
|
|
155
|
+
clientId: process.env.INTLAYER_CLIENT_ID,
|
|
156
|
+
clientSecret: process.env.INTLAYER_CLIENT_SECRET,
|
|
157
|
+
|
|
158
|
+
/**
|
|
159
|
+
* URL самохостинговой панели управления CMS.
|
|
160
|
+
* По умолчанию: https://app.intlayer.org
|
|
161
|
+
*/
|
|
162
|
+
cmsURL: process.env.INTLAYER_CMS_URL, // e.g. http://localhost:3000
|
|
163
|
+
|
|
164
|
+
/**
|
|
165
|
+
* URL самохостингового API бэкенда.
|
|
166
|
+
* По умолчанию: https://back.intlayer.org
|
|
167
|
+
*/
|
|
168
|
+
backendURL: process.env.INTLAYER_BACKEND_URL, // e.g. http://localhost:3100
|
|
169
|
+
},
|
|
170
|
+
};
|
|
171
|
+
|
|
172
|
+
export default config;
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
Установите переменные окружения в файле `.env` вашего проекта:
|
|
176
|
+
|
|
177
|
+
```sh
|
|
178
|
+
INTLAYER_CMS_URL=http://localhost:3000
|
|
179
|
+
INTLAYER_BACKEND_URL=http://localhost:3100
|
|
180
|
+
INTLAYER_CLIENT_ID=<your-client-id>
|
|
181
|
+
INTLAYER_CLIENT_SECRET=<your-client-secret>
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
Создайте учетные данные доступа на вашей самохостинговой панели управления в разделе **Проекты → Ключи доступа** по адресу `http://localhost:3000/projects`.
|
|
185
|
+
|
|
186
|
+
### SDK `@intlayer/api`
|
|
187
|
+
|
|
188
|
+
При программном использовании SDK `@intlayer/api` явно передайте `backendURL`:
|
|
189
|
+
|
|
190
|
+
```typescript fileName="cms.ts" codeFormat="typescript"
|
|
191
|
+
import { createIntlayerCMS } from "@intlayer/api";
|
|
192
|
+
import { dictionaryEndpoint } from "@intlayer/api/dictionary";
|
|
193
|
+
|
|
194
|
+
const cms = createIntlayerCMS({
|
|
195
|
+
editor: {
|
|
196
|
+
clientId: process.env.INTLAYER_CLIENT_ID,
|
|
197
|
+
clientSecret: process.env.INTLAYER_CLIENT_SECRET,
|
|
198
|
+
backendURL: process.env.INTLAYER_BACKEND_URL, // http://localhost:3100
|
|
199
|
+
},
|
|
200
|
+
});
|
|
201
|
+
|
|
202
|
+
const { data: dictionaries } = await dictionaryEndpoint(cms).getDictionaries();
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
---
|
|
206
|
+
|
|
207
|
+
## Обновление
|
|
208
|
+
|
|
209
|
+
Повторный запуск установщика на существующем развертывании выполняет скользящее обновление:
|
|
210
|
+
|
|
211
|
+
```sh
|
|
212
|
+
curl -fsSL https://intlayer.org/install.sh | sh
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
Это загружает последние образы и перезапускает контейнеры с помощью `docker compose pull && docker compose up -d`. Существующие тома (`mongo-data`, `redis-data`, `minio-data`) сохраняются — потери данных нет.
|
|
216
|
+
|
|
217
|
+
Для обновления вручную из директории `./intlayer/`:
|
|
218
|
+
|
|
219
|
+
```sh
|
|
220
|
+
docker compose pull
|
|
221
|
+
docker compose up -d
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
---
|
|
225
|
+
|
|
226
|
+
## Резервное копирование и восстановление
|
|
227
|
+
|
|
228
|
+
Все постоянные данные хранятся в трех именованных томах Docker.
|
|
229
|
+
|
|
230
|
+
### Резервное копирование
|
|
231
|
+
|
|
232
|
+
```sh
|
|
233
|
+
docker run --rm \
|
|
234
|
+
-v intlayer_mongo-data:/data \
|
|
235
|
+
-v "$(pwd)":/backup \
|
|
236
|
+
busybox tar czf /backup/mongo-data.tar.gz /data
|
|
237
|
+
|
|
238
|
+
docker run --rm \
|
|
239
|
+
-v intlayer_redis-data:/data \
|
|
240
|
+
-v "$(pwd)":/backup \
|
|
241
|
+
busybox tar czf /backup/redis-data.tar.gz /data
|
|
242
|
+
|
|
243
|
+
docker run --rm \
|
|
244
|
+
-v intlayer_minio-data:/data \
|
|
245
|
+
-v "$(pwd)":/backup \
|
|
246
|
+
busybox tar czf /backup/minio-data.tar.gz /data
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
### Восстановление
|
|
250
|
+
|
|
251
|
+
```sh
|
|
252
|
+
docker run --rm \
|
|
253
|
+
-v intlayer_mongo-data:/data \
|
|
254
|
+
-v "$(pwd)":/backup \
|
|
255
|
+
busybox tar xzf /backup/mongo-data.tar.gz -C /
|
|
256
|
+
|
|
257
|
+
# Повторите для redis-data и minio-data
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
---
|
|
261
|
+
|
|
262
|
+
## Использование обратного прокси (Nginx / Caddy)
|
|
263
|
+
|
|
264
|
+
Для production развертываний разместите обратный прокси перед контейнерами приложения и бэкенда вместо того, чтобы открывать их напрямую.
|
|
265
|
+
|
|
266
|
+
### Пример Nginx
|
|
267
|
+
|
|
268
|
+
```nginx
|
|
269
|
+
server {
|
|
270
|
+
listen 80;
|
|
271
|
+
server_name cms.example.com;
|
|
272
|
+
|
|
273
|
+
location / {
|
|
274
|
+
proxy_pass http://localhost:3000;
|
|
275
|
+
proxy_set_header Host $host;
|
|
276
|
+
proxy_set_header X-Real-IP $remote_addr;
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
server {
|
|
281
|
+
listen 80;
|
|
282
|
+
server_name api.example.com;
|
|
283
|
+
|
|
284
|
+
location / {
|
|
285
|
+
proxy_pass http://localhost:3100;
|
|
286
|
+
proxy_set_header Host $host;
|
|
287
|
+
proxy_set_header X-Real-IP $remote_addr;
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
Обновите следующие переменные `.env`, чтобы они соответствовали вашим публичным доменам:
|
|
293
|
+
|
|
294
|
+
```sh
|
|
295
|
+
BACKEND_URL=https://api.example.com
|
|
296
|
+
APP_URL=https://cms.example.com
|
|
297
|
+
DOMAIN=example.com
|
|
298
|
+
VITE_BACKEND_URL=https://api.example.com
|
|
299
|
+
VITE_DOMAIN=example.com
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
> Переменные `VITE_*` встраиваются в образ панели управления во время сборки. Если вы измените их после сборки образа, вам потребуется пересобрать образ `app` (`docker compose build app`) или использовать инъекцию runtime-конфигурации.
|
|
303
|
+
|
|
304
|
+
---
|
|
305
|
+
|
|
306
|
+
## Устранение неполадок
|
|
307
|
+
|
|
308
|
+
### Бэкенд циклически перезапускается при первом запуске
|
|
309
|
+
|
|
310
|
+
MongoDB и Redis должны быть работоспособны до запуска бэкенда. Файл compose использует `depends_on` с `condition: service_healthy`. Если вы видите повторяющиеся перезапуски бэкенда, убедитесь, что проверки работоспособности `mongo` и `redis` проходят:
|
|
311
|
+
|
|
312
|
+
```sh
|
|
313
|
+
docker compose ps
|
|
314
|
+
docker compose logs mongo
|
|
315
|
+
docker compose logs redis
|
|
316
|
+
```
|
|
317
|
+
|
|
318
|
+
### Панель управления не может связаться с API
|
|
319
|
+
|
|
320
|
+
Убедитесь, что `VITE_BACKEND_URL` соответствует URL, по которому бэкенд доступен из **браузера** (а не из сети Docker). Если вы изменили порт бэкенда или добавили обратный прокси, пересоберите образ панели управления:
|
|
321
|
+
|
|
322
|
+
```sh
|
|
323
|
+
docker compose build app
|
|
324
|
+
docker compose up -d app
|
|
325
|
+
```
|
|
326
|
+
|
|
327
|
+
### Электронные письма не отправляются
|
|
328
|
+
|
|
329
|
+
По умолчанию вся исходящая почта перехватывается Mailpit. Откройте `http://localhost:8025`, чтобы увидеть отправленные сообщения. Для отправки реальных писем установите `MAIL_PROVIDER=resend` и `RESEND_API_KEY=<your-key>` в `.env`, затем перезапустите бэкенд:
|
|
330
|
+
|
|
331
|
+
```sh
|
|
332
|
+
docker compose restart backend
|
|
333
|
+
```
|
|
334
|
+
|
|
335
|
+
### Отсутствует корзина MinIO
|
|
336
|
+
|
|
337
|
+
Если одноразовый сервис `minio-init` не запустился (или запустился до того, как MinIO был готов), создайте корзину вручную:
|
|
338
|
+
|
|
339
|
+
```sh
|
|
340
|
+
docker compose run --rm minio-init
|
|
341
|
+
```
|
|
342
|
+
|
|
343
|
+
---
|
|
344
|
+
|
|
345
|
+
## Полезные ссылки
|
|
346
|
+
|
|
347
|
+
- [Документация Intlayer CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/intlayer_CMS.md)
|
|
348
|
+
- [Справочник по конфигурации](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/configuration.md)
|
|
349
|
+
- [CMS SDK — `@intlayer/api`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/intlayer_CMS.md#programmatic-access-with-the-intlayerapi-sdk)
|
package/docs/tr/intlayer_CMS.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2025-08-23
|
|
3
|
-
updatedAt:
|
|
3
|
+
updatedAt: 2026-06-30
|
|
4
4
|
title: Intlayer CMS | İçeriğinizi Intlayer CMS'ye Dışa Aktarın
|
|
5
5
|
description: İçeriğinizin yönetimini ekibinize devretmek için içeriğinizi Intlayer CMS'ye dışa aktarın.
|
|
6
6
|
keywords:
|
|
@@ -18,6 +18,9 @@ slugs:
|
|
|
18
18
|
- cms
|
|
19
19
|
youtubeVideo: https://www.youtube.com/watch?v=UDDTnirwi_4
|
|
20
20
|
history:
|
|
21
|
+
- version: 9.0.0
|
|
22
|
+
date: 2026-06-30
|
|
23
|
+
changes: "Kendi Sunucuda Barındırma bölümü eklendi"
|
|
21
24
|
- version: 6.0.1
|
|
22
25
|
date: 2025-09-22
|
|
23
26
|
changes: "Canlı senkronizasyon dokümantasyonu eklendi"
|
|
@@ -372,6 +375,18 @@ Notlar ve kısıtlamalar:
|
|
|
372
375
|
- `live` bayrağı her sözlük için build zamanında değerlendirilir. Uzaktaki içerik derleme sırasında `live=true` olarak işaretlenmemişse, o sözlük için Live Sync'i etkinleştirmek üzere yeniden derleme yapmanız gerekir.
|
|
373
376
|
- Live sync sunucusunun `.intlayer` dosyasına yazabilmesi gerekir. Konteynerlerde, `/.intlayer` dosyasına yazma erişiminin olduğundan emin olun.
|
|
374
377
|
|
|
378
|
+
## Kendi Sunucunuzda Barındırma
|
|
379
|
+
|
|
380
|
+
Intlayer, tamamen kendi altyapınızda çalışabilir. Tek bir komut, tam yığını (kontrol paneli, API, veritabanı, nesne depolama ve e-posta) Docker Compose ile başlatır:
|
|
381
|
+
|
|
382
|
+
```sh
|
|
383
|
+
curl -fsSL https://intlayer.org/install.sh | sh
|
|
384
|
+
```
|
|
385
|
+
|
|
386
|
+
Tam kurulum kılavuzu, ortam değişkeni referansı, yükseltme talimatları ve yedekleme/geri yükleme prosedürleri için [Kendi Sunucuda Barındırma Kılavuzu'na](https://github.com/aymericzip/intlayer/blob/main/docs/docs/tr/self_hosting.md) bakınız.
|
|
387
|
+
|
|
388
|
+
---
|
|
389
|
+
|
|
375
390
|
## Hata Ayıklama
|
|
376
391
|
|
|
377
392
|
CMS ile ilgili herhangi bir sorunla karşılaşırsanız, aşağıdakileri kontrol edin:
|
package/docs/tr/releases/v9.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2026-06-14
|
|
3
|
-
updatedAt: 2026-06-
|
|
3
|
+
updatedAt: 2026-06-30
|
|
4
4
|
title: Yeni Intlayer v9 - Yenilikler Neler?
|
|
5
5
|
description: Intlayer v9'daki yenilikleri keşfedin. Popüler i18n kütüphaneleri için doğrudan uyumlu paketler ve Koleksiyonlar ve Varyantlar desteği sunuluyor.
|
|
6
6
|
keywords:
|
|
@@ -9,6 +9,9 @@ keywords:
|
|
|
9
9
|
- Migration
|
|
10
10
|
- Collections
|
|
11
11
|
- Variants
|
|
12
|
+
- CMS SDK
|
|
13
|
+
- Self-Hosting
|
|
14
|
+
- Docker
|
|
12
15
|
- i18next
|
|
13
16
|
- next-intl
|
|
14
17
|
- vue-i18n
|
|
@@ -299,6 +302,46 @@ npm install intlayer react-native-intlayer
|
|
|
299
302
|
|
|
300
303
|
---
|
|
301
304
|
|
|
305
|
+
## CMS SDK: Intlayer'ı başsız içerik veritabanı olarak kullanın
|
|
306
|
+
|
|
307
|
+
Intlayer v9, CMS ile programatik olarak etkileşim kurmak için `@intlayer/api` içinde temiz ve kendi kendine kimlik doğrulayan bir SDK sunar — projeleri getirin, sözlükleri getirin ve bunları kendi sunucunuzdan, betiklerinizden veya CI'nizden gönderin ya da güncelleyin. Kimlik doğrulama (OAuth2 `client_credentials`) sizin için yönetilir ve yenilenir.
|
|
308
|
+
|
|
309
|
+
SDK **iki ayrı içe aktarmaya** bölünmüştür; böylece paketiniz yalnızca gerçekten kullandığınız alanları içerir:
|
|
310
|
+
|
|
311
|
+
1. `createIntlayerCMS` — kimlik bilgilerini ve yönetilen jetonu tutan hafif bir **kimlik doğrulayıcı** (hiçbir alan istemcisi pakete dahil edilmez).
|
|
312
|
+
2. `dictionaryEndpoint`, `projectEndpoint`, … — her biri kendi alt yolundan içe aktarılan, alan başına **endpoint bağlayıcıları**.
|
|
313
|
+
|
|
314
|
+
```ts fileName="cms.ts"
|
|
315
|
+
import { createIntlayerCMS } from "@intlayer/api";
|
|
316
|
+
import { dictionaryEndpoint } from "@intlayer/api/dictionary";
|
|
317
|
+
|
|
318
|
+
// Yapılandırma isteğe bağlıdır: kimlik bilgileri INTLAYER_CLIENT_ID /
|
|
319
|
+
// INTLAYER_CLIENT_SECRET değerlerine geri döner (`@intlayer/config/built` tarafından çözülür).
|
|
320
|
+
const cms = createIntlayerCMS();
|
|
321
|
+
|
|
322
|
+
// Okuma
|
|
323
|
+
const { data: dictionaries } = await dictionaryEndpoint(cms).getDictionaries();
|
|
324
|
+
|
|
325
|
+
// Yazma — CMS'i bir veritabanı gibi kullanın
|
|
326
|
+
await dictionaryEndpoint(cms).pushDictionaries([myDictionary]);
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
> Güvenlik: CMS kimlik bilgileri içeriğinize yazma erişimi verir. Kimlik doğrulayıcıyı her zaman yalnızca **sunucu tarafında** oluşturun — `clientId` / `clientSecret` değerlerini asla tarayıcıya göndermeyin.
|
|
330
|
+
|
|
331
|
+
---
|
|
332
|
+
|
|
333
|
+
## Kendi Sunucunuzda Barındırma
|
|
334
|
+
|
|
335
|
+
Intlayer v9, tek bir komutla kendi Intlayer örneğinizi çalıştırmak için birinci sınıf destek sunuyor — Intlayer Cloud hesabı gerekmez.
|
|
336
|
+
|
|
337
|
+
```sh
|
|
338
|
+
curl -fsSL https://intlayer.org/install.sh | sh
|
|
339
|
+
```
|
|
340
|
+
|
|
341
|
+
Yükleyici, bir `docker-compose.yml` ve bir `.env` dosyasını indirir, gerekli gizli anahtarları otomatik olarak oluşturur ve `docker compose up -d` komutunu çalıştırır. Kontrol paneli, API, veritabanı, nesne depolama ve işlemsel e-posta dahil her şey yerel olarak kapsayıcılarda çalışır.
|
|
342
|
+
|
|
343
|
+
---
|
|
344
|
+
|
|
302
345
|
## v8'den Geçiş Notları
|
|
303
346
|
|
|
304
347
|
v8'den yükseltme yapıyorsanız, v9'un yıkıcı değişiklikler (breaking changes) içermediğini unutmayın. Ancak işte temel değişiklikler:
|
|
@@ -314,3 +357,5 @@ v8'den yükseltme yapıyorsanız, v9'un yıkıcı değişiklikler (breaking chan
|
|
|
314
357
|
- [Compat Adapter Paketleri Kılavuzu](https://github.com/aymericzip/intlayer/blob/main/docs/docs/tr/compat/index.md)
|
|
315
358
|
- [Dinamik Sözlükler - Koleksiyonlar ve Varyantlar](https://github.com/aymericzip/intlayer/blob/main/docs/docs/tr/dynamic_dictionaries/index.md)
|
|
316
359
|
- [Yapılandırma Referansı](https://github.com/aymericzip/intlayer/blob/main/docs/docs/tr/configuration.md)
|
|
360
|
+
- [CMS SDK - @intlayer/api ile programatik erişim](https://github.com/aymericzip/intlayer/blob/main/docs/docs/tr/intlayer_CMS.md)
|
|
361
|
+
- [Kendi Sunucuda Barındırma Kılavuzu](https://github.com/aymericzip/intlayer/blob/main/docs/docs/tr/self_hosting.md)
|