Files
p2pool/README.md
T
wangdefa 3e7ec0c654
CI / validate (push) Successful in 6s
CI / build (amd64) (push) Successful in 4m11s
CI / build (arm64) (push) Successful in 22m29s
Release / build (amd64) (push) Successful in 4m23s
Release / build (arm64) (push) Successful in 22m17s
Release / release (push) Successful in 37s
更新 CI/CD 流水线,拆分为独立的构建和发布流程,添加版本控制,更新至 4.18
2026-08-07 09:01:45 +08:00

96 lines
4.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# P2Pool
P2Pool 是 [SChernykh/p2pool](https://github.com/SChernykh/p2pool) 的定制打包——Monero 去中心化矿池的 sidechain 节点。对上游唯一定制是**禁用合并挖矿捐赠**(`-DWITH_MERGE_MINING_DONATION=OFF`),不改源码。
**本仓库只包含构建与打包基础设施**,不含 p2pool 源码:二进制在 CI 中从上游官方仓库 `github.com/SChernykh/p2pool` 编译,再打包分发到 [gitea.bcde.io](https://gitea.bcde.io) 的 Generic / Debian 包仓库。
## 产物
每次构建产出单个可执行文件(musl 纯静态,自带 boringssl/libuv/libzmq + 内置 gRPC,无外部动态库依赖,任意 Linux 发行版可跑):
| 二进制 | 作用 |
|---|---|
| `p2pool` | P2Pool sidechain 节点:连接 monerod、维护 sidechain、向矿工提供 stratum;支持与 Tari 合并挖矿 |
支持架构 `amd64` / `arm64`;musl 纯静态,任意 Linux 发行版(Debian/Ubuntu/Alpine/CentOS 等)开箱即跑。静态构建仍保留 `--rpc-ssl`(连外部 SSL monerod 节点)与内置 gRPC(`--merge-mine tari://...` 与 Tari 合并挖矿)。
P2Pool v4.18 要求连接 **Monero daemon v0.18.5.1 或更高版本**。
## 安装
### APT(Debian / Ubuntu)
```bash
sudo curl https://gitea.bcde.io/api/packages/wangdefa/debian/repository.key -o /etc/apt/keyrings/gitea-wangdefa.asc
echo "deb [signed-by=/etc/apt/keyrings/gitea-wangdefa.asc] https://gitea.bcde.io/api/packages/wangdefa/debian stable main" | sudo tee /etc/apt/sources.list.d/wangdefa.list
sudo apt-get update && sudo apt-get install p2pool
```
安装布局:
| | 路径 |
|---|---|
| 二进制 | `/opt/p2pool/p2pool` |
| 默认配置 | `/opt/p2pool/params.conf`(postinst 复制到 `/etc/p2pool/params.conf`) |
| 数据 | `/var/lib/p2pool/data-api` |
| 日志 | `/var/log/p2pool/` |
| 服务 | `p2pool.service` |
> 安装后服务**不会自动启动**(须先填钱包地址)。编辑 `/etc/p2pool/params.conf` 设置 Monero 钱包地址,再启用:
>
> ```bash
> sudo systemctl enable --now p2pool
> ```
### tar.gz(通用:Alpine / Ubuntu / Debian)
从 Generic Package Registry 下载对应架构的 tar.gz,解压即用(单二进制):
```bash
curl -fSL -o p2pool.tar.gz \
https://gitea.bcde.io/api/packages/wangdefa/generic/p2pool/4.18/p2pool-amd64-linux-static-4.18.tar.gz
tar -xzf p2pool.tar.gz
./p2pool --params-file params.conf # 配置模板见仓库 conf/params.conf.example
```
## 构建与发布
Gitea Actions 分为两条流水线:
- [.gitea/workflows/ci.yml](.gitea/workflows/ci.yml):分支推送时检查版本、配置和 shell 语法,并在 amd64、arm64 原生 runner 上编译、运行内置测试和验证 DEB 包内容。
- [.gitea/workflows/release.yml](.gitea/workflows/release.yml):tag 推送时构建 tar.gz 和 DEB,生成 `SHA256SUMS`,上传包仓库并创建或更新 Release。
本地构建:
```bash
# 编译某架构二进制(输出到 ./output/linux_<arch>/p2pool)
docker buildx build --platform linux/amd64 \
--build-arg P2POOL_VERSION="v$(cat VERSION)" \
--output type=local,dest=./output \
-f docker/Dockerfile .
# 校验纯静态(应输出 "not a dynamic executable")
ldd output/linux_amd64/p2pool
# 用产物 tar.gz 打 .deb
./debian/build-deb.sh amd64 4.18 p2pool-amd64-linux-static-4.18.tar.gz
```
## 版本号约定
- 根目录 [VERSION](VERSION) 是唯一版本来源,使用不带 `v` 的版本号。
- **上游源码 git tag** 带 `v`(如 `v4.18`),CI 构建时自动补回。
- **包版本**(tar.gz / deb / registry 路径)一律用数字(如 `4.18`),符合 Debian 版本规范。
- 发布 tag 可写成 `4.18` 或 `v4.18`,去掉 `v` 后必须与 VERSION 一致。
发版时先更新 VERSION 并提交,再创建同版本 tag。
## 目录结构
```
.gitea/workflows/ CI 流水线
docker/ Dockerfile(musl 纯静态,从上游官方源码编译)
debian/ .deb 打包:control 模板、维护脚本、systemd 服务
conf/ params.conf.example 默认配置模板
```