4.2 KiB
Mond
Mond 是 Monero 守护进程 monerod 的定制换名构建——Monero 全节点,负责 P2P 同步区块链、提供 RPC。换名(monero→mond、monerod→mond、MONERO_*→MOND_*)由 init.sh 在构建期对官方源码做 sed 改写完成,不维护源码分叉。
本仓库只包含构建与打包基础设施,不含 mond 源码:二进制在 CI 中从上游官方仓库 github.com/monero-project/monero 编译(init.sh 现场换名),再打包分发到 gitea.bcde.io 的 Generic / Debian 包仓库。
产物
每次构建产出单个可执行文件(musl 纯静态,boost/OpenSSL/libzmq/libsodium/unbound/expat 及 libc 全部静态链入,无外部动态库依赖,任意 Linux 发行版可跑):
| 二进制 | 作用 |
|---|---|
mond |
Monero 全节点守护进程:P2P 同步区块链、提供 RPC |
支持架构 amd64 / arm64;musl 纯静态(static-pie),任意 Linux 发行版(Debian/Ubuntu/Alpine/CentOS 等)开箱即跑。
安装
APT(Debian / Ubuntu)
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 mond
安装布局:
| 路径 | |
|---|---|
| 二进制 | /opt/mond/mond |
| 默认配置 | /opt/mond/params.conf(postinst 复制到 /etc/mond/params.conf) |
| 数据 | /var/lib/mond/data |
| 日志 | /var/log/mond/ |
| 服务 | mond.service |
安装后服务不会自动启动(首次全节点同步前需确认配置)。按需编辑
/etc/mond/params.conf,再启用:sudo systemctl enable --now mond
tar.gz(通用:Alpine / Ubuntu / Debian)
从 Generic Package Registry 下载对应架构的 tar.gz,解压即用(单二进制):
curl -fSL -o mond.tar.gz \
https://gitea.bcde.io/api/packages/wangdefa/generic/mond/0.18.5.0/mond-amd64-linux-static-0.18.5.0.tar.gz
tar -xzf mond.tar.gz
./mond --config-file params.conf # 配置模板见仓库 conf/params.example.conf
构建与发布
CI 定义于 .gitea/workflows/ci.yaml:
- push 到
main/develop:矩阵arch=[amd64,arm64],在原生 runner 上用 Docker(musl 纯静态)编译为 tar.gz 并打.deb。 - 打 tag:产物上传到 Generic / Debian 包仓库并创建 Release。
musl 纯静态在 alpine:3.23 下手编 5 个静态库(OpenSSL/libsodium/libzmq/expat/unbound——Alpine 仓库只有 .so/缺 .a)并 patch monero CMakeLists(去 -pie、Linux STATIC_FLAGS 改真 -static),产出 static-pie 零依赖二进制。换名 + patch 逻辑见 init.sh。
本地构建:
# 编译某架构二进制(输出到 ./output/linux_<arch>/mond)
docker buildx build --platform linux/amd64 \
--build-arg MONERO_VERSION=v0.18.5.0 \
--output type=local,dest=./output \
-f docker/Dockerfile .
# 校验纯静态(应输出 "statically linked")
ldd output/linux_amd64/mond
# 用产物 tar.gz 打 .deb
./debian/build-deb.sh amd64 0.18.5.0 mond-amd64-linux-static-0.18.5.0.tar.gz
版本号约定
- 上游源码 git tag 带
v(如v0.18.5.0),CI 用MONERO_VERSION=v${PACKAGE_VERSION}检出。 - 包版本(tar.gz / deb / registry 路径)一律用数字(如
0.18.5.0),符合 Debian 版本规范。
发版只需改 ci.yaml 的 PACKAGE_VERSION。
修改内容
基于 Monero(BSD-3-Clause),由 init.sh 在构建期自动应用,不维护源码分叉:
- 项目名
monero→mond - 二进制
monerod→mond - 版本宏
MONERO_*→MOND_*
目录结构
.gitea/workflows/ CI 流水线
docker/ Dockerfile(musl 纯静态,从上游官方源码编译 + init.sh 换名)
debian/ .deb 打包:control 模板、维护脚本、systemd 服务
conf/ params.example.conf 默认配置模板
init.sh 构建期换名 + 静态 patch 脚本