在docker环境部署frp

说明

容器化部署frp。

一个frp server可以连接多个frp client,使frp client的端口通过frp server暴露。

本文采用带EIP的frp server,无EIP的但可以访问互联网的frp client。

环境检查

frp server有EIP,无需查询。

查询frp client出口IP

bash 复制代码
curl ipinfo.io
curl myip.ipip.net
curl ifconfig.me

frp server的网络安全配置应当放行frp client的出口方向IPv4和IPv6所有端口。

frp-server

bash 复制代码
# 创建专用目录
mkdir /frps
cd /frps
# 创建配置文件
vim frps.toml

追加以下内容,完整配置参考https://github.com/fatedier/frp/blob/dev/conf/frps_full_example.toml

bash 复制代码
# 当前环境提供给客户端建立连接的端口
bindPort = 7000

# 控制面板监听的IP,不要改动,对EIP支持不好。
webServer.addr = "0.0.0.0"
# 访问控制面板的端口号
webServer.port = 7500
# 控制面板账户
webServer.user = "admin"
# 控制面板密码,建议用复杂密码
webServer.password = "admin"

# 配置服务端的鉴权
auth.method = "token"
# 令牌。生成token使用命令openssl rand -hex 32
auth.token = "265eaf96cc381f189e8872a64a9a57cf4e8a4311036616b4f7d4de"

查询最新版本容器镜像,浏览器访问https://github.com/fatedier/frp/pkgs/container/frps

例如当前最新是swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/fatedier/frps:v0.70.1

配置compose.yaml,内容如下

bash 复制代码
services:
  frp-server:
    image: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/fatedier/frps:v0.70.1
    container_name: frp-server
    restart: always
    network_mode: host
    environment:
      - TZ=Asia/Shanghai
    volumes:
      - /frps/frps.toml:/opt/frps/frps.toml:ro
    command: ["-c", "/opt/frps/frps.toml"]

部署容器

bash 复制代码
docker compose up -d

日志文件看到下图所示内容表示部署成功,

浏览器访问IP:7500,输入配置文件内置的账户密码admin。

frp-client

bash 复制代码
mkdir /frpc
cd /frpc
vim frpc.toml

追加以下内容,参考

bash 复制代码
# frp-server的EIP
serverAddr = "IP"
# frp-server提供服务的端口
serverPort = 7000
# frp-server的令牌
auth.token = "265eaf96cc381f189e8872a64a9a57cf4e8a4311036616b4f7d4de"
# 示例
[[proxies]]
# 在frp-server必须全局唯一。
name = "ssh-client1"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
# 在frp-server必须全局唯一。
remotePort = 23

查询最新版本容器镜像,浏览器访问https://github.com/fatedier/frp/pkgs/container/frps

例如当前最新是swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/fatedier/frpc:v0.70.1

配置compose.yaml,内容如下

bash 复制代码
services:
  frp-client:
    image: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/fatedier/frpc:v0.70.1
    container_name: frp-client
    restart: always
    network_mode: host
    environment:
      - TZ=Asia/Shanghai
    volumes:
      - /frpc/frpc.toml:/opt/frpc/frpc.toml:ro
    command: ["-c", "/opt/frpc/frpc.toml"]

部署容器

bash 复制代码
docker compose up -d

日志看到下图所示,表示连接成功,

在frp server的web界面可见

测试验证

以上述配置为例,在互联网任意可以访问frp server EIP的位置,ssh -v -p 23 frp-client的系统账户@frp-server的EIP,即可登录到frp client。端口23是frp client配置的占用frp server用于转发流量的端口。

相关推荐
DarkAthena18 分钟前
wslc ps 卡死的排查:一次「停容器不停 VM」引发的连环故障
docker
NailiConveyor1 小时前
柔性物流方案如何适配工厂升级?自动化输送流水线定制要点
大数据·运维·自动化·制造·业界资讯
小沈同学呀1 小时前
【Agent开发第十五期】部署上线:把 Alex 搬进浏览器,15 期全栈串联收官
docker·agent·从零搭建ai助手
Lsetea2 小时前
Certbot webroot申请SSL证书总是404:Nginx挑战目录与路径映射检查
运维·nginx·https·ssl证书·certbot
如若1232 小时前
Windows SSH + Headscale/Tailscale 组网及免密登录完整配置教程
运维·windows·ubuntu·ssh·内网穿透
开开心心就好2 小时前
音频降噪剪辑工具,音量裁剪一键处理
运维·服务器·前端·spring·ocr·音视频·1024程序员节
lwx9148522 小时前
Docker-安装SSH服务
docker·容器·ssh
李纲明2 小时前
WordPress 白屏或提示「出现了严重错误」:先开 WP_DEBUG 抓致命错误,再二分插件与主题
运维·php·debug·wordpress·白屏·插件冲突·devdiy
Ruiery3 小时前
Linux 6.6内核并发与同步(五):mutex 可睡眠锁
linux·运维·服务器
莫晓燚4 小时前
双机部署若依 (RuoYi‑Vue) 传统环境部署---实战
linux·运维·数据库·redis·mysql·nginx·ruoyi