5 puan yazan litdemon 11 일 전 | 4 yorum | WhatsApp'ta paylaş

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

 
hshim 10 일 전

Kurulum komutu ve ana sayfanın üst kısmındaki github bağlantısı 404 hatası veriyor.

 
litdemon 10 일 전

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

 
click 8 일 전

https://github.com/anderspitman/awesome-tunneling
Awesome Tunneling - ngrok alternatifleri derlemesi
tunnel tü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.

 
sacru2red 10 일 전

İyi görünüyor. Ayar cehenneminden kurtulmak için.