@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: Intlayer'ı Kendi Sunucunuzda Barındırma
|
|
5
|
+
description: Tek bir komutla kendi altyapınızda eksiksiz bir Intlayer örneğini çalıştırın. Intlayer Cloud hesabı gerekmez.
|
|
6
|
+
keywords:
|
|
7
|
+
- Kendi Sunucusunda Barındırma
|
|
8
|
+
- Docker
|
|
9
|
+
- Docker Compose
|
|
10
|
+
- Intlayer
|
|
11
|
+
- CMS
|
|
12
|
+
- Kurulum
|
|
13
|
+
- Altyapı
|
|
14
|
+
slugs:
|
|
15
|
+
- doc
|
|
16
|
+
- self-hosting
|
|
17
|
+
author: aymericzip
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
# Intlayer'ı Kendi Sunucunuzda Barındırma
|
|
21
|
+
|
|
22
|
+
Intlayer, tamamen kendi altyapınızda çalışabilir; Intlayer Cloud hesabı gerekmez. Tek bir komutla üretime hazır bir yığını başlatabilirsiniz:
|
|
23
|
+
|
|
24
|
+
```sh
|
|
25
|
+
curl -fsSL https://intlayer.org/install.sh | sh
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Yükleyici, bir `docker-compose.yml` ve bir `.env` indirir, gerekli gizli anahtarları otomatik olarak oluşturur ve tüm kapsayıcıları `docker compose up -d` ile başlatır.
|
|
29
|
+
|
|
30
|
+
## İçindekiler
|
|
31
|
+
|
|
32
|
+
<TOC/>
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## Mimari
|
|
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-düğüm RS) (S3 API) (SMTP) (görüntü içinde)
|
|
49
|
+
minio:9001 mailpit:8025
|
|
50
|
+
(konsol) (web arayüzü)
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
Chromium (Puppeteer ekran görüntüsü oluşturma için kullanılır) backend görüntüsünün içine dahil edilmiştir; ayrı bir kapsayıcıya gerek yoktur.
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## Önkoşullar
|
|
58
|
+
|
|
59
|
+
- **Docker** ≥ 24 ve **Docker Compose** ≥ v2. Herhangi biri eksikse, yükleyici kurulum bağlantısını yazdırır ve çıkar.
|
|
60
|
+
- Ana bilgisayarda `3000`, `3100`, `8025`, `9000` ve `9001` bağlantı noktalarının kullanılabilir olması.
|
|
61
|
+
- Bir Linux veya macOS ana bilgisayarı (veya Windows'ta WSL2).
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
## Hızlı Başlangıç
|
|
66
|
+
|
|
67
|
+
```sh
|
|
68
|
+
curl -fsSL https://intlayer.org/install.sh | sh
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
Yükleyicinin yaptığı işlemler:
|
|
72
|
+
|
|
73
|
+
1. `docker` ve `docker compose`'un mevcut olduğunu kontrol eder.
|
|
74
|
+
2. `docker-compose.yml` ve `.env.example` dosyalarını `./intlayer/` dizinine indirir.
|
|
75
|
+
3. `.env` dosyası mevcut değilse, örneği kopyalar ve `BETTER_AUTH_SECRET`, `S3_ACCESS_KEY_ID` ve `S3_SECRET_ACCESS_KEY` için `openssl rand` aracılığıyla rastgele gizli anahtarlar oluşturur.
|
|
76
|
+
4. `docker compose pull` + `docker compose up -d` komutlarını çalıştırır.
|
|
77
|
+
5. URL'leri yazdırır: kontrol paneli `:3000`, API `:3100`, e-posta arayüzü `:8025`, MinIO konsolu `:9001`.
|
|
78
|
+
|
|
79
|
+
Yığın çalışmaya başladıktan sonra **http://localhost:3000** adresini açın ve ilk hesabınızı oluşturun.
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
## Servisler
|
|
84
|
+
|
|
85
|
+
| Servis | Görüntü | Ana Bilgisayar Bağlantı Noktası(ları) | Amaç |
|
|
86
|
+
| ----------- | ------------------------------------------------- | ------------------------------------- | ------------------------------------------------------------ |
|
|
87
|
+
| **app** | `apps/app/Dockerfile` dosyasından oluşturuldu | `3000` | TanStack Start kontrol paneli (CMS UI) |
|
|
88
|
+
| **backend** | `apps/backend/Dockerfile` dosyasından oluşturuldu | `3100` | Fastify REST API (`/health` uç noktası) |
|
|
89
|
+
| **mongo** | `mongo:7` | dahili | Tek düğümlü replika seti (`rs0`) |
|
|
90
|
+
| **redis** | `redis:7-alpine` | dahili | İş kuyrukları (BullMQ) ve önbellekleme (ioredis) |
|
|
91
|
+
| **minio** | `minio/minio` | `9000` (S3), `9001` (konsol) | Avatarlar ve ekran görüntüleri için S3 uyumlu nesne depolama |
|
|
92
|
+
| **mailpit** | `axllent/mailpit` | `1025` (SMTP), `8025` (web UI) | Yerel işlem e-postası alıcısı |
|
|
93
|
+
|
|
94
|
+
Dahili bağlantı noktaları (mongo, redis) varsayılan olarak ana bilgisayara açık değildir.
|
|
95
|
+
|
|
96
|
+
> MinIO bağlantı noktası `9000` tarayıcı tarafından erişilebilir olmalıdır çünkü yüklenen varlıklar (avatarlar, ekran görüntüleri) doğrudan `S3_PUBLIC_URL=http://localhost:9000/intlayer` adresinden yüklenir.
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
## Ortam Değişkenleri
|
|
101
|
+
|
|
102
|
+
Yükleyici, kullanıma hazır bir `.env` dosyası oluşturur. Aşağıdaki tablo her değişkeni açıklar.
|
|
103
|
+
|
|
104
|
+
### Gerekli (otomatik oluşturulur veya istenir)
|
|
105
|
+
|
|
106
|
+
| Değişken | Örnek | Açıklama |
|
|
107
|
+
| ---------------------- | ----------------------------------------------- | ---------------------------------------------------------- |
|
|
108
|
+
| `NODE_ENV` | `production` | Çalışma zamanı ortamı |
|
|
109
|
+
| `PORT` | `3100` | Backend dinleme portu |
|
|
110
|
+
| `BACKEND_URL` | `http://localhost:3100` | Backend API'sinin genel URL'si |
|
|
111
|
+
| `APP_URL` | `http://localhost:3000` | Kontrol panelinin genel URL'si |
|
|
112
|
+
| `DOMAIN` | `localhost` | Çerez alanı |
|
|
113
|
+
| `MONGODB_URI` | `mongodb://mongo:27017/intlayer?replicaSet=rs0` | Tam MongoDB bağlantı URI'si |
|
|
114
|
+
| `REDIS_URL` | `redis://redis:6379` | Redis bağlantı URL'si |
|
|
115
|
+
| `BETTER_AUTH_SECRET` | _(oluşturuldu)_ | Oturum imzalamak için 32 baytlık gizli anahtar |
|
|
116
|
+
| `MAIL_PROVIDER` | `smtp` | E-posta taşıma yöntemi: `smtp` veya `resend` |
|
|
117
|
+
| `MAIL_SMTP_HOST` | `mailpit` | SMTP ana bilgisayar adı (Mailpit kapsayıcı adı) |
|
|
118
|
+
| `MAIL_SMTP_PORT` | `1025` | SMTP portu |
|
|
119
|
+
| `MAIL_FROM` | `Intlayer <no-reply@localhost>` | Gönderen adresi |
|
|
120
|
+
| `S3_ENDPOINT` | `http://minio:9000` | S3 uyumlu uç nokta |
|
|
121
|
+
| `S3_PUBLIC_URL` | `http://localhost:9000/intlayer` | Tarayıcı varlık yüklemesi için genel URL |
|
|
122
|
+
| `S3_BUCKET_NAME` | `intlayer` | Kova adı |
|
|
123
|
+
| `S3_ACCESS_KEY_ID` | _(oluşturuldu)_ | MinIO erişim anahtarı |
|
|
124
|
+
| `S3_SECRET_ACCESS_KEY` | _(oluşturuldu)_ | MinIO gizli anahtarı |
|
|
125
|
+
| `VITE_BACKEND_URL` | `http://localhost:3100` | Oluşturma zamanında kontrol paneline gömülü backend URL'si |
|
|
126
|
+
| `VITE_DOMAIN` | `localhost` | Oluşturma zamanında kontrol paneline gömülü alan adı |
|
|
127
|
+
|
|
128
|
+
### İsteğe Bağlı (yokluğunda özellikler sorunsuz şekilde bozulur)
|
|
129
|
+
|
|
130
|
+
| Değişken | Özellik |
|
|
131
|
+
| -------------------------------------------------------- | --------------------------------------------------------------------------- |
|
|
132
|
+
| `OPENAI_API_KEY` | AI destekli çeviri ve içerik denetimi |
|
|
133
|
+
| `STRIPE_SECRET_KEY`, `STRIPE_WEBHOOK_SECRET`, `STRIPE_*` | Faturalandırma ve abonelik yönetimi |
|
|
134
|
+
| `RESEND_API_KEY` | Resend aracılığıyla işlemsel e-posta (ayarlanırsa Mailpit'i geçersiz kılar) |
|
|
135
|
+
| `GITHUB_CLIENT_ID`, `GITHUB_CLIENT_SECRET` | GitHub OAuth girişi |
|
|
136
|
+
| `GOOGLE_CLIENT_ID`, `GOOGLE_CLIENT_SECRET` | Google OAuth girişi |
|
|
137
|
+
| `GITLAB_CLIENT_ID`, `GITLAB_CLIENT_SECRET` | GitLab OAuth girişi |
|
|
138
|
+
| `MICROSOFT_CLIENT_ID`, `MICROSOFT_CLIENT_SECRET` | Microsoft OAuth girişi |
|
|
139
|
+
| `LINKEDIN_CLIENT_ID`, `LINKEDIN_CLIENT_SECRET` | LinkedIn OAuth girişi |
|
|
140
|
+
| `ATLASSIAN_CLIENT_ID`, `ATLASSIAN_CLIENT_SECRET` | Atlassian OAuth girişi |
|
|
141
|
+
|
|
142
|
+
---
|
|
143
|
+
|
|
144
|
+
## Intlayer projenizi bağlama
|
|
145
|
+
|
|
146
|
+
Yığın çalışmaya başladıktan sonra, projenizi `intlayer.org` yerine kendi barındırılan backend ve kontrol paneline yönlendirin.
|
|
147
|
+
|
|
148
|
+
### Proje yapılandırması
|
|
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
|
+
* Kendi sunucunuzda barındırılan CMS kontrol panelinin URL'si.
|
|
160
|
+
* Varsayılan: https://app.intlayer.org
|
|
161
|
+
*/
|
|
162
|
+
cmsURL: process.env.INTLAYER_CMS_URL, // örn. http://localhost:3000
|
|
163
|
+
|
|
164
|
+
/**
|
|
165
|
+
* Kendi sunucunuzda barındırılan backend API'sinin URL'si.
|
|
166
|
+
* Varsayılan: https://back.intlayer.org
|
|
167
|
+
*/
|
|
168
|
+
backendURL: process.env.INTLAYER_BACKEND_URL, // örn. http://localhost:3100
|
|
169
|
+
},
|
|
170
|
+
};
|
|
171
|
+
|
|
172
|
+
export default config;
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
Projenizin `.env` dosyasında ortam değişkenlerini ayarlayın:
|
|
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
|
+
Kendi barındırılan kontrol panelinizde **Projeler → Erişim Anahtarları** altında `http://localhost:3000/projects` adresinde erişim kimlik bilgileri oluşturun.
|
|
185
|
+
|
|
186
|
+
### `@intlayer/api` SDK
|
|
187
|
+
|
|
188
|
+
`@intlayer/api` SDK'sını programlı olarak kullanırken, `backendURL`'i açıkça geçirin:
|
|
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
|
+
## Yükseltme
|
|
208
|
+
|
|
209
|
+
Mevcut bir dağıtım üzerinde yükleyiciyi yeniden çalıştırmak, kademeli bir yükseltme gerçekleştirir:
|
|
210
|
+
|
|
211
|
+
```sh
|
|
212
|
+
curl -fsSL https://intlayer.org/install.sh | sh
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
Bu, en son görüntüleri çeker ve kapsayıcıları `docker compose pull && docker compose up -d` ile yeniden başlatır. Mevcut birimler (`mongo-data`, `redis-data`, `minio-data`) korunur; veri kaybı olmaz.
|
|
216
|
+
|
|
217
|
+
Manuel olarak `./intlayer/` dizini içinden yükseltme yapmak için:
|
|
218
|
+
|
|
219
|
+
```sh
|
|
220
|
+
docker compose pull
|
|
221
|
+
docker compose up -d
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
---
|
|
225
|
+
|
|
226
|
+
## Yedekleme ve Geri Yükleme
|
|
227
|
+
|
|
228
|
+
Tüm kalıcı veriler, üç adet adlandırılmış Docker biriminde bulunur.
|
|
229
|
+
|
|
230
|
+
### Yedekleme
|
|
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
|
+
### Geri Yükleme
|
|
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 ve minio-data için tekrarlayın
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
---
|
|
261
|
+
|
|
262
|
+
## Ters Proxy Kullanımı (Nginx / Caddy)
|
|
263
|
+
|
|
264
|
+
Üretim dağıtımları için, uygulama ve backend kapsayıcılarının önüne doğrudan açmak yerine bir ters proxy yerleştirin.
|
|
265
|
+
|
|
266
|
+
### Nginx örneği
|
|
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
|
+
Aşağıdaki `.env` değişkenlerini genel alan adlarınızla eşleşecek şekilde güncelleyin:
|
|
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_*` değişkenleri oluşturma zamanında kontrol paneli görüntüsüne gömülür. Görüntü oluşturulduktan sonra bunları değiştirirseniz, `app` görüntüsünü yeniden oluşturmanız (`docker compose build app`) veya çalışma zamanı yapılandırma enjeksiyonu kullanmanız gerekir.
|
|
303
|
+
|
|
304
|
+
---
|
|
305
|
+
|
|
306
|
+
## Sorun Giderme
|
|
307
|
+
|
|
308
|
+
### İlk Başlangıçta Backend Sürekli Çöküyor
|
|
309
|
+
|
|
310
|
+
Backend başlamadan önce MongoDB ve Redis'in sağlıklı olması gerekir. Compose dosyası `condition: service_healthy` ile `depends_on` kullanır. Tekrarlayan backend yeniden başlatmaları görüyorsanız, `mongo` ve `redis` sağlık kontrollerinin geçtiğinden emin olun:
|
|
311
|
+
|
|
312
|
+
```sh
|
|
313
|
+
docker compose ps
|
|
314
|
+
docker compose logs mongo
|
|
315
|
+
docker compose logs redis
|
|
316
|
+
```
|
|
317
|
+
|
|
318
|
+
### Kontrol Paneli API'ye Ulaşamıyor
|
|
319
|
+
|
|
320
|
+
`VITE_BACKEND_URL`'in backend'e **tarayıcıdan** (Docker ağı değil) erişilebilen URL ile eşleştiğini doğrulayın. Backend portunu değiştirdiyseniz veya bir ters proxy eklediyseniz, kontrol paneli görüntüsünü yeniden oluşturun:
|
|
321
|
+
|
|
322
|
+
```sh
|
|
323
|
+
docker compose build app
|
|
324
|
+
docker compose up -d app
|
|
325
|
+
```
|
|
326
|
+
|
|
327
|
+
### E-posta Gönderilmiyor
|
|
328
|
+
|
|
329
|
+
Varsayılan olarak, tüm giden e-postalar Mailpit tarafından yakalanır. Gönderilen mesajları görmek için `http://localhost:8025` adresini açın. Gerçek e-posta göndermek için `.env` dosyasında `MAIL_PROVIDER=resend` ve `RESEND_API_KEY=<anahtarınız>` ayarlayın, ardından backend'i yeniden başlatın:
|
|
330
|
+
|
|
331
|
+
```sh
|
|
332
|
+
docker compose restart backend
|
|
333
|
+
```
|
|
334
|
+
|
|
335
|
+
### MinIO Kovası Eksik
|
|
336
|
+
|
|
337
|
+
Eğer `minio-init` tek seferlik servisi çalışmadıysa (veya MinIO hazır olmadan önce çalıştıysa), kovayı manuel olarak oluşturun:
|
|
338
|
+
|
|
339
|
+
```sh
|
|
340
|
+
docker compose run --rm minio-init
|
|
341
|
+
```
|
|
342
|
+
|
|
343
|
+
---
|
|
344
|
+
|
|
345
|
+
## Faydalı Bağlantılar
|
|
346
|
+
|
|
347
|
+
- [Intlayer CMS belgeleri](https://github.com/aymericzip/intlayer/blob/main/docs/docs/tr/intlayer_CMS.md)
|
|
348
|
+
- [Yapılandırma referansı](https://github.com/aymericzip/intlayer/blob/main/docs/docs/tr/configuration.md)
|
|
349
|
+
- [CMS SDK — `@intlayer/api`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/tr/intlayer_CMS.md#programmatic-access-with-the-intlayerapi-sdk)
|
package/docs/uk/intlayer_CMS.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2025-08-23
|
|
3
|
-
updatedAt:
|
|
3
|
+
updatedAt: 2026-06-30
|
|
4
4
|
title: Intlayer CMS | Виносьте свій контент у 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: "Додано документацію `liveSync`"
|
|
@@ -384,6 +387,18 @@ export default config;
|
|
|
384
387
|
- Прапорець `live` оцінюється для кожного словника під час збірки. Якщо віддалений контент не мав `live=true` під час збірки, потрібно перебудувати проект, щоб увімкнути Live Sync для цього словника.
|
|
385
388
|
- Сервер live sync має мати можливість записувати в `.intlayer`. У контейнерах переконайтеся, що є права запису до `/.intlayer`.
|
|
386
389
|
|
|
390
|
+
## Самостійне розгортання (Self-Hosting)
|
|
391
|
+
|
|
392
|
+
Intlayer може працювати повністю на вашій власній інфраструктурі. Одна команда розгортає повний стек (дашборд, API, база даних, сховище об'єктів та електронна пошта) за допомогою Docker Compose:
|
|
393
|
+
|
|
394
|
+
```sh
|
|
395
|
+
curl -fsSL https://intlayer.org/install.sh | sh
|
|
396
|
+
```
|
|
397
|
+
|
|
398
|
+
Повний посібник із налаштування, довідник зі змінних середовища, інструкції з оновлення та процедури резервного копіювання/відновлення наведені в [Посібнику із самостійного розгортання](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/self_hosting.md).
|
|
399
|
+
|
|
400
|
+
---
|
|
401
|
+
|
|
387
402
|
## Налагодження
|
|
388
403
|
|
|
389
404
|
Якщо у вас виникли проблеми з CMS, перевірте наступне:
|
package/docs/uk/releases/v9.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2026-06-14
|
|
3
|
-
updatedAt: 2026-06-
|
|
3
|
+
updatedAt: 2026-06-30
|
|
4
4
|
title: Новий Intlayer v9 - Що нового?
|
|
5
5
|
description: Дізнайтеся, що нового в Intlayer v9. Представляємо сумісні пакети швидкої заміни (drop-in) для популярних бібліотек i18n та підтримку Collections та Variants.
|
|
6
6
|
keywords:
|
|
@@ -9,6 +9,8 @@ keywords:
|
|
|
9
9
|
- Міграція
|
|
10
10
|
- Колекції
|
|
11
11
|
- Варіанти
|
|
12
|
+
- Self-Hosting
|
|
13
|
+
- Docker
|
|
12
14
|
- i18next
|
|
13
15
|
- next-intl
|
|
14
16
|
- vue-i18n
|
|
@@ -299,6 +301,59 @@ npm install intlayer react-native-intlayer
|
|
|
299
301
|
|
|
300
302
|
---
|
|
301
303
|
|
|
304
|
+
## CMS SDK: використовуйте Intlayer як headless базу даних контенту
|
|
305
|
+
|
|
306
|
+
Intlayer v9 містить акуратний SDK з автоматичною автентифікацією в `@intlayer/api` для програмної взаємодії з CMS — отримувати проєкти, отримувати словники, а також надсилати чи оновлювати їх із власного сервера, скриптів або CI. Автентифікація (OAuth2 `client_credentials`) виконується та оновлюється за вас.
|
|
307
|
+
|
|
308
|
+
SDK розділено на **два окремі імпорти**, тож ваш бандл містить лише ті домени, які ви справді використовуєте:
|
|
309
|
+
|
|
310
|
+
1. `createIntlayerCMS` — легкий **автентифікатор**, який зберігає облікові дані та керований токен (клієнти доменів не включаються).
|
|
311
|
+
2. `dictionaryEndpoint`, `projectEndpoint`, … — **прив'язки ендпоінтів** для кожного домену, кожна імпортується зі свого підшляху.
|
|
312
|
+
|
|
313
|
+
```ts fileName="cms.ts"
|
|
314
|
+
import { createIntlayerCMS } from "@intlayer/api";
|
|
315
|
+
import { dictionaryEndpoint } from "@intlayer/api/dictionary";
|
|
316
|
+
|
|
317
|
+
// Конфігурація необов'язкова: облікові дані беруться з INTLAYER_CLIENT_ID /
|
|
318
|
+
// INTLAYER_CLIENT_SECRET, що розв'язуються через `@intlayer/config/built`.
|
|
319
|
+
const cms = createIntlayerCMS();
|
|
320
|
+
|
|
321
|
+
// Читання
|
|
322
|
+
const { data: dictionaries } = await dictionaryEndpoint(cms).getDictionaries();
|
|
323
|
+
|
|
324
|
+
// Запис — використовуйте CMS як базу даних
|
|
325
|
+
await dictionaryEndpoint(cms).pushDictionaries([myDictionary]);
|
|
326
|
+
```
|
|
327
|
+
|
|
328
|
+
> Безпека: облікові дані CMS надають доступ до запису вашого контенту. Завжди створюйте автентифікатор лише **на стороні сервера** — ніколи не передавайте `clientId` / `clientSecret` у браузер.
|
|
329
|
+
|
|
330
|
+
---
|
|
331
|
+
|
|
332
|
+
## Самостійне розгортання (Self-Hosting)
|
|
333
|
+
|
|
334
|
+
Intlayer v9 постачається з першокласною підтримкою запуску власного екземпляра Intlayer однією командою — обліковий запис Intlayer Cloud не потрібен.
|
|
335
|
+
|
|
336
|
+
```sh
|
|
337
|
+
curl -fsSL https://intlayer.org/install.sh | sh
|
|
338
|
+
```
|
|
339
|
+
|
|
340
|
+
Встановлювач завантажує `docker-compose.yml` та `.env`, автоматично генерує необхідні секрети та запускає `docker compose up -d`. Все — дашборд, API, база даних, сховище об'єктів та транзакційна електронна пошта — працює локально у контейнерах.
|
|
341
|
+
|
|
342
|
+
### Включені сервіси
|
|
343
|
+
|
|
344
|
+
| Сервіс | Призначення |
|
|
345
|
+
| ----------------------------------------- | ------------------------------------------------------------------------------ |
|
|
346
|
+
| **app** (TanStack Start) | UI дашборду на порту `3000` |
|
|
347
|
+
| **backend** (Fastify/Bun) | REST API на порту `3100` |
|
|
348
|
+
| **MongoDB 7** (одновузловий набір реплік) | Основна база даних |
|
|
349
|
+
| **Redis 7** | Черги завдань та кешування |
|
|
350
|
+
| **MinIO** | S3-сумісне сховище об'єктів (аватари, знімки екрана) |
|
|
351
|
+
| **Mailpit** | Локальний SMTP-приймач + веб-інтерфейс для транзакційної пошти на порту `8025` |
|
|
352
|
+
|
|
353
|
+
Chromium (що використовується для генерації знімків екрана через Puppeteer) вбудований у образ бекенду — додатковий контейнер не потрібен.
|
|
354
|
+
|
|
355
|
+
---
|
|
356
|
+
|
|
302
357
|
## Примітки щодо міграції з v8
|
|
303
358
|
|
|
304
359
|
Якщо ви оновлюєтеся з v8, зверніть увагу, що v9 не містить критичних змін (breaking changes). Проте ось ключові зміни:
|
|
@@ -314,3 +369,5 @@ npm install intlayer react-native-intlayer
|
|
|
314
369
|
- [Посібник з пакетів адаптерів сумісності (Compat Adapter Packages)](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/compat/index.md)
|
|
315
370
|
- [Динамічні словники - Collections та Variants](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/dynamic_dictionaries/index.md)
|
|
316
371
|
- [Довідник з конфігурації](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/configuration.md)
|
|
372
|
+
- [CMS SDK — програмний доступ через @intlayer/api](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/intlayer_CMS.md)
|
|
373
|
+
- [Посібник із самостійного розгортання](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/self_hosting.md)
|