- Ubuntu 16.04 LTS tabanlı DigitalOcean VPS, destek sonu ve güvenlik yükü taşıyordu ama hizmetten kaldırılana kadar 1491 gün uptime korudu
- Yeni sunucu Almanya’daki Hetzner VPS ve FreeBSD 14.3’e taşındı; önceki aylık $13’lük sunucudan daha güçlü özellikler aylık 6 euronun altında kullanılmaya başlandı
- Jails ve Bastille ile site bazında yalıtılmış ortamlar kuruldu; Caddy Jail, SSL ve reverse proxy işini üstlenip trafiği ilgili nginx Jail’lerine iletiyor
- Yük testlerinde yeni FreeBSD sunucusu, 10.000 eşzamanlı bağlantı için
kern.ipc.somaxconn ayarlandıktan sonra istek işleme kapasitesinde 3 ila 11 kat daha yüksek sonuç verdi
- Geçiş için ağ yönetimi ve FreeBSD yapılandırmasını öğrenmek gerekti ama merkezi yapılandırma ve belgelerin kalitesi sayesinde kurulum beklenenden daha kolay oldu
Geçişin arka planı
- Mevcut blog, DigitalOcean VPS üzerinde 10 yıldan uzun süredir çalışıyordu ve New York veri merkezindeki Ubuntu 16.04 LTS kullanılıyordu
- Ubuntu 16.04 LTS’nin desteği en az 5 yıl önce sona ermişti ve
apt paket deposu güncellemeleri artık alınamıyordu
- Eski sistemler güvenlik açısından dezavantajlıdır; geçmişte ayrı bir WordPress blogu, eski bir VPS üzerinde casino ve kumar bağlantısı ekleme saldırısına uğramıştı
- Mevcut sunucu, blog dışında birkaç siteyi daha barındırıyordu ama bunların çoğu statik siteydi
- En popüler blog bile genelde ayda birkaç bin sayfa görüntüleme düzeyindeydi; yalnızca Hacker News’te bazı yazılar viral olduğunda trafik yükseliyordu
- Sunucu, statik dosyaları
nginx/1.10.3 ile sunuyordu ve site bazlı ayarlar /etc/nginx/sites-available altında bulunuyordu
- Blog Hugo ile üretiliyordu; eski dağıtım süreci yerelde yazma → depoya commit ve push → sunucuya SSH ile bağlanma → depoyu pull etme →
hugo çalıştırma şeklindeydi
- Eski VPS başlangıçta test ve programlama amaçlı da kullanıldığı için üzerinde çok sayıda eski yazılım kalmıştı
- Buna rağmen düzgün çalışıyordu ve kapatıldığı andaki uptime 1491 gündü; yani yaklaşık 4 yıl yeniden başlatılmadan çalışmıştı
- Yeni sunucu Almanya’daki Hetzner VPS’e taşındı; öncekiye göre daha güçlü donanım sunarken aylık maliyeti yarıdan da düşüktü
- Eski DigitalOcean sunucusunda 2 GB RAM, 1 vCPU, 50 GB disk, aylık 2 TB trafik vardı ve aylık ücreti $13’tü
- Hetzner’in en ucuz sunucusu bile eskisinin iki katı bellek ve CPU sunuyordu; depolama biraz daha azdı ama trafik limiti 10 kat fazlaydı
- Son seçilen Hetzner yapılandırması, aylık 6 eurodan ucuza daha güçlü özellikler sunuyordu
Neden FreeBSD seçildi
- FreeBSD, yeni bir sistemi gerçek üretim ortamında denemek istendiği için seçildi
- Bütünleşik tasarım, kararlılık, güvenlik ve Jails başlıca avantajlar olarak görüldü
- Jails, FreeBSD’de 25 yılı aşkın süredir bulunan bir sanallaştırma ve konteynerleştirme özelliği
- Ana sisteme erişemeyen “mini sistemler” sandbox benzeri şekilde çalıştırılabiliyor
- Docker benzeri konteyner çözümleri program paketleme için daha uygundur ve geçici/değişmez bir yapıya sahiptir; Jails ise aynı çekirdeği paylaşan alt sistemler veya mini VM’ler gibi ele alınır
- ZFS de sunucu dosya sistemi olarak cazip bir seçimdi
- Veri bütünlüğü ve snapshot özellikleri sunuyor, Linux tarafındaki Btrfs ile benzer yönleri bulunuyor
- ZFS, Btrfs’e göre çok daha olgun kabul edildi; sık snapshot almak, VPS sağlayıcısının ücretli snapshot/yedek sistemlerine daha az bağımlı olmayı sağlayabilir
- Hedef mimari, her site için bir Jail kurup her birinin içine gerekli derleme araçlarını ve nginx’i koymaktı
- Ana web sunucusu için bir Jail, dış dünyaya açık reverse proxy görevini üstlenecekti
- Belirli bir Jail ele geçirilirse, o Jail silinip yeniden oluşturulabilecek şekilde tasarım yapıldı
FreeBSD kurulumu ve Bastille kullanımı
- Hetzner’in VM oluşturma ekranında varsayılan OS imajları sınırlıydı; BSD doğrudan görünmüyordu
- FreeBSD resmi YouTube kanalındaki Hetzner kurulum videosu referans alındı
- Hetzner, FreeBSD ISO imajı sağlıyordu ama bunun VM oluşturulduktan sonra konsoldaki ISO Images sekmesinden bağlanması gerekiyordu
- Kurulumda FreeBSD 14.3 ISO’su kullanıldı ve resmi videodaki kurulum akışı izlenerek sistem yapılandırıldı
- Bastille, Jails yönetimini kolaylaştırmak için seçildi
- Elle Jail oluşturmak için gereken birçok adım
bastille komutuyla yapılabiliyor
- Örnek komutlar
bastille list, bastille create, bastille console
- Kurulum ve etkinleştirme, Bastille başlangıç belgesi temel alınarak yapıldı
pkg install bastille
sysrc bastille_enable="YES"
Ağ ve reverse proxy yapısı
- Tüm yığın, tüm alan adlarını ve SSL sertifikalarını yöneten tek bir Caddy Jail ile site bazlı Jail’lere reverse proxy yapan bir yapıdan oluşuyor
- Her site Jail’i, siteyi derlemek ve sunmak için gereken araçları içeriyor
- Bu yapı, aynı ağ içindeki birden fazla sanal makineye benzetilebilir
- Dahili sanal ağ arayüzü
bastille0 olarak oluşturuldu
sudo sysrc cloned_interfaces+="lo1"
sudo sysrc ifconfig_lo1_name="bastille0"
sudo service netif cloneup
sudo sysrc ifconfig_bastille0="inet 10.0.0.1 netmask 255.255.255.0"
- Loopback arayüzü kopyalanıp
bastille0 adı verildi ve 10.0.0.1/24 ağı atandı
- Jail’ler bu ağ arayüzü üzerinde çalışıyor
- Dışarıdan gelen HTTP ve HTTPS istekleri PF(Packet Filter) kurallarıyla Caddy Jail’e yönlendiriliyor
/etc/pf.conf içinde dış arayüz vtnet0, iç arayüz bastille0 ve tailscale1 tanımlandı
80 ve 443 port trafiği, Caddy sunucusu olacak 10.0.0.5 adresine yönlendirildi
ext_if = "vtnet0"
int_if = "bastille0"
vpn_if = "tailscale1"
set skip on $int_if
set skip on $vpn_if
nat on $ext_if from 10.0.0.0/24 to any -> ($ext_if)
rdr pass on $ext_if proto tcp from any to any port {80, 443} -> 10.0.0.5
block all
pass out quick on $ext_if keep state
- PF ve ağ geçidi şu komutlarla etkinleştirildi
sysrc pf_enable="YES"
service pf start
sysrc gateway_enable="YES"
Caddy ve site bazlı Jail kurulumu
- Eski sunucuda uzun süredir nginx kullanılıyordu ama yeni yapıda SSL sertifika yönetimini otomatikleştirmek için Caddy seçildi
- Eski nginx ortamında sertifikalar
certbot ile periyodik olarak yenilenmek zorundaydı ve bu yenileme birkaç kez kaçırılmıştı
- Caddy Jail’i oluşturmadan önce FreeBSD sürümü Bastille’e bootstrap edildi
bastille bootstrap 14.3-RELEASE
- Caddy Jail’i
10.0.0.5 IP’siyle oluşturuldu
bastille create caddy 14.3-RELEASE 10.0.0.5 bastille0
bastille start caddy
- Jail adı
caddy, sürüm 14.3-RELEASE, arayüz bastille0
- Çalışma durumu
bastille list ile görülebiliyor, Jail içindeki shell’e bastille console caddy ile girilebiliyor
- Caddy kurulumu ve servis etkinleştirmesi Jail içinde yapıldı
pkg install caddy
sysrc caddy_enable="YES"
service caddy start
- Caddy yapılandırma dosyası Jail içindeki
/usr/local/etc/caddy/Caddyfile konumunda
- Yapılandırma dosyasını host üzerinden yönetmek için host dizini Jail içine mount edilebiliyor
- Örnekte
nullfs ve salt okunur ro seçeneği kullanılarak Caddy’nin yapılandırmayı değiştirmesi engellendi
bastille mount caddy /usr/local/etc/my-caddy-config /usr/local/etc/caddy nullfs ro 0 0
Sitelerin ve blogun dağıtımı
- İlk dağıtılan site
es.cro.to oldu ve site deposu GitHub deposu ile yönetiliyordu
- Depo host üzerindeki
/usr/local/www/escroto içine kondu ve site Jail’ine bu dizin salt okunur olarak mount edildi
- Tüm siteler host üzerindeki
/usr/local/www altında tutulacak şekilde düzenlendi
escroto Jail’i, nginx Bastille şablonuyla oluşturuldu
bastille bootstrap https://github.com/bastillebsd/templates
bastille create escroto 14.3-RELEASE 10.0.0.11 bastille0
bastille template escroto www/nginx
- IP olarak
10.0.0.11 atandı
- nginx varsayılan sayfası FreeBSD geleneğine uygun olarak
/usr/local/www/nginx üzerinden sunuluyor
- Host’taki site dizini Jail içine salt okunur olarak mount edildi
bastille mount escroto /usr/local/www/escroto /usr/local/www/escroto nullfs ro 0 0
- Deponun
.git dizininin web üzerinden sunulmaması için bir dağıtım betiği kullanıldı
rm -fr /usr/local/www/nginx/*
cp -R /usr/local/www/escroto/* /usr/local/www/nginx/
rm -fr /usr/local/www/nginx/.git
- Yeni sürüm dağıtımı, host üzerinde deponun güncellenmesinden sonra Jail içindeki dağıtım betiğinin çalıştırılmasıyla yapılıyor
cd /usr/local/www/escroto
git pull
bastille cmd escroto /root/deploy.sh
- Caddy yapılandırması,
cro.to alanını kalıcı olarak es.cro.to adresine yönlendiriyor ve es.cro.to için 10.0.0.11 adresine proxy yapıyor
cro.to {
redir https://es.cro.to{uri} permanent
}
es.cro.to {
reverse_proxy 10.0.0.11
}
- Blog Hugo kullanıyor ve GitHub deposu ile yönetiliyor
- Depo host üzerindeki
/usr/local/www/blog içine klonlandı
blog Jail’i, escrotoya benzer şekilde oluşturuldu ve IP olarak 10.0.0.12 verildi
bastille create blog 14.3-RELEASE 10.0.0.12 bastille0
bastille template blog www/nginx
bastille mount blog /usr/local/www/blog /usr/local/www/blog nullfs ro 0 0
- Hugo,
blog Jail’i içine kuruldu
bastille pkg blog update
bastille pkg blog install gohugo
- Blog dağıtım betiği nginx web root’unu boşaltıyor ve Hugo çıktısını
/usr/local/www/nginx altında üretiyor
rm -fr /usr/local/www/nginx/*
cd /usr/local/www/blog
hugo -d /usr/local/www/nginx
- DNS taşınmadan önce, yeni blog sunucusunu test etmek için eski alan adı yerine
crocidb.cro.to bağlandı
crocidb.cro.to {
reverse_proxy 10.0.0.12
}
Benchmark ve yük testleri
- DNS kayıtları değiştirilmeden önce, eski sunucu
crocidb.com ile yeni sunucu crocidb.cro.tonun yük işleme kapasitesi karşılaştırıldı
- Blog ziyaretçileri çoğunlukla Kuzey Amerika’dan, ardından Avrupa ve Güney Amerika’dan geldiği için Almanya’daki yeni sunucunun gecikmesi bazı kullanıcılar için biraz daha yüksek olabilirdi
- Temel ilgi noktası, statik site sunma hızı ve yüksek yük altında dayanıklılıktı
- GTMetrix, Pingdom, WebPageTest gibi ücretsiz çevrimiçi araçlar da kullanıldı ama iki sunucu arasındaki fark çoğunlukla gecikme düzeyindeydi
- HTTP yük benchmark aracı olarak wrk ve hey kullanıldı
- Bu iki araç, büyük miktarda eşzamanlı istek üretip istek gecikmesi, hata yanıtları ve saniye başına aktarım miktarı gibi verileri topluyor
- Aynı Hetzner üzerindeki başka bir VPS’ten
wrk çalıştırıldığında yeni sunucu açık ara öndeydi
wrk -t4 -c100 -d30s --latency https://crocidb.com/
- Seçenekler 4 thread, 100 eşzamanlı bağlantı ve 30 saniyelik çalışma süresiydi
- Eski sunucuda ortalama gecikme
89.63ms, saniye başına istek 833.41, aktarım 8.29MB/s idi
- Yeni sunucuda ortalama gecikme
6.75ms, saniye başına istek 12260.10, aktarım 130.80MB/s idi
- Test makinesi yeni sunucuyla aynı veri merkezinde olduğu için tamamen adil bir karşılaştırma değildi
- Proton VPN ile farklı bölgelerden
wrk çalıştırma denemeleri de yapıldı ama sonuçlar beklenenden düşük çıktı
- Eski sunucu ortalaması saniyede yaklaşık
300 istek, yeni sunucu ortalaması ise yaklaşık 800 istek olarak kaydedildi
- Sonunda genel kullanıcı VPN’i yerine farklı bölgelerde gerçek VPS’ler kurma yaklaşımına geçildi
Vultr VPS ile bölgesel testler
- DigitalOcean ve Hetzner’den farklı bir altyapı kullanmak için Vultr seçildi
- Elle çalışma yükü nedeniyle bölgeler London, São Paulo, Silicon Valley ve Tokyo ile sınırlandırıldı
- Her bölgede en ucuz Fedora VM oluşturulup testler çalıştırıldı
- Son test aracı olarak
heyin daha uygun olduğuna karar verildi
./hey_linux_amd64 -n 1000000 -c 10000 -t 10 -z 5m -h2 https://crocidb.com/ > crocidb.com.log
./hey_linux_amd64 -n 1000000 -c 10000 -t 10 -z 5m -h2 https://crocidb.cro.to/ > crocidb.cro.to.log
- Ayarlar toplam
1,000,000 istek, 10,000 eşzamanlı istek, 10 saniye zaman aşımı, toplam 5 dakika çalışma süresi ve HTTP/2 kullanımından oluşuyordu
- Bu yük, gerçekçi bir blog trafiğinin çok üzerindeydi
- İlk çalıştırmada yeni FreeBSD sunucusu 10.000 eşzamanlı bağlantıyı taşıyamadı ve başlangıçta başarısız oldu
netstat -Lan ile socket queue boyutları kontrol edildiğinde hepsinin 128 olduğu görüldü
- Varsayılan
kern.ipc.somaxconn değeri 128 olduğu için şu şekilde artırıldı
sysctl kern.ipc.somaxconn=16384
- São Paulo testinde her iki sunucu da kayda değer sayıda hata döndürdü ama FreeBSD sunucusu beklenen
1,000,000 isteğe karşılık verebilirken Ubuntu sunucusu 20,000 isteği bile döndüremedi
- Eski Ubuntu sunucusu toplam isteklerin yaklaşık
%7’sini tamamladı
- Yeni FreeBSD sunucusu ise yaklaşık
%94’ünü tamamladı
- Tokyo’da yeni sunucunun başarı oranı biraz daha düşüktü ama bunun ciddi bir sorun düzeyinde olmadığı düşünüldü
- Saniye başına istek sayısında yeni sunucu, eski sunucuya göre en az 3 kat, en fazla 11 kat daha iyiydi
- Gecikme yüzdeliklerinde yeni sunucu yaklaşık
%90 seviyesine kadar daha lineer arttığı için daha öngörülebilir görünüyordu
- Yüksek yük altında bile, dünyanın çoğu bölgesinde blogun ana sayfa içeriği 3,5 saniyenin altında alınabiliyordu
- Tokyo sonuçları ayrıntılı incelenmedi
heyin istek aşaması analizinde Japonya yönüne giden trafiğin daha yavaş olabileceği görüldü
- İkinci alan adının DNS dial-up ve lookup değerleri anormal derecede düşük görünüyordu; bunun CNAME kaydıyla ilişkili olabileceği düşünüldü
resp wait ve resp read değerleri de olağandışı derecede yüksekti; yalnızca başarılı istekler sayıldığı için eski sunucunun başlangıçta hızlı yanıt verip sonrasında yeni istekleri fiilen engellemiş olması mümkün görüldü
Son geçiş ve temel çıkarımlar
- Benchmark’lar birçok soruyu tam yanıtlamasa da sonuçlardan memnun kalınarak DNS kayıtları yeni sunucuya geçirildi
- Bu blog artık resmen FreeBSD tabanlı Hetzner sunucusunda çalışıyor
- FreeBSD ile site barındırma makinesi kurmak, saatlerce deneme, düzeltme, derleme ve başarısızlık içerse de beklenenden daha az karmaşıktı
- Gereksinimleri karşılayan bir web hosting hizmeti de kullanılabilirdi; örnek olarak OpenBSD Amsterdam verildi
- Proxmox ile konteynerler ve bir yönetim paneli de tercih edilebilirdi
- FreeBSD tarafındaki alternatiflerden biri olarak Sylve da anıldı
- Her şeyi doğrudan kurma yolu çok şey öğrettiği için tatmin edici bulundu
- Eski Ubuntu sunucusu da son derece sağlamdı
- 10 yıl boyunca site yükünü iyi taşıdı ve son 4 yıl boyunca yeniden başlatılmadan çalıştı
- Yapılandırmaya çok büyük emek harcamadan da istikrarlı biçimde çalışabildi
- FreeBSD yapılandırması beklenenden daha kolaydı; sistem ayarlarını tek yerde merkezileştiren yaklaşım ve çevrimiçi belgelerin kalitesi olumlu bulundu
- Kendi blog barındırma makinesini kurmak, oyun geliştiricisinin normalde bildiği alanın ötesinde ağ bilgisi gerektiriyordu
- Farklı bir sistemi öğrenme süreci keyifli bulundu ve bir sonraki denemede OpenBSD ya da NetBSD de denenebilir
- Sonuç olarak, blog trafiğinin büyük bölümünün yapay zeka sistemlerinin crawling faaliyetlerinden gelmesi nedeniyle tüm bu işin pratik faydasının sınırlı olduğu not edildi
1 yorum
Hacker News yorumları
Yaptığım en büyük hata yüksek uptime oldu
arjie.com, Hetzner VPS üzerinde 10 yıldan uzun süre çalışınca, Hetzner alttaki makineyi kapatmak istediğinde gençlik yıllarımdaki halimin ne ayarladığını hiç bilmiyordum
Yedekler var ama site 10 yıldır kapalı
Artık taşınabilir olacak şekilde kuruyorum ve gerçekten birkaç kez taşıyıp çalıştığını doğruluyorum
Eskiden makine uptime’ının bir onur nişanı gibi görüldüğü zamanları da hatırlıyorum
Sadece yaşlandım, pek de daha bilge olmadım ama artık servis uptime’ına bakıyorum
Eskiden MX gibi DNS kayıtları da buna yakın bir amaca hizmet ediyordu; eski cluster yapıları epey anlaşılmazdı ama split brain gibi dersler kaldı, bu yüzden bugün bile Proxmox 2 düğümlü cluster’ın neden bozulduğunu, neden ek bir witness önerildiğini açıklamaya devam ediyorum
VMware’in geçmişte 2 düğümlü HA cluster sorununu büyük bir geçici çözümle örtmesi de yanlıştı; o yaklaşım hâlâ yaşıyorsa muhtemelen bugün de yanlıştır
Yüksek uptime, patch yapılmadığı anlamına gelir; patch yapmak da herkesin en sevdiği iştir
Her 20 yılda bir tamamen sökülüp yeniden yapılıyor; yakın zamanda okuduğum Dan Wang’in Breakneck kitabında, bu yeniden inşa geleneğinin zamanla yok olacak bilgiyi koruduğu anlatılıyor
Wang, Ise Grand Shrine ile Notre Dame’ı karşılaştırıyor; Notre Dame çatısını yeniden yapmanın bu kadar zor olmasının nedenlerinden biri de bilgi kaybı olabilir diyor
İki yapıya da yeterince hâkim olmadığım için bunun adil bir karşılaştırma olup olmadığını bilmiyorum ama ilkenin kendisini seviyorum
Kitapta küçük bir benzetme sadece; genel olarak ise güçlü şekilde tavsiye ederim
Yeniden başlatma birkaç saniye sürüyor ve upgrade işlemi yeni bir instance’a sadece DNS’i çevirerek kesintisiz yapılabiliyor
Kolay kopyalanamayan fiziksel makinelerde durum farklı
Her şeyi Ansible ile tamamen yönetmek gerekmiyor; daha çok ilk kurulum ayarlarını orada tutuyorum ve hâlâ elle yönettiğim çok şey var
Biraz komik hissettiriyor ama beklediğimden daha sık işe yarıyor
Kişisel/hobi kullanımı için çoğunlukla Caddy önde + Docker Compose kombinasyonuyla çalıştırıyorum
Basit web sitesi ise Caddy içeriği doğrudan servis ediyor; “web uygulaması” ise neredeyse hepsini container içine alıp Caddy’ye TLS sonlandırma ve Docker altındaki uygulamaya reverse proxy işini veriyorum
Genelde yapı
~/apps/appnameşeklinde; her uygulama dizininde Docker Compose dosyası ve mount edilmiş veri dizinleri bulunuyorcompose downsonrasında veriyi (s)ftp ile çekip uzun süreli saklayabiliyor ya da siteyi/hizmeti taşıyabiliyorumBir zamanlar dedicated server üzerinde birden çok VM çalıştırıyordum ama OVH’nin ayrı VPS’lerine geçtim; ayrıca OVH’de mail çalıştıracaksanız mail hosting’e izin vermeyen local zone VM’lerden kaçınmak gerekiyor
Ortama göre değişebilir
NPM de harika ve web GUI’si de iyi ama Traefik’te tek yapmanız gereken Docker Compose dosyasına istediğiniz davranışı yazmak
Sadece container’ları Unraid çalıştırıyor ve onlardan biri diğer servisler için reverse proxy olması amaçlanan nginx türevi bir araç
Debian’dan, Flatcar gibi container öncelikli ve immutable sistem/OS tarafına geçmeyi düşünüyorum
FreeBSD’nin ilginç teknik avantajları var ama iyi ya da kötü, pek çok açık kaynak yazılımın varsayılanı Docker ve her şeyi FreeBSD jail’lerine taşımak için ne zamanım ne de isteğim var
Birkaç hafta önce ben de aynısını yaptım
Sunucu yaklaşık 2015’ten beri güncellenmemişti ve o dönemden kalma Ghost blog ile
node 0.10kuruluyduBen biraz daha sert bir yol izledim; sadece yedek aldım ve Hermes agent’ı (Gemini 3.1 Pro) saldım
Gerekli tüm upgrade ve patch’leri yaptı, sonra da güncel karşılıklarına migration gerçekleştirdi
Ardından sunucu hardening ve kullanılmayan servislerin kaldırılması da epey ilerledi; AI desteği olmasaydı muhtemelen bunu sürekli ertelerdim
Asıl sorun bir şeylerin bozulma riski ve bunu da yedekler hafifletiyor
Kişisel sunucuda FreeBSD kullanmak keyifliydi
Havalı, temiz, sade ve “punk rock” gibi bir hissi vardı
Ama temel birkaç can sıkıcı nokta yüzünden bıraktım: PM2’nin FreeBSD’de bug’ları vardı ve süreç yönetimi için onu kullanıyordum; alternatif olarak
rc.dile daemon çalıştırmayı denedim ama log ayarlamak çok zordu; firewall tarafında ise ICMP’yi nasıl ele alacağınız gibi güvenlik en iyi uygulamalarına kadar her şeyi elle ayarlamak gerekiyordu ve UFW varsayılanları gibi şablonları özledimPF ile değil, IPFW ile uygulanıyor
rc.confiçindekifirewall_typeanahtarına bakın: https://cgit.freebsd.org/src/tree/libexec/rc/rc.conf?id=8e08...Tek bir makine için firewall’ı kolayca yapılandırmak adına
firewall_type=client, bir şey host edeceksenizfirewall_type=workstationkullanabilirsinizİkinci durumda
firewall_myservicesvefirewall_allowservices, hangi portların açılacağını ve hangi ağ/IP’lerin erişebileceğini kontrol ederÇok basit bir NAT gateway için
firewall_type=simplevefirewall_simple_(iif|inet|oif|onet)(_ipv6)?ile ISS tarafı/iç taraf arayüz adlarını ve IPv4/IPv6 ağ aralıklarını ayarlamak yeterlidirHer seçeneğin tam olarak ne yaptığını
/etc/rc.firewalliçinde görebilirsiniz: https://cgit.freebsd.org/src/tree/libexec/rc/rc.firewall?id=...rc.ddaemon log’ları için Unix usulü olarak basit mesajlardalogger(1)kullanılabilir; dosyaya yönlendirip boyutu danewsyslog(8)ile yönetebilirsinizFirewall için The Book of PF[0] kitabını öneririm
FreeBSD’deki PF, OpenBSD’nin pf’sinden sözdizimi olarak farklı ama firewall’ın nasıl çalıştığını kavramak ve hangi kuralları yazmanız gerektiğini anlamak için yeterli
[0]: https://nostarch.com/book-of-pf-4e
Başta inanılmaz kullanışlı geliyor ama aynı anda kullanması rahatsız edici bir yazılımdı; deploy sırasında environment variable güncellemesi de bir kez bile istediğim gibi çalışmadı
Elektrik gidince yeniden açılışta dosya sistemine elle
fsckçalıştırmamı istiyorduBiraz farklı bir konu ama şu anda destek süresi en uzun olan ücretsiz Linux dağıtımı hangisi merak ediyorum
Uzun süre küçük VM’lerde CentOS 7 kullandım; güvenlik güncellemeleri çok uzun süre geldi ve update yüzünden bir şeylerin bozulma riski de en aza inmişti
Biraz araştırınca şu an Alma/Rocky Linux’un en iyi seçenek gibi göründüğünü ve 10 yıl destek sunduğunu gördüm
Ama iyi korunup korunmadıklarını merak ediyorum
Ama bu kadar uzun süre geçince ekosistem ciddi biçimde drift ediyor ve OS üstünde uygulamaları güncel tutup çalıştırmak giderek zorlaşıyor
glibc, Python/Apache kombinasyonları, GCC gibi altyapı paketleri modern uygulama stack’leriyle yavaş yavaş uyumsuz hâle geliyorSonraki sürüm yükseltmeleri de acı vericiydi; sadece garip paket karışımlarıyla kendimi köşeye sıkıştırdığım için değil, upgrade yolunun kendisi de hep “best effort” düzeyindeydi
Sanırım 6’dan 7’ye geçerken pes etmiştim ve sonunda bana gerekenin Fedora olduğunu fark ettim
Yıllık ya da altı aylık güncellemelerde dağıtım paketleriyle boğuşmak gerekmiyor; yapı güncel kalıyor, çalışıyor, büyük dağıtım sürüm geçişleri de sorunsuz oluyor ve downtime da minimum kalıyor
Bir daha asla bir “server distro”ya dönmeyi düşünmüyorum
Örneğin yetki yükseltme açığı için kernel update’lerini daha hızlı yayımlayabiliyor
Rocky ise RHEL’den düşmesini beklerken exploit azaltımı sunan isteğe bağlı bir güvenlik deposuyla karşılık verdi
Yakın dönem örneklerine bakınca ikisi de oldukça iyi bakılıyor gibi görünüyor
Tüm servisleri container içinde çalıştırırsınız, taban OS’nin de gerektiği kadar sık otomatik update almasına izin verirsiniz
Ben openSUSE MicroOS seçtim; neredeyse her gün update ve reboot olduğu için sunucunun sağlıklı olduğundan oldukça emin olabiliyorum
Atomic update sayesinde bir şey bozulursa ve hemen uğraşmak istemezsem Cockpit’te rollback düğmesine basıp sonra bakıyorum
Sonunda upgrade geldiğinde bunun oldukça sancılı olma ihtimali yüksek
Uzun zaman geçip her şey değiştikten sonra büyük bir sıçrama yapmak yerine, daha küçük sürüm sıçramalarını daha sık yapmanın daha iyi olduğunu düşünüyorum
Red Hat’e kayıt olmaktan çekinmiyorsanız RHEL de var; kayıtlı hesap başına 10 makineye kadar update erişimini ücretsiz veriyor
RHEL kesinlikle büyük dağıtımlar arasında en istikrarlısı ve Alma ile Rocky özünde RHEL’in downstream klonları
Ben de aynı durumdayım
“Fazla” uzun süre bırakılmış, artık update etmeye korktuğum iki eski sunucum var
Ama Linux dağıtımlarının yaş doğrulama/kanıtlama tarafında çıkardığı tantanayı görünce tamamen terk etmeyi bile düşünüyorum
Artix’i de denedim ama geçen hafta yeniden başladıktan sonra bozuldu; önceki kernel update’inde bir şeyler ters gitmiş gibi görünüyordu, rescue ISO çıkarmak zorunda kaldım
Bu yüzden o cihazı Devuan’a çevirdim ama henüz karar vermek için erken
Büyük bir şikâyetim yok ama hâlâ burn-in aşamasında
Dizüstünde Arch kullanıyorum ama topluluk sansür meseleleri yüzünden biraz düşmanca geliyor; hafta sonu zaman bulunca silip başka bir şey kurmayı planlıyorum
Yazılımda politik drama istemiyorum
İlginç olan şu ki, bu yeni dizüstü alıp Windows’u bir kez bile açmadan doğrudan Linux kurduğum ilk örnek oldu ve her şey “öylece çalıştı”
Tam Linux’tan keyif almaya başlamışken büyük oyuncuların her yerde AI, yaş kanıtı/doğrulaması ve varsayılan açık telemetry gibi mahremiyet aşındırıcı adımları benimsemesi üzücü
Bu tür şeylerle etkileşimim sadece “nope” olacak
O sunucu şu anda da en güncel LTS ile çalışmaya devam ediyor
Ubuntu 4 müydü 6 mıydı hatırlamıyorum ama hep sorunsuzdu
Belki de yavaş upgrade, erken benimseyenlerin çektiği sıkıntıları atlatmamı sağlamıştır
Bugünlerde Debian’ı çok daha fazla kullanıyorum
Bu kadar çok tedarik zinciri saldırısının olduğu bir dönemde Debian Stable gerçekten bir mücevher; daha yeni sürüm gerektiği için ayrıca ilgilenmem gereken birkaç paket olsa bile, onun eski usul sade mühendislik ruhunu seviyorum
İkisi de en yeni akımı en hızlı takip edenlerden ve istikrar için her zaman en iyi seçenek değiller
Ama rolling dağıtım demek her zaman her şeyin en son sürümünü vermek zorunda demek değil
Son birkaç aydır Void Linux kullanıyorum; rolling bir dağıtım ama LTS kernel kullanıyor, istenirse mainline da seçilebiliyor ve bakımcılar hızlı update’den çok uygulamaların istikrarlı sürümlerine odaklanıyor
Gereken yerlerde biraz Debian da var; örneğin Proxmox, Alpine desteklemeyen VPS’ler, işle ilgili ekipmanlar gibi
Chimera çalıştıran birkaç test sistemi de var ama kararlı sürüm çıkana kadar ona fazla bel bağlamayı düşünmüyorum
AerynOS ile de biraz deneme yapıyorum
Sürümlerin destek ömrü 1 yıldan kısa olduğu için upgrade penceresini kaçırırsanız sonradan upgrade etmek Debian Stable gibi diğer dağıtımlardan daha zor olabiliyor
Sunucu tarafında Debian ve Ubuntu’ya geçtim ama gençliğimde, 2000’lerin ortasında FreeBSD hayranıydım
Gerçekten faydalı bir iş yapmaktan çok kurcalamaya ve ayar yapmaya zaman harcıyordum
O zamanlar BSD sunan dedicated server veya VPS bulmak zordu; galiba sonunda Panix.com gibi bir yerde karar kılmıştım
Ondan önce de New Jersey taraflarında NAC olan bir yerde 15MinuteServers adlı şirketin BSD sunduğunu hatırlıyorum
Artık sadece nostalji yapıyorum
Hetzner ve OVH’de FreeBSD kullanıyorum; geçmişte Vultr de kullandım
Ayrıca çoğu KVM VM/VPS sağlayıcısı konsol erişimi ve kullanıcı ISO mount etme imkânı verdiği için istediğinizi kurabilirsiniz
fastfetch’in belleği gerçekte olduğundan fazla kullanılıyor göstermesi muhtemelen ZFS ARC yüzündendir
Linux’taki page cache gibi, gerektiğinde geri alınabilir ve araçlar buna farklı isimler verir: https://www.linuxatemyram.com/
Birinin bana Docker’ı ilk anlattığında “aa, jail’den mi bahsediyorsun?” diye cevap verdiğimi hatırlıyorum
Yazının da anlattığı gibi tamamen aynı şey değil
kqueueda büyük bir kazançtıFreeBSD geliştiricilerine gerçekten minnettarım
İlk şirketimi 15 yıl boyunca FreeBSD üzerinde işlettim; uptime ve dayanıklılığı inanılmazdı
Benim de update etmeye korktuğum bir Ubuntu 16.04 sunucum var
Şu an uptime 1281 gün ve bu noktada reboot atmaya kıyamıyorum
ddile kopyalayıpqemugibi bir emülatörde boot ederek prova yapabilirsinizOtomatik başlayan ve dışarı bağlantı kuran bir şey varsa dikkatli olun
Yedeğin yok mu?
Debian/Ubuntu sistemleri düzenli otomatik update ve reboot yapacak şekilde kolayca ayarlanabiliyor; böylece elde sadece büyük sürüm upgrade’leri için manuel bakım kalıyor