@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
@@ -0,0 +1,349 @@
1
+ ---
2
+ createdAt: 2026-06-30
3
+ updatedAt: 2026-06-30
4
+ title: Auto-hébergement d'Intlayer
5
+ description: Exécutez une instance complète d'Intlayer sur votre propre infrastructure avec une seule commande. Aucun compte Intlayer Cloud n'est requis.
6
+ keywords:
7
+ - Auto-hébergement
8
+ - Docker
9
+ - Docker Compose
10
+ - Intlayer
11
+ - CMS
12
+ - Installation
13
+ - Infrastructure
14
+ slugs:
15
+ - doc
16
+ - self-hosting
17
+ author: aymericzip
18
+ ---
19
+
20
+ # Auto-hébergement d'Intlayer
21
+
22
+ Intlayer peut fonctionner entièrement sur votre propre infrastructure — aucun compte Intlayer Cloud n'est requis. Une seule commande démarre une stack prête pour la production :
23
+
24
+ ```sh
25
+ curl -fsSL https://intlayer.org/install.sh | sh
26
+ ```
27
+
28
+ L'installateur télécharge un fichier `docker-compose.yml` et un fichier `.env`, génère automatiquement les secrets requis et démarre tous les conteneurs avec `docker compose up -d`.
29
+
30
+ ## Table des matières
31
+
32
+ <TOC/>
33
+
34
+ ---
35
+
36
+ ## Architecture
37
+
38
+ ```
39
+ ┌─────────────────────────────┐
40
+ browser ──────▶ │ app (TanStack Start) :3000│ ──┐
41
+ └─────────────────────────────┘ │ VITE_BACKEND_URL
42
+ ┌─────────────────────────────┐ │
43
+ │ backend (Fastify/Bun) :3100│ ◀─┘
44
+ └──────────────┬──────────────┘
45
+ ┌──────────┬─────────┼──────────┬───────────┐
46
+ ▼ ▼ ▼ ▼ ▼
47
+ mongo:27017 redis:6379 minio:9000 mailpit:1025 Chromium
48
+ (1-node RS) (S3 API) (SMTP) (in-image)
49
+ minio:9001 mailpit:8025
50
+ (console) (web UI)
51
+ ```
52
+
53
+ Chromium (utilisé pour la génération de captures d'écran Puppeteer) est intégré à l'image du backend — aucun conteneur séparé n'est nécessaire.
54
+
55
+ ---
56
+
57
+ ## Prérequis
58
+
59
+ - **Docker** ≥ 24 et **Docker Compose** ≥ v2. Si l'un des deux est manquant, l'installateur affiche le lien d'installation et quitte.
60
+ - Ports `3000`, `3100`, `8025`, `9000` et `9001` disponibles sur l'hôte.
61
+ - Un hôte Linux ou macOS (ou WSL2 sur Windows).
62
+
63
+ ---
64
+
65
+ ## Démarrage rapide
66
+
67
+ ```sh
68
+ curl -fsSL https://intlayer.org/install.sh | sh
69
+ ```
70
+
71
+ Ce que fait l'installateur :
72
+
73
+ 1. Vérifie que `docker` et `docker compose` sont présents.
74
+ 2. Télécharge `docker-compose.yml` et `.env.example` dans `./intlayer/`.
75
+ 3. S'il n'existe pas de fichier `.env`, copie l'exemple et génère des secrets aléatoires pour `BETTER_AUTH_SECRET`, `S3_ACCESS_KEY_ID` et `S3_SECRET_ACCESS_KEY` via `openssl rand`.
76
+ 4. Exécute `docker compose pull` + `docker compose up -d`.
77
+ 5. Affiche les URL : tableau de bord `:3000`, API `:3100`, UI e-mail `:8025`, console MinIO `:9001`.
78
+
79
+ Une fois la stack démarrée, ouvrez **http://localhost:3000** et créez votre premier compte.
80
+
81
+ ---
82
+
83
+ ## Services
84
+
85
+ | Service | Image | Port(s) hôte | Objectif |
86
+ | ----------- | ----------------------------------------------- | ------------------------------ | ------------------------------------------------------------------------ |
87
+ | **app** | construit à partir de `apps/app/Dockerfile` | `3000` | Tableau de bord TanStack Start (UI du CMS) |
88
+ | **backend** | construit à partir de `apps/backend/Dockerfile` | `3100` | API REST Fastify (endpoint `/health`) |
89
+ | **mongo** | `mongo:7` | interne | Réplica set à nœud unique (`rs0`) |
90
+ | **redis** | `redis:7-alpine` | interne | Files d'attente de jobs (BullMQ) et mise en cache (ioredis) |
91
+ | **minio** | `minio/minio` | `9000` (S3), `9001` (console) | Stockage d'objets compatible S3 pour les avatars et les captures d'écran |
92
+ | **mailpit** | `axllent/mailpit` | `1025` (SMTP), `8025` (web UI) | Réceptacle local d'e-mails transactionnels |
93
+
94
+ Les ports internes (mongo, redis) ne sont pas exposés à l'hôte par défaut.
95
+
96
+ > Le port `9000` de MinIO doit être accessible par le navigateur car les assets téléchargés (avatars, captures d'écran) sont chargés directement depuis `S3_PUBLIC_URL=http://localhost:9000/intlayer`.
97
+
98
+ ---
99
+
100
+ ## Variables d'environnement
101
+
102
+ L'installateur génère un fichier `.env` prêt à l'emploi. Le tableau ci-dessous décrit chaque variable.
103
+
104
+ ### Requis (auto-généré ou demandé)
105
+
106
+ | Variable | Exemple | Description |
107
+ | ---------------------- | ----------------------------------------------- | ------------------------------------------------------------------ |
108
+ | `NODE_ENV` | `production` | Environnement d'exécution |
109
+ | `PORT` | `3100` | Port d'écoute du backend |
110
+ | `BACKEND_URL` | `http://localhost:3100` | URL publique de l'API backend |
111
+ | `APP_URL` | `http://localhost:3000` | URL publique du tableau de bord |
112
+ | `DOMAIN` | `localhost` | Domaine du cookie |
113
+ | `MONGODB_URI` | `mongodb://mongo:27017/intlayer?replicaSet=rs0` | URI de connexion complète à MongoDB |
114
+ | `REDIS_URL` | `redis://redis:6379` | URL de connexion Redis |
115
+ | `BETTER_AUTH_SECRET` | _(généré)_ | Secret de 32 octets pour la signature de session |
116
+ | `MAIL_PROVIDER` | `smtp` | Transport de courrier : `smtp` ou `resend` |
117
+ | `MAIL_SMTP_HOST` | `mailpit` | Nom d'hôte SMTP (nom du conteneur Mailpit) |
118
+ | `MAIL_SMTP_PORT` | `1025` | Port SMTP |
119
+ | `MAIL_FROM` | `Intlayer <no-reply@localhost>` | Adresse de l'expéditeur |
120
+ | `S3_ENDPOINT` | `http://minio:9000` | Endpoint compatible S3 |
121
+ | `S3_PUBLIC_URL` | `http://localhost:9000/intlayer` | URL publique pour le chargement des assets par le navigateur |
122
+ | `S3_BUCKET_NAME` | `intlayer` | Nom du bucket |
123
+ | `S3_ACCESS_KEY_ID` | _(généré)_ | Clé d'accès MinIO |
124
+ | `S3_SECRET_ACCESS_KEY` | _(généré)_ | Clé secrète MinIO |
125
+ | `VITE_BACKEND_URL` | `http://localhost:3100` | URL du backend intégrée au tableau de bord lors de la construction |
126
+ | `VITE_DOMAIN` | `localhost` | Domaine intégré au tableau de bord lors de la construction |
127
+
128
+ ### Facultatif (les fonctionnalités se dégradent gracieusement en leur absence)
129
+
130
+ | Variable | Fonctionnalité |
131
+ | -------------------------------------------------------- | --------------------------------------------------------------- |
132
+ | `OPENAI_API_KEY` | Traduction assistée par IA et audit de contenu |
133
+ | `STRIPE_SECRET_KEY`, `STRIPE_WEBHOOK_SECRET`, `STRIPE_*` | Gestion de la facturation et des abonnements |
134
+ | `RESEND_API_KEY` | E-mail transactionnel via Resend (outrepasse Mailpit si défini) |
135
+ | `GITHUB_CLIENT_ID`, `GITHUB_CLIENT_SECRET` | Connexion OAuth GitHub |
136
+ | `GOOGLE_CLIENT_ID`, `GOOGLE_CLIENT_SECRET` | Connexion OAuth Google |
137
+ | `GITLAB_CLIENT_ID`, `GITLAB_CLIENT_SECRET` | Connexion OAuth GitLab |
138
+ | `MICROSOFT_CLIENT_ID`, `MICROSOFT_CLIENT_SECRET` | Connexion OAuth Microsoft |
139
+ | `LINKEDIN_CLIENT_ID`, `LINKEDIN_CLIENT_SECRET` | Connexion OAuth LinkedIn |
140
+ | `ATLASSIAN_CLIENT_ID`, `ATLASSIAN_CLIENT_SECRET` | Connexion OAuth Atlassian |
141
+
142
+ ---
143
+
144
+ ## Connexion de votre projet Intlayer
145
+
146
+ Une fois la stack en cours d'exécution, pointez votre projet vers le backend et le tableau de bord auto-hébergés au lieu de `intlayer.org`.
147
+
148
+ ### Configuration du projet
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 du tableau de bord CMS auto-hébergé.
160
+ * Par défaut : https://app.intlayer.org
161
+ */
162
+ cmsURL: process.env.INTLAYER_CMS_URL, // ex. http://localhost:3000
163
+
164
+ /**
165
+ * URL de l'API backend auto-hébergée.
166
+ * Par défaut : https://back.intlayer.org
167
+ */
168
+ backendURL: process.env.INTLAYER_BACKEND_URL, // ex. http://localhost:3100
169
+ },
170
+ };
171
+
172
+ export default config;
173
+ ```
174
+
175
+ Définissez les variables d'environnement dans le fichier `.env` de votre projet :
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
+ Créez des identifiants d'accès dans votre tableau de bord auto-hébergé sous **Projets → Clés d'accès** à l'adresse `http://localhost:3000/projects`.
185
+
186
+ ### SDK `@intlayer/api`
187
+
188
+ Lorsque vous utilisez le SDK `@intlayer/api` de manière programmatique, passez `backendURL` explicitement :
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
+ ## Mise à niveau
208
+
209
+ Exécuter à nouveau l'installateur sur un déploiement existant effectue une mise à niveau progressive :
210
+
211
+ ```sh
212
+ curl -fsSL https://intlayer.org/install.sh | sh
213
+ ```
214
+
215
+ Ceci télécharge les dernières images et redémarre les conteneurs avec `docker compose pull && docker compose up -d`. Les volumes existants (`mongo-data`, `redis-data`, `minio-data`) sont préservés — aucune perte de données.
216
+
217
+ Pour effectuer une mise à niveau manuellement depuis le répertoire `./intlayer/` :
218
+
219
+ ```sh
220
+ docker compose pull
221
+ docker compose up -d
222
+ ```
223
+
224
+ ---
225
+
226
+ ## Sauvegarde et restauration
227
+
228
+ Toutes les données persistantes résident dans trois volumes Docker nommés.
229
+
230
+ ### Sauvegarde
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
+ ### Restauration
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
+ # Répétez pour redis-data et minio-data
258
+ ```
259
+
260
+ ---
261
+
262
+ ## Utilisation d'un proxy inverse (Nginx / Caddy)
263
+
264
+ Pour les déploiements de production, placez un proxy inverse devant les conteneurs de l'application et du backend au lieu de les exposer directement.
265
+
266
+ ### Exemple 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
+ Mettez à jour les variables `.env` suivantes pour qu'elles correspondent à vos domaines publics :
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
+ > Les variables `VITE_*` sont intégrées à l'image du tableau de bord lors de la construction. Si vous les modifiez après la construction de l'image, vous devez reconstruire l'image `app` (`docker compose build app`) ou utiliser l'injection de configuration au moment de l'exécution.
303
+
304
+ ---
305
+
306
+ ## Dépannage
307
+
308
+ ### Le backend redémarre en boucle au premier démarrage
309
+
310
+ MongoDB et Redis doivent être sains avant le démarrage du backend. Le fichier compose utilise `depends_on` avec `condition: service_healthy`. Si vous voyez des redémarrages répétés du backend, vérifiez que les contrôles de santé de `mongo` et `redis` sont réussis :
311
+
312
+ ```sh
313
+ docker compose ps
314
+ docker compose logs mongo
315
+ docker compose logs redis
316
+ ```
317
+
318
+ ### Le tableau de bord ne peut pas atteindre l'API
319
+
320
+ Vérifiez que `VITE_BACKEND_URL` correspond à l'URL où le backend est accessible depuis le **navigateur** (pas le réseau Docker). Si vous avez modifié le port du backend ou ajouté un proxy inverse, reconstruisez l'image du tableau de bord :
321
+
322
+ ```sh
323
+ docker compose build app
324
+ docker compose up -d app
325
+ ```
326
+
327
+ ### Les e-mails ne sont pas envoyés
328
+
329
+ Par défaut, tous les e-mails sortants sont capturés par Mailpit. Ouvrez `http://localhost:8025` pour voir les messages envoyés. Pour envoyer de vrais e-mails, définissez `MAIL_PROVIDER=resend` et `RESEND_API_KEY=<your-key>` dans `.env`, puis redémarrez le backend :
330
+
331
+ ```sh
332
+ docker compose restart backend
333
+ ```
334
+
335
+ ### Bucket MinIO manquant
336
+
337
+ Si le service ponctuel `minio-init` n'a pas fonctionné (ou a fonctionné avant que MinIO ne soit prêt), créez le bucket manuellement :
338
+
339
+ ```sh
340
+ docker compose run --rm minio-init
341
+ ```
342
+
343
+ ---
344
+
345
+ ## Liens utiles
346
+
347
+ - [Documentation du CMS Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/fr/intlayer_CMS.md)
348
+ - [Référence de configuration](https://github.com/aymericzip/intlayer/blob/main/docs/docs/fr/configuration.md)
349
+ - [SDK CMS — `@intlayer/api`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/fr/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 | अपने कंटेंट को Intlayer CMS में बाहरीकृत करें
5
5
  description: अपने कंटेंट को Intlayer CMS में बाहरीकृत करें ताकि आप अपनी टीम को कंटेंट प्रबंधन सौंप सकें।
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: "स्व-होस्टिंग अनुभाग जोड़ें"
21
24
  - version: 6.0.1
22
25
  date: 2025-09-22
23
26
  changes: "लाइव सिंक दस्तावेज़ीकरण जोड़ें"
@@ -373,6 +376,18 @@ export default config;
373
376
  - `live` फ़्लैग प्रत्येक शब्दकोश के लिए बिल्ड समय पर मूल्यांकित किया जाता है। यदि बिल्ड के दौरान रिमोट सामग्री को `live=true` के रूप में चिह्नित नहीं किया गया था, तो उस शब्दकोश के लिए लाइव सिंक सक्षम करने के लिए आपको पुनः बिल्ड करना होगा।
374
377
  - लाइव सिंक सर्वर को `.intlayer` में लिखने में सक्षम होना चाहिए। कंटेनरों में, `/.intlayer` पर लिखने की अनुमति सुनिश्चित करें।
375
378
 
379
+ ## स्व-होस्टिंग (Self-Hosting)
380
+
381
+ Intlayer पूरी तरह से आपके अपने इंफ्रास्ट्रक्चर पर चल सकता है। एक सिंगल कमांड Docker Compose के साथ पूरे स्टैक (डैशबोर्ड, API, डेटाबेस, ऑब्जेक्ट स्टोरेज, और ईमेल) को बूटस्ट्रैप करती है:
382
+
383
+ ```sh
384
+ curl -fsSL https://intlayer.org/install.sh | sh
385
+ ```
386
+
387
+ पूर्ण सेटअप गाइड, एनवायरनमेंट वेरिएबल रेफरेंस, अपग्रेड निर्देश, और बैकअप/रिस्टोर प्रक्रियाओं के लिए, [स्व-होस्टिंग गाइड](https://github.com/aymericzip/intlayer/blob/main/docs/docs/hi/self_hosting.md) देखें।
388
+
389
+ ---
390
+
376
391
  ## डिबग
377
392
 
378
393
  यदि आपको CMS के साथ कोई समस्या आती है, तो निम्नलिखित जांचें:
@@ -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 में क्या नया है। लोकप्रिय i18n लाइब्रेरीज़ के लिए ड्रॉप-इन कम्पैटिबिलिटी पैकेजेस और Collections और Variants के लिए सपोर्ट का परिचय।
6
6
  keywords:
@@ -9,6 +9,9 @@ keywords:
9
9
  - Migration
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 को हेडलेस कंटेंट डेटाबेस के रूप में उपयोग करें
306
+
307
+ Intlayer v9 में `@intlayer/api` के भीतर एक साफ़, स्वतः-प्रमाणित SDK शामिल है, जिससे आप 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` डाउनलोड करता है, आवश्यक सीक्रेट्स (secrets) को स्वचालित रूप से जनरेट करता है, और `docker compose up -d` चलाता है। सब कुछ — डैशबोर्ड, API, डेटाबेस, ऑब्जेक्ट स्टोरेज, और ट्रांजेक्शनल ईमेल — कंटेनर्स में स्थानीय रूप से चलता है।
342
+
343
+ ### शामिल सेवाएं
344
+
345
+ | सेवा | उद्देश्य |
346
+ | -------------------------------------- | ---------------------------------------------------------------- |
347
+ | **app** (TanStack Start) | पोर्ट `3000` पर डैशबोर्ड UI |
348
+ | **backend** (Fastify/Bun) | पोर्ट `3100` पर REST API |
349
+ | **MongoDB 7** (सिंगल-नोड रेप्लिका सेट) | प्राथमिक डेटाबेस |
350
+ | **Redis 7** | जॉब क्यूज़ और कैशिंग |
351
+ | **MinIO** | S3-संगत ऑब्जेक्ट स्टोरेज (अवतार, स्क्रीनशॉट) |
352
+ | **Mailpit** | लोकल SMTP सिंक + पोर्ट `8025` पर ट्रांजेक्शनल ईमेल के लिए वेब UI |
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
  - [Compat Adapter Packages Guide](https://github.com/aymericzip/intlayer/blob/main/docs/docs/hi/compat/index.md)
315
371
  - [Dynamic Dictionaries - Collections & Variants](https://github.com/aymericzip/intlayer/blob/main/docs/docs/hi/dynamic_dictionaries/index.md)
316
372
  - [Configuration Reference](https://github.com/aymericzip/intlayer/blob/main/docs/docs/hi/configuration.md)
373
+ - [CMS SDK - @intlayer/api के साथ प्रोग्रामेटिक एक्सेस](https://github.com/aymericzip/intlayer/blob/main/docs/docs/hi/intlayer_CMS.md)
374
+ - [स्व-होस्टिंग गाइड](https://github.com/aymericzip/intlayer/blob/main/docs/docs/hi/self_hosting.md)