群晖(Docker Compose)配置 frp 服务

为了方便远程电脑,访问自己电脑上的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
#和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 配置:

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
#外网能访问的地址,例如群晖域名+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 将命令注册为系统服务,通过服务自动启动。


群晖(Docker Compose)配置 frp 服务
https://blog.mybatis.io/post/56b33e5d.html
作者
Liuzh
发布于
2024年8月26日
许可协议