Yönlendirici ayarı yapmadan yerel sunucuya kalıcı bir HTTPS URL bağlayan bir SSH tünel hizmeti geliştirdim
(natnest.site)Servis bağlantısı: https://natnest.site
İstemci kaynak kodu: https://github.com/litdemon/natnest-client
Merhaba. SSH reverse tünel tabanlı olarak yerel sunucuyu dışarıya açan NatNest adlı bir hizmet geliştirdim.
run local server 8080
natnest 8080 → https://yourname.natnest.site
Bunu yapma sebebim
Evde bir Mac mini var ve üzerinde Ollama çalıştırıyorum.
Dışarıdayken de kullanmak istiyordum ama her seferinde port yönlendirme ayarları engel oluyordu.
Modem/yönlendirici yönetim sayfasına girip port açarak kullanıyordum.
Sonra Google'da Dialogflow kullanırken Webhook(fullfilment) kaydetmem gereken bir durum oldu.
https zorunluydu ve domain ile sertifika hazırlayıp Nginx çalıştırarak reverse proxy kurup bağlantıyı tamamlamam gerekti.
Aynı durumdaki başka geliştiricilerin de benimle tamamen aynı işleri yapması gerekiyordu. Bunu onlara anlatmam da gerekiyordu.
"Bunu doğrudan kendim yapamaz mıyım?" diye başlayınca ortaya NatNest çıktı.
Sadece istemciyi yapmadım. Nginx + Rua, Redis, DB, API server, Tunnel-server(ssh server) gibi çeşitli sunucuların bir araya getirilmiş hali NatNest oldu.
Geliştirirken ngrok ve Cloudflare Tunnel'ın aynı işi yapan hizmetler olduğunu fark ettim T_T.
Nasıl çalışıyor?
İstemci (CLI) sunucuya SSH reverse tüneli bağladığında, sunucu alt alan adı → iç port eşlemesini Redis'e kaydeder. Sonrasında dışarıdan https://yourname.natnest.site adresine istek geldiğinde OpenResty(Nginx + Lua), Redis'i sorgulayıp ilgili SSH tünel portuna proxy'ler.
Dış istek → [Nginx + Lua] → Redis sorgusu → SSH tünel portu → yerel sunucu
İstemci, arka plandaki watchdog süreci SSH bağlantısını koruduğu için terminali kapatsanız veya ağ kısa süreli kesilse bile 5 saniye içinde otomatik olarak yeniden bağlanır.
ngrok / Cloudflare Tunnel'dan farkı nedir?
NatNest : kalıcı URL, self-hosting, webhook log görüntüleyici
Ngrok Free : kalıcı URL(❌), self-hosting yok, webhook log görüntüleyici (yalnızca Pro ve üzeri)
Cloudflare Tunnel : kalıcı URL(❌), Pro ve üzeri, yok(❌)
Benim gibi "kalıcı URL ücretsiz olsun, veriler de benim sunucumda kalsın" diyenler için uygun bir konumda.
En büyük avantajı,
Ngrok benzeri bir hizmet sunabilecek bir çözüme sahip olması ve
buradaki yorumlarda önerilen iyi özellikleri hemen uygulayabilecek kadar çevik olmasıdır.
Bu, geliştiricilerin gerçekten istediği özellikleri ürüne yansıtmanın ilk adımıdır.
Mevcut durum ve dürüst sınırlamalar
v0.5.1 itibarıyla aşağıdaki özellikler çalışıyor:
- Google hesabı bağlantısı (OAuth Device Flow) + otomatik SSH anahtarı oluşturma
- Kalıcı alt alan adı + wildcard Let's Encrypt HTTPS otomatik yenileme
- Web paneli (aktif tünel listesi, gerçek zamanlı webhook logları)
- Linux(amd64·arm64), macOS, Windows istemci binary'leri
Hâlâ eksik olan noktalar da var:
- Windows build CI/CD otomasyonu tamamlanmadı (şu an manuel build)
- Sunucu tek bir sunucu olarak ev ortamında çalıştığı için gecikme var
- Hizmeti tek başıma işlettiğim için hizmet seviyesi kararlılığı (SLA) garantisi vermek zor
Denemek isterseniz
Linux / macOS
curl -fsSL https://natnest.site/install.sh | bash
natnest setup # Google hesabı bağlama
natnest 8080 # Yerel 8080 portunu dışarıya aç
İlk kez dışarıya açıyorum; kullanım deneyimi ya da "şu özellik olsa iyi olur" gibi görüşleriniz varsa yorum bırakmanız beni gerçekten çok mutlu eder.
4 yorum
Kurulum komutu ve ana sayfanın üst kısmındaki github bağlantısı 404 hatası veriyor.
Yorumunuz için teşekkürler. Düzeltmeyi yansıttım.
Daha büyük sorun ise, ilk bakışta bile yapay zekanın yaptığı belli olan tasarım değişikliği gibi görünüyor
https://github.com/anderspitman/awesome-tunneling
Awesome Tunneling - ngrok alternatifleri derlemesi
tunneltürü araçlara talep yüksek olduğu için bu türden epey seçenek var gibi görünüyor. Diğer servisleri de referans almanız faydalı olabilir.İyi görünüyor. Ayar cehenneminden kurtulmak için.