Başlangıçta blog kurulumum, her şey bir ev sunucusunda (homeserver) çalıştığı için WireGuard üzerinden saf bir IPv6 projesi olarak planlanmıştı (bu arada ücretsiz IPv6 adreslerini route64.org adresinden alabilirsiniz). Erişilebilirliği artırmak için şimdi harici bir IPv4 proxy ekledim (Teşekkürler @Larvitz).
Ancak bu durum hemen SSL sorunlarına yol açtı: Başlangıçta hem A hem de AAAA kayıtları proxy üzerinden geçtiği için sunucumdaki Let's Encrypt doğrulaması başarısız oldu.
Çözüm: „IPv6-Hack“
Çözüm, AAAA kaydını proxy üzerinden yönlendirmek yerine doğrudan sunucumun WireGuard IP'sine yönlendirmekti.
- Alan Adı:
blog.burningboard.org
- A-Kaydı (Proxy):
194.28.98.217
- AAAA-Kaydı (Sunucu):
2a11:6c7:f05:a8::2 (WireGuard)
WireGuard IP'me yönlendirilmiş bu doğrudan AAAA kaydı sayesinde Let’s Encrypt, sunucuma doğrudan IPv6 üzerinden ulaşmaya devam ediyor (çünkü AAAA kaydı varsayılan olarak önceliklidir) ve SSL sertifikasını düzenliyor. IPv4 trafiği ise proxy tarafından şifrelenmiş olarak bana iletiliyor.
Final Yapılandırma
İletişimin sorunsuz çalışması için Caddy sunucularını uyarlamamız gerekti:
1. Kendi sunucumda (NixOS, blog.nix)
Gerçek ziyaretçi IP'lerinin doğru şekilde ulaşması ve proxy IP'si ile üzerine yazılmaması için, proxy'nin güvenilir olarak işaretlenmesi gerekir:
services.caddy.globalConfig = ''
servers {
trusted_proxies static 2a06:9801:1c:1000::10
}
'';
2. Harici proxy üzerinde (Caddy)
Proxy'nin sunucumla HTTPS üzerinden doğru şekilde iletişim kurabilmesi için ana makine adını (SNI) göndermesi gerekir:
reverse_proxy [https://[2a11:6c7:f05:a8::2]:443](https://[2a11:6c7:f05:a8::2]:443) {
header_up Host {host}
transport http {
tls_server_name blog.burningboard.org
}
}
Blog artık hem IPv4 hem de IPv6 üzerinden erişilebilir, güvenli bir şekilde şifrelenmiş durumda ve ev IP'm buna rağmen gizli kalıyor! 🚀
Öncelikle en önemli konu: Alışılagelmiş Markdown dosyaları temel olmaya devam ediyor – bu basit çözümün büyük bir hayranıyım. Ancak kaputun altında çok şey değişti:
Kurulum üzerinde epey uğraştım:
📂 MD Dosyaları: Blog yapısı Markdown tabanlı ve basit kalmaya devam ediyor.
🌍 Hiç olmadığı kadar küresel: Blogum artık 43 dilde çeviriyi destekliyor. Evet, Klingonca dahil! 🖖 (Qapla'!)

Planım, tarayıcı dil algılamasına dayalı tam otomatik, gerçek zamanlı bir çeviriydi. Spoiler: Sadece kısmen işe yaradı. Şunu fark ediyorsunuz: Yapay zeka etkileyici ama henüz tam olarak olmasını istediğimiz "noktada" değil.
Çözüm: Artık her yazıyı önceden belirlenen tüm dillere çeviriyorum; bu, arama motorları (SEO) için de çok daha iyi. Otomatik algılama bazen çalışmazsa, dünya simgesi üzerinden tercih ettiğiniz dili manuel olarak seçebilirsiniz; bu seçim bir çerez (cookie) aracılığıyla kolayca kaydedilir.
Çeviriler artık şaşırtıcı derecede iyi sonuçlar veren Gemini 3 Flash ile yapılıyor. Ancak yapay zekayı yakından takip etmek gerekiyor: İlk toplu işlemde etiketler (tags) de yanlışlıkla çevrildi, ki bu tabii ki planlanmamıştı.
Kod hala mevcut (ilgilenirseniz bana mesaj atmanız yeterli) 👍 Ancak sistemin artık kendine ait bir Gemini API anahtarına 🔑 ihtiyaç duyduğunu unutmayın.
Blogumu kısa süre önce WriteFreely'den kendi geliştirdiğim bir sisteme taşıdım: MD-Blog (MD, tahmin edebileceğiniz gibi Markdown anlamına geliyor). Tetikleyici sebep, eski sistemin başarısız olan bir güncellemesiydi; ancak sonuçta bu, her şeyi kökten basitleştirmek ve tasarım üzerinde tam kontrol sahibi olmak için mükemmel bir itici güç oldu.
Sistemin kalbinde, çalışma zamanında (runtime) modern HTML'e dönüştürülen data/ klasöründeki basit Markdown dosyaları yer alıyor. Sonuç ise yıldırım hızında, veritabanı gerektirmiyor ve kendi tasarım sistemim (karanlık mod dahil) sayesinde tam da hayal ettiğim gibi görünüyor. Hatta modern bir Mastodon paylaş butonu da artık doğrudan sisteme entegre edilmiş durumda.
Kodla veya bu yalın kurulumla ilgileniyorsanız, Mastodon üzerinden benimle iletişime geçmekten çekinmeyin!