ServBay लोकल डेवेलपमेंट एनवायरनमेंट को FRP से पब्लिक एक्सेस (इनवर्टेड नेटवर्क ट्रैफिक) कैसे दें
FRP एक हाई-परफॉरमेंस और उपयोग में आसान रिवर्स प्रॉक्सी टूल है, जो लोकल डेवेलपमेंट सर्विसेज (जैसे वेबसाइट, API, डेटाबेस आदि) को सुरक्षित और सरल तरीके से इंटरनेट पर सार्वजनिक रूप से एक्सपोज करने के लिए डिज़ाइन किया गया है। इसके क्लाइंट (frpc
) और सर्वर (frps
) आर्किटेक्चर के कारण FRP इनवर्टेड नेटवर्क ट्रैफिक (नेटवर्क टनलिंग) को बेहद प्रभावी बनाता है।
यह गाइड खासकर macOS यूज़र्स के लिए है, जो ServBay पर चल रही अपनी लोकल वेब सेवाओं को आसानी और सुरक्षा के साथ इंटरनेट पर पब्लिकली एक्सपोज करना चाहते हैं। इसका उपयोग रिमोट प्रेजेंटेशन, टीम कोलैबोरेशन, वेबहुक डिबगिंग या बाहरी API टेस्टिंग में बेहद लाभकारी है।
तकनीकी विवरण
FRP के मूल सिद्धांत के तहत आपके लोकल मशीन (जहाँ frpc
, अर्थात ServBay चल रही है) से एक एन्क्रिप्टेड टनल पब्लिक सर्वर (frps
) तक बनती है। बाहर से जब कोई आपकी सर्विस एक्सेस करता है, तो वह सबसे पहले pब्लिक सर्वर पर जाता है। वहां से उस अनुरोध को तैयार टनल के ज़रिए आपके लोकल मशीन तक पहुँचाया जाता है, और फिर लोकल सर्विस (जैसे वेबसाइट या API) को फॉरवर्ड कर दिया जाता है। सर्विस का रिस्पॉन्स इसी रिवर्स पथ से लौटाया जाता है।
इस तरीके से फायरवॉल और राउटर की सीमाएँ बाईपास हो जाती हैं, और आपके लोकल सर्विसेज़ को पब्लिक एक्सेस मिल जाता है। FRP TCP/UDP/HTTP/HTTPS जैसे कई प्रोटोकॉल्स को सपोर्ट करता है और ServBay डेवेलपमेंट के लिए बेहद बढ़िया रिमोट एक्सेस क्षमता प्रदान करता है।
उपयोग के मामले
ServBay और FRP की मदद से आप निम्नलिखित डेवेलपमेंट सीनारियोज़ को आसानी से हैंडल कर सकते हैं:
- रिमोट प्रेजेंटेशन और कोलैबोरेशन: रिमोट सर्वर पर डिप्लॉय किए बिना अपने लोकल प्रोजेक्ट या वेबसाइट की लाइव डेमो टीम या क्लाइंट को दिखाएं।
- Webhook टेस्टिंग: थर्ड-पार्टी सर्विस (GitHub, Stripe, WeChat Pay आदि) से आने वाले Webhook नोटिफिकेशंस डायरेक्ट अपने लोकल एनवायरनमेंट पर प्राप्त करें और तुरंत डिबग करें।
- API कनेक्शन/इंटीग्रेशन टेस्टिंग: अपने लोकल Backend API को बाहरी Frontend डेवेलपर्स या पार्टनर्स के साथ आसानी से जोड़कर लाइव टेस्टिंग करें।
- मोबाइल डिवाइस टेस्टिंग: मोबाईल डिवाइस पर सीधे लोकल सर्विसेज़ को टेस्ट करें और क्रॉस-डिवाइस कम्पैटिबिलिटी चेक करें।
- टेम्पररी शेयरिंग: तुरंत अपने लोकल फाइल्स या सर्विसेज़ शेयर करें - किसी जटिल सेटअप या सर्वर की आवश्यकता नहीं।
पूर्व आवश्यकताएँ
FRP का कॉन्फ़िगरेशन शुरू करने से पहले यह सुनिश्चित करें:
- ServBay इंस्टॉल व रनिंग है: आपके macOS सिस्टम पर ServBay इंस्टॉल्ड है और आप जिसे पब्लिक एक्सेस पर लाना चाहते हैं (जैसे वेबसाइट), वो सर्विस लोकली ब्राउज़र पर खुल रही है।
- एक पब्लिक FRP सर्वर (
frps
): आपके पास एक पब्लिक IP वाली सर्वर हो, जहाँ FRP सर्वर-साइड (frps
) चल रहा हो। यह गाइड मुख्यतः क्लाइंट-साइड (frpc
) सेटअप पर केंद्रित है। - पब्लिक डोमेन नाम (वैकल्पिक, पर HTTP/HTTPS के लिए अनुशंसित): यदि आप डोमेन के ज़रिए एक्सेस देना चाहते हैं, तो अपने डोमेन का DNS मैनेजमेंट सक्षम करें।
- FRP क्लाइंट (
frpc
) इंस्टॉल: ServBay में FRP क्लाइंट डिफ़ॉल्ट रूप से शामिल नहीं है, आपको इसे अलग से डाउनलोड व इंस्टॉल करना होगा।
सेटअप और FRP क्लाइंट इंस्टॉलेशन
macOS सिस्टम (जहाँ ServBay चलता है) पर FRP क्लाइंट (frpc
) इंस्टॉल करने के स्टेप्स:
FRP क्लाइंट डाउनलोड करें:FRP GitHub Releases पेज पर जाएं। macOS के आपके आर्किटेक्चर के हिसाब से FRP का नवीनतम वर्शन चुनें।
- Apple Silicon (M1/M2/M3 आदि):
frp_*.darwin_arm64.tar.gz
- Intel आर्किटेक्चर:
frp_*.darwin_amd64.tar.gz
- Apple Silicon (M1/M2/M3 आदि):
FRP क्लाइंट इंस्टॉल करें: डाउनलोड किए फाइल को एक्सट्रैक्ट करें और
frpc
executable को सिस्टम PATH (जैसे/usr/local/bin
) में रखें, ताकि यह टर्मिनल से कहीं भी चल सके।ध्यान दें, नीचे कमांड में वर्शन (
0.52.3
) और आर्किटेक्चर (darwin_arm64
) आपके डाउनलोड के अनुसार एडजस्ट करें।bash# मान लें कि आपने frp_0.52.3_darwin_arm64.tar.gz डाउनलोड किया है cd ~/Downloads tar -zxvf frp_0.52.3_darwin_arm64.tar.gz cd frp_0.52.3_darwin_arm64 sudo cp frpc /usr/local/bin/ # (वैकल्पिक) frpc.toml फाइल को होम डायरेक्ट्री में कॉपी कर सकते हैं # cp frpc.toml ~/
1
2
3
4
5
6
7sudo
कमांड के लिए आपको अपनी यूज़र पासवर्ड डालना होगा।इंस्टॉलेशन वेरिफाई करें: नया टर्मिनल खोले और चेक करें कि
frpc
सही इंस्टॉल है:bashfrpc -v # अपेक्षित आउटपुट: frpc version 0.52.3
1
2अगर वर्शन दिखता है, इंस्टालेशन सफल है।
FRP क्लाइंट टनल कॉन्फ़िगरेशन
FRP क्लाइंट की सेटिंग मुख्यतः frpc.toml
नामक फाइल द्वारा नियंत्रित होती है (टॉमल फॉर्मेट FRP के नए वर्शन में सलाह दी जाती है)। इसमें आपको यह बताना होता है कि frpc
आपके FRP सर्वर से कैसे जुड़े और ServBay लोकल सेवाओं को किस प्रकार पब्लिक में मैप करे।
frpc.toml
कॉन्फ़िगरेशन फाइल व्याख्या
यहाँ एक बेसिक frpc.toml
का उदाहरण है:
toml
# frpc.toml - FRP क्लाइंट कॉन्फ़िगरेशन फाइल उदाहरण
# [common] सेक्शन: क्लाइंट-टू-सर्वर कनेक्शन सेटिंग
serverAddr = "your-frps-server.com" # FRP सर्वर का पब्लिक IP/डोमेन नाम
serverPort = 7000 # सर्वर पोर्ट (डिफ़ॉल्ट 7000)
# ऑथेंटिकेशन सेटिंग (टोकन की सलाह)
auth.method = "token"
auth.token = "your_authentication_token" # सर्वर से मेल खाता टोकन
# वैकल्पिक: TLS एनेबल करें
# tls_enable = true
# [[proxies]] सेक्शन: एक या एक से ज़्यादा प्रॉक्सी टनल्स की सेटिंग
[[proxies]]
name = "my-web-service" # प्रॉक्सी का यूनिक नाम
type = "http" # प्रॉक्सी टाइप: http, https, tcp, udp आदि
localIP = "127.0.0.1" # लोकल सर्विस IP (आमतौर पर 127.0.0.1)
localPort = 80 # लोकल सर्विस पोर्ट (ServBay HTTP आमतौर पर 80)
customDomains = ["servbay.your-domain.com"] # पब्लिक डोमेन (http/https के लिए)। **इस डोमेन का DNS आपके FRP सर्वर की ओर पॉइंट होना चाहिए।**
# ज़रूरत अनुसार अतिरिक्त प्रॉक्सी भी [[proxies]] में जोड़ सकते हैं
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
कॉन्फ़िगरेशन | सेक्शन | विवरण |
---|---|---|
serverAddr | [common] | FRP सर्वर का पब्लिक IP या डोमेन। |
serverPort | [common] | क्लाइंट कनेक्शन के लिए सर्वर पोर्ट, वैल्यू अपने सर्वर के हिसाब से रखें। |
auth.method | [common] | सर्वर-टू-क्लाइंट ऑथ मेथड — आमतौर पर token । |
auth.token | [common] के अंदर | सर्वर के टोकन जैसा कॉन्फ़िगर करें, गुप्त रखें। |
tls_enable | [common] | TLS चैनल एनेबल करें - सुरक्षा के लिए अनुशंसित। |
[[proxies]] | रूट लेवल | एक या अधिक प्रॉक्सी टनल के लिए सूची। |
name | [[proxies]] | यूनिक प्रॉक्सी नाम। सेविस का सुधारात्मक नाम रखें। |
type | [[proxies]] | प्रॉक्सी टाइप - http, https, tcp, udp आदि। |
localIP | [[proxies]] | लोकल सर्विस IP (आमतौर पर 127.0.0.1)। |
localPort | [[proxies]] | लोकल सर्विस पोर्ट (जैसे—HTTP:80, HTTPS:443, MySQL:3306, PostgreSQL:5432 आदि)। |
remotePort | [[proxies]] | (केवल tcp /udp के लिए) — पब्लिक पोर्ट जिस पर सर्वर ट्रैफिक फॉरवर्ड करेगा। |
customDomains | [[proxies]] | (केवल http /https प्रकार के लिए) — डोमेन की सूची, इनका DNS पास के डोमेन/ IP पर पॉइंट होना चाहिए। |
subdomain | [[proxies]] | (केवल http /https और सर्वर पर subdomain_host सेट हो तब) — सब डोमेन सेट करें। |
[proxies.plugin] | [[proxies]] | विशेष प्लगइन के लिए, जैसे HTTPS2HTTPS आदि। |
hostHeaderRewrite | [proxies.plugin] या [[proxies]] | HTTP हेडर में Host वैल्यू री-राइट करें — ServBay में हर साइट अपने डोमेन से डिस्पैच होती है, इसलिए ज़रूरी है। |
खास उदाहरण: ServBay HTTPS वेबसाइट को पब्लिक डोमेन पर मैप करना
ServBay लोकल वेबसाइट डिफ़ॉल्ट रूप से HTTPS के साथ कॉन्फ़िगर होती है और SSL सर्टिफिकेट ServBay खुद मैनेज करता है। FRP के ज़रिए HTTPS सर्विस के लिए आम तौर पर https
टाइप और hostHeaderRewrite
का इस्तेमाल करते हैं, ताकि वर्चुअल होस्टिंग सही रहे।
मान लीजिए आपके पास servbay.test
नामक लोकल वेबसाइट है, इसे公网域名 (जैसे test-frp.servbay.app
) पर FRP के माध्यम से उपलब्ध कराना है। सुनिश्चित करें कि आपका पब्लिक डोमेन DNS पर FRP सर्वर (frps.servbay.demo
) के पब्लिक IP पर सही सेट है।
frpc.toml
(जैसे होम डायरेक्ट्री में ~/frpc.toml
) में निम्न सेटिंग का प्रयोग करें:
toml
# frpc.toml उदाहरण - ServBay HTTPS वेबसाइट मैप करना
# [common]: FRP सर्वर से कनेक्शन सेटिंग
serverAddr = "frps.servbay.demo" # अपने FRP सर्वर का एड्रेस डालें
serverPort = 7000 # अपने फ्रप सर्वर पोर्ट के अनुसार अपडेट करें
auth.method = "token"
auth.token = "servbay_demo_token" # अपने सर्वर के अनुसार सेट करें
# सुरक्षा के लिए TLS एनेबल करें
tls_enable = true
# [[proxies]]: ServBay HTTPS वेबसाइट को मैप करें
[[proxies]]
name = "servbay-website-https"
type = "https"
# यहाँ वह पब्लिक डोमेन डालें जो DNS पर आपके FRP सर्वर पर पॉइंट हो
customDomains = ["test-frp.servbay.app"]
localIP = "127.0.0.1"
localPort = 443
# Host हेडर री-राइट ताकि ServBay में सही वेबसाइट डिस्पैच हो
hostHeaderRewrite = "servbay.test"
# वैकल्पिक: प्रत्येक अनुरोध में कस्टम हेडर सेट करें
[proxies.requestHeaders.set]
x-from-where = "frp-tunnel"
1
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
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
serverAddr
, serverPort
, auth.token
, customDomains
, और hostHeaderRewrite
को अपने हिसाब से अपडेट करें।
hostHeaderRewrite
क्यों ज़रूरी है: ServBay वेब सर्वर (जैसे Nginx या Caddy) पर आपकी वेबसाइट Host हेडर के आधार पर डिस्पैच होती है। FRP में मूल अनुरोध का Host पब्लिक डोमेन होता है (test-frp.servbay.app
), जो ServBay में कॉन्फ़िगर्ड लोकल डोमेन (servbay.test
) से अलग है। री-राइट न करें तो 404 या डिफ़ॉल्ट पेज मिल सकता है।
FRP क्लाइंट सर्विस स्टार्ट करें
frpc.toml
तैयार होने के बाद टर्मिनल में संबंधित डायरेक्ट्री में जाकर—या फुल पाथ देकर—FRP क्लाइंट शुरू करें:
bash
# अगर frpc.toml करंट फोल्डर में है
frpc -c frpc.toml
# या यदि यूज़र होम डायरेक्ट्री में है:
# frpc -c ~/frpc.toml
1
2
3
4
5
2
3
4
5
इससे क्लाइंट टनल बन जाएगा, और लॉग्स सामने दिखने लगेंगे।
यदि बैकग्राउंड में चलाना हो तो nohup
का उपयोग करें:
bash
nohup frpc -c ~/frpc.toml &
1
nohup
के मामले में आउटपुट nohup.out
में जाता है। macOS में launchctl
से भी सर्विस मैनेज की जा सकती है, जिसे यहां विस्तार में नहीं दिया गया है।
सर्विस वैलिडेशन व लॉग्स
सर्विस वैलिडेशन
frpc
सफलतापूर्वक चल रहा हो तो अपने ब्राउज़र में frpc.toml
में सेट पब्लिक डोमेन (जैसे https://test-frp.servbay.app
) पर जाएं और देखें:
- पेज सही लोड होता है, कोई कनेक्शन या सर्टिफिकेट एरर नहीं।
- HTTP 200 या अपेक्षित स्टेटस कोड मिलता है।
- वेबसाइट का आउटपुट ServBay लोकल एक्सेस के समकक्ष है।
- HTTPS चालू है, ब्राउज़र में लॉक आइकन है और सर्टिफिकेट वैध है।
लॉग डायग्नोस्टिक्स
FRP क्लाइंट का लॉग समस्या निवारण के लिए मुख्य है। frpc -c frpc.toml
से लॉग्स टर्मिनल में दिखती हैं।
डिबग मोड में अधिक विस्तार के लिए:
bash
frpc -c frpc.toml --log_level debug
1
यदि frpc.toml
में log_file
सेट है (जैसे log_file = "/var/log/frpc.log"
), तो लॉग उस फाइल में जाएगी। रियल-टाइम मॉनिटरिंग के लिए:
bash
tail -f /path/to/your/frpc.log
1
आम समस्याएँ व समाधान
समस्या आने पर निम्न तालिका में समाधान देखें:
समस्या | समाधान |
---|---|
FRP सर्वर से ऑथ फेल | [common] में auth.token और auth.method सर्वर सेटिंग से मेल खाते हैं या नहीं देखें। सर्वर लॉग्स भी चेक करें। |
पब्लिक डोमेन एक्सेस या DNS एरर | customDomains में DNS सही पब्लिक IP पर पॉइंट हो रहा है या नहीं, ping या ऑनलाइन DNS टूल्स से जांचें। |
पब्लिक डोमेन पर FRP वेलकम पेज | DNS सही है पर FRP सर्वर मैपिंग नहीं कर रहा है। customDomains और type (http/https ) सही हैं या नहीं, सर्वर की डोमेन अलाउ सेटिंग भी जांचें। |
लोकल पोर्ट बिजी या सर्विस डाउन | ServBay चालू है व सेविस सही पोर्ट पर है या नहीं देखें। lsof -i :PORT से पोर्ट की स्टेट जाँचें। |
टनल बार-बार डिस्कनेक्ट | लोकल या FRP सर्वर पर नेटवर्क स्थिरता चेक करें। [common] में heartbeat_timeout=30 या pool_count बढ़ा सकते हैं। सर्वर रिसोर्सेस की स्थिति जांचें। |
HTTP पर जा रहे हैं, ब्राउज़र HTTPS पर भेजता है | Nginx/Caddy में ऑटो-रिडायरेक्ट सेटिंग देखें। यदि HTTP एक्सपोज़ करना हो तो type="http" । यदि HTTPS खुलवाना हो तो type="https" और सर्टिफिकेट सही सेट करें। |
HTTPS सर्टिफिकेट एरर | यदि ServBay का सर्टिफिकेट सेल्फ-साइन्ड या अनट्रस्टेड है, ब्राउज़र चेतावनी देगा। लोकल मशीन पर ServBay CA इंस्टॉल करें, या FRP सर्वर की ओर से सही वैध सर्टिफिकेट सेट करें। |
404 एरर | hostHeaderRewrite में सही लोकल डोमेन (जैसे servbay.test ) है या नहीं देखें। |
FRP सर्वर पर फायरवॉल ब्लॉक | FRP सर्वर के पब्लिक पोर्ट (7000 आदि) और सर्विस पोर्ट (HTTP/HTTPS/TCP/UDP आदि) खोलें। |
लोकल फायरवॉल ब्लॉक | macOS फायरवॉल में frpc के आउटबाउंड ट्रैफिक और लोकल सर्विस पोर्ट (आमतौर पर 127.0.0.1) ब्लॉक न हो। |
लॉग में कनेक्शन सफल पर एक्सेस फेल | सर्वर पर कन्फिग और नेटवर्क (फायरवॉल, मैपिंग आदि) चेक करें, FRP सर्वर लॉग्स भी देखें। |
ServBay + FRP के फायदे व सुरक्षा सुझाव
FRP के साथ ServBay डेवेलपर्स को देता है:
- मल्टी-प्रोटोकॉल सपोर्ट: HTTP, HTTPS, TCP, UDP, आदि सभी प्रकारों की सपोर्ट—आप अपने DB (MySQL, PostgreSQL, MongoDB), Redis, SSH आदि को भी सुरक्षित रूप से एक्सपोज़ कर सकते हैं।
- फ्लेक्सिबल कंफिगरेशन: साधारण TOML फाइल से कई सेवाएँ एक्सपोज़ कर सकते हैं।
- ओपन-सोर्स व फुल-कंट्रोल्ड: FRP पूरी तरह ओपन-सोर्स है, आपको किसी थर्ड-पार्टी पर निर्भर नहीं रहना।
- सुरक्षा: Auth Token, TLS एन्क्रिप्शन (tls_enable = true), और ServBay के SSL मैनेजमेंट की मदद से सिक्योर चैनल बना सकते हैं।
सुरक्षा के लिए ध्यान दें:
- TLS एनेबल करें:
[common]
सेक्शन मेंtls_enable = true
सेट करें। - मजबूत टोकन का प्रयोग: मजबूत, जटिल
auth.token
सेट करें और समय-समय पर बदलें। - सिर्फ ज़रूरत की सर्विस एक्सपोज़ करें: केवल उन्हीं सर्विसेज़ को पब्लिक करें, जो जरूरी हों।
- IP की बजाय डोमेन इस्तेमाल करें: HTTP/HTTPS के लिए
customDomains
के साथ डोमेन नाम से एक्सेस करवाएं। - FRP सर्वर की सुरक्षा: FRP सर्वर को सुरक्षित रखें, केवल जरूरी पोर्ट्स खोलें।
- एक्सेस कंट्रोल लागू करें: संभव हो तो IP बेस्ड एक्सेस रिस्ट्रिक्शन या অ্যाडवांस्ड पॉलिसीज़ लागू करें।
इन स्टेप्स के साथ आप ServBay लोकल डेवेलपमेंट सर्विसेज़ को FRP के ज़रिए इंटरनेट पर आसानी, लचीलापन और सुरक्षा का ध्यान रखते हुए एक्सपोज़ कर सकते हैं।