title: 使用docker搭建frp服務器
date: 2018-03-05
categories:
- tool
tags: - docker
- frp
前言
- 把本地的開發環境映射到外網,這是我們經常會碰到的一個要求,比方說展示給別人看啦,臨時測試啦。尤其在微信開發中,因為微信必須要求80端口,所以不轉發的情況下,我們只能把代碼部署到服務器之后才能驗證測試,非常麻煩。
- 最早的時候是花生殼,不過這家公司賊惡心。。后面開始用ngrok,然后現在又有了frp,相比來說frp的配置要更簡單一點。
- 因為沒有找到合適的docker鏡像,所以在參考很多之后,就有了如下自寫的image及compose
准備工作
- 具有外網ip的服務器
- 域名
我這里是准備了一個子域名,*.frp.thyiad.top,把這這個域名解析到服務器,這樣可以支持同時映射多個域名到外網,具體的子域名在frp客戶端配置,服務端配置前綴域名為frp.thyiad.top
- docker
需要注意的是,我這里是基於ngin-proxy鏡像來解析域名的,此處不再贅述,可參照之前的文章:使用docker搭建wordpress
docker file
鏡像已經上傳到docker的hub上了,所以你也可以跳過docker file直接使用compose
創建工作目錄:
cd /usr
mkdir frp && cd frp
mkdir frp_image && cd frp_image
先創建一個frp的默認配置文件:
mkdir conf && vim conf/frps.ini
把以下內容填入 frps.ini:
[common]
bind_addr = 0.0.0.0
bind_port = 7000
kcp_bind_port = 7000
vhost_http_port = 80
vhost_https_port = 443
dashboard_addr = 0.0.0.0
dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = admin
authentication_timeout = 0
subdomain_host = frp.thyiad.top
創建dockerfile:
vim dockerfile
把以下內容填入dockerfile:
FROM ubuntu
MAINTAINER thyiad <1520583107@qq.com>
ARG FRP_VERSION=0.16.0
RUN apt update \
&& apt install -y wget
WORKDIR /tmp
RUN set -x \
&& wget https://github.com/fatedier/frp/releases/download/v${FRP_VERSION}/frp_${FRP_VERSION}_linux_amd64.tar.gz \
&& tar -zxf frp_${FRP_VERSION}_linux_amd64.tar.gz \
&& mv frp_${FRP_VERSION}_linux_amd64 /var/frp \
&& mkdir -p /var/frp/conf \
&& apt remove -y wget \
&& apt autoremove -y \
&& rm -rf /var/lib/apt/lists/*
COPY conf/frps.ini /var/frp/conf/frps.ini
VOLUME /var/frp/conf # conf被配置成了卷,方便以后修改frps.ini
WORKDIR /var/frp
ENTRYPOINT ./frps -c ./conf/frps.ini
這個dockerfile執行了以下操作:
- 從github上下載frp的release版本
- 解壓
- 從conf目錄中讀取替換默認的frps.ini
此時就可以使用docker build命令進行編譯鏡像了,命令為:
docker build -t="thyiad/my-frp" .
docker compose
在鏡像編譯好后,我們就可以開始compose文件了,畢竟compose比直接docker run要方便的多
創建工作目錄:
mkdir /usr/frp/frp_compose && cd /usr/frp/frp_compose
vim docker-compose.yml
把以下內容填入docker-compose.yml:
version: '3'
services:
frp:
image: thyiad/my-frp:latest
container_name: my-frp
ports:
- "7000:7000"
- "7500:7500"
expose:
- 80
- 443
volumes:
- frp_conf:/var/frp/conf
restart: always
environment:
VIRTUAL_HOST: '*.frp.thyiad.top,frp.thyiad.top' # 指定需要綁定的域名
volumes:
frp_conf:
networks:
default:
external:
name: nginx-proxy # 此處的nginx-proxy為之前創建的docker network
運行我們的compose:
docker-compose up -d
此時,我們的frp服務器就已經OK了。
我們訪問一下test.frp.thyiad.top試試:
顯然,frp已經在運轉了,只是該域名並沒有綁定轉發
frp客戶端
服務端搭好之后,我們就可以下載客戶端進行使用了。需要前往frp的github上下載對應的版本,我這里是16.0,windows x64。
下載解壓后,我們修改frpc.ini為以下內容:
[common]
server_addr = 你的服務器ip
server_port = 7000
# protocol = kcp
[web]
type = http
local_port = 52485
subdomain = test
然后打開cmd,運行frpc:
cd /d d:\frp
frpc
此時會出現以下界面:
說明已經連接成功了,我們再來訪問test.frp.thyiad.top試試:
此時,我們的frp就已經搭建好了,很簡單吧?
ngrok的服務器搭建在這里:
使用docker搭建ngrok服務器
以上文件已經上傳到github:
https://github.com/Thyiad/docker