为了方便远程电脑,访问自己电脑上的ComfyUI等服务,配置了 frp 服务。
配置 frp 服务后,发现群晖中的一些服务也可以 stcp 安全的暴露出来。
直接在群晖通过 Docker Compose 方式部署 frps 和 frpc,访问者通过 frpc 安全访问暴露的服务。
使用的群晖的 Container Manager,可以先在 File Station 的 docker 下面创建 frp 目录,在目录中写好 frps.toml 和 frpc.toml 配置文件。
frps.toml
先配置服务端。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| bindAddr = "0.0.0.0" bindPort = 7000
log.to = "console" log.level = "trace" log.maxDays = 30 log.disablePrintColor = true
auth.method = "token" auth.token = "你的密码"
webServer.addr = "0.0.0.0" webServer.port = 7500 webServer.user = "admin" webServer.password = "admin"
|
其中的 webServer 服务端口、帐号密码可以简单写,访问的时候也会用加密的方式,所以这里简单写也不影响。
frpc.toml
客户端的目的是为了以加密的方式将某个局域网内的服务通过 frps 暴露出去,因为这里要暴露群晖所在的网络,包括群晖的一些服务,以及家里其他电脑上的服务,所以这个客户端和 frps 一起部署到群晖更方便。
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 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
| serverAddr = "frps" serverPort = 7000
log.to = "console" log.level = "trace" log.maxDays = 3 log.disablePrintColor = true
auth.method = "token" auth.token = "你的密码"
webServer.addr = "127.0.0.1" webServer.port = 7400 webServer.user = "admin" webServer.password = "admin"
[[proxies]] name = "home_rdp" type = "stcp" secretKey = "访问密码" localIP = "电脑的IP" localPort = 3389
[[proxies]] name = "comfyui" type = "stcp" secretKey = "访问密码2" localIP = "电脑的IP" localPort = 8188
[[proxies]] name = "frps_admin" type = "stcp" secretKey = "frps" localIP = "frps" localPort = 7500
[[proxies]] name = "frpc_admin" type = "stcp" secretKey = "frpc" localIP = "127.0.0.1" localPort = 7400
|
上面的 [[proxies]]
部分根据自己的需要进行配置即可,访问群晖服务时,需要指定群晖的IP,端口可以配置允许局域网内的其他IP进行访问。
Docker Compose
将上面的 frps.toml 和 frpc.toml 放到 /docker/frp/
目录下面后,就可以在 Container Manager 选择 /docker/frp/
目录创建项目,填入 Docker Compose
配置:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| version: '3' services: frps: image: snowdreamtech/frps:0.59 container_name: frps restart: unless-stopped ports: - "7000:7000" volumes: - /volume1/docker/frp/:/etc/frp/ frpc: image: snowdreamtech/frpc:0.59 container_name: frpc restart: unless-stopped volumes: - /volume1/docker/frp/:/etc/frp/ depends_on: - frps
|
由于 DockerHub 无法正常访问,如果你无法下载这两个镜像,可以找一些可用的mirror,也可以和我私信或邮件联系。
注意上面挂载的 frp
路径,确保和自己的路径一致。
上面服务起来后,正常在 frps:7500
中可以看到 frpc
注册的几个服务,在 frpc:7400
中还可以动态修改配置文件,方便暴露其他的服务。
frpv.toml
接下来就是访问者 visitors 的配置,这里起名为 frpv.toml
,实际上也是 frpc
客户端配置。
访问者的配置和上面的 frpc.toml
是对应的。
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 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
| serverAddr = "你的二级域名.synology.me"
serverPort = 37000
log.to = "./frpc.log" log.level = "trace" log.maxDays = 3 log.disablePrintColor = true
auth.method = "token" auth.token = "你的密码"
[[visitors]] name = "secret_home_rdp_visitor" type = "stcp" serverName = "home_rdp" secretKey = "访问密码" bindAddr = "127.0.0.1" bindPort = 13389
[[visitors]] name = "secret_comfyui_visitor" type = "stcp" serverName = "comfyui" secretKey = "访问密码2" bindAddr = "127.0.0.1" bindPort = 18188
[[visitors]] name = "secret_frps_admin_visitor" type = "stcp" serverName = "frps_admin" secretKey = "frps" bindAddr = "127.0.0.1" bindPort = 17500
[[visitors]] name = "secret_frpc_admin_visitor" type = "stcp" serverName = "frpc_admin" secretKey = "127.0.0.1" bindAddr = "127.0.0.1" bindPort = 17400
|
通过 frpc -c frpv.toml
启动后,就可以通过上面绑定的 bindPort
安全的访问远程的服务了。
如果你喜欢使用桌面端控制 frpc
,可以试试 frpc-desktop,这个工具适合普通用户使用(会用群晖的应该都不算普通用户了)。
如果用 Windows 系统,还可以使用 SrvanyUI 将命令注册为系统服务,通过服务自动启动。