คู่มือการตั้งค่าบริการรีเวิร์สพร็อกซี frp ใน ServBay
frp (Fast Reverse Proxy) เป็นเครื่องมือรีเวิร์สพร็อกซีประสิทธิภาพสูง ที่ช่วยให้คุณสามารถเปิดเผยบริการในเครือข่ายท้องถิ่นอย่างปลอดภัยไปยังอินเทอร์เน็ตสาธารณะได้ ServBay ได้ผสานการทำงานของไคลเอนต์ frp (frpc) เพื่อให้คุณเชื่อมต่อกับเซิร์ฟเวอร์ frp (frps) ที่คุณจัดการเอง และใช้โดเมนที่คุณกำหนดในการเข้าถึงเว็บไซต์ท้องถิ่นที่โฮสต์บน ServBay วิธีนี้ทำให้คุณควบคุมเซิร์ฟเวอร์อุโมงค์ของคุณได้อย่างเต็มที่
คู่มือนี้จะอธิบายอย่างละเอียดถึงวิธีตั้งค่าไคลเอนต์ frp ใน ServBay และเชื่อมต่อกับเซิร์ฟเวอร์ frps ของคุณ
ภาพรวม
แตกต่างจากบริการอุโมงค์ที่โฮสต์ให้ใน ServBay อื่น ๆ การใช้ frp นั้น จำเป็นต้องตั้งค่าและเปิดใช้งาน frps server บนเซิร์ฟเวอร์ของคุณเองล่วงหน้า ServBay จะทำหน้าที่เป็นไคลเอนต์ frp (frpc) ในการส่งข้อมูลจากเว็บไซต์ท้องถิ่นของคุณไปสู่ frps server เพื่อเผยแพร่ต่อสาธารณะ เหมาะกับนักพัฒนาที่ต้องการความยืดหยุ่นและการควบคุมอุโมงค์ในระดับสูง
กรณีการใช้งาน
- ควบคุมเซิร์ฟเวอร์อุโมงค์ได้โดยสมบูรณ์: คุณมีอิสระปรับแต่งและจัดการความปลอดภัยและประสิทธิภาพของ frps server ของคุณเองได้เต็มที่
- ใช้งานโดเมนและ SSL ที่กำหนดเอง: กำหนดชื่อโดเมนใดก็ได้สำหรับโปรเจกต์ท้องถิ่นของคุณ และผสานการออก ACME SSL Certificate ที่ ServBay ดูแล ได้อย่างง่ายดาย
- ปรับแต่งโครงข่ายขั้นสูง: frp สนับสนุนหลายประเภทของพร็อกซีและการตั้งค่าขั้นสูงสำหรับเคสที่ซับซ้อน
- โฮสต์ในองค์กร/ส่วนตัว: เหมาะสำหรับผู้ที่ไม่ต้องการพึ่งพาบริการอุโมงค์บุคคลที่สาม
ข้อกำหนดเบื้องต้น
- ติดตั้ง ServBay แล้ว: ตรวจสอบให้แน่ใจว่า macOS ของคุณได้ติดตั้งและรัน ServBay สำเร็จแล้ว
- เซิร์ฟเวอร์
frpsโฮสต์เอง:- คุณต้องมีเซิร์ฟเวอร์ที่สามารถเข้าถึงจากอินเทอร์เน็ตได้ และได้ติดตั้งและรัน
frpsสำเร็จแล้ว - จดบันทึก IP สาธารณะหรือชื่อโดเมนของเซิร์ฟเวอร์
frps - จดบันทึกค่าที่ตั้งในไฟล์คอนฟิกของ
frps(frps.tomlหรือfrps.ini) เช่นbindPort(พอร์ตสำหรับการสื่อสารระหว่าง frpc และ frps) และtoken(รหัสผ่านสำหรับยืนยันตัวตน)
- คุณต้องมีเซิร์ฟเวอร์ที่สามารถเข้าถึงจากอินเทอร์เน็ตได้ และได้ติดตั้งและรัน
- โดเมนและการตั้งค่า DNS:
- คุณต้องมีชื่อโดเมนสาธารณะ (เช่น
your-frp-server.com) และตั้งค่า DNS A Record ชี้ไปที่ IP ของเซิร์ฟเวอร์frpsคุณจะใช้โดเมนนี้ในการเข้าถึงเว็บไซต์ท้องถิ่นภายหลัง
- คุณต้องมีชื่อโดเมนสาธารณะ (เช่น
- ACME SSL Certificate บน ServBay:
- หากต้องการเข้าถึงด้วย HTTPS คุณต้องสร้างขอใบรับรอง ACME SSL สำหรับโดเมนนี้ล่วงหน้าในฟีเจอร์ SSL Certificates ของ ServBay (เช่น หากจะใช้
project.your-frp-server.comก็ต้องขอใบรับรองสำหรับโดเมนนั้น)
- หากต้องการเข้าถึงด้วย HTTPS คุณต้องสร้างขอใบรับรอง ACME SSL สำหรับโดเมนนี้ล่วงหน้าในฟีเจอร์ SSL Certificates ของ ServBay (เช่น หากจะใช้
- หลายโดเมนย่อยและ SSL Certificate:
- หากต้องการใช้หลายโดเมนย่อยโดยไม่ต้องสร้าง A Record หลายอัน สามารถใช้ wildcard ได้: สร้าง A Record แบบ
*.your-frp-server.comชี้ไปที่ IP สาธารณะของfrpsและขอใบรับรอง ACME ที่ครอบคลุม wildcard (ขณะขอใน ServBay กรอกyour-frp-server.com, *.your-frp-server.comในช่อง Domain โดยใส่*เป็นรายการสุดท้าย คั่นด้วย comma ภาษาอังกฤษ) เพียงเท่านี้ก็สามารถเพิ่มโดเมนย่อยใน ServBay ทีหลังได้โดยไม่ต้องสร้างหลาย A Record และแชร์ใบรับรองเดียวกันได้ - ใช้วิธีนี้ร่วมกับ ServBay คุณสามารถกำหนดโดเมนย่อยใด ๆ เช่น
company-project.your-frp-server.com,personal.your-frp-server.com,customer-1.your-frp-server.comได้ทันทีเพื่อเผยแพร่โดยไม่ต้องตั้งค่าซ้ำหลายรอบ
- หากต้องการใช้หลายโดเมนย่อยโดยไม่ต้องสร้าง A Record หลายอัน สามารถใช้ wildcard ได้: สร้าง A Record แบบ
ขั้นตอนการตั้งค่า
1. ติดตั้งแพ็กเกจ frp ใน ServBay
- เปิดแอป ServBay
- ในแถบด้านซ้าย คลิกที่ Packages (แพ็กเกจ)
- ในรายชื่อแพ็กเกจ ค้นหาและเลือก
frp - คลิกปุ่มติดตั้งถัดจาก
frp - หลังติดตั้งเสร็จ เนื่องจากยังไม่ได้ตั้งค่า การพยายามสตาร์ท frp จะล้มเหลว ซึ่งเป็นเรื่องปกติ
2. เตรียมเซิร์ฟเวอร์และตั้งค่า frps ของคุณ
คุณต้องติดตั้งและรัน frps บนเซิร์ฟเวอร์สาธารณะด้วยตัวเอง ServBay สามารถสร้างไฟล์เท็มเพลตคอนฟิก frps.toml (สำหรับ frp เวอร์ชันใหม่) ให้คุณได้เพื่อเริ่มต้น
ที่ ServBay ไปที่ Tunnel -> frp
ค้นหาและคลิกไอคอนลูกศรข้าง frp server config (frps.toml)
ServBay จะแสดงตัวอย่างไฟล์คอนฟิก frps.tomlตัวอย่างเช่น:toml# The frps configuration file automatically generated by ServBay # is intended for direct use on the server. # Please adjust the configuration parameters according # to your specific needs. bindPort = 12345 auth.method = "token" auth.token = "myserverpassword" vhostHTTPPort = 80 vhostHTTPSPort = 443 log.to = "/tmp/frps.log" log.level = "info" log.maxDays = 3 log.disablePrintColor = true # สำหรับเวอร์ชันใหม่ของ frps (เช่น 0.52.0+) ใช้ webServer.port, webServer.addr, webServer.user, webServer.password ตั้งค่าแดชบอร์ด # webServer.port = 7500 # webServer.addr = "0.0.0.0" # webServer.user = "admin" # webServer.password = "admin_password"1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21คำอธิบายการตั้งค่าสำคัญ:
bindPort: พอร์ตที่ frpc จะใช้เชื่อมต่อกับ frps ต้องเปิดพอร์ตนี้ใน firewall ของเซิร์ฟเวอร์ ขอแนะนำให้ป้องกันพอร์ตนี้อย่างเข้มงวด เช่น จำกัดเฉพาะ IP ที่เชื่อถือได้auth.method = "token"กับauth.token: ใช้สำหรับ authenticate การเชื่อมต่อของไคลเอนต์ จำเป็นต้องเปลี่ยนเป็นรหัสผ่านที่แข็งแรงของคุณเองvhostHTTPPort = 80และvhostHTTPSPort = 443: frps จะ listen คำขอ HTTP/HTTPS ที่พอร์ตเหล่านี้- 【สำคัญ】ServBay ถูกปรับแต่งเป็นพิเศษสำหรับกรณีที่ให ้frps ใช้พอร์ต 80 และ 443 เป็น vhostHTTPPort และ vhostHTTPSPort ทำให้ ServBay สามารถส่งต่อ ACME SSL certificate ที่ขอมาจากเครื่องท้องถิ่นโดยตรงให้ frps ใช้งาน
- หากเซิร์ฟเวอร์ frps ของคุณไม่สามารถใช้พอร์ต 80/443 ได้ (เช่น ถูกบริการอื่นยึดพอร์ตอยู่) จำเป็นต้องมีพร็อกซีด้านหน้า เช่น Nginx หรือ Caddy คอยฟัง 80/443 แล้วส่งต่อไปยังพอร์ตที่ frps ใช้งานจริง SSL certificate ในกรณีนี้จะต้องถูกติดตั้งบนพร็อกซีนั้น แทนที่จะใช้การ passthrough จาก ServBay
log.to: ตำแหน่งไฟล์บันทึก log ของ frps- การตั้งค่า Dashboard (เช่น
webServer.port): สำหรับเข้าถึงแดชบอร์ดของ frps เป็นทางเลือก
ก๊อปปี้คอนฟิกที่ได้ไปวางบนเซิร์ฟเวอร์ frps ของคุณ บันทึกในชื่อ
frps.toml(หรือfrps.iniแล้วแต่เวอร์ชัน/ความถนัดของคุณ) และแก้ไขค่าต่าง ๆ ให้ตรงกับความต้องการสตาร์ท frps server ของคุณ
3. ตั้งค่าไคลเอนต์ frp ใน ServBay
กลับมาที่แอป ServBay กำหนดค่าการเชื่อมต่อ frpc ตามนี้
ไปที่ Tunnel -> frp
กรอกข้อมูลเซิร์ฟเวอร์ frps ดังนี้:
- Server Address (ที่อยู่เซิร์ฟเวอร์): กรอกชื่อโดเมนหรือ IP สาธารณะของเซิร์ฟเวอร์ frps (เช่น
my.test.frp.server.host) - Server Port (พอร์ตเซิร์ฟเวอร์): ใส่ค่า
bindPortที่ตั้งในfrps.tomlเช่น12345 - Auth Token (โทเค็นยืนยัน): ใส่
auth.tokenที่ตั้งในfrps.tomlเช่นmyserverpassword
- Server Address (ที่อยู่เซิร์ฟเวอร์): กรอกชื่อโดเมนหรือ IP สาธารณะของเซิร์ฟเวอร์ frps (เช่น
ตั้งค่าการแมปอุโมงค์:
- Local Domain (เว็บไซต์ท้องถิ่น): คลิกดรอปดาวน์เพื่อเลือกเว็บที่โฮสต์อยู่บน ServBay ที่ต้องการเผยแพร่ (เช่น
servbay.demo) - External Domain (โดเมนภายนอก): พิมพ์ชื่อโดเมนที่ต้องการให้ผู้ใช้ภายนอกเข้าถึงเว็บนี้ (เช่น
test.ks.do) โดยโดเมนนี้ต้องมี DNS A Record ชี้ไป IP ของเซิร์ฟเวอร์ frps แล้ว- หมายเหตุสำคัญ: ไม่เหมือน Tunnel อื่น ๆ ใน ServBay (เช่น Ngrok, Cloudflared) ที่นี่คุณต้องกรอกเป็นโดเมนเต็ม
- ACME Certificates (ใบรับรอง ACME): คลิกเมนูเลือกใบรับรอง ACME SSL ที่คุณได้ขอไว้ใน ServBay สำหรับ External Domain ดังกล่าว (เช่น เลือกใบรับรองสำหรับ
test.ks.do)- สำคัญ: หากต้องการใช้ HTTPS เข้าถึง External Domain ต้องเลือกใบรับรองให้ถูกต้อง ServBay จะส่ง certificate นี้ให้ frpc เพื่อใช้กับการตอบสนอง HTTPS ผ่าน frps โดยคุณไม่จำเป็นต้องติดตั้ง SSL เพิ่มบน frps เอง
- Local Domain (เว็บไซต์ท้องถิ่น): คลิกดรอปดาวน์เพื่อเลือกเว็บที่โฮสต์อยู่บน ServBay ที่ต้องการเผยแพร่ (เช่น
เพิ่มอุโมงค์หลายรายการ:
- หากต้องการเผยแพร่หลายเว็บไซต์หรือหลายโดเมน ให้คลิกปุ่ม
+ข้างรายการอุโมงค์เพื่อเพิ่มการตั้งค่าใหม่
- หากต้องการเผยแพร่หลายเว็บไซต์หรือหลายโดเมน ให้คลิกปุ่ม
4. บันทึกและสตาร์ทบริการ frp
- เสร็จสิ้นทุกการตั้งค่า กด Save (บันทึก) ที่มุมขวาล่าง
- ServBay จะบันทึกไฟล์คอนฟิก frpc และพยายามสตาร์ท frp service
- ตรวจสอบไฟแสดงสถานะข้างรายการ
frpในหน้ารายการ Tunnel หากทุกอย่างถูกต้องไฟควรจะเป็นสีเขียว หมายความว่าทำงานปกติ - ทดสอบการเข้าถึง:
- ขณะนี้คุณควรจะเข้าถึงเว็บท้องถิ่นผ่าน External Domain ที่ตั้งค่าไว้ได้จากภายนอก (เช่น
https://test.ks.do) - สามารถคลิกปุ่มคัดลอกลิงก์ หรือเปิดเบราว์เซอร์ที่ไอคอนข้างชื่อโดเมนเพื่อลองได้ทันที
- ขณะนี้คุณควรจะเข้าถึงเว็บท้องถิ่นผ่าน External Domain ที่ตั้งค่าไว้ได้จากภายนอก (เช่น
หมายเหตุสำคัญ
- การดูแลเซิร์ฟเวอร์ frps: คุณต้องรับผิดชอบการติดตั้ง ปรับแต่ง และดูแลความปลอดภัย/บำรุงรักษา frps server ด้วยตัวเอง
- ความปลอดภัยของ
bindPortใน frps: ควรใช้auth.tokenที่แข็งแรง และพิจารณาตั้ง firewall เพื่ออนุญาตเฉพาะ IP ที่เชื่อถือได้เท่านั้นในการเข้าถึง port นี้ - การเลือก
vhostHTTPPortกับvhostHTTPSPort:- แนะนำให้ frps listen ที่พอร์ต 80 กับ 443 โดยตรง เพื่อใช้ฟีเจอร์ passthrough SSL certificate ของ ServBay ได้อย่างง่ายที่สุด
- หาก frps listen ที่พอร์ตอื่น (ไม่ได้ใช้ 80/443) ต้องตั้ง reverse proxy เช่น Nginx หรือ Caddy ด้านหน้าบนพอร์ต 80/443 และตั้งค่าตรงนี้เป็นผู้รับผิดชอบจัดการใบรับรอง SSL แทน
- ความจำเป็นของ ACME certificate: หากต้องการให้ External Domain ใช้งาน HTTPS ต้องขอ certificate ตัวนั้นใน ServBay และเลือกให้ถูกต้องใน frp config
- การเผยแพร่ DNS: ตรวจสอบให้แน่ใจว่า A Record ของ External Domain ได้ชี้ไปที่ IP frps เรียบร้อยและ DNS ได้เผยแพร่ทั่วโลกแล้ว
FAQ (คำถามที่พบบ่อย)
- ถาม: ทำไม frp ใน ServBay สตาร์ทไม่ได้ ไฟเป็นสีแดง/ส้ม?
- ตอบ: ตรวจสอบค่าต่าง ๆ ใน ServBay ว่า
Server Address,Server Port,Auth Tokenตรงกับที่ตั้งไว้ในfrps.tomlหรือไม่ ตรวจสอบว่า frps server ทำงานตามปกติ และพอร์ตbindPortได้รับการเปิด firewall ให้เข้าถึงจากเครื่องที่รัน ServBay ดูบันทึก log ของ frp เพื่อดูรายละเอียดข้อผิดพลาด
- ตอบ: ตรวจสอบค่าต่าง ๆ ใน ServBay ว่า
- ถาม: เข้าถึงผ่าน External Domain ได้ แต่เป็น HTTP ไม่ใช่ HTTPS?
- ตอบ: ให้แน่ใจว่าเลือก ACME certificate ที่ถูกต้องสำหรับ External Domain ในการตั้งค่า frp ของ ServBay และใน
frps.tomlต้องตั้งvhostHTTPSPortให้ถูก (แนะนำใช้ 443)
- ตอบ: ให้แน่ใจว่าเลือก ACME certificate ที่ถูกต้องสำหรับ External Domain ในการตั้งค่า frp ของ ServBay และใน
- ถาม: เซิร์ฟเวอร์ frps ของฉันต้องใช้ vhost port ไม่ใช่ 80/443 จะจัดการ SSL ยังไง?
- ตอบ: ต้องตั้ง reverse proxy (เช่น Nginx หรือ Caddy) ฟังพอร์ต 80/443 บนเครื่อง frps แล้วใช้ certificate ของตัวเอง proxy request ต่อไปยัง frps's vhostHTTPSPort โดย ServBay จะไม่จัดการตรงนี้ให้ certificate ต้องติดตั้งบน reverse proxy
- ถาม: ทำไมไฟล์
frps.tomlที่ ServBay สร้าง กับไฟล์ที่ฉันใช้ (.ini) ถึงไม่เหมือนกัน?- ตอบ: frp อัปเดตฟอร์แมตไฟล์จาก .ini เป็น .toml ServBay ให้เท็มเพลต .toml หากคุณใช้ .ini หรือเวอร์ชันเก่า สามารถแปลงเองโดยอ้างอิงคู่มือ frp หลักได้ ค่าหลัก ๆ จะเหมือนกัน
สรุป
ServBay ให้เครื่องมือทรงพลังสำหรับนักพัฒนา macOS ที่ต้องการควบคุมและปรับแต่งระบบ reverse proxy (ทะลุผ่านเครือข่าย) self-hosted อย่างละเอียด เพียงเปิดใช้เซิร์ฟเวอร์ frps ร่วมกับการตั้งค่า frpc ใน ServBay ผสานการจัดการ ACME SSL certificate คุณก็สามารถแชร์เว็บไซต์ท้องถิ่นของคุณสู่ภายนอกได้อย่างปลอดภัยและยืดหยุ่น อย่าลืมตรวจสอบค่าพอร์ต รหัสผ่าน และความปลอดภัยทั้งฝั่ง frps และ frpc เพื่อประสบการณ์ที่เสถียรและปลอดภัยสูงสุด
