@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.
Files changed (63) hide show
  1. package/dist/cjs/generated/docs.entry.cjs +20 -0
  2. package/dist/cjs/generated/docs.entry.cjs.map +1 -1
  3. package/dist/esm/generated/docs.entry.mjs +20 -0
  4. package/dist/esm/generated/docs.entry.mjs.map +1 -1
  5. package/dist/types/generated/docs.entry.d.ts +1 -0
  6. package/dist/types/generated/docs.entry.d.ts.map +1 -1
  7. package/docs/ar/intlayer_CMS.md +16 -1
  8. package/docs/ar/releases/v9.md +58 -1
  9. package/docs/ar/self_hosting.md +349 -0
  10. package/docs/bn/intlayer_CMS.md +570 -0
  11. package/docs/bn/releases/v9.md +358 -0
  12. package/docs/cs/releases/v9.md +358 -0
  13. package/docs/de/intlayer_CMS.md +117 -1
  14. package/docs/de/releases/v9.md +61 -1
  15. package/docs/de/self_hosting.md +349 -0
  16. package/docs/en/intlayer_CMS.md +171 -1
  17. package/docs/en/releases/v9.md +45 -2
  18. package/docs/en/self_hosting.md +349 -0
  19. package/docs/en-GB/intlayer_CMS.md +16 -1
  20. package/docs/en-GB/releases/v9.md +47 -2
  21. package/docs/en-GB/self_hosting.md +349 -0
  22. package/docs/es/intlayer_CMS.md +117 -1
  23. package/docs/es/releases/v9.md +61 -1
  24. package/docs/es/self_hosting.md +349 -0
  25. package/docs/fr/intlayer_CMS.md +117 -1
  26. package/docs/fr/releases/v9.md +61 -1
  27. package/docs/fr/self_hosting.md +349 -0
  28. package/docs/hi/intlayer_CMS.md +16 -1
  29. package/docs/hi/releases/v9.md +59 -1
  30. package/docs/hi/self_hosting.md +349 -0
  31. package/docs/id/releases/v9.md +31 -1
  32. package/docs/id/self_hosting.md +349 -0
  33. package/docs/it/intlayer_CMS.md +117 -1
  34. package/docs/it/releases/v9.md +61 -1
  35. package/docs/it/self_hosting.md +349 -0
  36. package/docs/ja/intlayer_CMS.md +191 -10
  37. package/docs/ja/releases/v9.md +31 -1
  38. package/docs/ja/self_hosting.md +349 -0
  39. package/docs/ko/intlayer_CMS.md +189 -6
  40. package/docs/ko/releases/v9.md +30 -1
  41. package/docs/ko/self_hosting.md +349 -0
  42. package/docs/nl/releases/v9.md +358 -0
  43. package/docs/pl/intlayer_CMS.md +16 -1
  44. package/docs/pl/releases/v9.md +58 -1
  45. package/docs/pl/self_hosting.md +349 -0
  46. package/docs/pt/intlayer_CMS.md +117 -1
  47. package/docs/pt/releases/v9.md +61 -1
  48. package/docs/pt/self_hosting.md +349 -0
  49. package/docs/ru/intlayer_CMS.md +196 -15
  50. package/docs/ru/releases/v9.md +59 -1
  51. package/docs/ru/self_hosting.md +349 -0
  52. package/docs/tr/intlayer_CMS.md +16 -1
  53. package/docs/tr/releases/v9.md +46 -1
  54. package/docs/tr/self_hosting.md +349 -0
  55. package/docs/uk/intlayer_CMS.md +16 -1
  56. package/docs/uk/releases/v9.md +58 -1
  57. package/docs/uk/self_hosting.md +349 -0
  58. package/docs/vi/releases/v9.md +31 -1
  59. package/docs/vi/self_hosting.md +349 -0
  60. package/docs/zh/releases/v9.md +31 -1
  61. package/docs/zh/self_hosting.md +349 -0
  62. package/package.json +6 -6
  63. package/src/generated/docs.entry.ts +20 -0
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  createdAt: 2026-06-14
3
- updatedAt: 2026-06-26
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)
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  createdAt: 2025-08-23
3
- updatedAt: 2025-08-23
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:
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  createdAt: 2026-06-14
3
- updatedAt: 2026-06-26
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)