ServBay에서 frp 리버스 프록시 서비스 설정 가이드
frp(Fast Reverse Proxy)는 고성능 리버스 프록시 애플리케이션으로, 로컬 네트워크 서비스를 안전하게 공용 인터넷에 노출할 수 있게 해줍니다. ServBay는 frp 클라이언트(frpc) 기능을 통합하여, 여러분이 직접 운영하는 frp 서버(frps)에 연결하고, ServBay에서 운영 중인 로컬 웹사이트를 맞춤 도메인을 통해 외부에서 접속할 수 있게 지원합니다. 이 방식은 터널링 서버에 대한 완전한 제어권을 제공합니다.
본 가이드는 ServBay에서 frp 클라이언트를 설정하고, frps 서버에 연결하는 방법을 단계별로 설명합니다.
개요
ServBay의 타사 터널링 서비스와 달리, frp를 사용하려면 먼저 별도의 서버에 frps 서버를 직접 구축 및 설정해야 합니다. ServBay는 frpc 클라이언트 역할을 하여 로컬 사이트의 트래픽을 frps 서버를 거쳐 공용 인터넷으로 전달합니다. 이 방식은 터널링 설정에 높은 커스터마이징과 제어가 필요한 개발자에게 적합합니다.
주요 사용 사례
- 터널링 서버 완전 제어: frps 서버의 설정, 보안, 성능 모두를 직접 제어할 수 있습니다.
- 맞춤 도메인 및 SSL 사용: 소유한 도메인에 자유롭게 로컬 프로젝트를 연결하고, ServBay가 관리하는 ACME SSL 인증서를 바로 적용할 수 있습니다.
- 고급 네트워킹 설정: frp는 다양한 프록시 유형과 고급 네트워크 구성을 지원해 복잡한 요구에도 대응할 수 있습니다.
- 온프레미스(프라이빗) 배포: 서드파티 터널 서비스 의존이 불가한 환경에 적합합니다.
사전 준비 사항
- ServBay 설치: macOS 시스템에 ServBay가 정상적으로 설치되고 동작 중이어야 합니다.
- 자체 호스팅
frps
서버 구비:- 공용 IP로 접근 가능한 서버가 필요하며,
frps
가 성공적으로 설치 및 구동되어 있어야 합니다. frps
서버의 공인 IP 주소 또는 도메인명을 기록해둡니다.frps
설정 파일(frps.toml
또는frps.ini
)에서 지정한bindPort
(클라이언트-서버 통신 포트)와token
(인증 토큰)을 기록해둡니다.
- 공용 IP로 접근 가능한 서버가 필요하며,
- 도메인 및 DNS 설정:
- 공용 도메인(예:
your-frp-server.com
)이 있어야 하며, DNS A 레코드를 frps 서버의 퍼블릭 IP로 지정해야 합니다. 이후 해당 도메인으로 로컬 사이트에 접속할 수 있습니다.
- 공용 도메인(예:
- ServBay의 ACME SSL 인증서:
- HTTPS를 통해 외부 도메인에 접근하려면, ServBay의 SSL Certificates 기능에서 해당 외부 도메인용 ACME SSL 인증서를 미리 발급받아야 합니다. 예를 들어,
project.your-frp-server.com
으로 사이트를 노출할 계획이라면, 그 도메인에 대해 인증서를 신청해야 합니다.
- HTTPS를 통해 외부 도메인에 접근하려면, ServBay의 SSL Certificates 기능에서 해당 외부 도메인용 ACME SSL 인증서를 미리 발급받아야 합니다. 예를 들어,
- 다수 서브도메인 및 SSL 인증서:
- 여러 서브도메인을 사용하려면 매번 DNS A 레코드를 추가하지 않고, 와일드카드(
*
)를 사용할 수 있습니다:*.your-frp-server.com
A 레코드를 frps 서버의 퍼블릭 IP로 등록합니다. ServBay에서 와일드카드 ACME SSL 인증서를 신청할 때는your-frp-server.com, *.your-frp-server.com
을 입력(와일드카드 항목은 반드시 마지막에, 쉼표로 구분)하여 신청하세요. 이후 ServBay에서 다양한 2차 도메인을 자유롭게 추가하고 하나의 인증서를 공유할 수 있습니다. - 이 방법을 활용하면 ServBay에서
company-project.your-frp-server.com
,personal.your-frp-server.com
,customer-1.your-frp-server.com
등 원하는 서브도메인으로 외부 서비스가 바로 가능하며, 추가 A 레코드 설정이 필요하지 않습니다.
- 여러 서브도메인을 사용하려면 매번 DNS A 레코드를 추가하지 않고, 와일드카드(
설정 단계
1. ServBay에서 frp 패키지 설치
- ServBay 애플리케이션을 엽니다.
- 왼쪽 내비게이션 바에서 **소프트웨어 패키지(Packages)**를 클릭합니다.
- 패키지 목록에서
frp
를 찾습니다. frp
옆의 설치 버튼을 클릭합니다.- 설치가 완료되었더라도 아직 설정되지 않은 상태이므로, frp 서비스를 바로 시작하려 하면 실패할 수 있습니다(정상 현상입니다).
2. frps
서버 및 설정 준비
공용 서버에 직접 frps
를 설치하고 실행해야 합니다. ServBay는 최신 frp 버전에 적합한 frps.toml
기본 설정 템플릿을 자동 생성해주므로 참고할 수 있습니다.
ServBay 내 Tunnel -> frp로 이동합니다.
frp server config (frps.toml) 옆의 드롭다운 혹은 펼치기 아이콘을 클릭합니다.
ServBay는 다음과 비슷한 예시
frps.toml
설정을 보여줍니다:toml# ServBay에서 자동 생성한 frps 설정 파일은 # 서버 환경에서 바로 사용할 수 있습니다. # 필요에 따라 아래 설정 값을 조정하세요. 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 = 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중요 설정 설명:
bindPort
: frpc와 frps가 통신하는 포트입니다. 반드시 서버 방화벽에서 해당 포트를 개방하세요. frps 서버는 해당 포트를 외부 IP 제한 등으로 강력하게 보호하는 걸 권장합니다.auth.method = "token"
및auth.token
: 클라이언트 접속 인증에 사용됩니다. 반드시 복잡한 자신만의 암호로 설정하세요.vhostHTTPPort = 80
,vhostHTTPSPort = 443
: frps가 HTTP, HTTPS 가상 호스트 요청을 Listen하는 포트입니다.- [중요] ServBay는 frps가 80/443 포트를 각각 vhostHTTPPort, vhostHTTPSPort로 사용하는 환경에 최적화되어 있습니다. 이 경우, ServBay가 발급한 ACME SSL 인증서를 frps로 바로 전달해 외부 도메인 HTTPS 접속이 원활합니다.
- 만약 80/443 포트를 사용할 수 없어(이미 다른 서비스가 해당 포트를 점유하는 경우 등) 8080/8443 등 대체 포트를 써야 한다면, 반드시 frps 앞단에 추가 리버스 프록시 서버(예: Nginx, Caddy)를 배치해서, 공용 80/443을 리버스 프록시가 수신/종단하고 내부적으로만 frps의 vhost 포트로 포워딩해야 합니다. 이 경우 SSL 인증서는 프록시가 처리하게 됩니다.
log.to
: frps 로그 파일 경로입니다.- 대쉬보드 설정(
webServer.port
등): 선택사항이며, frps의 대쉬보드 UI 접속용입니다.
생성된 설정 파일을 복사해 frps 서버로 전송 후,
frps.toml
(또는 frps 버전 및 환경에 따라frps.ini
)로 저장, 주요 설정 파라미터를 실제 환경에 맞게 수정하세요.frps 서버를 기동합니다.
3. ServBay에서 frp 클라이언트 설정
이제 ServBay로 돌아가 frp 클라이언트(frpc)의 연결 정보를 설정합니다.
Tunnel -> frp로 이동합니다.
다음의 frps 서버 연결 정보를 입력합니다:
- Server Address (서버 주소): frps 서버의 퍼블릭 도메인 또는 IP(예:
my.test.frp.server.host
)를 입력합니다. - Server Port (서버 포트): frps.toml에 설정한
bindPort
(예:12345
)를 입력합니다. - Auth Token (인증 토큰): frps.toml의
auth.token
(예:myserverpassword
)을 입력합니다.
- Server Address (서버 주소): frps 서버의 퍼블릭 도메인 또는 IP(예:
터널 매핑 규칙을 설정합니다:
- Local Domain (로컬 웹사이트): 드롭다운에서 frp로 외부 노출할 ServBay 내 로컬 사이트(예:
servbay.demo
)를 선택합니다. - External Domain (외부 도메인): 외부 접속시 사용할 도메인(예:
test.ks.do
)을 입력합니다. 해당 도메인의 DNS A 레코드는 frps 서버 IP로 이미 지정되어 있어야 합니다.- 중요: ServBay의 다른 Tunnel(예:
Ngrok
,Cloudflared
)과 달리, 여기서는 완전한 도메인명을 반드시 직접 입력해야 합니다.
- 중요: ServBay의 다른 Tunnel(예:
- ACME Certificates (ACME 인증서): 드롭다운에서 위 External Domain에 대해 ServBay에서 발급받은 ACME SSL 인증서를 선택합니다(예:
test.ks.do
용 인증서).- 중요: 외부 도메인에 HTTPS로 접근하려면 반드시 올바른 인증서를 설정해야 합니다. ServBay는 인증서 정보를 frpc에 전달하며, frps는 해당 정보로 HTTPS 요청을 처리합니다. 즉, frps에서는 별도의 외부 도메인 SSL 인증서를 따로 구성하지 않아도 되며, ServBay가 이를 자동 관리합니다.
- Local Domain (로컬 웹사이트): 드롭다운에서 frp로 외부 노출할 ServBay 내 로컬 사이트(예:
여러 터널 추가:
- 여러 개의 로컬 사이트나 외부 도메인에 대해 각각 터널을 만들려면, 기존 터널 우측
+
(플러스) 버튼을 눌러 추가 설정할 수 있습니다.
- 여러 개의 로컬 사이트나 외부 도메인에 대해 각각 터널을 만들려면, 기존 터널 우측
4. 설정 저장 및 frp 서비스 기동
- 모든 설정이 완료되면 우측 하단의 Save(저장) 버튼을 클릭합니다.
- ServBay는 frpc 설정을 저장하고 frp 서비스를 바로 실행 시도합니다.
- Tunnel 목록의 frp 우측 상태등을 확인합니다. 설정이 정상이고 frps 서버에 성공적으로 연결되었다면 초록색으로 점등되어야 정상적으로 실행 중인 상태입니다.
- 접속 테스트:
- 이제 설정한
External Domain
(예:https://test.ks.do
)으로 외부 인터넷에서 로컬 웹사이트에 접근할 수 있습니다. - 도메인 옆의 복사 아이콘 또는 브라우저 아이콘을 눌러 바로 테스트할 수 있습니다.
- 이제 설정한
유의사항
- frps 서버 운영 및 보안 관리: frps의 설치, 설정, 보안 강화 및 유지보수는 전적으로 사용자의 책임입니다.
- frps bindPort의 보안: 반드시 강력한 인증 토큰을 사용하고, 방화벽 등으로 허용 IP 제한 등 접근 제어를 하세요.
- vhostHTTPPort/vhostHTTPSPort 선택:
- frps가 80/443 포트를 직접 가상 호스트로 사용하는 환경을 적극 권장합니다. 이렇게 해야 ServBay의 ACME SSL 인증서가 쉽게 적용됩니다.
- 부득이 별도 포트(80/443 이외)를 써야 한다면, 서버 앞단에 Nginx/Caddy 등 리버스 프록시로 공용 80/443을 Listen시키고, 내부적으로 frps vhost 포트로 포워드하세요. 이때 SSL은 프록시에서 처리합니다.
- ACME 인증서 필수: HTTPS로 외부에서 접근하려면 반드시 도메인별로 ServBay에서 ACME 인증서를 발급받아야 하며, 터널 설정 시 올바른 인증서를 선택해야 합니다.
- DNS 전파:
External Domain
의 DNS A 레코드가 frps 서버 IP로 올바로 연결되었는지, 그리고 전 세계에 DNS가 제대로 반영되었는지 확인하세요.
자주 묻는 질문 (FAQ)
- Q: ServBay의 frp 서비스 시작에 실패하고, 상태등이 빨간색 혹은 주황색입니다. 어떻게 해야 하나요?
- A: ServBay에서 설정한 frp의
Server Address
,Server Port
,Auth Token
이 frps.toml의bindPort
,auth.token
과 정확히 일치하는지 확인하세요. frps 서버가 정상 실행 중인지, 방화벽에서 bindPort 접근이 허용되는지 확인하고, 서비스 로그를 확인해 상세 원인을 점검하세요.
- A: ServBay에서 설정한 frp의
- Q: External Domain으로 접속은 되나, HTTP로만 접속되고 HTTPS가 안됩니다.
- A: frp 설정에서 External Domain에 대해 올바른 ACME 인증서를 선택했는지 확인하세요. frps.toml의
vhostHTTPSPort
설정값도 실제 HTTPS 요청 Listen 포트(추천: 443)로 맞게 되어야 합니다.
- A: frp 설정에서 External Domain에 대해 올바른 ACME 인증서를 선택했는지 확인하세요. frps.toml의
- Q: frps 서버가 80/443이 아닌 포트로만 vhost를 열 수 있을 때 SSL 처리는 어떻게 하나요?
- A: 이 경우 frps 서버에 별도의 프록시(Nginx/Caddy 등)를 배치해 80/443 Listen 및 SSL 인증서 적용 후, 내부적으로만 frps의 vhostHTTPSPort로 트래픽을 포워드해야 합니다. 이때 ServBay frp 설정의 ACME Certificates 필드는 직접적으로 SSL을 처리하지 않고, 전적으로 서버측 프록시가 SSL을 담당합니다.
- Q: ServBay에서 생성한 frps.toml 파일과 기존의 frps.ini 포맷이 다릅니다.
- A: frp는
.ini
에서.toml
로 설정 포맷을 이관 중입니다. ServBay 제공 템플릿은.toml
기준이며, 구버전이나 ini 포맷을 선호할 경우 frp 공식 문서를 참고해 변환 및 설정하면 됩니다. 주요 핵심 파라미터의 의미는 동일합니다.
- A: frp는
요약
ServBay는 frp 클라이언트 통합을 통해, 고도의 커스터마이징과 내부망 제어가 필수인 macOS 개발자를 위한 막강한 터널링 솔루션을 제공합니다. 자체적으로 frps 서버를 구축하고, ServBay의 직관적인 frpc 설정 및 ACME SSL 인증서 관리를 결합함으로써, 로컬 개발 웹사이트를 안전하고 유연하게 외부에 공유할 수 있습니다. 반드시 frps와 frpc의 각종 포트 및 보안 설정을 꼼꼼하게 검토하여, 서비스의 안정성과 보안을 보장하세요.