Files
upstream-mirror e7da97194a
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
snapshot of https://github.com/twentyhq/twenty.git (main, 2026-09-17; blobs > 131072B omitted)
2026-09-17 23:28:13 +05:00

263 lines
8.9 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
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>