Ngrok: Local Geliştirme Ortamınızı Dış Dünyaya Açmak
Herkese selam, bu yazıda local geliştirme ortamlarımızı dış dünyaya açmak için kullanabileceğimiz bir araç olan Ngrok’u inceleyeceğiz.
Ngrok Nedir?
Ngrok, yerel geliştirme ortamınızı (localhost) güvenli bir tünel üzerinden internete açmanızı sağlayan bir araçtır. Temel olarak, lokalinizde çalışan bir web servisini, dış dünyadan herhangi bir yerden erişilebilir hale getirir.
Bu, örneğin web uygulamaları geliştirirken, webhook’ları test ederken veya mobil uygulamalar için backend servisleri geliştirirken çok kullanışlı olabilir.
Windows için Kurulum
- Winget ile Kurulum
winget install ngrok.ngrok
2. Manuel Kurulum
- https://ngrok.com/download adresinden indirin
- ZIP’i çıkartın (örn: C:\ngrok)
- Sistem PATH’ine ekleyin:
- “Sistem Ortam Değişkenlerini Düzenle”yi açın.
- “Ortam Değişkenleri” > “Path” > “Yeni”
- ngrok klasörünün yolunu ekleyin.
Yapılandırma
- https://ngrok.com'da ücretsiz hesap oluşturun.
- Authtoken’ı sisteme tanıtın:
ngrok config add-authtoken YOUR_AUTH_TOKEN
HTTP Tünelleme
# 3000 portunu internete aç
ngrok http 3000
Trafik İzleme
Ngrok web arayüzü (http://localhost:4040), tünel üzerinden geçen trafiği gerçek zamanlı olarak izlemenizi sağlar.
Örnek Uygulama
Şimdi golang ile örnek basit bir web uygulaması yazalım ve bu tünel üzerinde uygulamamızı yayımlayalım.
import (
"encoding/json"
"fmt"
"log"
"net/http"
"time"
)type Response struct {
Message string `json:"message"`
Timestamp time.Time `json:"timestamp"`
ClientIP string `json:"client_ip"`
Protocol string `json:"protocol"`
}func main() {
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
if r.URL.Path != "/" {
http.NotFound(w, r)
return
}
fmt.Fprintf(w, "Hoş geldiniz! Bu sayfaya Ngrok üzerinden erişildi.")
}) http.HandleFunc("/api/info", func(w http.ResponseWriter, r *http.Request) {
response := Response{
Message: "API başarıyla çalışıyor",
Timestamp: time.Now(),
ClientIP: r.RemoteAddr,
Protocol: r.Proto,
} w.Header().Set("Content-Type", "application/json")
json.NewEncoder(w).Encode(response)
}) fmt.Println("Server 3000 portunda başlatılıyor...")
log.Fatal(http.ListenAndServe(":3000", nil))
}
Test
Önce yazdığımız uygulamayı ayağa kaldıralım.
go run main.go
Ayağa kaldırdığımız uygulamanın ilgili portunu tünellemeyi unutmayın.
Endpoint’leri test edin:
# Ana sayfa testi
curl https://xxxx-xx-xxx-xx-xx.ngrok-free.app/
# API testi
curl https://xxxx-xx-xxx-xx-xx.ngrok-free.app/api/info
Dashboard’a gittimiz zaman attığımız isteklerin loglarının düştüğünü görebiliriz. Buradan da isteklerimizin detaylarını inceleyebiliriz.
Gördüğünüz üzere local bir uygulamımızı dış dünyaya açmak Ngrok ile işte bu kadar kolay.
Daha fazla detay için Ngrok’un resmi dokümanlarını inceleyebilirsiniz.