Sign inSign up

xxhy1989/frps

By xxhy1989

Updated 3 days ago

Image
0

3.4K

xxhy1989/frps repository overview

frps 镜像构建与一键部署

stilleshan/frps 移植,镜像与脚本均改为使用本仓库 laosan-xx/frp 的 Release 产物(frp_<version>_linux_<arch>.tar.gz)。

目录说明

文件说明
Dockerfilefrps 镜像构建文件,基于 alpine,支持 amd64/arm64/arm
frps.tomlfrps 默认配置,构建镜像时打入 /frp,也可挂载覆盖
frps.servicesystemd 服务文件
frps_linux_install.shLinux 一键安装脚本(systemd 托管)
frps_linux_uninstall.shLinux 一键卸载脚本

构建镜像

cd docker/frps
# 默认版本 0.80.8,可用 --build-arg 覆盖
docker build -t laosan-xx/frps:0.80.8 .
docker build --build-arg VERSION=0.80.8 -t laosan-xx/frps:0.80.8 .

运行容器

需先准备好 frps.toml,再挂载启动,避免配置错误导致容器循环重启:

docker run -d --name=frps --restart=always \
    --network host \
    -v /root/frps/frps.toml:/frp/frps.toml \
    laosan-xx/frps:0.80.8

修改配置后重启生效:

vi /root/frps/frps.toml
docker restart frps

一键脚本安装

wget https://raw.githubusercontent.com/laosan-xx/frp/main/docker/frps/frps_linux_install.sh \
  && chmod +x frps_linux_install.sh && ./frps_linux_install.sh
# 国内镜像
wget https://ghfast.top/https://raw.githubusercontent.com/laosan-xx/frp/main/docker/frps/frps_linux_install.sh \
  && chmod +x frps_linux_install.sh && ./frps_linux_install.sh

安装后按需修改配置并重启服务:

vi /usr/local/frp/frps.toml
sudo systemctl restart frps

卸载:

wget https://raw.githubusercontent.com/laosan-xx/frp/main/docker/frps/frps_linux_uninstall.sh \
  && chmod +x frps_linux_uninstall.sh && ./frps_linux_uninstall.sh

服务管理:

sudo systemctl start frps     # 启动
sudo systemctl enable frps    # 开机自启
sudo systemctl status frps    # 状态
sudo systemctl restart frps   # 重启
sudo systemctl stop frps      # 停止

CI 自动构建

.github/workflows/docker-frps.yml 的触发方式:

  • workflow_rungoreleaser 工作流成功结束后才启动,此时 Release 产物已上传,不存在"产物还没生成就下载"的问题
  • 手动 workflow_dispatchversionlatest 均可留空自动推断

版本号解析顺序(无需手改):

  1. 手动输入的 version
  2. goreleaser 运行对应的 tag(v* 去掉 v;手动 dispatch 时按 commit 反查该 commit 上的 tag)
  3. laosan-xx/frp 的最新 Release

镜像标签:始终同时推送 <namespace>/frps:<version><namespace>/frps:latest

命名空间优先级:手动输入的 namespace > 仓库 Variables 的 DOCKER_NAMESPACE > DOCKER_USERNAME(登录名可能是邮箱,与 Docker ID 不一致时用 Variables 指定)。

构建前保留一次轻量校验:对 frp_<version>_linux_amd64.tar.gzfrp_<version>_linux_arm64.tar.gz 的公开下载 URL 做一次 HTTP 探测,非 200 则报错退出。

其它细节:

  • 平台:linux/amd64linux/arm64(QEMU + buildx 多架构 manifest)
  • 推送到 Docker Hub:<namespace>/frps:<version><namespace>/frps:latest
  • 镜像构建成功后,把 docker/frps/README.md 同步到 Docker Hub 仓库描述
  • 需要在仓库 Settings → Secrets 配置 DOCKER_USERNAMEDOCKER_PASSWORD(缺失时工作流会立即报错退出)

版本号从哪来(全流程自动)

发版只需在源码仓库打 tag,版本号会自动贯穿到产物和镜像:

  1. 打 tag v0.80.9 → 触发 .github/workflows/goreleaser.yml;也可手动 dispatch,填写 tag 输入框(或在 UI 的 Use workflow from 选择该 tag)
  2. goreleaser 新增 Sync version from tag 步骤:把 tag 版本写入 pkg/util/version/version.gohack/package.sh./bin/frps --version 读取它命名产物
  3. 产物发布到 laosan-xx/frp 的 Release:frp_0.80.9_linux_<arch>.tar.gz
  4. goreleaser 成功结束 → 触发 docker-frps.yml,自动取该版本构建并推送镜像

因此无需手动修改以下位置的版本号:

  • pkg/util/version/version.go(CI 自动写入;本地开发时才需要手动维护)
  • docker/frps/DockerfileARG VERSION=latest,未传参时自动查询最新 Release
  • docker/frps/frps_linux_install.shFRP_VERSION 留空即自动获取最新 Release 版本,也可显式指定 FRP_VERSION=0.80.8 安装特定版本

Tag summary

Content type

Image

Digest

sha256:7e009d484

Size

14.9 MB

Last updated

3 days ago

docker pull xxhy1989/frps