Files
mond/README.md
T
wangdefaandClaude Opus 4.8 4b587550a1
Build and Release Mond / build-and-test (amd64) (push) Successful in 5s
Build and Release Mond / build-and-test (arm64) (push) Successful in 31s
Build and Release Mond / release (push) Has been skipped
精简 README,对齐 xxxig/p2pool 等项目风格
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-10 15:00:49 +08:00

103 lines
4.2 KiB
Markdown
Raw 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.
# Mond
Mond 是 [Monero](https://github.com/monero-project/monero) 守护进程 `monerod` 的定制换名构建——Monero 全节点,负责 P2P 同步区块链、提供 RPC。换名(`monero→mond``monerod→mond``MONERO_*→MOND_*`)由 [init.sh](init.sh) 在构建期对官方源码做 `sed` 改写完成,不维护源码分叉。
**本仓库只包含构建与打包基础设施**,不含 mond 源码:二进制在 CI 中从上游官方仓库 `github.com/monero-project/monero` 编译(init.sh 现场换名),再打包分发到 [gitea.bcde.io](https://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 等)开箱即跑。
## 安装
### APTDebian / 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 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`,再启用:
>
> ```bash
> sudo systemctl enable --now mond
> ```
### tar.gz(通用:Alpine / Ubuntu / Debian
从 Generic Package Registry 下载对应架构的 tar.gz,解压即用(单二进制):
```bash
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](.gitea/workflows/ci.yaml)
- **push 到 `main`/`develop`**:矩阵 `arch=[amd64,arm64]`,在原生 runner 上用 Dockermusl 纯静态)编译为 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](init.sh)。
本地构建:
```bash
# 编译某架构二进制(输出到 ./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](https://github.com/monero-project/monero)BSD-3-Clause),由 [init.sh](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 脚本
```