使用docker搭建frp服務器



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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM