Docker 改静态链接 OpenSSL,修复跨发行版运行
Build and Release / build-and-test (arm64, alpine) (push) Successful in 6s
Build and Release / build-and-test (amd64, alpine) (push) Successful in 12s
Build and Release / build-and-test (amd64, ubuntu) (push) Successful in 22s
Build and Release / build-and-test (arm64, ubuntu) (push) Successful in 22s
Build and Release / release (push) Successful in 19s

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Wang Defa
2026-06-09 16:59:25 +08:00
co-authored by Claude Opus 4.8
parent 116023cd24
commit a362c1a859
4 changed files with 19 additions and 17 deletions
+3 -3
View File
@@ -15,7 +15,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
编译产出单个可执行文件 `xxxig-proxy`:矿机代理服务,监听矿机接入并把算力聚合转发到上游矿池,降低矿池侧连接数。配置来自源码 `src/config.json`
> **与矿工项目 `xxxig` 的关键差异**:矿工是 `xxxig / xxxigDaemon / xxxigServer` 三件套 + CCCentral Control+ Web 控制台;proxy 是**单二进制、无 C&C、无 GPU、态链接**。本仓库的 build-deb.sh / postinst / service 都只处理这一个二进制。
> **与矿工项目 `xxxig` 的关键差异**:矿工是 `xxxig / xxxigDaemon / xxxigServer` 三件套 + CCCentral Control+ Web 控制台;proxy 是**单二进制、无 C&C、无 GPU、全静态链接**。本仓库的 build-deb.sh / postinst / service 都只处理这一个二进制。
## 构建与发布流程(CI
@@ -27,7 +27,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
关键点:
- 版本号**硬编码**在 ci.yaml 的 `PACKAGE_VERSION: "6.26.0"`(纯数字,符合 Debian 版本规范),发版改这里。**关键分界**:上游源码 git tag 带 `v`CI 用 `XXXIG_PROXY_VERSION=v${PACKAGE_VERSION}` 检出 `v6.26.0`),而 tar.gz/deb/registry 路径等包版本一律用数字;release job 用 `VERSION="${TAG#v}"` 归一,build-deb.sh 用 `DEB_VERSION="${VERSION#v}"` 归一。
- Dockerfile build-arg 名为 `XXXIG_PROXY_VERSION`(注意 `_PROXY_`,与矿工的 `XXXIG_VERSION` 区分),ci.yaml 与两个 Dockerfile 三处必须一致。
- 构建用 `cmake .. -DCMAKE_BUILD_TYPE=Release`**动态链接**,依赖 libuv/OpenSSL),与矿工的静态构建不同;Dockerfile.ubuntu 基于 `ubuntu:20.04`glibc 2.31,与 control.template 的 `libc6 (>= 2.31)` 对齐)
- **静态构建(对齐矿工)**Dockerfile 先 `cd scripts && ./build_deps.sh` 编译静态 libuv/OpenSSL 到 `scripts/deps`,再 `cmake .. -DXMRIG_DEPS=scripts/deps -DBUILD_STATIC=ON` 全静态链接(proxy 的 `cmake/OpenSSL.cmake` 仅在 WIN/APPLE 下设静态,Linux 靠 flags.cmake 在 `BUILD_STATIC` 下加 `-static` 强制全静态)。产物 `ldd` 为 "not a dynamic executable",任意发行版可跑。Dockerfile.ubuntu 基于 `ubuntu:20.04`
- 架构名映射:`x86_64→amd64``aarch64→arm64`
- tar.gz 下载 URL 形如 `https://gitea.bcde.io/api/packages/wangdefa/generic/xxxig-proxy/{version}/xxxig-proxy-{arch}-{os}-{version}.tar.gz`
@@ -54,4 +54,4 @@ shellcheck debian/*.sh
- 二进制装到 `/opt/xxxig-proxy/`systemd 服务文件 `debian/xxxig-proxy.service`,维护脚本 `debian/{postinst,prerm,postrm}`
- postinst 创建 `xxxig-proxy` 系统用户、把默认配置复制到 `/etc/xxxig-proxy/config.json``/opt``root:root`(目录/二进制 755、数据文件 644)。**服务不自动启用/启动**(默认上游 `localhost` 无效),升级时仅 `try-restart` 已在运行的服务。
- 本仓库**不含 `script/` 安装脚本**(与矿工项目不同),.deb 安装后需用户手动 `systemctl enable --now xxxig-proxy`
- **已知待办**:proxy 为动态链接(依赖 libuv/OpenSSL),但 control.template `Depends` 目前仅 `libc6`。待 CI 首次构建出产物后用 `ldd` 实测,再补全 `libuv1``libssl`(按构建发行版包名,ubuntu 20.04 为 `libssl1.1`22.04 为 `libssl3`,写错会导致 apt 拒装)
- **运行时依赖**:产物全静态(含 OpenSSL/libuv),`control.template` `Depends: libc6` 即可,无需 libssl/libuv。改用静态构建正是为修复动态链接 OpenSSL 1.1 在新发行版上 `libssl.so.1.1 not found` 的问题。源码 `scripts/`build_deps/build.uv/build.openssl3)由矿工项目移植、去掉 hwloc