@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: इंटलेयर को सेल्फ-होस्ट करना
5
+ description: एक ही कमांड से अपने स्वयं के इंफ्रास्ट्रक्चर पर एक पूर्ण इंटलेयर इंस्टेंस चलाएँ। इंटलेयर क्लाउड अकाउंट की कोई आवश्यकता नहीं है।
6
+ keywords:
7
+ - Self-Hosting
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
+ # इंटलेयर को सेल्फ-होस्ट करना
21
+
22
+ इंटलेयर पूरी तरह से आपके अपने इंफ्रास्ट्रक्चर पर चल सकता है - इसके लिए इंटलेयर क्लाउड खाते की आवश्यकता नहीं है। एक ही कमांड एक उत्पादन-तैयार स्टैक को बूट करता है:
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
+ 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
+ क्रोमियम (Puppeteer स्क्रीनशॉट जनरेशन के लिए उपयोग किया जाता है) बैकएंड इमेज के अंदर बंडल किया गया है - किसी अलग कंटेनर की आवश्यकता नहीं है।
54
+
55
+ ---
56
+
57
+ ## पूर्व-आवश्यकताएँ
58
+
59
+ - **डॉकर** ≥ 24 और **डॉकर कंपोज** ≥ v2। यदि इनमें से कोई भी गायब है, तो इंस्टॉलर इंस्टॉल लिंक प्रिंट करता है और बाहर निकल जाता है।
60
+ - होस्ट पर पोर्ट `3000`, `3100`, `8025`, `9000`, और `9001` उपलब्ध होने चाहिए।
61
+ - एक Linux या macOS होस्ट (या Windows पर WSL2)।
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` मौजूद नहीं है, तो उदाहरण कॉपी करता है और `openssl rand` के माध्यम से `BETTER_AUTH_SECRET`, `S3_ACCESS_KEY_ID`, और `S3_SECRET_ACCESS_KEY` के लिए रैंडम सीक्रेट्स जेनरेट करता है।
76
+ 4. `docker compose pull` + `docker compose up -d` चलाता है।
77
+ 5. URL प्रिंट करता है: डैशबोर्ड `:3000`, API `:3100`, ईमेल UI `:8025`, MinIO कंसोल `:9001`।
78
+
79
+ स्टैक के चालू होने के बाद, **http://localhost:3000** खोलें और अपना पहला अकाउंट बनाएँ।
80
+
81
+ ---
82
+
83
+ ## सेवाएँ
84
+
85
+ | सर्विस | इमेज | होस्ट पोर्ट(s) | उद्देश्य |
86
+ | ----------- | ------------------------------------ | ------------------------------ | --------------------------------------------------- |
87
+ | **app** | `apps/app/Dockerfile` से निर्मित | `3000` | TanStack Start डैशबोर्ड (CMS UI) |
88
+ | **backend** | `apps/backend/Dockerfile` से निर्मित | `3100` | Fastify REST API (`/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` (वेब UI) | लोकल ट्रांजैक्शनल ईमेल सिंक |
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` | बैकएंड API का पब्लिक URL |
111
+ | `APP_URL` | `http://localhost:3000` | डैशबोर्ड का पब्लिक URL |
112
+ | `DOMAIN` | `localhost` | कुकी डोमेन |
113
+ | `MONGODB_URI` | `mongodb://mongo:27017/intlayer?replicaSet=rs0` | पूर्ण MongoDB कनेक्शन URI |
114
+ | `REDIS_URL` | `redis://redis:6379` | Redis कनेक्शन URL |
115
+ | `BETTER_AUTH_SECRET` | _(जेनरेटेड)_ | सेशन साइनिंग के लिए 32-बाइट सीक्रेट |
116
+ | `MAIL_PROVIDER` | `smtp` | मेल ट्रांसपोर्ट: `smtp` या `resend` |
117
+ | `MAIL_SMTP_HOST` | `mailpit` | SMTP होस्टनेम (मेलपिट कंटेनर नाम) |
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` | AI-सहायता प्राप्त अनुवाद और कंटेंट ऑडिट |
133
+ | `STRIPE_SECRET_KEY`, `STRIPE_WEBHOOK_SECRET`, `STRIPE_*` | बिलिंग और सब्सक्रिप्शन प्रबंधन |
134
+ | `RESEND_API_KEY` | रीसेंड के माध्यम से ट्रांजैक्शनल ईमेल (सेट होने पर मेलपिट को ओवरराइड करता है) |
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
+ ## अपने इंटलेयर प्रोजेक्ट को कनेक्ट करना
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
+ * सेल्फ-होस्टेड CMS डैशबोर्ड का URL।
160
+ * डिफ़ॉल्ट: https://app.intlayer.org
161
+ */
162
+ cmsURL: process.env.INTLAYER_CMS_URL, // उदाहरण के लिए http://localhost:3000
163
+
164
+ /**
165
+ * सेल्फ-होस्टेड बैकएंड API का URL।
166
+ * डिफ़ॉल्ट: https://back.intlayer.org
167
+ */
168
+ backendURL: process.env.INTLAYER_BACKEND_URL, // उदाहरण के लिए 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
+ ### `@intlayer/api` SDK
187
+
188
+ प्रोग्रामेटिक रूप से `@intlayer/api` SDK का उपयोग करते समय, `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
+ सभी स्थायी डेटा तीन नामित डॉकर वॉल्यूम में रहते हैं।
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
+ प्रोडक्शन डिप्लॉयमेंट के लिए, ऐप और बैकएंड कंटेनरों को सीधे एक्सपोज़ करने के बजाय उनके सामने एक रिवर्स प्रॉक्सी रखें।
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`) को फिर से बनाना होगा या रनटाइम कॉन्फ़िग इंजेक्शन का उपयोग करना होगा।
303
+
304
+ ---
305
+
306
+ ## समस्या निवारण
307
+
308
+ ### पहली शुरुआत में बैकएंड क्रैश-लूप करता है
309
+
310
+ बैकएंड शुरू होने से पहले MongoDB और Redis स्वस्थ होने चाहिए। कंपोज़ फ़ाइल `condition: service_healthy` के साथ `depends_on` का उपयोग करती है। यदि आप बार-बार बैकएंड रीस्टार्ट देखते हैं, तो जांचें कि `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 से मेल खाता है जहाँ बैकएंड **ब्राउज़र** से (डॉकर नेटवर्क से नहीं) पहुँच योग्य है। यदि आपने बैकएंड पोर्ट बदला है या एक रिवर्स प्रॉक्सी जोड़ा है, तो डैशबोर्ड इमेज को फिर से बनाएँ:
321
+
322
+ ```sh
323
+ docker compose build app
324
+ docker compose up -d app
325
+ ```
326
+
327
+ ### ईमेल नहीं भेजा जा रहा है
328
+
329
+ डिफ़ॉल्ट रूप से, सभी आउटबाउंड ईमेल मेलपिट द्वारा कैप्चर किए जाते हैं। भेजे गए संदेशों को देखने के लिए `http://localhost:8025` खोलें। वास्तविक ईमेल भेजने के लिए, `.env` में `MAIL_PROVIDER=resend` और `RESEND_API_KEY=<your-key>` सेट करें, फिर बैकएंड को रीस्टार्ट करें:
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
+ - [इंटलेयर सीएमएस डॉक्यूमेंटेशन](https://github.com/aymericzip/intlayer/blob/main/docs/docs/hi/intlayer_CMS.md)
348
+ - [कॉन्फ़िगरेशन संदर्भ](https://github.com/aymericzip/intlayer/blob/main/docs/docs/hi/configuration.md)
349
+ - [सीएमएस SDK — `@intlayer/api`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/hi/intlayer_CMS.md#programmatic-access-with-the-intlayerapi-sdk)
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  createdAt: 2026-06-14
3
- updatedAt: 2026-06-26
3
+ updatedAt: 2026-06-29
4
4
  title: Intlayer v9 Baru - Apa yang baru?
5
5
  description: Temukan apa yang baru di Intlayer v9. Memperkenalkan paket kompatibilitas drop-in untuk pustaka i18n populer dan dukungan untuk Collections dan Variants.
6
6
  keywords:
@@ -9,6 +9,7 @@ keywords:
9
9
  - Migrasi
10
10
  - Collections
11
11
  - Variants
12
+ - CMS SDK
12
13
  - i18next
13
14
  - next-intl
14
15
  - vue-i18n
@@ -299,6 +300,34 @@ npm install intlayer react-native-intlayer
299
300
 
300
301
  ---
301
302
 
303
+ ## SDK CMS: gunakan Intlayer sebagai basis data konten headless
304
+
305
+ Intlayer v9 menyertakan SDK yang bersih dan mengautentikasi sendiri di `@intlayer/api` untuk berinteraksi dengan CMS secara terprogram — mengambil proyek, mengambil kamus, serta mengirim atau memperbaruinya dari server, skrip, atau CI Anda sendiri. Autentikasi (OAuth2 `client_credentials`) ditangani dan disegarkan untuk Anda.
306
+
307
+ SDK dibagi menjadi **dua impor terpisah** sehingga bundel Anda hanya menyertakan domain yang benar-benar Anda gunakan:
308
+
309
+ 1. `createIntlayerCMS` — sebuah **autentikator** ringan yang menyimpan kredensial dan token yang dikelola (tanpa menyertakan klien domain).
310
+ 2. `dictionaryEndpoint`, `projectEndpoint`, … — **pengikat endpoint** per domain, masing-masing diimpor dari subpath-nya sendiri.
311
+
312
+ ```ts fileName="cms.ts"
313
+ import { createIntlayerCMS } from "@intlayer/api";
314
+ import { dictionaryEndpoint } from "@intlayer/api/dictionary";
315
+
316
+ // Konfigurasi bersifat opsional: kredensial kembali ke INTLAYER_CLIENT_ID /
317
+ // INTLAYER_CLIENT_SECRET yang diselesaikan oleh `@intlayer/config/built`.
318
+ const cms = createIntlayerCMS();
319
+
320
+ // Baca
321
+ const { data: dictionaries } = await dictionaryEndpoint(cms).getDictionaries();
322
+
323
+ // Tulis — gunakan CMS seperti basis data
324
+ await dictionaryEndpoint(cms).pushDictionaries([myDictionary]);
325
+ ```
326
+
327
+ > Keamanan: kredensial CMS memberikan akses tulis ke konten Anda. Selalu buat autentikator hanya di **sisi server** — jangan pernah mengirim `clientId` / `clientSecret` ke browser.
328
+
329
+ ---
330
+
302
331
  ## Catatan migrasi dari v8
303
332
 
304
333
  Jika Anda memperbarui dari v8, perhatikan bahwa v9 tidak menyertakan breaking changes (perubahan yang merusak). Namun berikut adalah perubahan utamanya:
@@ -314,3 +343,4 @@ Jika Anda memperbarui dari v8, perhatikan bahwa v9 tidak menyertakan breaking ch
314
343
  - [Panduan Compat Adapter Packages](https://github.com/aymericzip/intlayer/blob/main/docs/docs/id/compat/index.md)
315
344
  - [Dynamic Dictionaries - Collections & Variants](https://github.com/aymericzip/intlayer/blob/main/docs/docs/id/dynamic_dictionaries/index.md)
316
345
  - [Referensi Konfigurasi](https://github.com/aymericzip/intlayer/blob/main/docs/docs/id/configuration.md)
346
+ - [SDK CMS - Akses terprogram dengan @intlayer/api](https://github.com/aymericzip/intlayer/blob/main/docs/docs/id/intlayer_CMS.md)