Frp也支持Docker部署,通过简单的编写docker-compose文件,实现快速部署内网穿透服务。

需求:需要被穿透的内网服务器,有公网IP的服务器一台,正常接入互联网,内网机器和服务器操作系统均为Ubuntu 20.04 Server或CentOS 7.9

服务端配置(公网服务器)

服务端安装Docker及Docker-Compose

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
curl -sSL https://get.daocloud.io/docker | sh # 安装Docker一键脚本,仅限Debian&Ubuntu使用

yum update -y # 非必需
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # CentOS
yum -y install yum-utils # 如果yum-config-manager: command not found
yum list docker-ce --showduplicates | sort -r # 可指定docker版本
yum install -y docker-ce

systemctl start docker #启动docker
systemctl enable docker # 使Docker开机自启


wget https://cloud.18db.top/d/aliyunpan/get/docker-compose/docker-compose-linux-x86_64-v2.17.0 -O /usr/local/bin/docker-compose
#docker-compose 2.17.0
wget https://cloud.18db.top/d/aliyunpan/get/docker-compose/docker-compose-linux-x86_64-v2.17.3 -O /usr/local/bin/docker-compose
#docker-compose 2.17.3
wget https://cloud.18db.top/d/aliyunpan/get/docker-compose/docker-compose-linux-x86_64-v2.16.0 -O /usr/local/bin/docker-compose
#docker-compose 2.16.0

wget https://cloud.18db.top/d/aliyunpan/get/docker-compose/docker-compose-Linux-x86_64-v1.29.2 -O /usr/local/bin/docker-compose
#更老的版本

curl -SL https://github.com/docker/compose/releases/download/v2.17.2/docker-compose-linux-x86_64 -O /usr/local/bin/docker-compose
#通过github下载

chmod +x /usr/local/bin/docker-compose #修改docker-compose权限

docker-compose --version #查看 docker-compose 版本

创建服务端FRP目录

1
2
3
mkdir /root/docker-compose-data/frp #默认为root用户

cd /root/docker-compose-data/frp

创建 Docker-compose.yml和frps.ini文件

1
2
vim docker-compose.yml
touch frps.ini

配置Docker-compose.yml文件

1
2
3
4
5
6
7
8
9
version: '3.3'
services:
frps:
restart: always
network_mode: host
volumes:
- './frps.ini:/etc/frp/frps.ini'
container_name: frps
image: snowdreamtech/frps

配置frps.ini

1
2
3
4
5
6
7
8
9
[common]
bind_port=5400 #监听端口
#kcp_bind_port=5400

dashboard_user=root #监视面板用户名
dashboard_pwd=12345 #监视面板密码
dashboard_port=9527 #监视面板端口

token = pwd12345 #服务端与客户端的认证密钥,要改一个复杂一点的

在/root/docker-compose-data/frp下,启动容器

1
2
3
docker-compose up -d #启动容器

docker ps #查看是否启动成功

注意:记得把服务端的防火墙端口打开,否则FRP服务可能会无法工作

客户端配置(内网服务器)

Docker和Docker-compose安装可以参考服务端的方法,FRP目录创建也同上面一样。

关键在于docker-compose.yml和frpc.ini的配置

创建客户端目录

1
2
3
4
cd cd /root/docker-compose-data/frp 

vim docker-compose.yml
touch frpc.ini

配置docker-compose.yml

注意:这里不是”frps”是”frpc”

1
2
3
4
5
6
7
8
9
version: '3.3'
services:
frpc:
restart: always
network_mode: host
volumes:
- './frpc.ini:/etc/frp/frpc.ini'
container_name: frpc
image: snowdreamtech/frpc

配置frpc.ini

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
[common]
server_addr= 127.0.0.1 #服务端服务器的公网ip
server_port= 5400 #监听端口
token = pwd123 #服务端与客户端的认证密钥

#[ssh] #ssh不建议轻易打开,被打的概率很高
#type = tcp
#local_ip = 127.0.0.1
#local_port = 22
#remote_port = 6000

[jellyfin] #tcp部署
type = tcp
local_ip = 127.0.0.1
local_port = 8096 #本地服务端口
remote_port = 6001 #远程服务器端口


#[https-web] #https部署
#type=https #协议
#local_port = 22300 #本地服务端口
#custom_domains = web.com #域名,要解析好的

#plugin= https2http #用于将本地的HTTP服务转为HTTPS的插件
#plugin_local_addr = 127.0.0.1:22300 #本地服务端口
#plugin_crt_path = /root/ssl/web.top/web.com_bundle.crt #这两个HTTPS证书是nginx格式的,需要在证书颁发机构下载,然后放入容器内才能正常使用
#plugin_key_path = /root/ssl/web.top/web.com.key
#plugin_host_header_rewrite = 127.0.0.1
#plugin_header_X-From-Where = frp

启动容器,在/root/docker-compose-data/frp下

1
docker-compose -up -d

测试访问

1
2
3
http://服务端ip地址:你设置的remote_port   #tcp协议

https://web.com #https协议