准備
- 域名解析 將frp.xx.com解析到服務器ip,將泛域名 *.frp.xx.com解析到frp.xx.com即可
- https證書申請 泛域名證書現在可以用acme.sh申請Let's Encrypt證書,坑挖好了 ,看這里 [新手教程]申請https泛域名解析
- GitHub下載最新編譯文件 GitHub frp releases
- 復制frps和frps.ini文件到frps目錄下
frps
--frps
--frps.ini
--Dockerfile
- 修改frps.ini配置文件
只需要按需修改
name | value | rmk |
---|---|---|
vhost_http_port | 8888 | http端口 |
vhost_https_port | 445 | https端口 |
dashboard_user | username | web管理端管理員賬戶 |
dashboard_pwd | password | web管理端管理員密碼 |
subdomain_host | frp.xx.com | 子域名配置 |
# [common] is integral section
[common]
# A literal address or host name for IPv6 must be enclosed
# in square brackets, as in "[::1]:80", "[ipv6-host]:http" or "[ipv6-host%zone]:80"
bind_addr = 0.0.0.0
bind_port = 7000
# udp port to help make udp hole to penetrate nat
bind_udp_port = 7001
# udp port used for kcp protocol, it can be same with 'bind_port'
# if not set, kcp is disabled in frps
kcp_bind_port = 7000
# specify which address proxy will listen for, default value is same with bind_addr
# proxy_bind_addr = 127.0.0.1
# if you want to support virtual host, you must set the http port for listening (optional)
# Note: http port and https port can be same with bind_port
vhost_http_port = 8888
vhost_https_port = 445
# response header timeout(seconds) for vhost http server, default is 60s
# vhost_http_timeout = 60
# set dashboard_addr and dashboard_port to view dashboard of frps
# dashboard_addr's default value is same with bind_addr
# dashboard is available only if dashboard_port is set
dashboard_addr = 0.0.0.0
dashboard_port = 7500
# dashboard user and passwd for basic auth protect, if not set, both default value is admin
dashboard_user = user
dashboard_pwd = 124356aabb
# dashboard assets directory(only for debug mode)
# assets_dir = ./static
# console or real logFile path like ./frps.log
log_file = /frps/frps.log
# trace, debug, info, warn, error
log_level = info
log_max_days = 3
# disable log colors when log_file is console, default is false
disable_log_color = false
# auth token
token = tokenwords
# heartbeat configure, it's not recommended to modify the default value
# the default value of heartbeat_timeout is 90
# heartbeat_timeout = 90
# only allow frpc to bind ports you list, if you set nothing, there won't be any limit
allow_ports = 2000-3000,3001,3003,4000-50000
# pool_count in each proxy will change to max_pool_count if they exceed the maximum value
max_pool_count = 5
# max ports can be used for each client, default value is 0 means no limit
max_ports_per_client = 0
# if subdomain_host is not empty, you can set subdomain when type is http or https in frpc's configure file
# when subdomain is test, the host used by routing is test.frps.com
subdomain_host = frp.xx.com
# if tcp stream multiplexing is used, default is true
tcp_mux = true
# custom 404 page for HTTP requests
# custom_404_page = /path/to/404.html
- 修改Dockerfile文件
FROM centos
WORKDIR /frp
COPY . .
RUN chmod -R 777 /frp
CMD ["/frp/frps","-c","/frp/frps.ini"]
- 創建鏡像
frps目錄下執行
docker build -t frps .
- 創建並啟動容器
docker run -d --restart=always -v /etc/frp/frps.ini:/frp/frps.ini -p 7000:7000 -p 7500:7500 -p 8888:8888 -p 445:445 --name frps_server frps
注意
445端口在win下為保留端口,請換到1000以上端口,具體參考msdn的文檔說明
測試
訪問IP:8888查看是否正常,若有異常可用 docker log 容器id 進行查看錯誤日志后處理
擴展
看的比較仔細的小伙伴已經看到了,我們端口設置的是8888,並不是80.訪問的時候需要帶上端口,使用上並不方便,下面我們將配置nginx轉發,實現域名訪問.
點這里繼續 docker nginx 自定義配置容器