Compare commits

3 Commits

Author SHA1 Message Date
1faa92266e fix: 修复 apt 升级后服务需要手动重新启用的问题
All checks were successful
Build and Release Mond / build-and-test (arm64) (push) Successful in -17s
Build and Release Mond / build-and-test (amd64) (push) Successful in -19s
Build and Release Mond / release (push) Has been skipped
- 修改 prerm 脚本,升级时只停止服务不禁用
- 修改 postinst 脚本,升级后自动重启已启用的服务
- 首次安装仍保持手动启用服务的行为
2026-01-21 12:40:29 +08:00
2d47652a06 feat: 更新 .gitignore 文件,添加 macOS 系统文件排除项
All checks were successful
Build and Release Mond / build-and-test (arm64) (push) Successful in -18s
Build and Release Mond / build-and-test (amd64) (push) Successful in -18s
Build and Release Mond / release (push) Successful in -3s
2026-01-21 12:01:31 +08:00
b70d968390 feat: 删除过时的文档文件,精简项目文档结构 2026-01-21 11:59:29 +08:00
16 changed files with 46 additions and 662 deletions

3
.gitignore vendored
View File

@@ -1,3 +1,6 @@
# macOS system files
.DS_Store
# Claude Code # Claude Code
.mcp.json .mcp.json
.claude/ .claude/

16
debian/postinst vendored
View File

@@ -24,7 +24,7 @@ chmod -R 750 /var/lib/mond
# Create configuration file if it doesn't exist # Create configuration file if it doesn't exist
if [ ! -f /var/lib/mond/params.conf ]; then if [ ! -f /var/lib/mond/params.conf ]; then
cat > /var/lib/mond/params.conf << 'EOF' cat > /var/lib/mond/params.conf << 'CONF'
# Mond Configuration File # Mond Configuration File
# This file is automatically created during installation # This file is automatically created during installation
# Edit this file to customize your Mond daemon settings # Edit this file to customize your Mond daemon settings
@@ -116,7 +116,7 @@ log-level=1
# log-file: 日志文件保存路径 # log-file: 日志文件保存路径
log-file=/var/log/mond/mond.log log-file=/var/log/mond/mond.log
EOF CONF
chown mond:mond /var/lib/mond/params.conf chown mond:mond /var/lib/mond/params.conf
chmod 640 /var/lib/mond/params.conf chmod 640 /var/lib/mond/params.conf
fi fi
@@ -125,11 +125,19 @@ fi
chown root:mond /opt/mond/mond chown root:mond /opt/mond/mond
chmod 755 /opt/mond/mond chmod 755 /opt/mond/mond
# Reload systemd # Reload systemd and handle service restart on upgrade
if [ -d /run/systemd/system ]; then if [ -d /run/systemd/system ]; then
systemctl daemon-reload systemctl daemon-reload
# Note: Service is NOT auto-enabled or auto-started # On upgrade: restart service if it was enabled
if [ "$1" = "configure" ] && [ -n "$2" ]; then
# $2 is the previously installed version (only set on upgrade)
if systemctl is-enabled --quiet mond.service 2>/dev/null; then
echo "Restarting mond service after upgrade..."
systemctl start mond.service || true
fi
fi
# Note: On fresh install, service is NOT auto-enabled or auto-started
# Users should manually enable the service: # Users should manually enable the service:
# systemctl enable mond.service # systemctl enable mond.service
# systemctl start mond.service # systemctl start mond.service

23
debian/prerm vendored
View File

@@ -1,17 +1,36 @@
#!/bin/sh #!/bin/sh
set -e set -e
# Stop and disable service if running case "$1" in
upgrade)
# 升级时只停止服务,保留 enabled 状态
if [ -d /run/systemd/system ]; then
if systemctl is-active --quiet mond.service; then
echo "Stopping mond service for upgrade..."
systemctl stop mond.service
fi
fi
;;
remove|deconfigure)
# 删除时停止并禁用服务
if [ -d /run/systemd/system ]; then if [ -d /run/systemd/system ]; then
if systemctl is-active --quiet mond.service; then if systemctl is-active --quiet mond.service; then
echo "Stopping mond service..." echo "Stopping mond service..."
systemctl stop mond.service systemctl stop mond.service
fi fi
if systemctl is-enabled --quiet mond.service 2>/dev/null; then if systemctl is-enabled --quiet mond.service 2>/dev/null; then
echo "Disabling mond service..." echo "Disabling mond service..."
systemctl disable mond.service systemctl disable mond.service
fi fi
fi fi
;;
failed-upgrade)
# 升级失败时不做操作
;;
*)
echo "prerm called with unknown argument \`$1'" >&2
exit 1
;;
esac
exit 0 exit 0

View File

@@ -1,38 +0,0 @@
# Mond 构建系统架构
## 1. 构建环境支持
Mond 项目支持多平台构建:
- Ubuntu (amd64/arm64)
- Alpine Linux (amd64/arm64)
## 2. 关键构建组件
### 初始化脚本 (init.sh)
- 负责版本和配置预处理
- 使用 sed 进行文本替换
- 处理版本宏定义
### Dockerfile
- Alpine Linux: docker/Dockerfile.alpine
- 处理依赖安装
- 配置构建环境
## 3. 依赖管理
### Boost 库组件
必需的 Boost 库组件:
- filesystem
- thread
- date_time
- chrono
- serialization
- program_options
- locale
- system
- regex
## 4. CMake 构建流程
- 检查系统兼容性
- 链接必要库
- 生成可执行文件

View File

@@ -1,41 +0,0 @@
# Mond CI/CD 流水线架构
## 1. 身份标识
- **定义:** Gitea Actions 驱动的多架构持续集成与交付系统
- **目的:** 自动化构建、测试和发布 Mond 项目到多个平台和包管理系统
## 2. 核心组件
- `.gitea/workflows/ci.yaml` (CIWorkflow): 定义整个 CI/CD 流程
- `debian/build-deb.sh` (PackageBuilder): 处理 Debian 包构建逻辑
## 3. 执行流程LLM 检索路径)
### 持续集成流程
1. **代码推送触发:** 监听 master 分支和 PR 事件
2. **多架构构建:**
- 目标架构amd64, arm64
- 目标发行版Ubuntu, Alpine
3. **构建步骤:**
- 代码检出
- 依赖安装
- 单元测试
- 二进制编译
- 包构建
### 发布流程
1. **标签创建:** 手动或自动创建语义化版本标签
2. **构建制品:**
- 多架构 Debian 包amd64, arm64
- 二进制可执行文件
3. **发布到:**
- Gitea Release附件形式
- Generic Package Registry通用软件包仓库
- Debian Package Registrystable 发行版)
## 4. 设计原理
- **可移植性:** 支持多架构和发行版
- **自动化:** 减少手动干预
- **一致性:** 标准化构建和发布流程

View File

@@ -1,59 +0,0 @@
# Mond 打包系统架构
## 1. 身份标识
- **定义:** 基于 Debian 打包规范的多平台软件分发系统
- **目的:** 提供标准化、可靠的软件安装和管理机制
## 2. 核心组件
- `debian/control.template` (PackageMetadata): 定义包元数据
- `debian/postinst` (PostInstallScript): 安装后配置脚本
- `debian/mond.service` (SystemdService): systemd 服务配置
- `debian/build-deb.sh` (BuildScript): 构建 Debian 包的脚本
## 3. 打包系统设计
### Debian 包结构
- **元数据:** 版本、依赖、描述
- **文件布局:**
- 二进制文件:`/opt/mond/mond`
- 配置文件:`/var/lib/mond/params.conf`(首次安装时自动创建)
- 数据目录:`/var/lib/mond/data/`
- 日志目录:`/var/log/mond/`
- systemd 服务:`/lib/systemd/system/mond.service`
### 安装后脚本逻辑
1. 创建必要的系统用户和组(`mond:mond`
2. 创建日志目录和数据目录(包括 `/var/lib/mond/data` 子目录)
3. **生成默认配置文件**(如果不存在)
- 位置:`/var/lib/mond/params.conf`
- 包含所有默认运行参数
- 使用 INI 格式
- 设置正确的权限640, mond:mond
4. 设置文件和目录权限
5. 重载 systemd 配置
6. 显示安装后说明(包括配置文件位置和使用指引)
**重要特性:** 配置文件只在首次安装时创建,升级时不会覆盖用户修改。
### systemd 集成
- 支持标准服务管理命令
- 使用配置文件方式启动(`--config-file=/var/lib/mond/params.conf --non-interactive`
- 配置服务依赖和启动行为
- 提供日志和状态监控
- 安全沙箱设置NoNewPrivileges, ProtectSystem, ProtectHome
- 允许写入配置目录、数据目录和日志目录ReadWritePaths
- 自动重启策略Restart=always
**配置管理优势:**
- 用户修改配置文件后,`apt upgrade` 不会覆盖
- systemd 服务文件可以安全更新,不影响用户配置
- 配置集中管理,易于维护
- 数据与配置分离,便于管理
## 4. 设计原理
- **标准合规:** 遵循 Debian 打包最佳实践
- **可配置性:** 灵活的服务和安装配置
- **可靠性:** 通过 systemd 提供健壮的服务管理

View File

@@ -1,29 +0,0 @@
# Mond 架构设计
## 1. 组件概览
- 主守护进程二进制文件
- 项目初始化和定制脚本
- 多架构构建配置
## 2. 核心文件类型
- 源代码文件
- 构建脚本
- Docker 构建配置
- CMake 配置文件
## 3. 构建流程
1. **源代码准备**:克隆 Monero 源代码
2. **定制应用**:替换 Monero 特定标识符
3. **依赖构建**:使用 Monero 的 depends 系统
4. **编译**:使用 CMake 和 Make 构建
5. **打包**:生成多架构二进制和 Debian 包
## 4. 关键设计决策
- 使用纯静态链接以提高可移植性
- 支持多架构AMD64、ARM64
- 保留原始 Monero 核心功能
- 简化安装和配置过程

View File

@@ -1,27 +0,0 @@
# 如何构建 Mond 项目
## 支持的平台
- Ubuntu (amd64/arm64)
- Alpine Linux (amd64/arm64)
## 构建步骤
1. **准备环境**
- 安装必要的依赖Boost、CMake、编译工具链
2. **克隆仓库**
3. **运行初始化脚本**
Project successfully modified from Monero to Mond!
Binary output name: mond
Project name: mond
4. **编译项目**
## 常见问题排查
- 确保所有 Boost 组件已正确安装
- 检查 CMake 版本兼容性
- 验证编译器支持情况

View File

@@ -1,43 +0,0 @@
# Mond 安装指南
## 支持的平台
Mond 支持以下平台和安装方式:
- Debian stable
- Ubuntu 最新 LTS 版本
- 通用 Linux 二进制包(支持 AMD64 和 ARM64
## 方式一Debian/Ubuntu 安装(推荐)
```bash
# 1. 下载并添加 GPG 密钥
sudo curl https://gitea.bcde.io/api/packages/wangdefa/debian/repository.key \
-o /etc/apt/keyrings/gitea-wangdefa.asc
# 2. 添加软件源
echo "deb [signed-by=/etc/apt/keyrings/gitea-wangdefa.asc] https://gitea.bcde.io/api/packages/wangdefa/debian stable main" | \
sudo tee -a /etc/apt/sources.list.d/wangdefa.list
# 3. 安装
sudo apt-get update
sudo apt-get install mond
```
## 方式二:通用二进制包安装
```bash
# 1. 下载对应架构的包(替换 VERSION 为实际版本号)
wget https://gitea.bcde.io/releases/download/VERSION/mond-amd64-ubuntu-VERSION.tar.gz
# 2. 解压
tar -xzf mond-amd64-ubuntu-VERSION.tar.gz
# 3. 运行
./mond --help
```
## 依赖项
Mond 没有复杂的外部依赖。Debian 包管理器将自动处理必要的系统依赖。对于二进制包,请确保:
- 使用 Linux 64位系统AMD64 或 ARM64
- 具有基础 Linux 运行时环境

View File

@@ -1,64 +0,0 @@
# 如何发布 Mond 项目
## 1. 准备工作
### 前提条件
- 已配置 Gitea 仓库
- 具备仓库管理员权限
- 已安装必要的构建工具
## 2. 创建 Release
### 方法一GitHub/Gitea Web 界面
1. 导航到仓库 Releases 页面
2. 点击 "New Release"
3. 选择目标分支
4. 输入语义化版本标签(例如 `v1.2.3`
5. 填写发布说明
### 方法二:命令行
```bash
git tag -a v1.2.3 -m "Release version 1.2.3"
git push origin v1.2.3
```
## 3. 配置 Gitea Secrets
### 必需的 Secrets
- `REGISTRY_USERNAME`: 包仓库用户名
- `REGISTRY_PASSWORD`: 包仓库认证令牌
- `GPG_PRIVATE_KEY`: 用于签名的 GPG 私钥
- `GPG_PASSPHRASE`: GPG 私钥密码
### 设置步骤
1. 进入仓库设置
2. 选择 "Secrets"
3. 添加每个必需的 Secret
## 4. 包管理仓库上传
### 自动上传
CI 流水线将自动上传到以下位置:
- **Generic Package Registry**:通用软件包仓库
- **Debian Package Registry**stable 发行版
触发条件:新的版本标签推送
### 上传目标
所有 Debian 包统一上传到:
- 发行版stable
- 组件main
- 路径:`debian/pool/stable/main`
## 5. 发布后验证
1. 检查 GitHub/Gitea Releases
2. 验证包管理仓库的可用性
3. 测试不同平台的安装
4. 确认 systemd 服务正常运行
## 注意事项
- 遵循语义化版本Semantic Versioning
- 每次发布前运行完整的测试套件
- 更新 CHANGELOG.md

View File

@@ -1,55 +0,0 @@
# Mond 使用指南
## 基本命令和选项
### 直接运行
```bash
# 基本运行
./mond
# 指定数据目录
./mond --data-dir=/path/to/data
# 指定日志文件
./mond --log-file=/path/to/log
# 后台运行
./mond --detach
```
## Systemd 服务管理
### 服务操作
```bash
# 启用并启动服务
sudo systemctl enable mond.service
sudo systemctl start mond.service
# 查看服务状态
sudo systemctl status mond.service
# 查看实时日志
sudo journalctl -u mond -f
# 停止服务
sudo systemctl stop mond.service
# 禁用服务
sudo systemctl disable mond.service
```
## 配置和日志位置
### Debian/Ubuntu 系统包
- **二进制文件**: `/opt/mond/mond`
- **数据目录**: `/var/lib/mond/`
- **日志目录**: `/var/log/mond/`
### 通用二进制包
- **二进制文件**: 当前目录下的 `mond`
- **数据目录**: 默认为当前用户主目录下的 `.mond`
- **日志目录**: 由 `--log-file` 参数指定,默认为控制台输出

View File

@@ -1,21 +0,0 @@
# Mond 文档
## 概览
[项目概述](/overview/project-overview.md)
## 指南
- [安装指南](/guides/installation.md)
## 架构
- [系统设计](/architecture/system-design.md)
## 参考资料
- [配置参考](/reference/configuration-reference.md)
## 许可证
本文档遵循 BSD-3-Clause 许可证,与 Mond 项目保持一致。

View File

@@ -1,19 +0,0 @@
# Mond: Monero Daemon 定制版
## 1. 身份
- **定义**Monero 守护进程的定制开源实现
- **目的**:提供高度可移植、易于部署的 Monero 节点解决方案
## 2. 高级描述
Mond 是基于 Monero 项目的定制守护进程实现专注于多架构支持、简化部署和增强可移植性。通过纯静态链接和多种安装方式Mond 为不同 Linux 环境中运行 Monero 节点提供了灵活的选择。
## 3. 关键特性
- 多架构支持AMD64、ARM64
- 多发行版兼容Ubuntu、Debian
- 纯静态链接
- 灵活的安装和配置选项
- 隐私保护
- 自动更新支持

View File

@@ -1,24 +0,0 @@
# Mond 参考信息
## 核心摘要
Mond 是 Monero 守护进程的定制开源实现,提供高度可配置和可移植的 Monero 节点解决方案。
## 关键信息源
- **源代码库**https://github.com/monero-project/monero
- **官方网站**:未定义(本项目为定制版)
- **授权协议**BSD-3-Clause
## 配置选项参考
### 常用命令行参数
- `--data-dir <path>`:指定数据目录
- `--log-file <path>`:指定日志文件路径
- `--log-level <level>`日志级别0-4
- `--detach`:后台运行
- `--rpc-bind-ip <ip>`RPC 绑定 IP
- `--rpc-bind-port <port>`RPC 绑定端口
- `--p2p-bind-ip <ip>`P2P 绑定 IP
- `--p2p-bind-port <port>`P2P 绑定端口

View File

@@ -1,206 +0,0 @@
# Mond 配置参考
## 配置文件
### Debian/Ubuntu 系统包配置文件
Debian/Ubuntu 系统包安装后Mond 使用配置文件方式运行:
- **配置文件位置**: `/var/lib/mond/params.conf`
- **配置文件格式**: INI 格式,每行一个配置项,采用双语注释(英文大写标题 + 中文详细说明)
- **修改后生效**: 修改配置文件后需要重启服务
```bash
# 编辑配置文件
sudo nano /var/lib/mond/params.conf
# 重启服务使配置生效
sudo systemctl restart mond.service
```
### 配置文件示例
```ini
# DATA STORAGE
# ============================================================================
# data-dir: 区块链数据存储目录
data-dir=/var/lib/mond/data
# BLOCKCHAIN PRUNING
# ============================================================================
# prune-blockchain: 启用区块链修剪模式
prune-blockchain=1
# sync-pruned-blocks: 同步已修剪的区块(默认启用)
sync-pruned-blocks=1
# NETWORK PEER SETTINGS
# ============================================================================
# out-peers: 主动连接的对等节点数量(出站连接)
out-peers=32
# in-peers: 接受连接的对等节点数量(入站连接)
in-peers=64
# limit-rate-up: 上传速率限制kB/s
limit-rate-up=1048576
# limit-rate-down: 下载速率限制kB/s
limit-rate-down=1048576
# PRIORITY NODES
# ============================================================================
# add-priority-node: 优先连接的可信节点
add-priority-node=p2pmd.xmrvsbeast.com:18080
add-priority-node=nodes.hashvault.pro:18080
# SECURITY AND NETWORK INTEGRITY
# ============================================================================
# enforce-dns-checkpointing: 强制执行 DNS 检查点验证
enforce-dns-checkpointing=1
# enable-dns-blocklist: 启用 DNS 黑名单
enable-dns-blocklist=1
# ZMQ NOTIFICATION SYSTEM
# ============================================================================
# zmq-pub: ZeroMQ 发布接口,用于实时广播区块链事件
zmq-pub=tcp://127.0.0.1:18083
# P2P AND RPC NETWORK BINDING
# ============================================================================
# p2p-bind-ip: P2P 网络监听地址(默认启用,绑定所有网络接口)
p2p-bind-ip=0.0.0.0
# p2p-bind-port: P2P 网络监听端口
p2p-bind-port=18080
# rpc-bind-ip: RPC 接口监听地址
#rpc-bind-ip=0.0.0.0
# rpc-bind-port: RPC 接口监听端口
#rpc-bind-port=18081
# confirm-external-bind: 确认外部网络绑定
#confirm-external-bind=1
# RPC AUTHENTICATION
# ============================================================================
# rpc-login: RPC 访问认证凭据
#rpc-login=user:password
# RPC SSL/TLS ENCRYPTION
# ============================================================================
# rpc-ssl: 启用 RPC 连接的 SSL/TLS 加密(语义更清晰的启用方式)
rpc-ssl=enabled
# rpc-ssl-certificate: SSL 证书文件路径
#rpc-ssl-certificate=/path/to/your/certificate.pem
# rpc-ssl-private-key: SSL 私钥文件路径
#rpc-ssl-private-key=/path/to/your/private_key.pem
# LOGGING SETTINGS
# ============================================================================
# log-level: 日志详细程度(调整为详细日志级别)
log-level=1
# log-file: 日志文件保存路径
log-file=/var/log/mond/mond.log
```
### 配置文件保护
配置文件在以下情况下**不会被覆盖**
- 执行 `apt upgrade` 升级 mond 包时
- 重新安装 mond 包时
这确保了您的自定义配置不会在更新时丢失。
## 命令行选项
### 使用配置文件
```bash
--config-file <path> # 指定配置文件路径(推荐)
```
### 数据和日志控制
```bash
--data-dir <path> # 指定数据目录
--log-file <path> # 指定日志文件路径
--log-level <level> # 日志级别 (0-4)
--detach # 后台运行
```
### 网络配置
```bash
--rpc-bind-ip <ip> # RPC 绑定 IP (默认: 127.0.0.1)
--rpc-bind-port <port> # RPC 绑定端口 (默认: 18081)
--p2p-bind-ip <ip> # P2P 绑定 IP (默认: 0.0.0.0)
--p2p-bind-port <port> # P2P 绑定端口 (默认: 18080)
```
**注意**: 命令行参数会覆盖配置文件中的对应设置。
## 目录结构
### Debian/Ubuntu 系统包
```
/opt/mond/mond # 二进制文件
/var/lib/mond/params.conf # 配置文件
/var/lib/mond/data/ # 区块链数据目录
/var/log/mond/ # 日志目录
```
### 通用二进制包
```
./mond # 二进制文件
~/.mond/ # 默认数据目录
```
## Systemd 服务配置
### 服务文件位置
`/lib/systemd/system/mond.service`
### 关键配置段
```ini
[Service]
WorkingDirectory=/opt/mond
# 使用配置文件启动
ExecStart=/opt/mond/mond --config-file=/var/lib/mond/params.conf --non-interactive
User=mond
Group=mond
# 安全设置
NoNewPrivileges=true
PrivateTmp=true
ProtectSystem=strict
ProtectHome=true
ReadWritePaths=/var/lib/mond /var/lib/mond/data /var/log/mond
```
### 修改服务配置
systemd 服务文件使用 `--config-file` 参数,所有运行时配置都在配置文件中设置。
如需修改服务配置:
1. 编辑配置文件:`sudo nano /var/lib/mond/params.conf`
2. 重启服务:`sudo systemctl restart mond.service`
**不建议**直接修改 systemd 服务文件,因为包更新时可能会被覆盖。
## 日志级别
- `0`: 仅记录关键错误
- `1`: 记录错误和警告
- `2`: 标准日志级别(默认)
- `3`: 详细日志
- `4`: 调试级别(最详细)

View File

@@ -1,20 +0,0 @@
# Mond 项目常见问题解答
## 构建问题
### Q1: 编译时出现 Boost 组件缺失错误
**解决方案:**
- 确保安装所有必需的 Boost 组件
- Alpine Linux 需要额外安装 boost-static 和具体组件包
### Q2: 版本宏定义错误
**解决方案:**
- 检查 init.sh 脚本
- 确保使用正确的 sed 替换命令
- 全局替换 MONERO_VERSION 为 MOND_VERSION
### Q3: CMake 构建失败
**排查步骤:**
1. 验证 CMake 版本兼容性
2. 检查依赖库安装情况
3. 确认编译器版本支持