CI / validate (push) Successful in 5s
CI / build (amd64) (push) Successful in 3m24s
CI / build (arm64) (push) Successful in 9m51s
Release / build (amd64) (push) Successful in 3m18s
Release / build (arm64) (push) Successful in 9m58s
Release / release (push) Successful in 43s
96 lines
4.1 KiB
Markdown
96 lines
4.1 KiB
Markdown
# 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.1 要求连接 **Monero daemon v0.18.5.1 或更高版本**;与 Tari 合并挖矿要求 **Tari 节点 v6.0.0 或更高版本**(v4.18.1 换用新的 Tari 数据格式)。
|
||
|
||
## 安装
|
||
|
||
### 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.1/p2pool-amd64-linux-static-4.18.1.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.1 p2pool-amd64-linux-static-4.18.1.tar.gz
|
||
```
|
||
|
||
## 版本号约定
|
||
|
||
- 根目录 [VERSION](VERSION) 是唯一版本来源,使用不带 `v` 的版本号。
|
||
- **上游源码 git tag** 带 `v`(如 `v4.18.1`),CI 构建时自动补回。
|
||
- **包版本**(tar.gz / deb / registry 路径)一律用数字(如 `4.18.1`),符合 Debian 版本规范。
|
||
- 发布 tag 可写成 `4.18.1` 或 `v4.18.1`,去掉 `v` 后必须与 VERSION 一致。
|
||
|
||
发版时先更新 VERSION 并提交,再创建同版本 tag。
|
||
|
||
## 目录结构
|
||
|
||
```
|
||
.gitea/workflows/ CI 流水线
|
||
docker/ Dockerfile(musl 纯静态,从上游官方源码编译)
|
||
debian/ .deb 打包:control 模板、维护脚本、systemd 服务
|
||
conf/ params.conf.example 默认配置模板
|
||
```
|