- Bu yazı, Hetzner ve Coolify kullanarak VPS self-hosting sürecini adım adım ayrıntılı biçimde belgeleyen bir kontrol listesidir
- Hetzner, Avrupa’daki düşük gecikme, güçlü fiyat/performans, ve şeffaf fiyatlandırma nedeniyle önerilmektedir
- Güvenlik odaklı ilk sunucu kurulumu, SSH güvenliği, firewall, otomatik güncelleme yapılandırması gibi pratikte sık karşılaşılan konuları içerir
- Node.js uygulamalarını güvenli biçimde dağıtmak için production ortamı kurulumu, izleme, yedekleme, sorun giderme yöntemleri ayrıntılı olarak anlatılır
- Kendi sunucunuzu kurarken DevOps yetkinliği ve özgür yönetim becerisi geliştirmenizi sağlayan pratik bir rehberdir
VPS kurulum hazırlık kontrol listesi
- VPS servis sağlayıcısı seçimi bölümünde Hetzner, fiyat/performans açısından önerilen seçenek olarak anılır
- En az 1GB RAM ve 20GB depolamaya sahip bir yapılandırma seçilmeli; sunucunun IP adresi ve root hesap bilgileri not edilmelidir
- Yerel makinede bir SSH istemcisi hazır olmalı; güçlü parola üreticisi kullanılmalıdır
VPS sağlayıcısı seçme nedenleri
- Hetzner Cloud, Avrupa bölgesinde ucuz, hızlı ve güvenilir bir seçenektir
- Alternatifler: DigitalOcean (iyi onboarding/dokümantasyon, artan fiyatlar), AWS Lightsail (AWS bağımlılığı, yeni başlayanlar için daha zor), Linode (istikrarlı ama fiyat rekabeti düşük), Render/Fly.io (PaaS olarak kullanışlı ama maliyet ve kısıtları fazla)
- Hetzner, aynı özelliklerde 2–3 kat daha ucuzdur; gizli ücretlendirme yoktur ve Avrupa veri merkezleri konusunda güçlüdür
İlk sunucu kurulumu kontrol listesi
İlk bağlantı ve sistem güncellemesi
- Paket listesi güncelleme ve sistem yükseltmesi
- Sistem bilgisi kontrolü için komutlar verilir (ör.
uname -a, cat /etc/os-release)
Root hesap güvenliği yapılandırması
- Karmaşık bir parola belirlenmeli ve güvenli biçimde saklanmalıdır
admin, user gibi yaygın hesap adları yerine benzersiz bir kullanıcı hesabı oluşturulmalıdır
- Yeni hesaba sudo yetkisi verilmeli ve düzgün uygulanıp uygulanmadığı doğrulanmalıdır
SSH anahtar doğrulaması yapılandırması
- Yerel makinede Ed25519 (önerilen) veya RSA anahtar çifti oluşturulur
- Açık anahtar, sunucudaki
.ssh/authorized_keys dosyasına eklenir ve izinler ayarlanır
- SSH anahtarıyla girişin düzgün çalıştığı doğrulanır (parola girmeden bağlanılıp bağlanılamadığı)
- Parola doğrulaması devre dışı bırakılır; gerekirse cloud-init için ayrı dosyalar da kontrol edilir
- SSH daemon yeniden başlatılır ve düzgün çalıştığı doğrulanır
- Root login devre dışı bırakılarak uzaktan root erişiminin engellendiği kontrol edilir
Firewall ayarları kontrol listesi
UFW temel ayarları
- Tüm incoming bağlantılar varsayılan olarak reddedilir, outgoing bağlantılara izin verilir
- SSH, HTTP(80), HTTPS(443) portlarına izin verilir ve UFW’nin uygulandığı doğrulanır
- İsteğe bağlı: SSH portunu belirli bir IP ile sınırlandırmak, port numarasını değiştirmek (güvenliği güçlendirme amacıyla) gibi ek koruma katmanları uygulanabilir
Otomatik güncelleme yapılandırması kontrol listesi
Unattended Upgrades yapılandırması
unattended-upgrades, apt-listchanges paketleri kurulur, varsayılan kullanım onayı seçilir
- Güvenlik güncellemesi satırlarının yorumu kaldırılabilir; e-posta bildirimi ve otomatik yeniden başlatma seçenekleri yapılandırılabilir
- Otomatik güncellemelerin çalışması test edilir, durumu kontrol edilir
Production uygulama dağıtımı kontrol listesi
Node.js çalışma ortamı kurulumu
- Node.js LTS kurulur, sürüm doğrulanır
- Uygulama dosyaları sunucuya yüklenir ve bağımlılıklar kurularak production için hazırlanır
Süreç yöneticisi (PM2) kullanımı
- PM2 ile uygulama production modunda çalıştırılır; clustering seçeneği kullanılabilir
- PM2 için açılışta otomatik başlatma ayarlanır; yeniden başlatma/izleme komutları sağlanır
Reverse proxy (Nginx) yapılandırması
- Nginx site yapılandırma dosyası oluşturulur ve proxy pass uygulanır
- Site etkinleştirilir ve Nginx yeniden başlatılır
SSL sertifikası yapılandırması kontrol listesi
Let's Encrypt ve Certbot
certbot, python3-certbot-nginx kurulduktan sonra alan adına bağlı SSL sertifikası otomatik olarak alınır
- Yenileme otomasyonu seçenekleri ve sertifika geçerlilik testi ele alınır
İzleme ve bakım kontrol listesi
Temel izleme yöntemleri
htop, iotop gibi sistem kaynağı izleme araçları kurulur
syslog, auth.log için gerçek zamanlı log izleme ve log döndürme politikası (logrotate) yapılandırılır
Yedekleme stratejisi
tar kullanılarak uygulama ve veritabanı yedekleme script’i yazılır
- Belirli bir takvime (
crontab) göre düzenli yedek alınır
Sorun giderme kontrol listesi
SSH bağlantı sorunları
- Firewall ayarları, SSH servis durumu, kimlik doğrulama logları ve ağ bağlantısı kontrol edilir
Yetki ile ilgili hatalar
- Dosya/klasör izinleri, gruplar ve sudo ayarları gözden geçirilir
Servisin başlamaması
systemctl, journalctl ile durum ve loglar kontrol edilir; yapılandırma dosyası söz dizimi doğrulanır
Aşırı kaynak kullanımı
- Süreç/disk/ağ/uygulama logları analiz edilir
Son doğrulama kontrol listesi
Güvenlik doğrulaması
- SSH anahtar doğrulaması / parola girişi / root login / firewall / otomatik güncellemeler / production modu / SSL / yedekleme gibi tüm maddelerin çalıştığı gözden geçirilir
Performans testi
- Apache Bench ile yük testi yapılır; kaynak izleme ve log hataları kontrol edilir
Hızlı başvuru komut listesi
Sistem bilgisi kontrolü
htop, df -h, free -h, uname -a
Süreç yönetimi
pm2 status, pm2 restart all, pm2 logs, pm2 monit
Güvenlik ile ilgili
sudo ufw status, sudo fail2ban-client status, sudo lynis audit system
Servis yönetimi
sudo systemctl status nginx, sudo systemctl restart nginx, sudo journalctl -u nginx
Kapanış
- Bu kontrol listesi, eksiksiz bir VPS kurulum ve yönetim süreci sunar
- Yalnızca düşük maliyet değil, aynı zamanda doğrudan yönetim, öğrenme ve DevOps özerkliği de sağlar
- Hetzner ve Coolify ile self-hosting, gerçek dünya deneyimi üzerinden güven ve özgürlük kazanmayı mümkün kılar
- VPS hosting denemek isteyenler için pratik bir rehber niteliği taşır
1 yorum
Hacker News yorumu
Bence bu, benim gibi yeni başlayanlar için gerçekten çok iyi bir özet; kesinlikle yer imlerine ekleyeceğim.
Ama hayal kırıklığı yaratan nokta, başlıkta Coolify'dan bahsedilmesine rağmen metin içinde neredeyse hiç yer almaması.
Benzer konuda faydalı başka bir yazı olarak aşağıdaki bağlantıdaki
Setting up a Production-Ready VPS from Scratchyazısını da yer imlerine ekledim.https://dreamsofcode.io/blog/setting-up-a-production-ready-vps-from-scratch
Bu tür konuları daha derinlemesine anlamak istediğimde genelde yazı bağlantısını bir LLM'e verip
"Bu, 'konu/başlık' hakkında bir makale: https://article.link. İyice kavrayıp analiz ettikten sonra, her bölümü kendi bilginle genişlet ve ilgili ek bölümler de ekle"
diye prompt yazarak öğreniyorum.
https://www.youtube.com/watch?v=taJlPG82Ucw
Yaklaşık 1 yıldır bu kurulumla devam ediyorum ve self-hosting ilk kez bana gerçekten güven verici gelmeye başladı.
OVH de Hetzner kadar güvenilir, ama şu anda çok daha ucuz seçenekleri var.
https://us.ovhcloud.com/vps/configurator/?planCode=vps-2025-model3&brick=VPS%2BModel%2B3&pricing=upfront12&processor=%20&vcore=8__vCore&storage=200__SSD__NVMe
Coolify kullanacaksam hangi dağıtımı seçmem gerektiğini düşünüyorum.
Ubuntu 24.04 ile Debian 13 arasında hangisinin daha iyi tercih olduğu konusunda kararsızım.
OVH VPS - 24 vCPU (ya da thread), 96GB RAM aylık $53.4.
Hetzner VPS (AMD seçeneği baz alınırsa) 16vCPU, 32GB, aylık $54.9.
DO Droplet ise 16vCPU, 64GB RAM için aylık $504.
Linode ve Upcloud da 24~20vCPU, 96GB RAM için aylık $576; OVH ile kıyaslayınca çok daha pahalı.
OVH'nin hangi CPU'yu kullandığını bilmiyorum ama fiyat farkı düşünüldüğünde, Intel E-Core CPU olsa bile bu yine de oldukça iyi bir teklif.
Bu arada Hetzner'ın daha ucuz Intel vCPU seçeneği de var ama eski donanım kullanıyor ve yalnızca başka müşteriler iptal ettiğinde yer açılıyor.
Bu yüzden karşılaştırma için sadece güncel AMD seçeneğini baz aldım.
OVH'nin tek sorunu, VPS kiralamak için (aylık yaklaşık $30) kimliğimin bir kopyasını göndermem gerekmesi.
Kişisel bilgilerimi bu şekilde paylaşmak istemediğim için sonunda daha pahalı bir yeri seçtim.
Benim deneyimimde (çok uzun sayılmaz), Hetzner cloud sunucuları performans açısından OVH VPS'ten çok daha iyiydi.
Her iki hizmetten de memnunum.
OVH ve Hetzner'ın diğer şirketlere kıyasla neden bu kadar ucuz olduğunu merak ediyorum.
VPS'lerin diğer yerlere göre daha fazla paylaşımlı olması yüzünden bunu bir ölçüde anlayabiliyorum ama bu ikisinin dedicated server'ları da çok ucuz.
Acaba bir tür yem ürün mü diye düşünüyorum; ayrıca OVH fiyatlarının son dönemde değişip değişmediğini de merak ediyorum.
Birkaç yıl önce Hetzner'dan daha pahalı olduğunu hatırlıyorum.
Burada bahsedilen tüm CPU'lar büyük olasılıkla fiilen paylaşımlı kaynak.
Ve gerçekte ne kadar paylaşıldığını açıklamıyorlar.
Hetzner'da aynı çekirdek sayısına sahip ama fiyatı yarı yarıya olan sunucular da var.
Yüzeyde görünmüyor ama performansı kendiniz test ederseniz ucuz sunucuların gerçekten yarı performans verdiğini görüyorsunuz.
CSS ayarlarında aşağıdaki iki şeyi kapatınca blogun UI/UX'i inanılmaz iyileşti.
pre {
margin: 2rem 0 !important;
padding: 1rem !important;
}
Kod bloklarındaki padding ve margin o kadar büyüktü ki ekranda yalnızca 3 satır görünüyordu.
Ayrıca Webmin/Virtualmin kurarsanız yeni alt alan adı veya kullanıcı eklemek gibi işler çok daha kolay oluyor.
Coolify'ı merak ettiğim için tıkladım ama gerçekte sadece etiketlerde, girişte ve sonuçta anılıyor; ana metinde hiç içerik yok.
Coolify'dan bahsedilmesinin kendisi bile bence uygun değil.
Bu yazı aslında Coolify dağıtımı için VPS hazırlamayı anlatıyor.
Coolify kurulumunun kendisini ele almıyor.
Şu ana kadar bir VM üzerinde tüm servislerimi Docker Compose ile yönetiyorum; Coolify'ın buna kayda değer ölçüde daha iyi bir alternatif olup olmadığını merak ederek tıkladım.
Ama Coolify hakkında gerçek anlamda hiçbir içerik yoktu ve Coolify için yapılan manuel hazırlıklar daha da karmaşık göründü.
"Docker Compose base image kullanıp birkaç şeyi düzeltmek yeterli" olan benim yaklaşımım çok daha basit göründüğü için
kullandığım yöntemin hâlâ gayet yeterli olduğunu düşündüm.
Güzel tarafı, host'lar arasında taşınmanın da Docker Compose YAML dosyasını kopyalamakla %99 çözülmesi.
Birkaç ay önce Coolify'ı denedim ve birden fazla container Compose ile bağlıyken her türlü sorun çıktı.
Örneğin bazı container'ların zaten çalıştığını unutup tekrar ayağa kaldırabiliyordum ya da ikisi de çalışırken Coolify yalnızca birini algılıyordu.
Her servisi Coolify'a ayrı ayrı kaydedince nispeten daha iyi çalışıyordu.
Sonunda ben de Docker Compose tabanlı bağımsız kuruluma geri döndüm ve yönetmesi çok daha kolay oldu.
Coolify gibi girişimlerin gerçekten gerekli olduğunu düşünüyorum ama şu an hâlâ ciddi production kullanımı için yeterince olgun değil.
Coolify veya benzer projeler DB yedekleme ve streaming replication desteklemiyorsa, bence hobi seviyesinde kalırlar.
Ben Docker Compose ve bash script'leriyle 2 VM çalıştırıyorum; S3'e saatlik yedekleme, wal streaming, PG ve Redis streaming replication gibi şeyleri kurmak bile gerçek production için asgari gereksinimleri karşılıyor diye düşünüyorum.
Kullanım amacına göre değişir ama ben hem Coolify hem de CapRover kullandım.
Sonunda CapRover'ı seçtim çünkü Git Hook ile her commit'te otomatik build alıp NodeJS uygulamalarını daha hızlı ayağa kaldırabiliyordu.
İkisi de bunu destekliyor ama CapRover daha az sürtünme yaratıyor.
Coolify tarafında ise daha fazla özellik var.
Coolify, Traefik ve Docker üzerinde çalışıyor; aslında bunların üstüne eklenmiş bir UI.
Yedekleme tarafında birçok kritik özellik eksik (restic gibi araçlarla çözülebilir) ve UX de sadece idare eder seviyede.
Coolify kurulum sırasında hâlâ root yetkisi gerektiriyor.
Root yetkisi olmadan kurulum yapan bir branch geliştirildiğini duydum.
SSH ile sunucuya bağlanıp Coolify'ı kurduktan sonra root girişini kapatabilirsiniz.
Sunucuyu silip en baştan tekrar kurmayı göze alıyorsanız bu şekilde mümkün.
Ben de yakın zamanda tamamen sıfırdan bir Coolify dağıtımı denedim ama SSH key tarafında sürekli hata yaşadım.
Başka sunucularda birçok projeyi sorunsuz deploy ediyorum ama “bana sadece docker compose dosyasını ver” yaklaşımı pratikte bende hiç düzgün çalışmadı.
Yakın zamanda bir FreeBSD sunucusunu Hetzner'a taşıdım ve süreç çok kolaydı.
Tek değişken, fatura dönemi tamamen bitmeden mail server portlarının engelli olmasıydı.
Bu politikayı anlıyorum ama başlangıçta açıkça belirtilmediği için şaşırdım.
Bu arada kredi kartınızın süresi dolarsa Hetzner'ın ağı doğrudan kesebileceğini bilmekte fayda var.
Önceden uyarı da gelmedi; bunu ancak gerçek bir müşteri ya da bir ekip üyesi iletişime geçince öğrendim.
Benim de başıma gerçekten geldi.
Hetzner ekibine trafik türünü açıklayıp sorarsanız portları önceden açabiliyorlar.
Ben taşıyacağım projeyi kanıt olarak gösterdim ve hemen açtılar.
Coolify gibi araçlar (Dokploy vb.) hoş görünüyor ama sunucu durumunun kod olarak saklanmaması bana hep eksik hissettiriyor.
Bu yüzden NixOS ya da Ansible tercih ediyorum ama gerçek production kurulumu için fazla boilerplate ve özelleştirme gerekiyor.
Kubernetes olmayan ama daha deklaratif çalışan ve production sunucularını kolay yönetmeyi sağlayan bir infrastructure-as-code framework bilen var mı diye merak ediyorum.
Coolify yapılandırmasını yedeklemek için çok az şey gerekiyor ve uygulama ayarlarının tamamı
/data/coolifyiçinde yer alıyor.Tüm volume'ü kopia ile yedekliyorum.
Bu şık bir çözüm değil, biraz hack gibi ama disaster recovery için işe yarar bir yöntem.
İyi bir rehber.
Ama özellikle Hetzner kullanırken firewall ayarları konusunda katılmıyorum.
Basit bir kurulum gerekiyorsa Hetzner'ın sunduğu firewall tek başına yeterli ve ciddi bir "outsourcing" etkisi de sağlıyor.
Daha özelleştirilmiş bir kullanım isterseniz API üzerinden de yapılandırabilirsiniz.
https://docs.hetzner.cloud/reference/cloud#firewalls
Acaba Hetzner firewall'ında ciddi bir eksik var mı diye merak ediyorum.
"SSH'ı yalnızca benim IP'me izin verecek şekilde açın (isteğe bağlı ama önerilir)" tavsiyesinin riskli olduğunu düşünüyorum.
IP değişirse tamamen erişim dışı kalabilirsiniz.
Hetzner panelinden sıfırlayabilirsiniz ama sürekli değişen ev IP'sine bağlamaktansa Tailscale gibi bir şey kullanmak
ya da sabit bir dış VPN IP'si tutmak daha iyi.
SSH'da anahtar doğrulama kullanmak bile tek başına güvenlik sorunlarının büyük kısmını önlemeye yeter.
Buna ek olarak log gürültüsünü azaltacak bir katman eklemek de iyi olur; ayrıca SSH dışında dışarıya açık olması gerekmeyen servisler varsa
VPN vb. ile kapatmanın iyi bir fikir olduğunu düşünüyorum.
Açıkçası çoğu sunucuda SSH'dan daha zayıf servisler bulunuyor.
Kesinlikle riskli.
Birçok kişi evinde dinamik IP kullanıyor.
SSH key ayarlayıp root girişini kapatmak bence yeterince güvenli.
Production uygulama kurulumu kısmının Docker ile değiştirilmesi gerektiğini düşünüyorum.
Bugünlerde Docker çok daha tekrarlanabilir ve yapılandırması daha kolay.