Sitemap

Vercel Bitti - Dokploy ile 5 Dakikada Self-Host Uygulama Yayınlamak

7 min readOct 1, 2025
Press enter or click to view image in full size
https://dokploy.com/

Herkese merhaba, bir süredir self-host araçlarla projelerimizi kendi sunucularımız üzerinde çalıştırmak ile ilgili içerik oluşturmak istiyordum. Bu yazıda sizlere Dokploy’un çeşitli özelliklerini ve uygulamalarınızı nasıl hızlıca yayına alabileceğinizi anlatacağım.

İçerik

- Giriş
- Kurulum
- Swarm Cluster
- Yeni Proje Oluşturma
— — Projelerin Ölçeklenmesi
- GitHub Projesi Bağlama
- Yeni Sunucu Ekleme
- Docker ve Docker Compose ile Proje Yayınlama
- Preview Deployment
- Projeye Domain Ekleme
- Yedekleme ve Yedeği Geri Yükleme
- Kullanıcı Yönetimi
- Terminal Bağlantısı
- CronJob Oluşturma
- Monitoring

Giriş

X platformunda Vercel CEO’su israile giderek “kutsal topraklardan selam” yazan bir paylaşım yaptı. Daha sonrasında yetmezmiş gibi katliam başkanı ile fotoğraf çekildiği bir paylaşım daha yaptı. Hemen akabinde ise Vercel’in israilden yatırım aldığı haberleri paylaşıldı.

Bunun üzerine vicdan ve çeşitli hassasiyetlere sahip olan insanlar alternatif bir ürün/yöntem arayışına girdi (buna ben de dahil) ve Dokploy ve Coolify gibi çeşitli açık kaynak ürünlere yöneldi ve Vercel aboneliklerini iptal edip projelerini farklı yerlere taşımaya başladılar.

Hatta bazı platformlar Vercel aboneliklerini iptal edenlere birçok kolaylık sağladı ve hediye bakiyeler verdi.

Ben seçimimi Dokploy’dan yana yaparak kiraladığım sanal sunucuda hızlıca bir kurulum ile özelliklerini keşfetmeye başladım. Aslında amacım Dokploy, Coolify ve benzeri bazı açık kaynak self-hosted ürünleri deneyip en iyisini kullanmaya devam etmekti fakat Dokploy kurup kullanım kolaylığını gördükten ve alıştıktan sonra diğer alternatifleri denemedim. Alternatifler de ayrı bir içerik konusu olsun bizlere.

Kurulum

Dokploy kurulumu gerçekten çok basit, kendi dokümantasyonunda da anlattığı gibi bir satırlık komut ile kurulum gerçekleştiriliyor.

curl -sSL https://dokploy.com/install.sh | sh

Dokploy kendi servislerini de Docker konteynırları olarak çalıştırıyor. Sunucunuzda docker ps komutunu çalıştırarak kurulum sonrası çalışan konteynırları görebilirsiniz.

Kurulum sonrası sunucu ip adresiniz ve 3000 portu ile tarayıcı üzerinden erişim sağlayabilirsiniz. Örnek 10.10.10.10:3000 gibi.

Swarm Cluster

Dokploy arka planda bir Docker Swarm clusterı üzerinde projeleri çalıştırıyor. Böylelikle birden fazla sunucuda çalışan uygulamalar ortak bir network kullanarak birbirleri ile haberleşebiliyor ve projelerinizde Swarm tarafından sağlanan özellikleri kullanabiliyorsunuz.

Press enter or click to view image in full size

Clustera yeni “node” eklemek istediğinizde ufak bir gereksinim karşınıza çıkıyor: Dokploy bir Docker Registry eklemenizi istiyor. Bunu da isterseniz gene Dokploy üzerinde self-host docker registry çalıştırarak yapabilirsiniz.

Git Sağlayıcı Ekleme

Projelerinizi yayınlamak için yapmanız gereken temel işlemlerden birisi GitHub, GitLab gibi herhangi bir git sağlayıcısını Dokploy sisteminize bağlamak olacak.

Bunun için sol taraftaki Git sekmesinden ilgili ekrana erişip bağlantıyı kurabilirsiniz. Sizi entegrasyon için yönlendirip kolayca gerçekleştirmenizi sağlıyor. Ben örnek olarak iki farklı GitHub hesabı bağladım.

Press enter or click to view image in full size

Yeni bir hesap bağlamak istediğimizde bu şekilde bir ekran çıkıyor ve GitHub’a yönlendiriyor.

Press enter or click to view image in full size

Birden Fazla Sunucu Ekleme

Dokploy ile birden fazla sunucunuza uygulama yayınlayabilirsiniz. Oluşturacağınız proje gruplarınızdaki servislerin hangi sunucuda çalışacağını da seçebilirsiniz.

Bunun için sol taraftaki menüden “Remote Servers” sekmesine girip yeni sunucu eklemelisiniz.

Press enter or click to view image in full size

Create Server dedikten sonra aşağıdaki gibi sunucu bilgilerini girmenizi isteyecek:

Press enter or click to view image in full size

Gerekli bilgileri girdikten sonra yeni sunucunuz kullanıma hazır hale gelecek.

Yeni Proje Oluşturma

Dokploy üzerinde çeşitli proje grupları oluşturabilirsiniz, bu projeler içerisinde uygulamalarınızı veritabanlarınızı ve çeşitli servislerinizi barındırabilir.

Press enter or click to view image in full size

Örneğin monitoring projesi altında aşağıdaki servisler bulunuyor:

Press enter or click to view image in full size

Create Service dediğimizde aşağıdaki gibi çeşitli seçenekler çıkıyor:

Press enter or click to view image in full size

Application seçtiğimizde ya GitHub üzerinden projemizi bağlayıp Docker dosyalarını belirtiriz ya da direkt olarak docker-compose dosyasını tanımlarız ve hangi sunucuya yayınlamak istediğimizi seçeriz:

Press enter or click to view image in full size

Örneğin ben fluentbit için docker compose tanımı verdim:

Press enter or click to view image in full size

Farklı bir proje için ise GitHub repository seçtim:

Press enter or click to view image in full size

Build tipi olarak da Docker seçtim:

Press enter or click to view image in full size

Application tipi dışında dikkat çekmek istediğim iki seçenek daha var birincisi Database ikincisi Template.

Database seçtiğimizde bizim için önceden tanımlanmış bazı veritabanları için seçenekler çıkıyor:

Press enter or click to view image in full size

Template seçtiğimizde ise birçok açık kaynak ve self-host proje için ön tanımlı yayınlama seçenekleri geliyor:

Press enter or click to view image in full size

Ben bu hazır örnekler arasında Docmost seçip dokümantasyon için kullanmayı denemiştim.

Projelerin Ölçeklenmesi

Proje sayfanızda “Advanced” sekmesine geldiğinizde ilgili projenizin kaç replika ile çalışacağını seçebiliyorsunuz.

Press enter or click to view image in full size

Ayrıca Swarm Settings bölümünden “healht check”, “restart policy”, “rollback config” gibi çeşitli ayarları da yapabiliyorsunuz.

Press enter or click to view image in full size
Press enter or click to view image in full size

Docker ve Docker Compose ile Proje Yayınlama

Yukarıda proje oluşturma adımlarında uygulama deploy etmeyi ve hem GitHub reposu hem de direkt docker compose dosyası ile yayınlamayı gösterdik. Burada dikkat edilmesi gereken önemli bir nokta, deploymentlarınızda compose dosyanıza network kısmına dokploy-network ve labels kısmına projenizin isim ve domainine göre değerleri eklemeyi unutmamalısınız.

Traefik ile dışarıdan istek karşılamak istediğiniz durumlarda bu kısım gerekli olabiliyor.

    networks:
- dokploy-network
labels:
- traefik.enable=true
- traefik.http.routers.backend-app.rule=Host(`backend.dokploy.com`)
- traefik.http.routers.backend-app.entrypoints=web
- traefik.http.services.backend-app.loadbalancer.server.port=5000

Preview Deployment Özelliği

Dokploy’un sunduğu güzel özelliklerden birisi de projenize GitHub üzerinde bir pull request açtığınız zaman sizin için ön izleme versiyonu oluşturması. Böylelikle projenizi canlı ortama almadan önce test edebilme imkanınız oluyor.

Hiçbir ek ayar yapmadan frontend projelerinizdeki değişiklikleri canlıya almadan önce görebilmek güzel bir özellik.

Press enter or click to view image in full size

Projeye Domain Ekleme

Proje sayfanızın “Domains” sekmesine geldiğinizde sahip olduğunuz bir domaini servisinize bağlayabilir veya Dokploy’un Traefik ile otomatik domain oluşturmasını sağlayabilirsiniz.

Burada arkaplanda Dokploy Traefik ayarları yaparak sunucunuza belirttiğiniz host bilgisi ile gelen istekleri deploy ettiğiniz servisinizin portuna yönlendirme işlemini gerçekleştirir.

Press enter or click to view image in full size

Not: Tabii ki ilgili domain sağlayıcınıza sunucunuzun ip adresini verip dns ayarlarını yapmanız gerekli.

Yedekleme ve Yedeği Geri Yükleme

Not: Sunucularınızı, veritabanlarınızı, projelerinizi, konteynır image’larınızı ve uygulamalarınızın kullandığı paketleri mutlaka ama mutlaka otomatize şekilde yedeklemeyi unutmayın!!!

Yedek Oluşturma

Sıfırdan yaptığınız bir Dokploy kurulumunda eski yedeklerinizi bağlayıp bir versiyonu geri yüklemek istediğiniz tüm ayarlarınız yedekten yükleniyor. Fakat bütün deploymentlarınızı tekrar tetiklemeniz gerekiyor.

Bunun için “S3 Destinations” sayfasından S3 uyumlu herhangi bir kaynağı bağlayabiliyorsunuz.

Press enter or click to view image in full size

Bir yedeği geri yüklemek istediğinizde ise Web Server sekmesinden “Restore Backup” seçeneği ile hangi tarihli yedeği geri yüklemek istediğinizi seçebiliyorsunuz. Aynı yerde bulunan “play” butonu ile manuel bir şekilde yedek almasını tetikleyebilirsiniz.

Press enter or click to view image in full size
Press enter or click to view image in full size

Kullanıcı Yönetimi

Users bölümünden sisteminize yeni kullanıcıları ekleyip davet edebiliyorsunuz.

Press enter or click to view image in full size

Ve bu kullanıcılara proje ve aksiyon bazlı yetki verebiliyorsunuz.

Press enter or click to view image in full size

Terminal Bağlantısı

Dokploy ile üzerinde çalıştığınız sunucuya veya uzak sunucularınıza direkt terminal bağlantısı kurabilirsiniz. Web Server sekmesinde Server butonuna tıkladığınızda çıkan seçenekler arasından Terminal seçerek bağlantı yapabilirsiniz.

Press enter or click to view image in full size

CronJob Oluşturma

Scheduled Tasks bölümünden cronjob oluşturup belirli aralıklarla scriptler çalıştırabilirsiniz.

Press enter or click to view image in full size

Monitoring

Dokploy çok temel de olsa bir monitoring ekranı sunuyor buradan sunucunuzda kaynak kullanımını görebilirsiniz.

Press enter or click to view image in full size

Sonuç

Genel olarak bir projeyi yayına almayı ve Dokploy özelliklerini aktarmaya çalıştım. Burada bahsettiklerime ek olarak Docker ekranı üzerinden çalışan konteynırları görüp loglarına bakmak veya terminal bağlantısı kurmak, uygulama sayfası üzerinden deployment işlemlerinin başarılı olup olmadığını kontrol etmek aynı şekilde uygulamaya ait tüm konteynırların loglarını tek yerden görmek, sertifika yönetimi için otomatik olarak Let’s Encrypt ile entegre olmak gibi daha birçok özelliği de bulunuyor.

Self-host uygulama yayınlama ve kendi sunucularınızda uygulamalarınız kendiniz yönetmeniz konusunda umarım sizin için başlangıç aşamasında yardımcı olacak bir yazı olmuştur.

Kullanım konusunda yardıma ihtiyacınız olursa bana X üzerinden ulaşabilirsiniz.

Çocukların, masumların katledilmediği bir dünya diliyorum.

--

--

Emre Savcı
Emre Savcı

Written by Emre Savcı

Tech. Lead @Trendyol & MUG Lead @mongodb | ex Couchbase Ambassador | Go Türkiye, Kubernetes, Istio, CNCF, Scalability. Open Source Contributor.

Responses (2)