内网穿透需要两部分:frps
和 frpc
。
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 dashboard_port = 7001 vhost_https_port = 6998 dashboard_user = admin dashboard_pwd = password 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 server_port = 7000 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; } }
|
然后就能用啦!