0%

frp Docker镜像与环境搭建

很久没折腾过路由器了,最近在拼多多上收了个k2p和2个n1盒子,准备把n1盒子放在家里当成微型服务器来使用,那么内网穿透服务就必不可少了。 内网穿透主要的方案目前就是ngrok和frp,ngrok应该更老牌一点,不过据说其1.x版本虽然开源但有不少问题,而新的2.x版本是闭源的而且主推其官方的收费服务。而frp是国人开发的,一直在持续更新中,文档也很清晰。 两者在各种路由器固件中都有支持,因此这次选择了frp。 除开ngrok官网外,网上其实还有一些ngrok、frp的收费服务,不过既然现在有一台国内的、有公网IP的云服务器,就干脆自己搭建好了。

frp服务端(frps)的搭建比较简单,官方文档推荐下载对应架构的realease包,解压后执行即可。 不过既然现在有Docker这么好的东西,那自然要找Docker镜像来跑了,在DockerHub上找了下,最流行的镜像是这个:https://hub.docker.com/r/xddxdd/frps ,不过其tag只声明了架构,没声明frps版本,据说frp的客户端(frpc)和服务端(frps)的版本最好对应否则可能有兼容问题,而各个路由器固件中的frpc版本可能还比较低,所以参考该作者的Dockerfile自己来编一个吧。

这里完全基于xddxdd的Dockerfile,仅添加了时区的设置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
ARG THIS_ARCH_ALT=amd64
FROM multiarch/alpine:${THIS_ARCH_ALT}-edge

ARG THIS_ARCH_ALT=amd64
ARG THIS_ARCH_GO=amd64

ENV FRP_VER=0.22.0
RUN apk --no-cache add wget tar tzdata \
&& cp -r -f /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& mkdir /frp \
&& wget --no-check-certificate https://github.com/fatedier/frp/releases/download/v${FRP_VER}/frp_${FRP_VER}_linux_${THIS_ARCH_GO}.tar.gz \
&& tar xf frp_${FRP_VER}_linux_${THIS_ARCH_GO}.tar.gz \
&& rm frp_${FRP_VER}_linux_${THIS_ARCH_GO}.tar.gz \
&& mv frp_${FRP_VER}_linux_${THIS_ARCH_GO}/frps /usr/bin/ \
&& mv frp_${FRP_VER}_linux_${THIS_ARCH_GO}/frps.ini /frp/ \
&& rm -rf frp_${FRP_VER}_linux_${THIS_ARCH_GO} \
&& chmod +x /usr/bin/frps \
&& apk del --purge wget tar
WORKDIR /frp
ENTRYPOINT ["/usr/bin/frps"]
使用以下指令来构建镜像:
1
docker build -t frps:0.22.0 .
编写好配置文件后,运行镜像:
1
docker run --name frps01 -d -p 7000:7000/tcp -p 7001:7001/udp -p 7500:7500/tcp -v /var/spirit/frps:/frp frps:0.22.0 -c frps.ini