FRP内网穿透docker部署工具
# 软件说明
FRP(Fast Reverse Proxy)是一种快速反向代理工具,主要用于内网穿透。它能够帮助用户将位于局域网内的服务暴露到公网,方便外部访问。FRP支持TCP、UDP、HTTP、HTTPS等协议,并且提供了丰富的功能来满足不同的使用场景。
# 组成部分
frps (FRP Server):运行在有公网IP的服务器上,作为整个frp架构中的服务端,负责接收来自客户端的请求并转发到相应的服务。
linux_amd64_0.62.1下载: github下载: (opens new window) 百度网盘下载 (opens new window)
frpc (FRP Client):运行在局域网内的设备上,作为客户端,负责建立与服务端的连接并将本地服务映射到公网。
树莓派arm64_0.62.1下载: github下载 (opens new window) 百度网盘下载 (opens new window)
# docker部署服务端frps
文件(linux amd64架构)
- frp_0.62.1_linux_amd64.tar.gz
- Dockerfile
- docker-compose.yml
- frps.toml
FROM alpine:3.20 as preparer
WORKDIR /tmp
COPY ./frp_0.62.1_linux_amd64.tar.gz ./
# 解压 frp 包
RUN tar -zxvf frp_0.62.1_linux_amd64.tar.gz && \
mv /tmp/frp_0.62.1_linux_amd64 /tmp/frp
FROM alpine:3.20
WORKDIR /app
# 安装 tzdata(用于设置时区)
RUN apk add --no-cache tzdata && \
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
echo "Asia/Shanghai" > /etc/timezone
# 从第一阶段复制 frp 二进制文件和配置示例
COPY --from=preparer /tmp/frp/frpc /app/
COPY --from=preparer /tmp/frp/frps /app/
# 默认命令为空,用户可自行选择运行 frpc 或 frps
CMD ["sh", "-c", "echo '请通过正确命里启动frpc或frps'; exit 1"]
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
version: '3.8'
services:
frps:
build:
context: .
dockerfile: Dockerfile
container_name: frps
volumes:
- ./frps.toml:/app/frps.toml
command: ["/app/frps", "-c", "/app/frps.toml"]
restart: unless-stopped
network_mode: host
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
bindPort = 7000 # frps监听的端口,用于客户端连接
auth.method = "token"
auth.token = "password" # 客户端认证密码
# 可选配置,指定dashboard相关的设置,便于管理
webServer.addr = "0.0.0.0" # 开放访问权限
webServer.port = 7500
webServer.user = "admin"
webServer.password = "password" # dashboard 登录密码
# 可选配置,用于记录日志
log.to = "./frps.log"
log.level = "info"
log.maxDays = 3
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
# 启动服务端
docker-compose up -d --build
1
2
2
// Make sure to add code blocks to your code group
frps.toml全部配置参考:frps.toml (opens new window)
# 树莓派docker部署客户端frpc
文件(树莓派4b)
- frp_0.62.1_linux_arm64.tar.gz
- Dockerfile
- docker-compose.yml
- frpc.toml
# 需要能访问外网(不能下载从下方链接下载)
docker pull arm64v8/alpine:3.15 # 拉取镜像
docker save arm64v8/alpine:3.15 -o arm64v8-alpine-3.15.tar # 导出镜像
# 导入镜像
docker load -i arm64v8-alpine-3.15.tar
1
2
3
4
5
6
7
2
3
4
5
6
7
FROM arm64v8/alpine:3.15 as preparer
WORKDIR /tmp
# frp_0.62.1_linux_arm64.tar.gz 存在于构建上下文中
COPY ./frp_0.62.1_linux_arm64.tar.gz ./
# 解压 frp 包
RUN tar -zxvf frp_0.62.1_linux_arm64.tar.gz && \
mv /tmp/frp_0.62.1_linux_arm64 /tmp/frp
FROM arm64v8/alpine:3.15
WORKDIR /app
# 安装 tzdata(用于设置时区)
RUN apk add --no-cache tzdata && \
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
echo "Asia/Shanghai" > /etc/timezone
# 从第一阶段复制 frp 二进制文件
COPY --from=preparer /tmp/frp/frpc /app/
# 设置默认命令
CMD ["sh", "-c", "echo '请通过指定正确的命令启动 frpc'; exit 1"]
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
version: '3.3'
services:
frpc:
build:
context: .
dockerfile: Dockerfile
container_name: frpc
volumes:
- ./frpc.toml:/app/frpc.toml
command: ["/app/frpc", "-c", "/app/frpc.toml"]
restart: unless-stopped
network_mode: host
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
serverAddr = "x.x.x.x" # 服务端IP地址
serverPort = 7000
# 认证
auth.method = "token"
auth.token = "password"
# 日志
log.to = "./frpc.log"
log.level = "info"
log.maxDays = 3
# ssh (ssh -p 6000 username@ip)
[[proxies]]
name = "ssh"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
# 服务端监听的远程端口,用于外部访问。
remotePort = 6000
# http (ip:8000访问内网web应用)
[[proxies]]
name = "web"
type = "http"
localIp = "127.0.0.1"
localPort = 80 # 内网Web服务器的端口号
# 自定义域名,有域名的可以填写域名,没有域名填写服务端IP地址
customDomains = ["x.x.x.x"]
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
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
# 启动客户端
docker-compose up -d --build
1
2
2
// Make sure to add code blocks to your code group
树莓派基础镜像: arm64v8-alpine-3.15.tar下载 (opens new window)
frpc.toml全部配置参考:frpc.toml (opens new window) 提取码:1m8g
# 软件截图
- img: https://bitouyun.com/images/frp/frps.png
link: https://bitouyun.com/images/frp/frps.png
name: 服务端
1
2
3
2
3