前言

适用条件:无公网IPV4、IPV6的网络环境;域名后想隐藏端口的强迫症

个人建议:采用境外VPS(带宽较大,HK优先,延迟低)

搭建步骤

一、VPS搭建frps、Nginx Proxy Manager

二、家庭服务搭建frpc

三、域名托管A类型指向VPS IPV4地址

四、Nginx Proxy Manager配置反代

第一步:搭建frps、Nginx Proxy Manager

Frps

VPS:路径:/home新建一个/frps和/npm

在frps中添加docker-compose.yml、frps.toml两个文件,并填写下方代码

docker-compose.yml

version: "3.5"
services:
frp:
image: stilleshan/frps
ports:
- "7000:7000"
networks:
- nginx
volumes:
- /home/frps/frps.toml:/frp/frps.toml
restart: always
container_name: frp
networks:
nginx:
external: true

frps.toml

bindAddr = "0.0.0.0"
bindPort = 7000
#kcpBindPort = 7000
quicBindPort = 7000
vhostHTTPPort = 80
vhostHTTPSPort = 443
transport.maxPoolCount = 2000
transport.tcpMux = true
transport.tcpMuxKeepaliveInterval = 60
transport.tcpKeepalive = 7200
transport.tls.force = false
webServer.addr = "0.0.0.0"
webServer.port = 7500
webServer.user = "admin" #需替换,可自定内容
webServer.password = "admin" #需替换,可自定内容
webServer.pprofEnable = false
log.to = "./frps.log"
log.level = "info"
log.maxDays = 3
log.disablePrintColor = false
auth.method = "token"
auth.token = "12345678" #需替换,可自定内容
allowPorts = [
{ start = 10001, end = 50000 } #frps放行端口段10001-50000
]
maxPortsPerClient = 8 #允许放行frpc端口数量,可修改
udpPacketSize = 1500
natholeAnalysisDataReserveHours = 168

cd /home/frps

docker compose up -d

然后就启动容器啦

Nginx Proxy Manager

version: "3.5"
services:
nginx:
image: chishin/nginx-proxy-manager-zh:latest
container_name: nginx
ports:
- "443:443"
- "80:80"
- "81:81"
- "10222:10222"
restart: always
volumes:
- /home/nginx/data:/data
- /home/nginx/letsencrypt:/etc/letsencrypt
environment:
- TZ=Asia/Shanghai
networks:
- nginx
networks:
nginx:
name: nginx

cd /home/nmp

docker compose up -d

部署后访问VPSIP:81即可

第二步:搭建frpc

搭建方式很多,本文使用Docker Compose搭建

同frps,为避免因 frpc.toml 文件的挂载,格式或者配置的错误导致容器无法正常运行并循环重启.请确保先配置好 frps.toml 后在执行启动

frpc.toml

serverAddr = "xx.xx.xx.xx" #你的VPS地址
serverPort = 7000
auth.method = "token"
auth.token = "freefrp.net" #同frpc.toml中auth.token
[[proxies]]
name = "tcp_xxxxx" #自定义服务名称,可复制多个,但后续name、localPort必须不同
type = "tcp" #协议类型,常见为tcp,但也可为http等,详见项目地址
localIP = "192.168.1.2" #你的本地IP,若搭建在nas,则为nas的IP
localPort = 5000 #你的本地服务web端口
remotePort = 12306 #你想反代出去的端口,可自定义,Nginx Proxy Manager中填写此端口
#数值范围为frps.toml中allowPorts放行端口段(本文10001-50000)
[[proxies]]
name = "web2_xxxxx"
type = "https"
localIP = "192.168.1.2"
localPort = 5001
remotePort = 12306
[[proxies]]
name = "tcp1_xxxxx"
type = "tcp"
localIP = "192.168.1.3"
localPort = 22
remotePort = 22222

Docker Compose

services: # 服务定义
frpc: # 服务名称
image: stilleshan/frpc # 镜像来源
container_name: frpc # 容器名称
restart: always # 容器重启策略
privileged: true # 允许容器获得特权
network_mode: host # 宿主机网络模式
volumes: # 挂载卷
- /volume1/docker/AppData/frp/frpc.toml:/frp/frpc.toml # 映射配置文件存储路径

第三步:将二级域名DNS A类型解析至VPS的IP

域名解析

解析一个*给我们vps的这个IP

第四步:配置Nginx Proxy Manager

输入vps ipv4地址:81

打开后注册账号密码 进入web服务

默认账号:[email protected]

默认密码:changeme

申请证书

然后就可以访问了