ServBay Yerel Geliştirme Ortamında FRP ile Genel İnternet Erişimi (İç Ağ Geçişi)
FRP, özellikle yerel geliştirme hizmetlerinin (web siteleri, API, veritabanları vb.) güvenli ve pratik bir şekilde genel internete açılması gereken senaryolarda kullanılan, yüksek performanslı ve kolay kullanımlı bir ters proxy (reverse proxy) aracıdır. FRP’nin istemci (frpc
) ve sunucu (frps
) mimarisi sayesinde iç ağ geçişi son derece verimli bir şekilde sağlanır.
Bu rehber, özellikle macOS ortamında ServBay kullanıcılarının, frpc
istemcisini nasıl kurup yapılandıracaklarını; yerel ServBay web hizmetlerinizi güvenli bir tünel üzerinden genel internete nasıl açacaklarını ayrıntılı bir şekilde gösterir. Bu yöntem; uzaktan demo, ortak geliştirme, Webhook alma veya harici API testleri gibi senaryolar için kritik öneme sahiptir.
Teknik Temel ve Çalışma Prensibi
FRP’nin ana çalışma prensibi, iç ağdaki makinenizden (frpc
, yani ServBay’in bulunduğu Mac) genel internete açık bir sunucuya (frps
) şifreli bir iletişim tüneli kurmaktır. Harici kullanıcılardan gelen istekler önce frps
sunucusuna ulaşır. frps
, gelen bu trafiği önceden oluşturulan tünel aracılığıyla sizin yerel frpc
istemcinize yönlendirir. frpc
de bu isteği ServBay’de çalışan ilgili yerel hizmete iletir (örneğin web siteniz veya API). Servisten alınan yanıt da aynı şekilde geri iletilir.
Bu yöntemle yerel ağdaki firewall ve router kısıtlamaları kolayca aşılır, sadece HTTP/HTTPS değil TCP ve UDP dahil olmak üzere çoklu protokol desteğiyle ServBay geliştirme ortamınız uzaktan erişim için güçlü bir altyapı kazanır.
Uygulama Senaryoları
ServBay’i FRP ile birleştirerek şu geliştirme ihtiyaçlarını kolayca karşılayabilirsiniz:
- Uzaktan Demo ve Ortak Geliştirme: Yerel ortamda geliştirdiğiniz siteyi ya da uygulamayı doğrudan takım üyelerine ya da müşterilere sunun, sunucuya yükleme gereği olmadan anında paylaşım.
- Webhook Testi: GitHub, Stripe, WeChat Pay gibi üçüncü parti platformlardan gelen Webhook bildirimlerini doğrudan yerelde test edin, entegrasyonu hızlandırın.
- API Ortak Test: Yerelde geliştirdiğiniz arka uç API'leri, dışardaki frontend geliştirici veya partnerlerle birlikte gerçek zamanlı test edin.
- Mobil Cihaz Testi: Akıllı telefon veya tablet gibi cihazlarda, ServBay üzerinde çalışan site veya uygulamaya erişip çapraz cihaz uyumluluğu testleri gerçekleştirin.
- Geçici Paylaşım: Herhangi bir karmaşık yapılandırmaya gerek duymadan yerel dosya ya da hizmetinizi hızlıca paylaşın.
Önkoşullar
FRP’yi yapılandırmadan önce şu gereksinimlerin karşılandığından emin olun:
- ServBay Kurulu ve Çalışıyor: macOS bilgisayarınıza ServBay kurulu ve çalışıyor olmalı; genel internete açmak istediğiniz yerel hizmet (örneğin bir web sitesi) ServBay’de tanımlı ve tarayıcıdan erişilebilir olmalı.
- Genel İnternete Açık FRP Sunucusu (
frps
): Genel IP adresine sahip bir sunucunuz olmalı ve üzerinde FRP sunucu tarafı (frps
) kurulu ve çalışmakta. Bu rehberde istemci (frpc
) yapılandırmasına odaklanılmaktadır. - Genel Alan Adı (Opsiyonel fakat HTTP/HTTPS için önerilir): Servisinize alan adı üzerinden erişmek için, bir alan adına sahip olmalı ve bunun DNS kayıtlarını yönetebilmelisiniz.
- FRP İstemcisi (
frpc
) Kurulu: FRP istemcisi ServBay ile birlikte gelmez, ayrı olarak indirip kurmanız gerekir.
Ortam Hazırlığı ve FRP İstemci Kurulumu
İşte Mac’iniz üzerinde FRP istemcisi (frpc
) kurulum adımları:
FRP İstemcisini İndirin:FRP GitHub Releases sayfası üzerinden, macOS mimariniz için en güncel FRP paketini indirin:
- Apple Silicon (M1/M2/M3 vb.) için
frp_*.darwin_arm64.tar.gz
dosyasını indirin. - Intel işlemcili Mac’ler için
frp_*.darwin_amd64.tar.gz
dosyasını indirin.
- Apple Silicon (M1/M2/M3 vb.) için
FRP İstemcisini Kurun: İndirdiğiniz dosyayı açıp,
frpc
çalıştırılabilir dosyasını, örneğin/usr/local/bin
gibi bir PATH dizinine kopyalayın. Böylece terminalde her yerdefrpc
komutunu çalıştırabilirsiniz.Versiyon numarası (
0.52.3
güncel örnektir) ve mimari (darwin_arm64
) değişebilir; kendi indirdiğiniz dosya ismine göre düzenleyin.bash# İndirilen dosyanın frp_0.52.3_darwin_arm64.tar.gz olduğunu varsayalım # İndirme klasörüne geçin cd ~/Downloads # Arşiv dosyasını açın (kendi dosya isminize göre değiştirin) tar -zxvf frp_0.52.3_darwin_arm64.tar.gz # Açılan klasöre geçin (isim değişebilir) cd frp_0.52.3_darwin_arm64 # frpc dosyasını /usr/local/bin'e kopyalayın sudo cp frpc /usr/local/bin/ # (Opsiyonel) Örnek frpc.toml dosyasını ev dizininize kopyalamak için: # cp frpc.toml ~/
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15sudo
şifrenizi girerek işlemi tamamlayın.Kurulumu Doğrulayın: Yeni bir terminal açıp şu komutla kurulumun ve PATH’e eklemenin başarılı olup olmadığını kontrol edin:
bashfrpc -v # Örnek çıktı: frpc version 0.52.3
1
2Versiyon bilgisini görüyorsanız, kurulum başarılı demektir.
FRP İstemci Tünelinin Yapılandırılması
FRP istemcisinin ayarları, genellikle frpc.toml
adlı bir dosyada yapılır (yeni FRP sürümlerinde TOML formatı önerilmekte). Bu dosyada, frpc
istemcisinin sunucuya (frps
) nasıl bağlanacağı ve ServBay’deki hangi yerel hizmetin nasıl genel internete açılacağı belirtilir.
frpc.toml
Yapılandırma Dosyasının Açıklaması
Aşağıda temel yapılandırma örneğini bulabilirsiniz:
# frpc.toml - FRP istemci yapılandırma dosyası örneği
# [common] bölümü: istemci ile sunucu arası bağlantı ayarları
serverAddr = "your-frps-server.com" # FRP sunucunuzun genel IP adresi ya da alan adı
serverPort = 7000 # İstemci bağlantısı için kullanılan port (varsayılan 7000)
# Kimlik doğrulama ayarları (token kullanımı önerilir)
auth.method = "token"
auth.token = "your_authentication_token" # FRP sunucusuna uygun gizli anahtar
# Opsiyonel: İstemci ve sunucu arası TLS şifrelemesini etkinleştirmek için
# tls_enable = true
# [[proxies]] bölümü: bir veya birden fazla tünel tanımlama
[[proxies]]
name = "my-web-service" # Proxy adı, dosya içinde benzersiz olmalı
type = "http" # Proxy tipi: http, https, tcp, udp, stcp, xtcp vb.
localIP = "127.0.0.1" # Yerel hizmetin IP adresi, genellikle 127.0.0.1
localPort = 80 # Yerel hizmetin portu (ör: ServBay’de yerel web servisi için)
customDomains = ["servbay.your-domain.com"] # Dış erişim için alan adı (yalnızca http/https ile kullanılır). **Alan adının DNS'te FRP sunucusuna yönlenmiş olması gerekir.**
# Yeni proxy eklemek için [[proxies]] bloğu açabilirsiniz
# [[proxies]]
# ... (başka bir servisin proxy ayarı)
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Ayar | Bölüm | Açıklama |
---|---|---|
serverAddr | [common] | FRP sunucusunun (frps ) genel IP adresi veya alan adı. |
serverPort | [common] | FRP sunucusunda istemci bağlantısı için kullanılan port. Varsayılan 7000 , sunucuda farklı ayar varsa değiştirin. |
auth.method | [common] | Kimlik doğrulama yöntemi; genellikle token . Sunucu ve istemcide aynı olmalı. |
auth.token | [common] 'in altında | Sunucudakiniyle aynı olan kimlik doğrulama anahtarı. Güvende tutun. |
tls_enable | [common] | TLS şifrelemesi etkin mi? true önerilir. |
[[proxies]] | kök seviye | Proxy tüneli dizisi. Her blok ayrı bir yönlendirme kuralı belirtir. |
name | [[proxies]] | Tünel adı; dosya içinde benzersiz olmalı ve anlamlı bir şey seçmeniz önerilir. |
type | [[proxies]] | Proxy türü. Sıklıkla http , https , tcp , udp . Yerel servisinize uygun olanı seçin. |
localIP | [[proxies]] | Yerel hizmetin dinlediği IP. Genellikle 127.0.0.1 olarak kalabilir. |
localPort | [[proxies]] | Yerel hizmetin portu (ör: HTTP için 80, HTTPS için 443, MySQL için 3306 vb.). |
remotePort | [[proxies]] | (Yalnızca tcp /udp ) Sunucu tarafında açılacak port. Dış kullanıcılar serverAddr:remotePort ile erişirler. |
customDomains | [[proxies]] | (Yalnızca http /https ) Buradaki alan(lar) üzerinden erişim sağlanır. DNS üzerinde sunucuya yönlendirilmiş olmalı. |
subdomain | [[proxies]] | (Sunucu uygun şekilde ayarlandıysa ve http/https ile) subdomain yönetimi için. customDomains ile aynı anda kullanılamaz. |
[proxies.plugin] | [[proxies]] | Belirli eklentiler tanımlanabilir. Örneğin https2https ile yerel HTTPS servisine yönlendirme. |
hostHeaderRewrite | [proxies.plugin] veya [[proxies]] | İsteklerin Host başlığını yeniden yazmak için kullanılır. ServBay’de sanal hostlu yapı için kritik. Burada yerel sitenizin gerçek alan adı olmalı. |
Tipik Konfigürasyon: ServBay ile HTTPS Web Sitesi Paylaşımı
ServBay, siteleri yerelde otomatik olarak HTTPS üzerinden ve geçerli SSL sertifikasıyla yayımlar. FRP ile bu HTTPS servisini genel internete açarken genellikle https
proxy türü ile hostHeaderRewrite
ayarı gereklidir, bazen de https2https
eklentisi kullanılabilir; alternatif olarak doğrudan 443 portunu TCP ile yönlendirmek mümkündür, ancak ServBay’in sanal hostlu mimarisi Host başlığını zorunlu kılar. Yani genellikle https
türü ve hostHeaderRewrite
birlikte kullanılır.
Aşağıda, ServBay’de örneğin servbay.test
alan adıyla yerelde çalışan bir web sitesinin, FRP aracılığıyla genel bir domain’e (ör. test-frp.servbay.app
) açılması örneklenmiştir. test-frp.servbay.app
'in DNS’te FRP sunucunuza (ör. frps.servbay.demo
) doğru yönlenmiş olması gerekir.
Ev dizininizde ~/frpc.toml
adında bir dosya oluşturup şu içeriği ekleyin:
# frpc.toml örnek dosya - ServBay HTTPS sitesini paylaşmak için
# [common] bölümü
serverAddr = "frps.servbay.demo" # Kendi sunucu adresinizi (IP ya da domain) yazın
serverPort = 7000 # Kendi sunucu portunuzu yazın
auth.method = "token"
auth.token = "servbay_demo_token" # Kendi belirlediğiniz authentication token
# İstemci ve sunucu arası TLS şifreleme etkinleştirmeniz önerilir
tls_enable = true
# [[proxies]] bölümü: ServBay HTTPS web sitesi paylaşımı
[[proxies]]
name = "servbay-website-https" # Proxy ismini özelleştirin, ör: servbay-test-site
type = "https" # Proxy türü: HTTPS
# Alan adınızı girin; DNS'te sunucuya yönlenmiş olmalı
customDomains = ["test-frp.servbay.app"] # Kendi genel alan adınızı yazın
# Yerel ServBay hizmet bilgisi
localIP = "127.0.0.1" # ServBay genellikle bu IP'de çalışır
localPort = 443 # ServBay'in varsayılan HTTPS portu
# Önemli: Host başlığını, ServBay’deki sitenin yerel domain’ine çevirin!
# ServBay web sunucusu (Nginx/Caddy) gelen istekteki Host'a göre teslimat yapar.
hostHeaderRewrite = "servbay.test" # ServBay’de tanımlı olan site domain’i
# Opsiyonel: arka uçta görmek için özel başlık ekleyebilirsiniz
[proxies.requestHeaders.set]
x-from-where = "frp-tunnel"
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Yukarıdaki ayarlarda serverAddr
, serverPort
, auth.token
, customDomains
, hostHeaderRewrite
satırlarını kendi ortamınıza uygun şekilde güncelleyin.
hostHeaderRewrite
'in Önemi:
ServBay, barındırdığı sitelerde web sunucusu olarak Nginx veya Caddy kullanır. Bu sunucular, gelen HTTP isteğindeki Host
başlığına bakarak isteği ilgili sanal hostun kök dizinine yönlendirir. FRP tünelinden gelen isteklerde Host
, tarayıcıdaki genel domain (test-frp.servbay.app
) olarak gelir; halbuki ServBay’de siteniz servbay.test
ile erişilebilir. Eğer hostHeaderRewrite
uygulanmazsa, ServBay web sunucusu isteği bulamaz ve 404 ya da varsayılan site döner. Bu nedenle doğru Host başlığı hayati önem taşır.
FRP İstemcisini Başlatmak
frpc.toml
dosyanızı hazırladıktan sonra, terminali açın ve dosyanın olduğu dizine gidin (ev dizinindeyse yol belirtmeniz yeterlidir). Ardından şu komutla FRP istemcisini başlatın:
# frpc.toml bulunduğu yerde çalıştırmak için
frpc -c frpc.toml
# Dosya ev dizinindeyse
# frpc -c ~/frpc.toml
2
3
4
5
Bu komut, frpc
'yi ön planda çalıştırır ve sunucuya bağlanmaya çalışır. Başarıyla bağlanılırsa terminalde tünellerin açıldığını gösteren logları görürsünüz.
frpc
'yi arka planda sürekli çalıştırmak için nohup
veya macOS’un launchctl
gibi araçlarını kullanabilirsiniz. Örneğin nohup
ile:
# frpc.toml ev dizinindeyse
nohup frpc -c ~/frpc.toml &
2
nohup
, logları nohup.out
dosyasına yazar ve süreci arka planda çalıştırır. Daha kurumsal servis yönetimine ihtiyaç varsa, launchctl
benzeri araçlarla daha detaylı yönetim sağlanır; bu rehberde detaya girilmemektedir.
Servis Doğrulama ve Log Analizi
Servisin Doğrulanması
frpc
yi başlatıp bağlantının sağlandığını gördüğünüzde, tarayıcıya geçin ve frpc.toml
’da tanımlı genel domain’i ziyaret edin (örn. https://test-frp.servbay.app
). Test edin:
- Site açılıyor mu, bağlantı/sertifika hatası yok mu?
- HTTP 200 veya beklenen kod dönüyor mu?
- İçerik, yerelde
https://servbay.test
ile aynısı mı? - HTTPS kullanıyorsanız adres çubuğunda güvenli sertifika işareti (kilit) görünüyor mu ve sertifika alan adınıza mı ait?
Log Analizi
FRP istemcisinin logları, tüm bağlantı ve iletim sorunlarının analizinde anahtar önemdedir. frpc -c frpc.toml
komutu ile loglar terminalde görünür. Hataları veya uyarı mesajlarını burada kontrol edebilirsiniz.
Daha ayrıntılı hata ayıklama için, başlatma sırasında debug log seviyesini şu şekilde artırabilirsiniz:
frpc -c frpc.toml --log_level debug
Eğer frpc.toml
’da bir log dosyası belirttiyseniz (log_file = "/var/log/frpc.log"
gibi), ilgili dosyayı canlı olarak izlemek için şunu kullanabilirsiniz:tail -f /path/to/your/frpc.log
Sık Karşılaşılan Sorunlar ve Çözümleri
FRP kullanırken aşağıdaki yaygın sorunlara ve çözüm önerilerine göz atın:
Sorun | Çözüm |
---|---|
FRP sunucuya kimlik doğrulama hatası | [common] bölümündeki auth.token ve auth.method ayarlarınızın, sunucudaki FRP yapılandırmasıyla tamamen aynı olduğundan emin olun. Sunucu loglarını da kontrol edin, gerekirse hatalı girişleri inceleyin. |
Genel alan adına erişilemiyor veya yanlış çözülüyor | customDomains 'deki domain’in gerçekten DNS CNAME veya A kaydı ile FRP sunucunuza yönlendiğini doğrulayın. ping your-frp-domain.com ya da online DNS araçlarıyla testi yapın, DNS önbellek süresini bekleyin. |
Genel domain’e erişince FRP hoşgeldiniz sayfası geliyor | Domain’iniz doğru çözülmüş fakat FRP sunucusu bunu istemciye yönlendiremiyor olabilir. customDomains 'de tanımlı alan adlarının tam olarak browserda girdiğiniz domain'le birebir aynı olduğundan emin olun. type ayarınızı ve sunucu izinlerini kontrol edin. |
Yerel port meşgul veya hizmet çalışmıyor | ServBay’in ve açmak istediğiniz hizmetin çalışıp çalışmadığını, frpc.toml ’da doğru portun yazılı olduğundan emin olun. lsof -i :PORT ile ilgili portun ServBay veya başka bir program tarafından dinlenip dinlenmediğini kontrol edin. |
Tünel sık sık kopuyor veya dengesiz | Makinenizin ve FRP sunucusunun internet bağlantı kararlılığını kontrol edin. Gerekirse [common] bölümünde heartbeat_timeout = 30 benzeri zaman aşımı ayarlarını veya pool_count gibi bağlantı havuzu ayarlarını artırmayı deneyin. Sunucu taraflı limitlere bakın. |
HTTP hizmetine erişmek isterken browser HTTPS’ye yönlendiriyor | ServBay’de ilgili sitenin web server yapılandırmasında HTTP’den HTTPS’e zorunlu yönlendirme olup olmadığını denetleyin. Sadece HTTP açmak için proxy tipinizi http yapın, gereksiz eklenti ayarlarını kaldırın. HTTPS için https tipini ve doğru sertifika yolunu sağlayın. |
HTTPS sertifika hatası (tarayıcı uyarısı) | Eğer yerelde ServBay’in oluşturduğu self-signed sertifika kullanıyorsanız ve https tipi ile dışarı açtıysanız, browser sertifikayı güvenli bulmayabilir (beklenen bir durumdur). Tarayıcıya ServBay User CA sertifikasını kurabilir veya FRP sunucu tarafında geçerli bir SSL sertifikası kullanabilirsiniz. Alternatif olarak https2http veya https2https eklentileriyle ServBay’de oluşturulan sertifikayı FRP ile kullanabilirsiniz. Unutmayın: https tipi ve hostHeaderRewrite ile ServBay SSL’i yönetir ve browser uyarıları, yerel sertifikanızın güvenilirliğine bağlıdır. |
404 hatası alınıyor | hostHeaderRewrite ayarının ServBay’deki gerçek site domain’ine doğru şekilde ayarlandığından emin olun (örneğin servbay.test ). Host başlığı uyuşmazsa, ServBay web sunucusu ilgili siteyi bulamaz ve 404 döner. |
FRP sunucusunda firewall bağlantıyı engelliyor | FRP sunucunuzda istemci bağlantı portu (örneğin serverPort - genellikle 7000) ve sunduğunuz hizmete ait port(lar) (ör. 80, 443, veya proxy tipinize özgü port) açık olmalı. Sunucu firewall ayarlarını doğrulayın. |
Yerel firewall bağlantıyı engelliyor | Mac’inizde frpc ’nin FRP sunucu portuna çıkış yapmasına engel bir firewall kuralı olmadığından emin olun. Ayrıca localPort üzerinden 127.0.0.1 ’den gelen bağlantıların engellenmediğini kontrol edin. |
FRP istemci bağlantı başarılı, ama erişim yok | Sorun FRP sunucusunun yanlış yapılandırmasından veya istemci-sunucu arası ağ problemlerinden kaynaklanıyor olabilir. Sunucu loglarına bakın, uygun port/alan adı yönlendirme kurallarının doğru uygulandığını teyit edin. |
ServBay ve FRP Çözümünün Avantajları ve Güvenlik Önerileri
ServBay ve FRP birlikteliği, geliştirme ortamınıza büyük esneklik ve hız kazandırır:
- Çoklu Protokol Desteği: FRP; HTTP, HTTPS, TCP, UDP gibi protokolleri destekler. Yani sadece web hizmetleriyle sınırlı değilsiniz, ServBay’de çalışan veritabanı (MySQL/PostgreSQL/MongoDB), Redis, SSH gibi servisleri de internetten açabilirsiniz.
- Kolay Yapılandırma: Basit bir TOML dosyasıyla birden çok proxy tünelini aynı anda yönetip, dilediğiniz kadar ServBay sitesi veya hizmetini açabilirsiniz.
- Açık Kaynak ve Tam Kontrol: FRP açık kaynaklı ve olgun bir projedir; iç ağ geçişinde üçüncü partiye bağımlı olmaz, tüm yapı sizin elinizde olur.
- Güvenlik: FRP; kimlik doğrulama token’ı, TLS şifreleme, vs. gibi güvenlik özelliklerini destekler. ServBay’in SSL yönetimiyle birleştiğinde güçlü ve güvenli bir geliştirme ortamı oluşturabilirsiniz.
Güvenlik için öneriler:
- TLS Şifrelemesini Etkinleştirin:
frpc.toml
'da[common]
bölümündetls_enable = true
olarak ayarlayın, istemci-sunucu hattı şifreli olsun. - Güçlü Bir Auth Token Kullanın: Karmaşık, tahmin edilmesi zor bir
auth.token
tanımlayın ve düzenli olarak değiştirin. - Yalnızca İhtiyaç Duyduğunuz Hizmeti Açın: Gereksiz hiçbir servisi veya portu genel internete açmayın.
- Alan Adı ile Erişim: HTTP/HTTPS servis açarken doğrudan IP ve port ile değil, mümkünse daima
customDomains
ile alan adı üzerinden erişim yaptırın. - FRP Sunucusunun Güvenliği: Sunucuda sadece gerekli portlar açık olmalı ve firewall ayarları yapılmalıdır.
- Erişim Kontrolü: Mümkünse, IP bazlı erişim sınırlaması gibi ek güvenlik önlemleri düşünün.
Yukarıdaki adımları takip ederek, ServBay üzerindeki geliştirme projelerinizi FRP ile kolayca genel internete açabilir, uzaktan gösterim ve entegrasyon iş akışlarınızı çok daha verimli ve güvenli hale getirebilirsiniz.