EYDefterEmre Yakut
← tüm yazılar
Sunucu · Sistem

Kendi sunucumu kurdum ve evi tünele aldım

Şahsi projelerim yıllardır müşteri sunucusunda duruyordu. Ayırdım: kendi VPS’im, kendi VPN’im. PC, telefon ve VR başlığı artık aynı tünelden giriyor — ve bu kararın sebebi teknik değildi.

emre-vps46 msPC — tam tünelPC — bölünmüştelefonVR başlığıkişisel projeler müşteri sunucusundan AYRILDI — bu sunucuda müşteri işi barınmaz“bağlandı” yeterli değil: karşıdan cevap al + aktarılan bayt sayısını görbaşlıktan ping → 10.10.10.4 cevap verdi · ~11 MB aktarıldı ✓

Yıllardır kişisel projelerim müşteri sitelerinin durduğu paylaşımlı sunucuda barınıyordu. Pratikti. Ve yanlıştı.

Eylül başında ayırdım: Hetzner’de küçük bir sunucu — emre-vps — ve üstünde bir WireGuard tüneli.

Neden ayırdım

Teknik gerekçe ikincil. Asıl sebep sorumluluk:

  • Kaynak karışması. Denediğim bir şeyin CPU’yu yemesi, müşteri sitelerinin yavaşlaması demek.
  • Risk karışması. Kişisel bir denemede açtığım bir port, müşteri verisinin durduğu makinede açılmış oluyor.
  • Olay ayrımı. Bir gün bir güvenlik olayı olsa, “bu benim denememden mi yoksa bir müşteri sitesinden mi geldi” sorusunu cevaplayamıyorsun.

Üçüncüsü belirleyici oldu. Paylaşımlı sunucuda bir kez gerçek bir olay yaşadım; o gün her şeyi tek tek ayıklamak günler sürmüştü.

kural

Bu sunucuda müşteri işi barınmaz. Kurumsal işler ve müşteri hesapları eski sunucuda kalır. Sınır tek cümle ve istisnası yok — istisna olduğu anda ayrım biter.

Donanım seçimi: rakamlarla

İstediğim en ucuz sınıf tamamen tükenmişti. Bir üstü dört katı fiyattaydı. Ortadaki paketi aldım.

Konum seçimi ölçümle yapıldı:

konumPC’den gecikmekarar
Falkenstein46 msseçildi
Helsinki79 ms—

Ayrıca eski sunucuyla aynı veri merkezinde olması, ikisi arasındaki gecikmeyi de en aza indirdi — ileride bir şey taşımam gerekirse.

Web sunucusu tercihinde de aynı mantık: eski sunucudaki siteler .htaccess kullanıyor. Aynı web sunucusunu kurmak, taşımayı bir kopyala-yapıştıra indiriyor. Bu trafikte performans farkı ölçülebilir değil; taşıma kolaylığı ölçülebilir.

Tünel

WireGuard seçmemin sebebi basit: yapılandırması on beş satır, bağlantı kurulumu neredeyse anlık, ve mobilde pil tüketmiyor.

Üç istemci var ve üçü farklı:

emre-vps-pc-full.conf      PC — tüm trafik tünelden
emre-vps-pc-split.conf     PC — yalnız iç ağa giden trafik
emre-vps-phone-full.conf   telefon — tam tünel
emre-vps-quest-full.conf   VR başlığı — tam tünel

PC için ikisi de var, çünkü ikisi de gerekiyor:

  • Tam tünel — otel ya da kafe ağındayken. Her şey tünelden, hiçbir şey ortada.
  • Bölünmüş tünel — evdeyken. Yalnız sunucuya giden trafik tünelden; video akışı ve indirmeler doğrudan. Gecikme ve bant genişliği korunuyor.

Ve VR başlığı

En eğlenceli kısım buydu. Bir VR başlığında VPN uygulaması mağazada yok. Ama cihaz Android tabanlı, yani uygulamayı geliştirici modunda yan yükleyebiliyorsun.

Bunun için bir kurulum betiği yazdım: cihazı bağlıyor, istemciyi yüklüyor, yapılandırmayı gönderiyor.

Sonra tüneli ölçtüm — “bağlandı” demek yeterli değil:

başlıktan sunucuya ping   → 10.10.10.4 cevap verdi
aktarılan trafik          → ~11 MB
uçtan uca doğrulandı      ✓
bir VPN “bağlandı” dediğinde bağlanmamış olabilir

Arayüz yeşil yanabiliyor ama trafik hiç geçmiyor olabilir — yanlış yönlendirme, DNS sızıntısı, ya da anahtar eşleşmesi. Tek gerçek test karşı taraftan bir cevap almak ve aktarılan bayt sayısını görmek.

Bu, gözcünün yanlış aşamayı sayması ile aynı hata sınıfı: durum göstergesi ile gerçeklik farklı şeyler.

Kurulumda çıkan gerçek engeller

İkinci bir sunucu daha aldım (test için) ve orada beklemediğim bir duvara çarptım.

Sağlayıcı, parolayla açılan sunucularda ilk girişte parola değişimini zorunlu kılıyor. Bu otomatik araçlarla aşılamıyor: hiçbiri gerçek bir terminal sağlayamıyor ve süreç “terminal yok” diyerek düşüyor.

İlk giriş etkileşimli olmak zorunda. Bir kez elle girip parolayı değiştirdikten sonra gerisi otomatikleşti.

Bu, otomasyonun sınırını gösteren güzel bir örnek: bazı adımlar bilerek otomatikleştirilemez hale getirilmiş.

Sunucuda AI oturumu

Test sunucusuna bir Claude Code oturumu kurdum — kalıcı bir terminal oturumu içinde, kopunca ölmeyecek şekilde.

Ve orada ilginç bir tuzak çıktı: kabuk başlangıç dosyasında bayat bir kimlik jetonu duruyordu ve her yeni oturum onu miras alıyordu. Sonuç: hesap oturumu eziliyor ve uzaktan erişim bozuluyordu.

Çözüm o değişkeni açıkça temizlemek oldu. Aynı desen sesli asistanda da karşıma çıktı: bir alt süreç, kendisini kimin başlattığından etkilenmemeli.

Ne öğrendim

Ayrı bir sunucu kurmanın maliyeti aylık birkaç kahve. Karşılığında aldığım şey kapasite değil — zihinsel ayrım.

Artık bir şeyi denerken “acaba müşteri sitesini etkiler mi?” diye düşünmüyorum. O tereddüt kalktığında denenen şey sayısı arttı.

SunucuSistem