Uygulamanızı yazdınız, Docker ile paketlediniz, belki Docker Compose ile veritabanıyla birlikte çalıştırdınız. Sıra onu internete açmaya geldi. Bir VPS kiralayıp her şeyi elle kurabilirsiniz: Nginx ayarları, SSL sertifikası, her güncellemede SSH ile bağlanıp git pull ve yeniden başlatma... Ya da Heroku, Vercel gibi hazır platformlara ödeme yaparsınız, ama faturalar proje büyüdükçe kabarır. Coolify bu ikisinin arasında bir yol sunar: Hazır platformların kolaylığını, kendi sunucunuzun maliyetiyle. Bu yazıda Coolify'ı bir VPS'e kurup ilk uygulamanızı alan adı ve otomatik HTTPS ile yayınlayacağız.
ssh komutu veya WSL yeterlidir.Coolify, uygulamalarınızı, veritabanlarınızı ve hazır servisleri kendi sunucunuzda kolayca yayınlamanızı ve yönetmenizi sağlayan, açık kaynaklı ve kendi sunucunuza kurduğunuz (self-hosted) bir platformdur.
Coolify kendini Heroku, Vercel ve Railway gibi platformların kendi sunucunuzda çalışan alternatifi olarak tanımlar. Bu platformlarda olduğu gibi Git deponuzu bağlarsınız, Coolify kodu alır, build eder, container olarak çalıştırır, alan adınızı bağlar ve HTTPS sertifikasını otomatik alır. Fark şudur: Bütün bunlar sizin kiraladığınız ve kontrolünüzde olan sunucuda gerçekleşir.
Coolify'ın resmi dokümantasyonuna göre kendi sunucunuza kurduğunuz sürüm tamamen ücretsizdir ve hiçbir özellik ücretli sürüme kilitlenmemiştir. Kurulum ve güncellemelerle uğraşmak istemeyenler için Coolify ekibinin işlettiği ücretli Coolify Cloud seçeneği de vardır (dokümantasyonda aylık 5 dolardan başladığı belirtiliyor; güncel fiyat için resmi siteye bakın). Bu yazıda ücretsiz, kendi sunucunuza kurulan sürümü anlatıyoruz.
Coolify ile tek bir panelden şunları yapabilirsiniz:
compose.yaml dosyanızı olduğu gibi kullanabilirsiniz.Coolify'ı anlamak için arka plandaki üç parçayı bilmek yeterli:
| Parça | Görevi |
|---|---|
| Docker | Uygulamalarınızın ve veritabanlarınızın her biri bir container olarak çalışır. Coolify'ın kendisi de Docker container'ları olarak çalışır. |
| Proxy (varsayılan olarak Traefik) | Sunucuya 80 ve 443 portlarından gelen istekleri, alan adına bakarak doğru container'a yönlendirir. SSL sertifikalarını da bu katman yönetir. |
| Coolify paneli | Tüm bunları tarayıcıdan yönettiğiniz arayüz. Siz ayarları panelde yaparsınız, Coolify arka planda gerekli Docker komutlarını ve proxy ayarlarını oluşturur. |
Bir kullanıcı https://sayac.ornek.com adresini açtığında olanlar şunlardır:
Bu sayede aynı sunucuda onlarca uygulama çalıştırabilirsiniz; hepsi 80 ve 443 portlarını paylaşır, her biri kendi alan adıyla ayrışır.
Coolify'ın resmi dokümantasyonundaki minimum gereksinimler:
| Kaynak | Minimum |
|---|---|
| İşlemci | 2 çekirdek |
| Bellek (RAM) | 2 GB |
| Disk | 10 GB boş alan |
| Mimari | amd64 veya arm64 |
Desteklenen işletim sistemleri arasında Debian tabanlılar (Debian, Ubuntu), Red Hat tabanlılar (CentOS, Fedora, AlmaLinux, Rocky), SUSE tabanlılar, Arch Linux, Alpine Linux ve 64 bit Raspberry Pi OS bulunur. Dokümantasyon Ubuntu için LTS sürümleri önerir.
Bu değerlerin minimum olduğunu unutmayın. Bu kaynaklar Coolify'ın kendisi içindir; üzerinde çalıştıracağınız uygulamalar ve veritabanları ek kaynak ister. Ayrıca build işlemi (özellikle Node.js ve .NET projelerinde) sunucuda yapıldığı için bellek kullanımı build sırasında belirgin şekilde artar. Birden fazla uygulama çalıştırmayı planlıyorsanız minimumun üzerinde, örneğin 4 GB RAM'li bir sunucuyla başlamak size pay bırakır.
Ayrıca sunucunun temiz olması önerilir. Üzerinde zaten Nginx, Apache veya başka bir panel (cPanel, Plesk vb.) çalışan bir sunucuda 80 ve 443 portları dolu olacağı için Coolify'ın proxy'si çalışamaz.
Aşağıdaki adımlar Ubuntu LTS kurulu yeni bir VPS üzerinden anlatılmıştır.
VPS sağlayıcınızın verdiği IP adresiyle sunucuya SSH ile bağlanın:
ssh root@SUNUCU_IP_ADRESI
SUNUCU_IP_ADRESI yerine kendi sunucunuzun IP adresini yazın. İlk bağlantıda sunucunun parmak izini onaylamanız istenir; yes yazın.
apt update && apt upgrade -y
Kurulumdan önce sistem paketlerinin güncel olması olası uyumsuzlukların önüne geçer.
Coolify'ın dokümantasyonuna göre şu portların açık olması gerekir:
| Port | Ne için kullanılır? |
|---|---|
| 22/tcp | SSH erişimi (siz farklı bir SSH portu kullanıyorsanız o port) |
| 80/tcp | HTTP trafiği ve SSL sertifikası alma işlemi |
| 443/tcp | HTTPS trafiği |
| 8000/tcp | Coolify paneline IP adresi üzerinden erişim |
| 6001/tcp | Paneldeki anlık (gerçek zamanlı) güncellemeler |
| 6002/tcp | Paneldeki web terminali |
Ubuntu'da UFW kullanıyorsanız:
ufw allow 22/tcp
ufw allow 80/tcp
ufw allow 443/tcp
ufw allow 8000/tcp
ufw allow 6001/tcp
ufw allow 6002/tcp
ufw enable
Dikkat: SSH portunu (22) açmadan ufw enable komutunu çalıştırırsanız sunucuya erişiminizi kaybedersiniz. Komutları yukarıdaki sırayla çalıştırın. VPS sağlayıcınızın panelinde ayrıca bir güvenlik duvarı (örneğin Hetzner Firewall, AWS Security Group) varsa aynı portları orada da açmanız gerekir.
Panele bir alan adı bağladıktan sonra 8000, 6001 ve 6002 portlarını dışarıya kapatabilirsiniz. Bu konuya Adım 5'te döneceğiz.
Coolify'ın resmi kurulum komutu tek satırdır:
curl -fsSL https://cdn.coollabs.io/coolify/install.sh | bash
Bu komut kurulum betiğini indirir ve çalıştırır. Betik sırasıyla gerekli paketleri kurar, Docker yüklü değilse Docker Engine'i kurar, Coolify'ın dosyalarını /data/coolify klasörüne yerleştirir ve Coolify container'larını başlatır. İşlem sunucunun hızına göre birkaç dakika sürer.
root kullanıcısıyla bağlı değilseniz komutu sudo ile çalıştırmanız gerekir. Bunun için | bash yerine | sudo bash yazın.
İnternetten indirilen bir betiği doğrudan çalıştırmadan önce içeriğine bakmak isterseniz şu yolu izleyebilirsiniz:
curl -fsSL https://cdn.coollabs.io/coolify/install.sh -o install.sh
less install.sh
bash install.sh
Kurulum bittiğinde terminalde panele erişebileceğiniz adres yazılır.
Tarayıcınızda şu adresi açın:
http://SUNUCU_IP_ADRESI:8000
Karşınıza kayıt ekranı gelir. Ad, e-posta ve güçlü bir şifre girerek yönetici hesabını oluşturun.
Bu adımı kurulum biter bitmez yapın. Coolify'ın dokümantasyonu bu konuda açık bir uyarı yapar: Kayıt sayfasına ilk ulaşan kişi panelin yöneticisi olur ve sunucunuzda root yetkisine eşdeğer bir erişim kazanır. Kurulumu yarıda bırakıp kayıt ekranını saatlerce açık bırakmayın.
Hesabı oluşturduktan sonra yapılması önerilen iki iş daha var:
.env dosyasını yedekleyin. Kurulumun gizli anahtarları /data/coolify/source/.env dosyasında tutulur. Bu dosyanın bir kopyasını güvenli bir yere (sunucunun dışına) alın. Sunucuyu taşımanız veya geri yüklemeniz gerektiğinde bu dosyaya ihtiyacınız olur.panel.ornek.com alan adını sunucunun IP adresine yönlendirip Coolify ayarlarında panelin adresi olarak tanımlarsanız panele HTTPS ile erişirsiniz. Bundan sonra 8000, 6001 ve 6002 portlarını güvenlik duvarında dışarıya kapatabilirsiniz; panel, anlık güncellemeler ve terminal 80/443 üzerinden proxy aracılığıyla çalışmaya devam eder.İlk girişte Coolify kısa bir kurulum sihirbazı gösterir ve uygulamaların hangi sunucuda çalışacağını sorar. Tek sunuculu bir kurulumda Coolify'ın kendi sunucusunu, yani localhost seçeneğini kullanın.
Uygulamanızı sayac.ornek.com adresinde yayınlamak istediğinizi varsayalım. Alan adınızı yönettiğiniz yerde (alan adı firması, Cloudflare vb.) bir A kaydı oluşturun:
| Tür | Ad | Değer |
|---|---|---|
| A | sayac | SUNUCU_IP_ADRESI |
Birden fazla alt alan adı kullanacaksanız tek tek kayıt açmak yerine bir joker (wildcard) kayıt da oluşturabilirsiniz: Ad olarak * yazarsanız herhangibirsey.ornek.com biçimindeki tüm adresler sunucunuza yönlenir.
DNS kayıtlarının yayılması genellikle birkaç dakika sürer, bazen daha uzun olabilir. Kontrol etmek için:
nslookup sayac.ornek.com
Cevapta sunucunuzun IP adresini görüyorsanız hazırsınız.
Bu bölümde Docker Nedir? yazısında yazdığımız küçük Python uygulamasını (app.py ve Dockerfile) kullanacağız. Bu iki dosyayı GitHub'da herkese açık (public) bir depoya yüklediğinizi varsayıyoruz.
Bu bölümdeki adımlar Coolify v4'ün resmi dokümantasyonuna dayanmaktadır. Coolify sık güncellenen bir proje olduğu için kullandığınız sürümde bazı buton ve alan adları (örneğin Ports Exposes veya Domains) farklı yazılmış ya da farklı bir sekmede olabilir; işlevleri aynıdır.
https://github.com/kullanici-adiniz/ilk-docker-uygulamam) ve Check Repository butonuna tıklayın.Coolify depoyu kontrol eder ve varsayılan dalı (branch) otomatik algılar.
Build pack, Coolify'ın kodunuzu nasıl çalıştırılabilir hale getireceğini belirler. Seçenekler şunlardır:
| Build pack | Ne zaman kullanılır? |
|---|---|
| Nixpacks | Projenizde Dockerfile yoksa. Kodun dilini (Node.js, Python, Go vb.) otomatik algılayıp image oluşturur. |
| Railpack | Nixpacks'e benzer şekilde otomatik algılama yapan daha yeni bir sistem. |
| Static | Derlenmiş HTML/CSS/JS dosyalarından oluşan statik siteler için. |
| Dockerfile | Projede kendi Dockerfile'ınız varsa. Kontrol tamamen sizdedir. |
| Docker Compose | Birden fazla servisten oluşan projeler için (compose.yaml). |
Projemizde Dockerfile olduğu için Dockerfile seçin.
Ardından uygulamanın container içinde dinlediği portu belirtin. Arayüzde bu alan Ports Exposes olarak geçer. Uygulamamız 8000 portunu dinlediği için buraya 8000 yazın.
Dikkat: Burada sunucunun dışarıya açacağı bir porttan değil, container'ın içindeki porttan bahsediyoruz. Dışarıdan gelen istekler her zaman 80/443 üzerinden proxy'ye gelir; proxy bunları bu porta iletir. Yani Docker yazısındaki -p 8080:8000 eşlemesine burada ihtiyaç yoktur.
Uygulamanın ayarlarındaki Domains alanına alan adınızı protokolüyle birlikte yazın:
https://sayac.ornek.com
Başında https:// olması önemlidir. Coolify bunu gördüğünde Let's Encrypt'ten otomatik olarak SSL sertifikası alır ve HTTP isteklerini HTTPS'e yönlendirir. Alan adınız henüz yoksa Coolify'ın sunucunun IP adresine dayalı olarak önerdiği geçici bir adresle deneme yapabilirsiniz; ancak kalıcı kullanım ve HTTPS için kendi alan adınızı bağlamanız gerekir.
Son olarak Deploy butonuna tıklayın. Coolify sırasıyla depoyu klonlar, Dockerfile'dan image oluşturur, container'ı başlatır ve proxy'ye yeni alan adını tanıtır. Bu süreci Deployments sekmesindeki canlı loglardan adım adım izleyebilirsiniz.
İşlem bittiğinde https://sayac.ornek.com adresini açın:
Merhaba! Bu yanıt bir Docker container'ından geliyor.
Uygulamanız artık internette, geçerli bir HTTPS sertifikasıyla yayında.
Herkese açık bir depoyu yukarıdaki yöntemle bağladığınızda, GitHub'a yeni kod gönderdiğinizde Coolify'ın bundan haberi olmaz. Güncellemeyi yayına almak için panelde Redeploy butonuna basmanız yeterlidir.
Her git push sonrasında otomatik yayın istiyorsanız depoyu GitHub App yöntemiyle bağlayın. Bu yöntem hem özel (private) depoları kullanmanızı sağlar hem de GitHub'dan gelen bildirimlerle otomatik deploy yapar. Ayrıntılar için Coolify'ın GitHub entegrasyonu dokümantasyonuna bakabilirsiniz.
Docker Compose Nedir? yazısındaki web + Redis ziyaret sayacı projesini de Coolify'da yayınlayabilirsiniz. Adımlar aynıdır; build pack olarak Docker Compose seçersiniz. Ancak Coolify, Compose dosyalarını yorumlarken birkaç önemli kurala uyar:
Compose build pack'inde ortam değişkenleri, volume'lar ve diğer ayarlar compose.yaml içinde tanımlanır. Coolify bu dosyayı okuyup ona göre davranır.
ports kullanmayın, alan adı kullanınBilgisayarınızda "8080:8000" eşlemesi gerekliydi. Coolify'da ise bu satır, uygulamayı proxy'yi atlayarak doğrudan sunucunun 8080 portundan dışarıya açar. Coolify'ın dokümantasyonu, istemeden servis açığa çıkarmamak için çoğu serviste ports kullanılmamasını önerir. Bu satırı silin:
services:
web:
build: .
environment:
REDIS_HOST: redis
depends_on:
redis:
condition: service_healthy
redis:
image: redis:8-alpine
command: ["redis-server", "--appendonly", "yes"]
volumes:
- redis-veri:/data
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 5s
timeout: 3s
retries: 5
volumes:
redis-veri:
Ardından Coolify arayüzünde web servisine alan adı atayın. Uygulama 80 dışında bir portu dinliyorsa, portu alan adının sonuna ekleyin:
https://sayac.ornek.com:8000
Bu yazım, "dışarıya 8000 portunu aç" anlamına gelmez. Ziyaretçiler yine standart https://sayac.ornek.com adresini kullanır; sondaki :8000 yalnızca proxy'ye isteği container'ın hangi portuna ileteceğini söyler.
redis servisine alan adı atamayın. Alan adı ve port eşlemesi olmayan servisler yalnızca projenin iç ağında erişilebilir kalır; bu da veritabanları için tam olarak istediğimiz durumdur.
Coolify, Compose dosyalarında SERVICE_ ile başlayan bazı değişkenleri tanır ve değerlerini kendisi üretir. Örneğin:
| Değişken | Coolify'ın ürettiği değer |
|---|---|
SERVICE_PASSWORD_<AD> | 16 karakterlik rastgele şifre |
SERVICE_PASSWORD_64_<AD> | 64 karakterlik rastgele şifre |
SERVICE_FQDN_<AD> | Servis için oluşturulan alan adı |
SERVICE_URL_<AD> | Servis için oluşturulan tam adres |
Böylece veritabanı şifresini compose.yaml içine açık metin olarak yazmak zorunda kalmazsınız. Coolify şifreyi üretir, saklar ve aynı değişkeni kullanan tüm servislere aynı değeri verir.
Olası nedenler: Güvenlik duvarında 8000 portu kapalıdır ya da VPS sağlayıcısının ayrı bir güvenlik duvarı vardır.
Çözüm: Sunucuda ufw status ile kuralları kontrol edin. Sağlayıcınızın panelindeki güvenlik duvarı ayarlarında da 8000 portunun açık olduğundan emin olun. Kurulumun gerçekten tamamlandığını görmek için sunucuda docker ps komutunu çalıştırın; listede coolify ile başlayan container'lar olmalıdır.
Olası nedenler:
Çözüm: nslookup ile DNS kaydını kontrol edin, 80 portunun açık olduğundan emin olun. Cloudflare kullanıyorsanız ilk sertifika alınana kadar ilgili kaydın proxy'sini kapatmayı (gri bulut) deneyin. Ardından uygulamayı yeniden deploy edin.
Olası neden: Sunucunun belleği build için yetersiz kalıyor. Özellikle Node.js (npm install, npm run build) ve .NET projelerinde build sırasında bellek kullanımı ciddi şekilde artar.
Çözüm: Sunucuya swap alanı ekleyin veya daha fazla RAM'e sahip bir pakete geçin. Uzun vadede image'ı GitHub Actions gibi bir CI servisinde build edip Coolify'a hazır image olarak vermek de bir seçenektir.
Olası nedenler:
127.0.0.1 adresini dinliyor. Container içindeki uygulama yalnızca 127.0.0.1'i dinlerse proxy ona ulaşamaz.Çözüm: Uygulamanın 0.0.0.0 adresini ve doğru portu dinlediğinden emin olun. Deployment loglarında ve uygulama loglarında uygulamanın hangi portta başladığını kontrol edin.
Olası neden: Sunucuda zaten Nginx, Apache veya başka bir web sunucusu çalışıyor.
Çözüm: ss -tulpn | grep -E ':80|:443' komutuyla portu kullanan programı bulun. Coolify'ı temiz bir sunucuya kurmak en sorunsuz yoldur; mevcut web sunucusunu durdurmak, o sunucuda yayında olan sitelerinizi kapatır.
Kendi sunucunuza kurduğunuz Coolify ücretsiz ve açık kaynaklıdır; dokümantasyona göre hiçbir özellik ücretli sürüme kilitlenmemiştir. Ödeyeceğiniz tek ücret kiraladığınız sunucunun ücretidir. Kurulum ve bakım işlerini Coolify ekibine bırakmak isterseniz ücretli Coolify Cloud seçeneğini kullanabilirsiniz.
Vercel ve Heroku gibi platformlarda sunucu yönetimiyle hiç uğraşmazsınız; karşılığında kullandıkça artan ücretler ve platformun kurallarına bağımlılık vardır. Coolify'da sunucunun güncellenmesi, yedeklenmesi ve güvenliği sizin sorumluluğunuzdadır; karşılığında sabit ve genellikle çok daha düşük bir maliyetle istediğiniz kadar uygulama çalıştırabilirsiniz. Birkaç küçük projesi olan geliştiriciler ve küçük ekipler için Coolify genellikle ekonomik bir seçimdir.
Teknik olarak Linux çalıştıran bir makineye kurulabilir, ancak Coolify'ın asıl amacı internete açık bir sunucuda uygulama yayınlamaktır. Kendi bilgisayarınızda geliştirme yaparken Docker ve Docker Compose zaten yeterlidir.
Coolify sunucunuzda geniş yetkilerle çalışan bir yönetim panelidir, bu yüzden güvenliği ciddiye alınmalıdır. Yönetici hesabını kurulumdan hemen sonra oluşturun, güçlü bir şifre ve iki aşamalı doğrulama kullanın, panele alan adı verip 8000/6001/6002 portlarını dışarıya kapatın ve Coolify'ı güncel tutun. Her yazılımda olduğu gibi Coolify'da da zaman zaman güvenlik açıkları bulunup düzeltilir; güncellemeleri geciktirmemek bu yüzden önemlidir.
Coolify üzerinden oluşturduğunuz veritabanları için panelde zamanlanmış yedekleme tanımlayabilirsiniz. Yedeklerin yalnızca aynı sunucuda durması, sunucunun tamamen kaybolması durumunda işe yaramaz; bu yüzden yedekleri S3 uyumlu harici bir depolama alanına göndermeniz önerilir.
Coolify tarafında bir sınır yoktur; sınırı sunucunuzun işlemci, bellek ve disk kapasitesi belirler. Tüm uygulamalar 80 ve 443 portlarını proxy aracılığıyla paylaştığı için her birine farklı bir alan adı vermeniz yeterlidir.
.env dosyasını yedekleyin.https:// ile yazdığınızda HTTPS sertifikası otomatik alınır.ports yerine alan adı kullanın; veritabanı gibi iç servislere alan adı atamayın.Artık kodunuzu bilgisayarınızda Docker ve Docker Compose ile çalıştırıp Coolify ile kendi sunucunuzda yayınlayabiliyorsunuz. Bundan sonra GitHub App entegrasyonuyla her git push sonrasında otomatik yayın kurabilir, Coolify'ın hazır servis şablonlarıyla n8n veya Uptime Kuma gibi araçları tek tıkla çalıştırabilir ve veritabanlarınız için harici yedekleme tanımlayabilirsiniz. Windows kullanıyorsanız, sunucunuzla aynı Linux ortamında geliştirme yapmanın en pratik yolu olan WSL yazımıza da göz atın.
Kurumsal web siteleri için içerik yönetim sistemi.