群晖(Docker Compose)配置 frp 服务
为了方便远程电脑,访问自己电脑上的ComfyUI等服务,配置了 frp 服务。
配置 frp 服务后,发现群晖中的一些服务也可以 stcp 安全的暴露出来。
直接在群晖通过 Docker Compose 方式部署 frps 和 frpc,访问者通过 frpc 安全访问暴露的服务。
使用的群晖的 Container Manager,可以先在 File Station 的 docker 下面创建 frp 目录,在目录中写好 frps.toml 和 frpc.toml 配置文件。
frps.toml
先配置服务端。
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 一起部署到群晖更方便。
#和frps可以直接通过名字和端口进行访问
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
配置:
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
是对应的。
#外网能访问的地址,例如群晖域名+ddns
serverAddr = "你的二级域名.synology.me"
#对外暴露的端口
serverPort = 37000
#前面日志用console方便在群晖看,纯客户端还是写文件记录下来方便
log.to = "./frpc.log"
log.level = "trace"
log.maxDays = 3
log.disablePrintColor = true
auth.method = "token"
auth.token = "你的密码"
# frpc role visitor -> frps -> frpc role server
[[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 将命令注册为系统服务,通过服务自动启动。