Vercel Bitti - Dokploy ile 5 Dakikada Self-Host Uygulama Yayınlamak
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 | shDokploy 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.
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.
Yeni bir hesap bağlamak istediğimizde bu şekilde bir ekran çıkıyor ve GitHub’a yönlendiriyor.
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.
Create Server dedikten sonra aşağıdaki gibi sunucu bilgilerini girmenizi isteyecek:
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.
Örneğin monitoring projesi altında aşağıdaki servisler bulunuyor:
Create Service dediğimizde aşağıdaki gibi çeşitli seçenekler çıkıyor:
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:
Örneğin ben fluentbit için docker compose tanımı verdim:
Farklı bir proje için ise GitHub repository seçtim:
Build tipi olarak da Docker seçtim:
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:
Template seçtiğimizde ise birçok açık kaynak ve self-host proje için ön tanımlı yayınlama seçenekleri geliyor:
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.
Ayrıca Swarm Settings bölümünden “healht check”, “restart policy”, “rollback config” gibi çeşitli ayarları da yapabiliyorsunuz.
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=5000Preview 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.
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.
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.
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.
Kullanıcı Yönetimi
Users bölümünden sisteminize yeni kullanıcıları ekleyip davet edebiliyorsunuz.
Ve bu kullanıcılara proje ve aksiyon bazlı yetki verebiliyorsunuz.
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.
CronJob Oluşturma
Scheduled Tasks bölümünden cronjob oluşturup belirli aralıklarla scriptler çalıştırabilirsiniz.
Monitoring
Dokploy çok temel de olsa bir monitoring ekranı sunuyor buradan sunucunuzda kaynak kullanımını görebilirsiniz.
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.
