snapshot of https://github.com/twentyhq/twenty.git (main, 2026-09-17; blobs > 131072B omitted)
Some checks failed
App Prod-Parity E2E Dispatch / dispatch (push) Failing after 10s
CD Storybook UI / build (push) Failing after 3m25s
CD Storybook UI / dispatch (push) Has been skipped
CD deploy main / website-changed-files (push) Successful in 18m8s
CI Agent Skills / changed-files-check (push) Successful in 18m9s
CI Create App E2E minimal / changed-files-check (push) Successful in 24s
CI Create App / changed-files-check (push) Successful in 26s
CI Docs / changed-files-check (push) Successful in 26s
CI Emails / changed-files-check (push) Successful in 28s
CI Example App Hello World / changed-files-check (push) Successful in 23s
CI Front / changed-files-check (push) Has been skipped
CI Example App Postcard / changed-files-check (push) Successful in 27s
CI UI / changed-files-check (push) Has been skipped
CI Utils Test / changed-files-check (push) Successful in 45s
CI Twenty Apps / discover (push) Successful in 1m3s
CD deploy main / deploy-main (push) Failing after 3s
CI Agent Skills / agent-skills-validate (push) Has been skipped
CI Create App / create-app-test (lint) (push) Has been skipped
CI Emails / emails-test (push) Has been skipped
CI Front / front-task (lingui:compile) (push) Has been skipped
CI Front / front-task (lint) (push) Has been skipped
CI Example App Postcard / example-app-postcard (push) Has been skipped
CI UI / ui-task (lint) (push) Has been skipped
CI UI / ui-task (pack-size) (push) Has been skipped
CI UI / ui-task (size) (push) Has been skipped
CI UI / ui-task (test) (push) Has been skipped
CI UI / ui-task (typecheck) (push) Has been skipped
CI Utils Test / utils-test (push) Has been skipped
CI Twenty Apps / ${{ matrix.app.name }} (push) Has been skipped
CI Emails / ci-emails-status-check (push) Successful in 2s
CI Example App Hello World / ci-example-app-hello-world-status-check (push) Successful in 2s
CI Example App Postcard / ci-example-app-postcard-status-check (push) Successful in 3s
CI UI / ui-sb-test (push) Has been skipped
CI Utils Test / ci-utils-test-status-check (push) Successful in 2s
CI Twenty Apps / ci-twenty-apps-status-check (push) Successful in 2s
CI UI / ci-ui-status-check (push) Successful in 2s
CI Desktop / desktop (push) Failing after 1m8s
Push docs to Crowdin / Push documentation to Crowdin (push) Failing after 55s
Push translations to Crowdin / Extract and upload translations (push) Failing after 5s
Push website translations to Crowdin / Extract and upload website translations (push) Failing after 5s
CI Create App / create-app-test (test) (push) Has been skipped
CI Create App / create-app-test (typecheck) (push) Has been skipped
CI Docs / docs-lint (push) Has been skipped
CI Example App Hello World / example-app-hello-world (push) Has been skipped
CI Front / front-task (lingui:extract) (push) Has been skipped
CI Front / front-task (test) (push) Has been skipped
CI Front / front-task (typecheck) (push) Has been skipped
CI UI / ui-sb-build (push) Failing after 1m32s
CI Twenty Apps / ${{ matrix.app.name }} (${{ matrix.server-source }}) (push) Has been skipped
CI Agent Skills / agent-skills-publish (push) Has been skipped
CI Create App / ci-create-app-status-check (push) Successful in 2s
CI Agent Skills / agent-skills-remote-source (push) Has been skipped
CI Create App E2E minimal / create-app-e2e-minimal (push) Has been cancelled
CI E2E Main / e2e-test (push) Has been cancelled
CI Front / front-sb-build (push) Has been cancelled
CI Front / front-build (push) Has been cancelled
CI Create App E2E minimal / ci-create-app-e2e-minimal-status-check (push) Has been cancelled
CI E2E Main / ci-e2e-main-status-check (push) Has been cancelled
CI E2E Main / notify-main-ci-failure (push) Has been cancelled
CI E2E Main / qa-scout-comment (push) Has been cancelled
CI Front / front-sb-test (push) Has been cancelled
CI Front / front-sb-screenshots (push) Has been cancelled
CI Front / ci-front-status-check (push) Has been cancelled
DPA Sub-Processor Sync / sync-subprocessors (push) Failing after 3s
AI Catalog Sync / sync-catalog (push) Failing after 2s

This commit is contained in:
upstream-mirror
2026-09-17 23:28:13 +05:00
commit e7da97194a
32688 changed files with 4208681 additions and 0 deletions

View File

@@ -0,0 +1,262 @@
---
title: Docker Compose
icon: docker
---
<Warning>
Docker kapsayıcıları, üretim ortamında barındırma veya kendi kendine barındırma içindir. Katkıda bulunmak için lütfen [Yerel Kurulum](/l/tr/developers/contribute/capabilities/local-setup) bölümüne bakın.
</Warning>
## Genel Bakış
Bu kılavuz, Docker Compose kullanarak Twenty uygulamasını kurmak ve yapılandırmak için adım adım yönergeler sunar. Amaç, süreci sadeleştirmek ve kurulumunuzu bozabilecek yaygın sorunları önlemektir.
**Önemli:** Yalnızca bu kılavuzda açıkça belirtilen ayarları değiştirin. Diğer yapılandırmaları değiştirmek sorunlara yol açabilir.
İleri düzey yapılandırma için [Ortam Değişkenlerini Ayarlama](/l/tr/developers/self-host/capabilities/setup) bölümüne bakın. Tüm ortam değişkenleri, değişkene bağlı olarak sunucu ve/veya işçi düzeyinde `docker-compose.yml` dosyasında tanımlanmalıdır.
## Sistem Gereksinimleri
* RAM: Ortamınızda en az 2GB RAM bulunduğundan emin olun. Yetersiz bellek, işlemlerin çökmesine neden olabilir.
* Docker & Docker Compose: Her ikisinin de yüklendiğinden ve güncel olduğundan emin olun.
## Seçenek 1: Tek satırlık komut dosyası
Tek bir komutla en son kararlı Twenty sürümünü yükleyin:
```bash
bash <(curl -sL https://raw.githubusercontent.com/twentyhq/twenty/main/packages/twenty-docker/scripts/install.sh)
```
Belirli bir sürüm veya dal yüklemek için:
```bash
VERSION=vx.y.z BRANCH=branch-name bash <(curl -sL https://raw.githubusercontent.com/twentyhq/twenty/main/packages/twenty-docker/scripts/install.sh)
```
* x.y.z'yi istediğiniz sürüm numarasıyla değiştirin.
* dal-adını yüklemek istediğiniz dal adıyla değiştirin.
## Seçenek 2: Manuel adımlar
Manuel kurulum için bu adımları uygulayın.
### Adım 1: Çevre Dosyasını Kurun
1. **.env Dosyasını Oluşturun**
Örnek çevre dosyasını, çalışma dizininizde yeni bir .env dosyasına kopyalayın:
```bash
curl -o .env https://raw.githubusercontent.com/twentyhq/twenty/refs/heads/main/packages/twenty-docker/.env.example
```
2. **Bir Şifreleme Anahtarı Oluşturun**
Benzersiz bir rastgele karakter dizisi oluşturmak için aşağıdaki komutu çalıştırın:
```bash
openssl rand -base64 32
```
**Önemli:** Bu değeri gizli tutun / paylaşmayın. `ENCRYPTION_KEY` kaybedilirse, veritabanında depolanan her gizli veriye (OAuth belirteçleri, uygulama değişkenleri, TOTP gizli anahtarları vb.) erişim de kaybedilir.
3. **`.env` Güncelleyin**
.env dosyanızdaki yer tutucu değeri oluşturulan jetonla değiştirin:
```ini
ENCRYPTION_KEY=random_string
```
Kesinti olmadan anahtarı döndürmeye ilişkin talimatlar için [Anahtar döndürme kılavuzuna](/l/tr/developers/self-host/capabilities/key-rotation) bakın.
4. **Postgres Şifresini Ayarlayın**
.env dosyasındaki `PG_DATABASE_PASSWORD` değerini özel karakter içermeyen güçlü bir şifre ile güncelleyin.
```ini
PG_DATABASE_PASSWORD=my_strong_password
```
### Adım 2: Docker Compose Dosyasını Edinin
`docker-compose.yml` dosyasını çalışma dizininize indirin:
```bash
curl -o docker-compose.yml https://raw.githubusercontent.com/twentyhq/twenty/refs/heads/main/packages/twenty-docker/docker-compose.yml
```
### Adım 3: Uygulamayı Başlatın
Docker konteynerlerini başlatın:
```bash
docker compose up -d
```
### Adım 4: Uygulamaya Erişin
Eğer twentyCRM'i kendi bilgisayarınızda barındırıyorsanız, tarayıcınızı açın ve [http://localhost:3000](http://localhost:3000) adresine gidin.
Bir sunucuda barındırıyorsanız, sunucunun çalıştığını ve her şeyin yolunda olduğunu kontrol edin
```bash
curl http://localhost:3000
```
## Yapılandırma
### Twenty'yi Dış Erişime Açma
Varsayılan olarak, Twenty `localhost` üzerinde `3000` portunda çalışır. UI, API'ye tarayıcının kendi origin'inden erişir; bu nedenle konteynere ulaşan herhangi bir ana bilgisayar adından yüklenir — ancak yine de `SERVER_URL` değerini herkese açık URL'nize ayarlayın: sunucu bunu oluşturulan bağlantılar (e-postalar, OAuth geri çağrıları) ve güvenli çerezler için HTTPS'i saptamak amacıyla kullanır.
#### `SERVER_URL`'a Genel Bakış
* **Protokol:** Yapılandırmanıza bağlı olarak `http` veya `https` kullanın.
* SSL ayarlamadıysanız `http` kullanın.
* SSL yapılandırıldıysa `https` kullanın.
* **Alan Adı/IP:** Uygulamanızın erişilebilir olduğu alan adı veya IP adresi.
* **Port:** Varsayılan portları kullanmıyorsanız, port numarasını ekleyin (`80` `http` için, `443` `https` için).
### SSL Gereksinimleri
Belirli tarayıcı özelliklerinin düzgün çalışabilmesi için SSL (HTTPS) gereklidir. Bu özellikler yerel geliştirme sırasında çalışabilirken (tarayıcılar localhost'u farklı şekilde ele alır), Twenty'yi düzenli bir alanda barındırırken uygun bir SSL kurulumu gereklidir.
Örneğin, panoya kopyalama API'si güvenli bir bağlam gerektirebilir - uygulama boyunca kopyalama düğmeleri gibi bazı özellikler HTTPS etkinleştirilmediğinde çalışmayabilir.
Optimum güvenlik ve işlevsellik için Twenty'nin SSL sonlandırma ile bir ters proxy arkasında ayarlanmasını şiddetle öneririz.
#### `SERVER_URL`'ı Yapılandırma
1. **Erişim URL'nizi Belirleyin**
* **Ters Proxy Olmadan (Doğrudan Erişim):**
Uygulamaya doğrudan bir ters proxy olmadan erişiyorsanız:
```ini
SERVER_URL=http://your-domain-or-ip:3000
```
* **Ters Proxy ile (Standart Portlar):**
Nginx veya Traefik gibi bir ters proxy kullanıyorsanız ve SSL yapılandırıldıysa:
```ini
SERVER_URL=https://your-domain-or-ip
```
* **Ters Proxy ile (Özel Portlar):**
Standart olmayan portlar kullanıyorsanız:
```ini
SERVER_URL=https://your-domain-or-ip:custom-port
```
2. **`.env` Dosyasını Güncelleyin**
`.env` dosyanızı açın ve `SERVER_URL`'i güncelleyin:
```ini
SERVER_URL=http(s)://your-domain-or-ip:your-port
```
**Örnekler:**
* SSL olmadan doğrudan erişim:
```ini
SERVER_URL=http://123.45.67.89:3000
```
* SSL ile alan adı aracılığıyla erişim:
```ini
SERVER_URL=https://mytwentyapp.com
```
3. **Uygulamayı Yeniden Başlatın**
Değişikliklerin etkili olması için Docker konteynerlerini yeniden başlatın:
```bash
docker compose down
docker compose up -d
```
#### Dikkat Edilmesi Gerekenler
* **Ters Proxy Yapılandırması:**
Ters proxy'nin istekleri doğru iç bağlantı noktasına ilettiğinden emin olun (`3000` varsayılan olarak). SSL sonlandırmasını ve gerekli tüm başlıkları yapılandırın.
* **Güvenlik Duvarı Ayarları:**
Dış erişime izin vermek için güvenlik duvarınızdaki gerekli portları açın.
* **Tutarlılık:**
`SERVER_URL`, kullanıcıların uygulamanıza tarayıcıları ile nasıl eriştiği ile eşleşmelidir.
#### Süreklilik
* **Veri Hacimleri:**
Docker Compose yapılandırması, veritabanı ve sunucu depolama için verileri kalıcı kılmak adına hacimler kullanmaktadır.
* **Durumsuz Ortamlar:**
Eğer durumsuz bir ortama (örneğin, bazı bulut hizmetleri) dağıtım yapıyorsanız, verilerin kalıcılığını sağlamak için harici depolama yapılandırın.
## Yedekleme ve Geri Yükleme
Düzenli yedeklemeler CRM verilerinizi kayıptan korur.
### Veritabanı Yedeği Oluşturun
```bash
docker exec twenty-postgres pg_dump -U postgres twenty > backup_$(date +%Y%m%d).sql
```
### Günlük Yedeklemeleri Otomatikleştirin
crontab'ınıza ekleyin (`crontab -e`):
```bash
0 2 * * * docker exec twenty-postgres pg_dump -U postgres twenty > /backups/twenty_$(date +\%Y\%m\%d).sql
```
### Yedekten Geri Yükleyin
1. Uygulamayı durdurun:
```bash
docker compose stop server worker
```
2. Veritabanını geri yükleyin:
```bash
docker exec -i twenty-postgres psql -U postgres twenty < backup_20240115.sql
```
3. Servisleri yeniden başlatın:
```bash
docker compose up -d
```
### Yedekleme En İyi Uygulamaları
* **Geri yüklemeleri düzenli olarak test edin** — yedeklerin gerçekten çalıştığını doğrulayın
* **Yedekleri farklı bir konumda saklayın** — bulut depolama kullanın (S3, GCS, vb.)
* **Hassas verileri şifreleyin** — yedekleri şifreleme ile koruyun
* **Birden fazla kopya saklayın** — günlük, haftalık ve aylık yedekleri tutun
## Sorun Giderme
Herhangi bir sorunla karşılaşırsanız, çözümler için [Sorun Giderme](/l/tr/developers/self-host/capabilities/troubleshooting) sayfasına bakın.
## Yönetilen Barındırma
<Tip>
Twenty'yi kendiniz çalıştırıp bakımını yapmak istemiyor musunuz? [Sertifikalı bir Twenty barındırma iş ortağı bulun](https://twenty.com/partners/list?categories=HOSTING\&ref=docs-docker-compose); kurulumunuzun dağıtımını yapması, barındırması ve uçtan uca yönetmesi için. *(Veya ekibimize ulaşın: [contact@twenty.com](mailto:contact@twenty.com).)*
</Tip>

View File

@@ -0,0 +1,60 @@
---
title: Anahtar döndürme
icon: rotate
---
Twenty'nin iki bağımsız anahtar ailesi vardır:
* **JWT imzalama anahtarları** — asimetrik ES256 anahtar çiftleri (`kid` etiketli) `core."signingKey"` içinde saklanır ve erişim/yenileme belirteçlerini imzalamak ve doğrulamak için kullanılır.
* **Bekleme hâlindeki şifreleme anahtarı** — OAuth belirteçlerini, uygulama değişkenlerini, imzalama anahtarlarının gizli anahtarlarını, hassas yapılandırma değerlerini ve `enc:v2:` zarfı içindeki TOTP gizli anahtarlarını şifrelemek için kullanılan `ENCRYPTION_KEY`.
`APP_SECRET`, geriye dönük uyumluluk için tutulan eski bir gizlidir: `ENCRYPTION_KEY` ayarlanmamış olduğunda bekleme hâlindeki şifreleme / oturum çerezi geri dönüşü olarak davranır ve hâlâ önceden var olan HS256 erişim belirteçlerini doğrular. Kullanımdan kaldırılacaktır.
## JWT imzalama anahtarları
Her anahtar bir `publicKey` (önceden verilmiş belirteçleri doğrulayabilmesi için süresiz olarak saklanır), şifrelenmiş bir `privateKey` (yalnızca anahtar geçerli iken kullanılır), bir `isCurrent` bayrağı (aynı anda tam olarak bir satır) ve isteğe bağlı bir `revokedAt` taşır.
### Geçerli anahtarı döndür
Etkinleştirmek için `SIGNING_KEY_ROTATION_DAYS` değerini ayarlayın: günlük bir cron görevi, mevcut anahtar bu eşikten daha eski olduğunda yeni bir güncel anahtar oluşturur. Önceki anahtarlar *iptal edilmez*, bu nedenle onlarla imzalanmış belirteçler doğrulanmaya devam eder. Otomatik döndürmeyi devre dışı bırakmak için değişkeni ayarlamadan bırakın.
<Note>Otomatik döndürme v2.6+ ile birlikte gelir.</Note>
### Bir anahtarı iptal et (yalnızca sızıntı / acil durum için)
Geçerli olmayan bir satırda **Settings → Admin Panel → Signing keys → Revoke**. Şifrelenmiş özel materyali siler, `revokedAt` değerini ayarlar ve o `kid` ile imzalanmış mevcut tüm belirteçleri reddeder.
## `ENCRYPTION_KEY` anahtarını döndür
<Note>Aşağıda açıklanan `secret-encryption:rotate` komutu v2.6+ ile birlikte gelir.</Note>
Her şifrelenmiş değer `enc:v2:\<keyId>:\<payload>` olarak sarılır; burada `\<keyId>`, ham anahtardan türetilen 8 onaltılık önekidir. Döndürme çevrimiçi ve kaldığı yerden devam ettirilebilir.
1. **Yeni bir anahtar oluşturun**: `openssl rand -base64 32`.
2. `.env` içinde **her iki anahtarı yan yana yapılandırın**, ardından yeniden başlatın:
```ini
ENCRYPTION_KEY=NEW_VALUE
FALLBACK_ENCRYPTION_KEY=OLD_VALUE
```
Yeni yazmalar yeni anahtarı kullanır, mevcut satırlar hâlâ geri dönüş anahtarıyla şifresi çözülerek okunur.
3. **Mevcut satırları yeniden şifreleyin**:
```bash
docker exec -it {server_container} yarn command:prod secret-encryption:rotate
```
Komut altı siteyi dolaşır (`connected-account-tokens`, `application-variable`, `application-registration-variable`, `signing-key-private-keys`, `sensitive-config-storage`, `totp-secrets`). Bir SQL filtresi, zaten yeni `\<keyId>` üzerinde olan satırları atlar, bu nedenle komut idempotenttir: gerektiğinde yarıda kesip yeniden çalıştırın. Herhangi bir satır başarısız olursa sıfır olmayan kodla çıkar — yeniden denemek için tekrar çalıştırın.
| Bayrak | Açıklama |
| ---------------------------------------- | ------------------------------------------------------------------ |
| `-s, --site \<site>` | Yalnızca tek bir siteyle sınırla. |
| `-b, --batch-size \<n>` | Her yığın başına satır sayısı (varsayılan `200`, en fazla `5000`). |
| `-d, --dry-run` | Şifresini çöz + bellekte yeniden şifrele, `UPDATE` işlemini atla. |
4. `--dry-run` sıfır kalan satır gösterdiğinde **geri dönüş anahtarını bırakın**: `FALLBACK_ENCRYPTION_KEY` değerini kaldırın ve yeniden başlatın.
## Eski `APP_SECRET` desteği
Hiç `ENCRYPTION_KEY` ayarlamamış eski örnekler, `APP_SECRET` değerini bekleme hâlindeki şifreleme anahtarı (ve ondan türetilen oturum çerezi gizli anahtarı) olarak kullanır. Bu yol, geriye dönük uyumluluk için korunmuştur ancak **kullanımdan kaldırılmıştır** — özel bir `ENCRYPTION_KEY` ayarlayın ve ondan çıkmak için yukarıdaki döndürme prosedürünü izleyin. `APP_SECRET`in kendisi eski HS256 erişim belirteçlerini doğrulamak için kullanılmaya devam eder.

View File

@@ -0,0 +1,413 @@
---
title: Kurulum
icon: gear
---
# Konfigürasyon Yönetimi
<Warning>
**İlk kez mi kuruyorsunuz?** Twenty'yi çalıştırmak için [Docker Compose kurulum kılavuzunu](/l/tr/developers/self-host/capabilities/docker-compose) izleyin, ardından yapılandırma için buraya dönün.
</Warning>
Twenty, farklı dağıtım ihtiyaçlarına uygun **iki yapılandırma modu** sunar:
**Yönetici paneli erişimi:** Yalnızca yönetici ayrıcalıklarına sahip kullanıcılar (`canAccessFullAdminPanel: true`) konfigürasyon arayüzüne erişebilir.
## 1. Yönetici Paneli Konfigürasyonu (Varsayılan)
```bash
IS_CONFIG_VARIABLES_IN_DB_ENABLED=true # default
```
**Çoğu konfigürasyon, kurulumdan sonra arayüz üzerinden gerçekleştirilir**:
1. Twenty örneğinize erişin (genellikle `http://localhost:3000`)
2. **Ayarlar / Yönetici Paneli / Konfigürasyon Değişkenleri** yoluna gidin
3. Entegrasyonları, e-postayı, depolamayı ve daha fazlasını yapılandırın
4. Değişiklikler hemen yürürlüğe girer (çok konteynerli dağıtımlarda 15 saniye içinde)
<Warning>
**Çok Konteynerli Dağıtımlar:** Veritabanı yapılandırması (`IS_CONFIG_VARIABLES_IN_DB_ENABLED=true`) kullanıldığında, hem sunucu hem de worker konteynerleri aynı veritabanından okur. Yönetici panelindeki değişiklikler her ikisini de otomatik olarak etkiler ve konteynerler arasında ortam değişkenlerini çoğaltma ihtiyacını ortadan kaldırır (altyapı değişkenleri hariç).
</Warning>
**Yönetici paneli aracılığıyla yapılandırabileceğiniz:**
* **Kimlik Doğrulama** - Google/Microsoft OAuth, şifre ayarları
* **E-posta** - SMTP ayarları, şablonlar, doğrulama
* **Depolama** - S3 yapılandırması, yerel depolama yolları
* **Entegrasyonlar** - Gmail, Google Calendar, Microsoft hizmetleri
* **İş Akışı ve Hız Limiti** - Yürütme sınırları, API daraltma
* **Ve daha fazlası...**
![Yönetici Paneli Konfigürasyon Değişkenleri](/images/user-guide/setup/admin-panel-config-variables.png)
<Warning>
Her bir değişken, yönetici panelinizde **Ayarlar → Yönetici Paneli → Konfigürasyon Değişkenleri** altında açıklamalarla belgelenir.
Veritabanı bağlantıları (`PG_DATABASE_URL`), sunucu URL'leri (`SERVER_URL`) ve gizli anahtarlar (`ENCRYPTION_KEY`, `FALLBACK_ENCRYPTION_KEY`) gibi bazı altyapı ayarları yalnızca `.env` dosyası aracılığıyla yapılandırılabilir.
[Tam teknik referans →](https://github.com/twentyhq/twenty/blob/main/packages/twenty-server/src/engine/core-modules/twenty-config/config-variables.ts)
</Warning>
## Şifreleme anahtarları
Twenty yalnızca ortam değişkenleriyle yapılandırılan iki şifreleme anahtarı kullanır:
| Değişken | Amaç | Zorunlu |
| ------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- |
| `ENCRYPTION_KEY` | Dinlenik durumdaki gizli verileri şifrelemek için kullanılan birincil anahtar (OAuth belirteçleri, uygulama değişkenleri, imzalama anahtarlarının özel anahtarları, TOTP sırları, hassas yapılandırma değerleri). | Yeni kurulumlar için evet (eski kurulumlar bunun yerine aşağıda açıklandığı gibi `APP_SECRET`'e dayanıyor olabilir) |
| `FALLBACK_ENCRYPTION_KEY` | Yalnızca doğrulama için kullanılan anahtar. Döndürme sırasında, mevcut satırların şifresinin çözülebilir kalması için *önceki* `ENCRYPTION_KEY` değerine ayarlanır. | Yalnızca döndürme sırasında |
Geriye dönük uyumluluk için, `ENCRYPTION_KEY` ayarlanmadıysa, Twenty dinlenik durumdaki şifreleme için `APP_SECRET`'e geri döner — bu, daha eski dağıtımlardaki eski davranışla eşleşir. Yeni kurulumlarda her zaman özel bir `ENCRYPTION_KEY` ayarlanmalıdır.
Değerleri `openssl rand -base64 32` ile oluşturun ve onları güvenli bir yerde saklayın (bir gizli yönetim sistemi, mühürlü yapılandırma vb.). `ENCRYPTION_KEY`'in kaybedilmesi, veritabanında saklanan tüm gizli bilgilere erişimin kaybedilmesi anlamına gelir.
`ENCRYPTION_KEY`'i kesinti olmadan döndürmek için [Anahtar döndürme rehberi](/l/tr/developers/self-host/capabilities/key-rotation) bölümüne bakın.
## 2. Yalnızca Ortam Değişkenleriyle Yapılandırma
```bash
IS_CONFIG_VARIABLES_IN_DB_ENABLED=false
```
**Tüm konfigürasyon `.env` dosyaları aracılığıyla yönetilir:**
1. `.env` dosyanızda `IS_CONFIG_VARIABLES_IN_DB_ENABLED=false` değerini ayarlayın
2. Tüm konfigürasyon değişkenlerini `.env` dosyanıza ekleyin
3. Değişikliklerin etkin olması için kapları yeniden başlatın
4. Yönetici paneli mevcut değerleri gösterir ancak bunları değiştiremez
## Çoklu Çalışma Alanı Modu
Varsayılan olarak, Twenty **tek çalışma alanı modunda** çalışır — kuruluşunuz için tek bir CRM örneğine ihtiyaç duyulan çoğu kendi barındırmalı dağıtım için idealdir.
### Tek Çalışma Alanı Modu (Varsayılan)
```bash
IS_MULTIWORKSPACE_ENABLED=false # default
```
* Her Twenty örneği başına bir çalışma alanı
* İlk kullanıcı otomatik olarak tam ayrıcalıklara sahip yönetici olur (`canImpersonate` ve `canAccessFullAdminPanel`)
* İlk çalışma alanı oluşturulduktan sonra yeni kayıtlar devre dışı bırakılır
* Basit URL yapısı: `https://your-domain.com`
### Çoklu Çalışma Alanı Modunu Etkinleştirme
```bash
IS_MULTIWORKSPACE_ENABLED=true
DEFAULT_SUBDOMAIN=app # default value
```
Aynı Twenty örneği üzerinde birden fazla bağımsız ekibin kendi çalışma alanlarına ihtiyaç duyduğu SaaS benzeri dağıtımlar için çoklu çalışma alanı modunu etkinleştirin.
**Tek çalışma alanı modundan temel farklar:**
* Aynı örnek üzerinde birden fazla çalışma alanı oluşturulabilir
* Her çalışma alanı kendi alt alan adını alır (ör. `sales.your-domain.com`, `marketing.your-domain.com`)
* Kullanıcılar `{DEFAULT_SUBDOMAIN}.your-domain.com` adresinde kaydolur ve oturum açar (ör. `app.your-domain.com`)
* Otomatik yönetici ayrıcalıkları yoktur — her çalışma alanındaki ilk kullanıcı normal bir kullanıcıdır
* Alt alan adı ve özel alan adı gibi çalışma alanına özgü ayarlar, çalışma alanı ayarlarında kullanılabilir hale gelir
<Warning>
**Yalnızca ortam üzerinden ayar:** `IS_MULTIWORKSPACE_ENABLED` yalnızca `.env` dosyası üzerinden yapılandırılabilir ve yeniden başlatma gerektirir. Yönetici paneli üzerinden değiştirilemez.
</Warning>
### Çoklu Çalışma Alanı için DNS Yapılandırması
Çoklu çalışma alanı modu kullanılırken, dinamik alt alan adı oluşturmayı sağlamak için DNS'inizi bir wildcard kaydıyla yapılandırın:
```
*.your-domain.com -> your-server-ip
```
Bu, manuel DNS yapılandırması olmadan yeni çalışma alanları için otomatik alt alan yönlendirmesini etkinleştirir.
### Çalışma Alanı Oluşturmayı Kısıtlama
Çoklu çalışma alanı modunda, yeni çalışma alanı oluşturabilecek kişileri sınırlamak isteyebilirsiniz:
```bash
IS_WORKSPACE_CREATION_LIMITED_TO_SERVER_ADMINS=true
```
Etkinleştirildiğinde, yalnızca `canAccessFullAdminPanel` yetkisine sahip kullanıcılar ek çalışma alanları oluşturabilir. Kullanıcılar yine de ilk kayıt sırasında ilk çalışma alanlarını oluşturabilir.
## Gmail ve Google Takvim Entegrasyonu
### Google Cloud Projesi Oluştur
1. [Google Cloud Konsolu](https://console.cloud.google.com/) adresine gidin
2. Yeni bir proje oluşturun veya mevcut bir projeyi seçin
3. Bu API'leri etkinleştirin:
* [Gmail API](https://console.cloud.google.com/apis/library/gmail.googleapis.com)
* [Google Calendar API](https://console.cloud.google.com/apis/library/calendar-json.googleapis.com)
* [Kişiler API](https://console.cloud.google.com/apis/library/people.googleapis.com)
### OAuth'u Yapılandır
1. [Kimlik Bilgileri](https://console.cloud.google.com/apis/credentials) sayfasına gidin
2. OAuth 2.0 İstemci Kimliği Oluştur
3. Bu yönlendirme URI'lerini ekleyin:
* `https://{your-domain}/auth/google/redirect` (SSO için)
* `https://{your-domain}/auth/google-apis/get-access-token` (entegrasyonlar için)
### Twenty'de Yapılandır
1. **Ayarlar → Yönetici Paneli → Konfigürasyon Değişkenleri** bölümüne gidin
2. **Google Auth** bölümünü bulun
3. Bu değişkenleri ayarlayın:
* `MESSAGING_PROVIDER_GMAIL_ENABLED=true`
* `CALENDAR_PROVIDER_GOOGLE_ENABLED=true`
* `AUTH_GOOGLE_CLIENT_ID={client-id}`
* `AUTH_GOOGLE_CLIENT_SECRET={client-secret}`
* `AUTH_GOOGLE_CALLBACK_URL=https://{your-domain}/auth/google/redirect`
* `AUTH_GOOGLE_APIS_CALLBACK_URL=https://{your-domain}/auth/google-apis/get-access-token`
<Warning>
**Çevre-yalnızca modu:** `IS_CONFIG_VARIABLES_IN_DB_ENABLED=false` ayarlarsanız, bu değişkenleri `.env` dosyanıza ekleyin.
</Warning>
**Gerekli kapsamlar** (otomatik yapılandırılmış):
[İlgili kaynak kodunu görün](https://github.com/twentyhq/twenty/blob/main/packages/twenty-server/src/engine/core-modules/auth/utils/get-google-apis-oauth-scopes.ts#L4-L10)
* `https://www.googleapis.com/auth/calendar.events`
* `https://www.googleapis.com/auth/gmail.readonly`
* `https://www.googleapis.com/auth/profile.emails.read`
### Uygulamanız test modunda ise
Uygulamanız test modunda ise, projenize test kullanıcıları eklemeniz gerekecek.
[OAuth onay ekranı](https://console.cloud.google.com/apis/credentials/consent) altında "Test kullanıcılar" bölümüne test kullanıcılarınızı ekleyin.
## Microsoft 365 Entegrasyonu
<Warning>
Kullanıcıların Takvim ve Mesajlaşma API'sini kullanabilmesi için bir [Microsoft 365 Lisansı](https://admin.microsoft.com/Adminportal/Home) olması gerekir. Biri olmadan hesaplarını Twenty'de eşitleyemeyecekler.
</Warning>
### Microsoft Azure'da bir proje oluştur
[Microsoft Azure](https://portal.azure.com/#view/Microsoft_AAD_IAM/AppGalleryBladeV2) platformunda bir proje oluşturmanız ve kimlik bilgilerini almanız gerekecek.
### API'leri etkinleştir
Microsoft Azure Konsolunda "İzinler" altında aşağıdaki API'leri etkinleştirin:
* Microsoft Graph: Mail.ReadWrite
* Microsoft Graph: Mail.Send
* Microsoft Graph: Calendars.Read
* Microsoft Graph: User.Read
* Microsoft Graph: openid
* Microsoft Graph: email
* Microsoft Graph: profil
* Microsoft Graph: offline_access
<Note>
"Mail.ReadWrite" ve "Mail.Send", yalnızca iş akışı eylemlerimizi kullanarak e-posta göndermek istiyorsanız zorunludur. Yalnızca e-posta almak istiyorsanız "Mail.Read" kullanabilirsiniz.
</Note>
<Note>
İş akışı eylemlerimizi kullanarak takvim etkinlikleri oluşturmak istiyorsanız "Calendars.ReadWrite" zorunludur. Yalnızca takvim etkinliklerini eşzamanlamak istiyorsanız "Calendars.Read" kullanın.
</Note>
### Yetkili yönlendirme URI'leri
Projenize aşağıdaki yönlendirme URI'lerini eklemeniz gerekir:
* `https://{your-domain}/auth/microsoft/redirect` Microsoft SSO kullanmak istiyorsanız
* `https://{your-domain}/auth/microsoft-apis/get-access-token`
### Twenty'de Yapılandır
1. **Ayarlar → Yönetici Paneli → Konfigürasyon Değişkenleri** bölümüne gidin
2. **Microsoft Auth** bölümünü bulun
3. Bu değişkenleri ayarlayın:
* `MESSAGING_PROVIDER_MICROSOFT_ENABLED=true`
* `CALENDAR_PROVIDER_MICROSOFT_ENABLED=true`
* `AUTH_MICROSOFT_ENABLED=true`
* `AUTH_MICROSOFT_CLIENT_ID={client-id}`
* `AUTH_MICROSOFT_CLIENT_SECRET={client-secret}`
* `AUTH_MICROSOFT_CALLBACK_URL=https://{your-domain}/auth/microsoft/redirect`
* `AUTH_MICROSOFT_APIS_CALLBACK_URL=https://{your-domain}/auth/microsoft-apis/get-access-token`
<Warning>
**Çevre-yalnızca modu:** `IS_CONFIG_VARIABLES_IN_DB_ENABLED=false` ayarlarsanız, bu değişkenleri `.env` dosyanıza ekleyin.
</Warning>
### Kapsamları yapılandır
[İlgili kaynak kodunu görün](https://github.com/twentyhq/twenty/blob/main/packages/twenty-server/src/engine/core-modules/auth/utils/get-microsoft-apis-oauth-scopes.ts#L2-L9)
* 'openid'
* 'e-posta'
* 'profil'
* 'offline_access'
* 'Mail.ReadWrite'
* 'Mail.Send'
* 'Calendars.Read'
### Uygulamanız test modunda ise
Uygulamanız test modunda ise, projenize test kullanıcıları eklemeniz gerekecek.
Test kullanıcılarınızı "Kullanıcılar ve gruplar" bölümüne ekleyin.
## Takvim ve Mesajlaşma için Arka Plan İşleri
Gmail, Google Takvim veya Microsoft 365 entegrasyonlarını yapılandırdıktan sonra, verileri senkronize edecek arka plan işlerini başlatmanız gerekir.
İşçi kabınızdaki aşağıdaki tekrarlanan işleri kaydedin:
```bash
# from your worker container
yarn command:prod cron:messaging:messages-import
yarn command:prod cron:messaging:message-list-fetch
yarn command:prod cron:calendar:calendar-event-list-fetch
yarn command:prod cron:calendar:calendar-events-import
yarn command:prod cron:messaging:ongoing-stale
yarn command:prod cron:calendar:ongoing-stale
yarn command:prod cron:workflow:automated-cron-trigger
```
## E-posta Yapılandırması
1. **Ayarlar → Yönetici Paneli → Konfigürasyon Değişkenleri** bölümüne gidin
2. **E-posta** bölümünü bulun
3. SMTP ayarlarınızı yapılandırın:
<Tabs>
<Tab title="Gmail">
[Uygulama Parolası](https://support.google.com/accounts/answer/185833) sağlamanız gerekecek.
* EMAIL_DRIVER=smtp
* EMAIL_SMTP_HOST=smtp.gmail.com
* EMAIL_SMTP_PORT=465
* EMAIL_SMTP_USER=gmail_e-posta_adresi
* EMAIL_SMTP_PASSWORD='gmail_uygulama_parolası'
</Tab>
<Tab title="Office365">
2FA etkinleştirilmişse, [Uygulama Parolası](https://support.microsoft.com/en-us/account-billing/manage-app-passwords-for-two-step-verification-d6dc8c6d-4bf7-4851-ad95-6d07799387e9) sağlamanız gerekeceğini unutmayın.
* EMAIL_DRIVER=smtp
* EMAIL_SMTP_HOST=smtp.office365.com
* EMAIL_SMTP_PORT=587
* EMAIL_SMTP_USER=office365_e-posta_adresi
* EMAIL_SMTP_PASSWORD='office365_parola'
</Tab>
<Tab title="smtp4dev">
**smtp4dev**, geliştirme ve test için sahte bir SMTP e-posta sunucusudur.
* smtp4dev imajını çalıştırın: `docker run --rm -it -p 8090:80 -p 2525:25 rnwood/smtp4dev`
* smtp4dev kullanıcı arayüzüne şu adresten erişin: [http://localhost:8090](http://localhost:8090)
* Aşağıdaki değişkenleri ayarlayın:
* EMAIL_DRIVER=smtp
* EMAIL_SMTP_HOST=localhost
* EMAIL_SMTP_PORT=2525
</Tab>
</Tabs>
<Warning>
**Çevre-yalnızca modu:** `IS_CONFIG_VARIABLES_IN_DB_ENABLED=false` ayarlarsanız, bu değişkenleri `.env` dosyanıza ekleyin.
</Warning>
## S3 Depolama
<Warning>
Varsayılan olarak, Twenty yüklenen dosyaları yerel dosya sisteminde depolar. Üretim dağıtımları için S3 veya S3 uyumlu bir hizmet (MinIO, DigitalOcean Spaces vb.) kullanın. dosyaların kapsayıcı yeniden başlatmaları arasında kalıcı olmasını ve birden çok sunucu örneği arasında ölçeklenmesini sağlamak için.
</Warning>
`STORAGE_TYPE=S_3` değerini ayarlayın ve `STORAGE_S3_*` değişkenlerini yönetici paneli veya `.env` üzerinden yapılandırın. S3 değişkenlerinin tam listesi için [config-variables.ts referansına](https://github.com/twentyhq/twenty/blob/main/packages/twenty-server/src/engine/core-modules/twenty-config/config-variables.ts) bakın.
S3'ü CORS'a bağlı özelliklerle kullanırken (örn. tarayıcı içi dosya indirmeleri), bucket'ınızın CORS yapılandırmasında Twenty frontend origin'inize izin verdiğinden emin olun.
## Mantıksal İşlevler ve Kod Yorumlayıcısı
Twenty, iş akışları için mantıksal işlevleri ve yapay zekâ veri analizi için kod yorumlayıcısını destekler. Her ikisi de kullanıcı tarafından sağlanan kodu çalıştırır ve güvenlik için açık bir yapılandırma gerektirir.
### Güvenlik Varsayılanları
**Üretimde (NODE_ENV=production):** Hem mantıksal işlevler hem de kod yorumlayıcı varsayılan olarak **Devre Dışı**dır. Bu özelliklere ihtiyacınız varsa, onları `LOGIC_FUNCTION_TYPE` ve `CODE_INTERPRETER_TYPE` ile açıkça etkinleştirmeniz gerekir.
**Geliştirmede (NODE_ENV=development):** Yerel olarak çalıştırırken kolaylık olması için her ikisinin varsayılanı **LOCAL**dır.
<Warning>
**Güvenlik Notu:** Yerel sürücü (`LOGIC_FUNCTION_TYPE=LOCAL` veya `CODE_INTERPRETER_TYPE=LOCAL`), herhangi bir sandbox olmadan kodu ana makinede doğrudan bir Node.js sürecinde çalıştırır. Yalnızca geliştirirken güvenilen kod için kullanılmalıdır. Üretim dağıtımlarında güvenilmeyen kodu işlerken, `LOGIC_FUNCTION_TYPE=LAMBDA` veya `CODE_INTERPRETER_TYPE=E2B` (korumalı alanla) kullanın ya da bunları devre dışı bırakın.
</Warning>
### Mantıksal İşlevler - Kullanılabilir Sürücüler
| Sürücü | Ortam Değişkeni | Kullanım alanı | Güvenlik Düzeyi |
| ---------- | ------------------------------ | ---------------------------------------------- | ------------------------------------ |
| Devre dışı | `LOGIC_FUNCTION_TYPE=DISABLED` | Mantıksal işlevleri tamamen devre dışı bırakın | Uygulanamaz |
| Yerel | `LOGIC_FUNCTION_TYPE=LOCAL` | Geliştirme ve güvenilir ortamlar | Düşük (sandbox yok) |
| Lambda | `LOGIC_FUNCTION_TYPE=LAMBDA` | Güvenilmeyen kodla üretim | Yüksek (donanım düzeyinde izolasyon) |
### Mantıksal İşlevler - Önerilen Yapılandırma
**Geliştirme için:**
```bash
LOGIC_FUNCTION_TYPE=LOCAL # default when NODE_ENV=development
```
**Üretim için (AWS):**
```bash
LOGIC_FUNCTION_TYPE=LAMBDA
LOGIC_FUNCTION_LAMBDA_REGION=us-east-1
LOGIC_FUNCTION_LAMBDA_ROLE=arn:aws:iam::123456789:role/your-lambda-role
LOGIC_FUNCTION_LAMBDA_ACCESS_KEY_ID=your-access-key
LOGIC_FUNCTION_LAMBDA_SECRET_ACCESS_KEY=your-secret-key
```
**Mantıksal işlevleri devre dışı bırakmak için:**
```bash
LOGIC_FUNCTION_TYPE=DISABLED # default when NODE_ENV=production
```
### Kod Yorumlayıcısı - Kullanılabilir Sürücüler
| Sürücü | Ortam Değişkeni | Kullanım Senaryosu | Güvenlik Düzeyi |
| ---------- | -------------------------------- | --------------------------------------------- | --------------------------------- |
| Devre dışı | `CODE_INTERPRETER_TYPE=DISABLED` | Yapay zekâ kod yürütmesini devre dışı bırakın | Uygulanamaz |
| Yerel | `CODE_INTERPRETER_TYPE=LOCAL` | Yalnızca geliştirme için | Düşük (sandbox yok) |
| E2B | `CODE_INTERPRETER_TYPE=E_2_B` | Korumalı alanlı yürütmeyle üretim | Yüksek (yalıtılmış korumalı alan) |
<Note>
`LOGIC_FUNCTION_TYPE=DISABLED` veya `CODE_INTERPRETER_TYPE=DISABLED` kullanıldığında, herhangi bir yürütme girişimi bir hata döndürür. Bu, Twenty'yi bu yetenekler olmadan çalıştırmak istiyorsanız kullanışlıdır.
</Note>
## API ve ön uç ayrı ana makinelerde
Yalnızca arka ucun (back-end) ön ucu (front-end) sunmasına izin vermiyorsanız geçerlidir. Aynı kökene (same-origin) sahip dağıtımlar için burada hiçbir şeye gerek yoktur.
API ile iletişim kuran her tarayıcı kökenini (origin) virgülle ayırarak belirtin. `SERVER_URL`
ve `FRONTEND_URL` zaten güvenilirdir. Bir tarayıcı bildirilmeyen bir kökenden
çağrı yaptığında sunucu bir uyarı kaydeder.
```bash
AUTH_COOKIE_ALLOWED_ORIGINS=https://app.example.com
```
<Warning>
Ön uç her istekte kimlik bilgileri gönderir ve tarayıcılar, bildirilmemiş bir kökenden gelen kimlik bilgileri içeren
yanıtı reddeder, bu nedenle uygulama,
bunu ayarlayana kadar yüklenemez.
</Warning>
İki ana makine farklı kayıt edilebilir etki alanlarındaysa (sadece farklı
alt etki alanları değilse), ayrıca HTTPS gerektiren `AUTH_COOKIE_SAME_SITE=none` değişkenini de ayarlayın.
Çoklu çalışma alanı etkinleştirildiğinde, burada her çalışma alanının alt alan adını listelemeyin.
Bunun yerine, API yollarını (`/graphql`, `/metadata`, `/rest`, `/auth/`,
`/client-config`, `/file`) her çalışma alanı ana makine adında arka uca yönlendirin; böylece her çalışma alanı aynı kökende kalır — Twenty Cloud tam olarak böyle çalışır.

View File

@@ -0,0 +1,254 @@
---
title: Sorun Giderme
icon: wrench
---
## Sorun Giderme
Geliştirme ortamını kurarken, sürüm yükseltirken veya kendi sunucunuzda barındırırken herhangi bir sorunla karşılaşırsanız, işte yaygın sorunlar için bazı çözümler.
### Kendi Kendine Barındırma
#### İlk kurulum, `password authentication failed for user "postgres"` hatasıyla sonuçlanıyor.
🚨 **ÖNEMLİ: Bu çözüm SADECE yeni kurulumlar için GEÇERLİDİR** 🚨
Mevcut bir Twenty örneğiniz varsa ve üretim verileri varsa, bu adımları **TAKİP ETMEYİN**, çünkü bu veritabanınızı kalıcı olarak silecektir!
Twenty'yi ilk kez kurarken, varsayılan veritabanı parolasını değiştirmek isteyebilirsiniz.
İlk kurulum sırasında belirlediğiniz parola, veritabanı hacminde kalıcı olarak depolanır. Daha sonra bu parolayı yapılandırmanızda, eski hacmi kaldırmadan değiştirmeye çalışırsanız, kimlik doğrulama hataları alırsınız çünkü veritabanı hala orijinal parolayı kullanmaktadır.
⚠️ UYARI: Aşağıdaki adımlar veritabanındaki tüm verileri KALICI OLARAK SİLECEKTİR! ⚠️
Bu yalnızca önemli veri içermeyen yeni kurulumlar için geçerlidir.
`PG_DATABASE_PASSWORD` değerini güncellemek için şunları yapmanız gerekir:
```sh
# Update the PG_DATABASE_PASSWORD in .env
docker compose down --volumes
docker compose up -d
```
#### CR satır sonları bulundu [Windows]
Bu, Windows satır sonu karakterleri ile Git yapılandırmanızın birleşimi nedeniyle olur. Deneyin:
```
git config --global core.autocrlf false
```
Ardından depoyu silin ve tekrar klonlayın.
#### Eksik meta veri şeması
Twenty kurulumu sırasında, postgres veritabanınızı doğru şemalar, uzantılar ve kullanıcılarla hazırlamanız gerekir.
Bu hazırlığı başarıyla tamamlarsanız, veritabanınızda `varsayılan` ve `meta veri` şemalarına sahip olmalısınız.
Eğer yoksa, bilgisayarınızda birden fazla PostgreSQL örneği çalışmadığından emin olun.
#### Modül 'twenty-emails' veya buna karşılık gelen tür açıklamaları bulunamıyor.
Veritabanı başlatma işlemini çalıştırmadan önce `twenty-emails` paketini (`npx nx run twenty-emails:build`) derlemeniz gerekir.
#### Eksik twenty-x paketi
Kök dizinde yarn çalıştırdığınızdan ve ardından `npx nx server:dev twenty-server` çalıştırdığınızdan emin olun. Bu hala çalışmıyorsa eksik paketi manuel olarak derlemeyi deneyin.
#### Kaydettiğinde lint çalışmıyor
Bu, kurulu Oxc uzantısıyla (`oxc.oxc-vscode`) kutudan çıktığı anda çalışmalıdır. Bu işe yaramazsa, VS Code ayarlarınıza (geliştirme konteyner kapsamında) bunu eklemeyi deneyin:
```
"editor.codeActionsOnSave": {
"source.fixAll.oxc": "explicit"
}
```
#### `npx nx start` veya `npx nx start twenty-front` çalıştırılırken, yetersiz bellek hatası oluşuyor
`npx nx start` komutu yerine yalnızca ihtiyaç duyduğunuz servisleri çalıştırın. Örneğin, sunucuda çalışıyorsanız yalnızca `npx nx worker twenty-server` çalıştırın.
**Bu işe yaramazsa:**
WSL'de yalnızca `npx nx run twenty-server:start` çalıştırmayı denediyseniz ve aşağıdaki bellek hatasıyla karşılaşıyorsanız:
`FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory`
Geçici bir çözüm olarak, aşağıdaki komutu terminalinizde çalıştırabilir veya otomatik olarak uygulanması için `.bashrc` profilinize ekleyebilirsiniz:
`export NODE_OPTIONS="--max-old-space-size=8192"`
\--max-old-space-size=8192 bayrağı, Node.js yığını için 8GB'lık üst sınır ayarlar; kullanım uygulama talebiyle ölçeklenir.
Referans: https://stackoverflow.com/questions/56982005/where-do-i-set-node-options-max-old-space-size-2048
**Bu işe yaramazsa:**
Makinenizin RAM'inin çoğunu hangi işlemlerin kullandığını araştırın. Twenty'de bazı VS Code uzantılarının çok fazla RAM kullandığını fark ettik, bu yüzden onları geçici olarak devre dışı bıraktık.
**Bu işe yaramazsa:**
Makinenizi yeniden başlatmak, hayalet işlemleri temizlemeye yardımcı olur.
#### `npx nx start` çalıştırırken günlüklerde garip [0] ve [1] var
Bu, `npx nx start` komutunun kaputun altında daha fazla komut çalıştırması nedeniyle bekleniyor.
#### E-postalar gönderilmiyor
Çoğu zaman bunun nedeni `worker`ın arka planda çalışmıyor olmasıdır. Çalıştırmayı deneyin
```
npx nx worker twenty-server
```
#### Microsoft 365 hesabımı Twenty'ye bağlayamıyorum
Çoğu zaman yöneticiniz hesabınıza Microsoft 365 Lisansı sağlamadığından kaynaklanır. Denetleyin [https://admin.microsoft.com/](https://admin.microsoft.com/Adminportal/Home).
Bir `AADSTS50020` hata kodu alırsanız, muhtemelen kişisel bir Microsoft hesabı kullanıyorsunuzdur. Bu henüz desteklenmiyor. Daha fazla bilgi [burada](https://learn.microsoft.com/fr-fr/troubleshoot/entra/entra-id/app-integration/error-code-aadsts50020-user-account-identity-provider-does-not-exist)
#### `yarn` çalıştırılırken konsolda uyarılar görünüyor
Uyarılar, `package.json`'da açıkça belirtilmeyen ek bağımlılıkları çekildiğini bildiriyor, bu yüzden kritik bir hata çıkmadığı sürece her şey beklendiği gibi çalışmalıdır.
#### Bir kullanıcı giriş sayfasına eriştiğinde, günlüklerde bir çalışma alanına erişmeye çalışan yetkisiz bir kullanıcıya ilişkin hata görünüyor
Bu beklenen bir durumdur; çünkü kullanıcı oturum açmadığında yetkisizdir ve kimliği doğrulanmamıştır.
#### Çalışanınızın çalışıp çalışmadığını nasıl kontrol edersiniz?
* [webhook-test.com](https://webhook-test.com/) adresine gidin ve **Benzersiz Webhook URL'nizi** kopyalayın.
<div style={{textAlign: 'center'}}>
<img src="/images/docs/developers/self-hosting/webhook-test.jpg" alt="Webhook testi" />
</div>
* Twenty uygulamanızı açın, `/settings` sayfasına gidin ve ekranın sol alt köşesinde bulunan **Gelişmiş** seçeneğini etkinleştirin.
* Yeni bir webhook oluşturun.
* **Benzersiz Webhook URL'nizi** Twenty'deki **Endpoint URL** alanına yapıştırın. **Filtreleri** `Şirketler` ve `Oluşturuldu` olarak ayarlayın.
<div style={{textAlign: 'center'}}>
<img src="/images/docs/developers/self-hosting/webhook-settings.jpg" alt="Webhook ayarları" />
</div>
* `/objects/companies` sayfasına gidin ve yeni bir şirket kaydı oluşturun.
* [webhook-test.com](https://webhook-test.com/) adresine geri dönün ve yeni bir **POST isteği** alınıp alınmadığını kontrol edin.
<div style={{textAlign: 'center'}}>
<img src="/images/docs/developers/self-hosting/webhook-test-result.jpg" alt="Webhook test sonucu" />
</div>
* Bir **POST isteği** alıyorsanız, çalışanınız başarıyla çalışıyor demektir. Aksi halde, çalışanınızı sorun giderme yapmanız gerekir.
#### Ön uç başlatılamıyor ve şu hatayı döndürüyor: TS5042: 'project' seçeneği komut satırında kaynak dosyalarla birlikte kullanılamaz
Aşağıdaki örnekte gösterildiği gibi `packages/twenty-ui/vite-config.ts` içindeki checker eklentisini yorum satırı hâline getirin:
```
plugins: [
react({ jsxImportSource: 'react' }),
tsconfigPaths(),
svgr(),
dts(dtsConfig),
// checker(checkersConfig),
wyw({
include: [
'**/OverflowingTextWithTooltip.tsx',
'**/Chip.tsx',
'**/Tag.tsx',
'**/Avatar.tsx',
'**/AvatarChip.tsx',
],
babelOptions: {
presets: ['@babel/preset-typescript', '@babel/preset-react'],
},
}),
],
```
#### Yönetim paneline erişilemiyor
Yönetim paneline erişim sağlamak için veritabanı konteynerinde `UPDATE core."user" SET "canAccessFullAdminPanel" = TRUE WHERE email = 'you@yourdomain.com';` komutunu çalıştırın.
#### Bir iş akışı çalıştırılırken, iş akışının çalıştırılması şu hatayla başarısız oluyor: "Mantık işlevi yürütme devre dışı. Etkinleştirmek için LOGIC_FUNCTION_TYPE değerini LOCAL veya LAMBDA olarak ayarlayın."
Üretimde, mantık işlevleri varsayılan olarak devre dışıdır. Bunları etkinleştirmek için `LOGIC_FUNCTION_TYPE` ortam değişkenini `LOCAL` veya `LAMBDA` olarak ayarlayın. Bu, ortam değişkenleri aracılığıyla veya yönetici panelindeki veritabanı değişkenleri üzerinden yapılandırılabilir. Ayrıntılar için [Mantık İşlevleri kurulum kılavuzu](/l/tr/developers/self-host/capabilities/setup#logic-functions-available-drivers) bölümüne bakın.
#### AI sohbetinde bir mesaj yazdığımda hemen yanıt vermiyor ve yanıtı görmek için sayfayı yenilemem gerekiyor
Bu, ters proxy'nizde akış tabanlı API yanıtları için gereken yapılandırmanın eksik olduğu anlamına gelir. Aşağıda bir örnek Nginx yapılandırması bulunmaktadır:
```
location ~* ^/api/.*stream|\/graphql\/stream {
proxy_pass http://twenty_backend;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_buffering off;
proxy_request_buffering off;
proxy_cache off;
gzip off;
#chunked_transfer_encoding off;
add_header X-Accel-Buffering no always;
}
```
### 1 tıklamayla Docker Compose
#### Giriş Yapılamıyor
Kurulumdan sonra giriş yapamıyorsanız:
1. Aşağıdaki komutları çalıştırın:
```bash
docker exec -it twenty-server-1 yarn
docker exec -it twenty-server-1 npx nx database:reset --configuration=no-seed
```
2. Docker konteynerlerini yeniden başlatın:
```bash
docker compose down
docker compose up -d
```
`database:reset` komutunun, veritabanınızı tamamen sileceğini ve sıfırdan yeniden oluşturacağını unutmayın.
#### Ters Proxy'nin Arkasında Bağlantı Sorunları
Eğer Twenty'yi ters proxy'nin arkasında çalıştırıyorsanız ve bağlantı sorunları yaşıyorsanız:
1. **SERVER_URL'yi doğrulayın:**
`.env` dosyanızdaki `SERVER_URL`'nin dış erişim URL'nizle eşleştiğinden, SSL etkinse `https`'i de içerdiğinden emin olun.
2. **Ters Proxy Ayarlarını Kontrol Edin:**
* Ters proxy'nizin Twenty sunucusuna talepleri düzgün bir şekilde yönlendirdiğinden emin olun.
* `X-Forwarded-For` ve `X-Forwarded-Proto` gibi başlıkların doğru şekilde ayarlandığından emin olun.
3. **Servisleri Yeniden Başlatın:**
Değişiklik yaptıktan sonra hem ters proxy'yi hem de Twenty konteynerlerini yeniden başlatın.
#### Resim yüklerken hata - izin reddedildi
Veri klasörünün sahipliğini ana bilgisayarda root'tan başka bir kullanıcıya ve gruba geçirmek bu sorunu çözer.
#### İş akışında Logic işlevini test ederken 'Dosya Bulunamadı' hatası
Eksik bağımlılıklar sorununu çözmek için twenty-server container'ınızda `yarn command:prod application:rebuild-default-deps` komutunu çalıştırın.
## Yardım Almak
Bu kılavuzda ele alınmayan sorunlarla karşılaşırsanız:
* Günlükleri Kontrol Edin:
Hata mesajları için konteyner günlüklerine bakın:
```bash
docker compose logs
```
* Topluluk Desteği:
[Twenty topluluğuna](https://github.com/twentyhq/twenty/issues) veya [destek kanallarına](https://discord.gg/cx5n4Jzs57) yardım için ulaşın.

View File

@@ -0,0 +1,106 @@
---
title: Yükseltme rehberi
icon: arrow-up-right-dots
---
## Genel kılavuzlar
**Yükseltme işlemine başlamadan önce veritabanınızı her zaman yedekleyin**; bunun için şunu çalıştırın:
```bash
docker exec -it {db_container_name_or_id} pg_dumpall -U {postgres_user} > databases_backup.sql
```
Yedekten geri yüklemek için:
```bash
cat databases_backup.sql | docker exec -i {db_container_name_or_id} psql -U {postgres_user}
```
Docker Compose kullanıyorsanız, aşağıdaki adımları izleyin:
1. Twenty'yi durdurun: `docker compose down`
2. `docker-compose.yml` dosyanızın yanındaki `.env` dosyasında `TAG` değerini değiştirin
3. Twenty'yi başlatın: `docker compose up -d`
Sunucu, başlatma sırasında gerekli tüm yükseltme migrasyonlarını otomatik olarak çalıştırır. Manuel bir komut gerekmez.
## v2.34+ sürümüne yükseltme — En az PostgreSQL 15
Twenty v2.34, PostgreSQL 15 veya daha yeni bir sürüm gerektirir. Resmî Docker Compose yapılandırması PostgreSQL 16 kullanır. Örneğiniz haricî olarak yönetilen bir veritabanına bağlanıyorsa v2.34 sunucusunu başlatmadan önce onu yükseltin.
## Sürümler arası yükseltmeler (v1.23+)
Twenty, **v1.23** sürümünden itibaren sürümler arası yükseltmeleri destekler. Desteklenen herhangi bir sürümden, ara sürümlerin her birine tek tek geçmeden doğrudan en son sürüme atlayabilirsiniz.
Örneğin, v1.23'ten doğrudan v2.0'a yükseltme tamamen desteklenir.
## v2.5+ sürümüne yükseltme — bekleme hâlindeki şifreleme zarfı
**v2.5** ile birlikte, Twenty beklemede olan gizli verileri (OAuth belirteçleri, uygulama değişkenleri, imzalama için kullanılan özel anahtarlar, hassas yapılandırma değerleri, TOTP sırları) sürümlendirilmiş ve `ENCRYPTION_KEY` (veya `ENCRYPTION_KEY` ayarlı değilse `APP_SECRET`) ile şifrelenmiş bir `enc:v2:` zarfının içinde saklar.
v2.5 sürümündeki ilk açılış, mevcut satırları yeni zarfa **geri dolduran** yavaş yükseltme komutlarını çalıştırır. Bunlar idempotandır — sunucuyu durdurup yeniden başlattığınızda kaldığı yerden devam eder — ancak büyük veritabanlarında biraz zaman alabilirler. İlerlemeyi `upgrade:status` ile izleyebilirsiniz.
Geri doldurmanın, en başından itibaren satırları onun altında yazabilmesi için, v2.5 yükseltmesinden **önce** özel bir `ENCRYPTION_KEY` ayarlamalısınız. Geri doldurmadan sonra anahtarları değiştirmek bir [anahtar döndürme](/l/tr/developers/self-host/capabilities/key-rotation) gerektirir.
## Gizli verilerin ve imzalama anahtarlarının döndürülmesi
`ENCRYPTION_KEY` döndürme, JWT imzalama anahtarını döndürme veya sızdırılmış bir imzalama anahtarını iptal etme gibi günlük operasyonel görevler için özel [Anahtar döndürme kılavuzu](/l/tr/developers/self-host/capabilities/key-rotation) bölümüne bakın.
## Yükseltme durumunu kontrol etme
`upgrade:status` komutu, örneğinizin ve çalışma alanı migrasyonlarının mevcut durumunu incelemenizi sağlar. Yükseltme sorunlarında hata ayıklamak veya bir destek talebi oluştururken kullanışlıdır.
Sunucu konteynerinden çalıştırın:
```bash
docker exec -it {server_container_name_or_id} yarn command:prod upgrade:status
```
Örnek çıktı:
```sh
APP_VERSION: v1.23.0
Instance
Inferred version: 1.23.0
Latest command: 1.23.0_DropWorkspaceVersionColumnFastInstanceCommand_1785000000000
Status: Up to date
Executed by: v1.23.0
At: 2026-04-16T11:43:58.823Z
Workspace
Apple (20202020-1c25-4d02-bf25-6aeccf7ea419)
Inferred version: 1.23.0
Latest command: 1.23.0_UpdateGlobalObjectContextCommandMenuItemsCommand_1780000005000
Status: Up to date
Executed by: v1.23.0
At: 2026-04-16T11:44:09.361Z
Summary
Instance: Up to date
Workspaces: 1 up to date, 0 behind, 0 failed (1 total)
```
### Seçenekler
| Bayrak | Açıklama |
| ------------------------- | ---------------------------------------------------------------------------------------- |
| `-w, --workspace-id <id>` | Belirli bir çalışma alanına göre filtreleme yapar. Birden çok kez verilebilir. |
| `-f, --failed-only` | Güncel çalışma alanlarını gizler, yalnızca geride kalan ve başarısız girdileri gösterir. |
## Sorun Giderme
Yükseltme bazı çalışma alanlarında başarısız olursa, sunucu başarısız olan adımın ötesine geçmez. Sunucuyu yeniden başlatmak (`docker compose up -d`), yükseltmeyi kaldığı yerden yeniden dener.
Sorunları hızlıca belirlemek için şunu çalıştırın:
```bash
docker exec -it {server_container_name_or_id} yarn command:prod upgrade:status --failed-only
```
Bu, yalnızca geride kalan veya başarısız olan çalışma alanlarını ve her bir başarısızlık için hata iletisini gösterir.
## v1.23'ten önce
Örneğiniz v1.23'ten eskiyse, v1.23'e ulaşana kadar her ana etiketli sürümden (v1.6'dan v1.7'ye, ardından v1.7'den v1.8'e vb.) kademeli olarak yükseltmeniz gerekir. Bundan sonra, doğrudan en son sürüme geçebilirsiniz.