群晖内网穿透

内网穿透需要两部分:frpsfrpc

Frps

安装在中转服务器端的frps,这里用docker compose来安装:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
version: "3.9"
services:
frps:
image: snowdreamtech/frps:latest
ports:
- 7000:7000
# - 7001:7001
volumes:
- ./frps/frps.ini:/etc/frp/frps.ini
- ./frps/frps.log:/etc/frp/frps.log
environment:
- TZ=Asia/Shanghai
restart: unless-stopped
container_name: frps

这里挂载到 ./frps/ 的文件 frps.ini 需要提前创建,填入以下内容:

1
2
3
4
5
6
7
8
[common]
bind_port = 7000 ## frpc 连接端口,可修改
dashboard_port = 7001 ## frps 后台面板端口,可修改
vhost_https_port = 6998 ## 默认的 https 端口,可修改
dashboard_user = admin ## 后台面板用户名,可修改
dashboard_pwd = password ## 用户密码,可修改
token = token ## 验证用的token,可修改
enable_prometheus = true ## 不知道干啥用的,留着吧

之后启动容器,frps部分结束

Frpc

安装在服务器端的frpc,这里也是用docker compose来安装:

1
2
3
4
5
6
7
8
9
frpc:
image: snowdreamtech/frpc:latest
network_mode: host
volumes:
- ./frpc/frpc.ini:/etc/frp/frpc.ini
environment:
- TZ=Asia/Shanghai
restart: unless-stopped
container_name: frpc

同样也是先创建好 frpc.ini 再启动容器。填入以下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[common]
server_addr = 192.xxx.xxx.xxx ## 你的服务端ip,也可以是域名
server_port = 7000 ## 需要和服务端 bind_port 一致
token = token ## 需要和服务端 token 一致


[plex]
type = tcp
local_ip = 127.0.0.1
local_port = 32400
remote_port = 31000
custom_domains = plex.xxx.xxx #有域名的话,可以填进来

[plex2]
type = tcp
local_ip = 127.0.0.1
local_port = 32402
remote_port = 31002
custom_domains = plex2.xxx.xxx #有域名的话,可以填进来
启动容器,就完事了。

Nginx

简单地用 nginx 反代一下,就不用暴露所有端口了!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
server {
listen 80;
listen 443 ssl http2;
ssl 部分省略
server_name plex.xxx;
location / {
proxy_pass http://frps:31000;
proxy_ssl_server_name on;
proxy_ssl_name $host;
proxy_set_header Proxy-Connection "";
proxy_set_header Host $http_host;
proxy_http_version 1.1;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header cookie $http_cookie;
}
}

然后就能用啦!


群晖内网穿透
https://wiki.himiku.com/archives/nas-frp.html
作者
mikusa
发布于
2023年1月24日
更新于
2023年8月19日
许可协议