@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
|
@@ -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)
|
package/docs/id/releases/v9.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2026-06-14
|
|
3
|
-
updatedAt: 2026-06-
|
|
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)
|