feat: 优化 Debian 打包配置并初始化项目文档系统
All checks were successful
Build and Release Mond / build-and-test (arm64) (push) Successful in 4s
Build and Release Mond / build-and-test (amd64) (push) Successful in 14s
Build and Release Mond / release (push) Successful in 37s

- 简化 mond.service 配置,改为通过配置文件启动
- 优化 postinst 安装脚本,自动生成配置文件模板
- 优化 postrm 卸载脚本,正确清理数据目录
- 初始化 llmdoc 文档系统,包含项目概览、使用指南、架构说明和参考文档
- 更新 README.md 构建和配置说明
- 移除 .gitignore 中 llmdoc/ 的忽略规则
This commit is contained in:
2025-12-24 08:59:06 +08:00
parent 78f66b3c23
commit ff86a4e2bf
16 changed files with 651 additions and 39 deletions

1
.gitignore vendored
View File

@@ -1,7 +1,6 @@
# Claude Code
.mcp.json
.claude/
llmdoc/
example/
.source/

View File

@@ -112,10 +112,25 @@ sudo systemctl disable mond.service
```
/opt/mond/mond # 二进制文件
/var/lib/mond/ # 区块链数据目录
/var/lib/mond/params.conf # 配置文件
/var/lib/mond/data/ # 区块链数据目录
/var/log/mond/ # 日志目录
```
### 修改配置
Debian/Ubuntu 系统包使用配置文件方式运行,修改配置非常简单:
```bash
# 1. 编辑配置文件
sudo nano /var/lib/mond/params.conf
# 2. 重启服务使配置生效
sudo systemctl restart mond.service
```
**优势**:配置文件在升级时不会被覆盖,您的自定义设置会被保留。
#### 通用二进制包
```

16
debian/mond.service vendored
View File

@@ -8,20 +8,8 @@ Type=simple
# 工作目录
WorkingDirectory=/opt/mond
# 执行命令
ExecStart=/opt/mond/mond \
--data-dir=/var/lib/mond \
--prune-blockchain \
--zmq-pub tcp://127.0.0.1:18083 \
--out-peers=32 \
--in-peers=64 \
--add-priority-node=p2pmd.xmrvsbeast.com:18080 \
--add-priority-node=nodes.hashvault.pro:18080 \
--enforce-dns-checkpointing \
--enable-dns-blocklist \
--log-level 1 \
--log-file=/var/log/mond/mond.log \
--non-interactive
# 执行命令 - 使用配置文件
ExecStart=/opt/mond/mond --config-file=/var/lib/mond/params.conf --non-interactive
# 重启策略
Restart=always

90
debian/postinst vendored
View File

@@ -18,9 +18,62 @@ chown mond:mond /var/log/mond
chmod 750 /var/log/mond
# Create data directory
mkdir -p /var/lib/mond
chown mond:mond /var/lib/mond
chmod 750 /var/lib/mond
mkdir -p /var/lib/mond/data
chown -R mond:mond /var/lib/mond
chmod -R 750 /var/lib/mond
# Create configuration file if it doesn't exist
if [ ! -f /var/lib/mond/params.conf ]; then
cat > /var/lib/mond/params.conf << 'EOF'
# Mond Configuration File
# This file is automatically created during installation
# Edit this file to customize your Mond daemon settings
# After modifying, restart the service: sudo systemctl restart mond.service
# Data directory - where blockchain data is stored
data-dir=/var/lib/mond/data
# Blockchain pruning - reduces disk usage by pruning old blockchain data
prune-blockchain=1
# ZMQ pub socket for notifications
zmq-pub=tcp://127.0.0.1:18083
# Network peer settings
out-peers=32
in-peers=64
# Priority nodes - trusted nodes to connect to
add-priority-node=p2pmd.xmrvsbeast.com:18080
add-priority-node=nodes.hashvault.pro:18080
# DNS checkpointing and blocklist
enforce-dns-checkpointing=1
enable-dns-blocklist=1
# P2P and RPC bind settings
#p2p-bind-ip=0.0.0.0
#p2p-bind-port=18080
#rpc-bind-ip=0.0.0.0
#rpc-bind-port=18081
#confirm-external-bind=1
# RPC login credentials
#rpc-login=user:password
# Enable SSL for RPC connections
#rpc-ssl=1
#rpc-ssl-certificate=/path/to/your/certificate.pem
#rpc-ssl-private-key=/path/to/your/private_key.pem
# Logging settings
# Log levels: 0=minimal, 1=errors, 2=warnings, 3=info, 4=debug
log-level=3
log-file=/var/log/mond/mond.log
EOF
chown mond:mond /var/lib/mond/params.conf
chmod 640 /var/lib/mond/params.conf
fi
# Set permissions on binary
chown root:mond /opt/mond/mond
@@ -39,22 +92,31 @@ fi
echo ""
echo "✅ Mond installed successfully!"
echo ""
echo "📋 Service Information:"
echo "📋 Configuration and startup:"
echo ""
echo " mond - Mond cryptocurrency network daemon"
echo "1. Review and configure settings (optional):"
echo " sudo nano /var/lib/mond/params.conf"
echo ""
echo "To start the daemon:"
echo " sudo systemctl enable mond.service"
echo " sudo systemctl start mond.service"
echo " Adjust network settings, peer connections, and other options as needed."
echo ""
echo "Data directory:"
echo " /var/lib/mond"
echo "2. Start Mond:"
echo " sudo systemctl enable mond.service"
echo " sudo systemctl start mond.service"
echo ""
echo "Log directory:"
echo " /var/log/mond"
echo "3. Check status:"
echo " sudo systemctl status mond.service"
echo " sudo journalctl -u mond -f"
echo ""
echo "Binary location:"
echo " /opt/mond/mond"
echo "📁 Important paths:"
echo " Config file: /var/lib/mond/params.conf"
echo " Data directory: /var/lib/mond/data"
echo " Log directory: /var/log/mond"
echo " Binary: /opt/mond/mond"
echo ""
echo "💡 Tip: Your params.conf will NOT be overwritten during package upgrades."
echo ""
echo "For help:"
echo " /opt/mond/mond --help"
echo ""
exit 0

11
debian/postrm vendored
View File

@@ -12,16 +12,9 @@ case "$1" in
delgroup --quiet mond || true
fi
# Remove log directory
# Remove data directories (only on purge)
rm -rf /var/log/mond
# Note: We keep /var/lib/mond (blockchain data) for safety
# Users can manually remove it if needed
echo ""
echo "⚠️ Blockchain data preserved at: /var/lib/mond"
echo "To completely remove all data, run:"
echo " sudo rm -rf /var/lib/mond"
echo ""
rm -rf /var/lib/mond
;;
remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)

View File

@@ -0,0 +1,38 @@
# 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

@@ -0,0 +1,41 @@
# 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. **构建制品:**
- 多架构 Docker 镜像
- Debian 包
- 二进制可执行文件
3. **发布到:**
- GitHub/Gitea Release
- 包管理仓库
## 4. 设计原理
- **可移植性:** 支持多架构和发行版
- **自动化:** 减少手动干预
- **一致性:** 标准化构建和发布流程

View File

@@ -0,0 +1,59 @@
# 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

@@ -0,0 +1,27 @@
# 如何构建 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

@@ -0,0 +1,62 @@
# Mond 安装指南
## 支持的平台
Mond 支持以下平台和安装方式:
- Debian 12 (Bookworm)
- Debian 13 (Trixie)
- Ubuntu 最新 LTS 版本
- 通用 Linux 二进制包(支持 AMD64 和 ARM64
## 方式一Debian/Ubuntu 安装(推荐)
### Debian 12 (Bookworm)
```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 bookworm main" | \
sudo tee -a /etc/apt/sources.list.d/wangdefa.list
# 3. 安装
sudo apt-get update
sudo apt-get install mond
```
### Debian 13 (Trixie)
```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 trixie 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

@@ -0,0 +1,64 @@
# 如何发布 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 流水线将自动处理
- 触发条件:新的版本标签推送
### 手动上传(备选)
```bash
# 构建 Debian 包
./debian/build-deb.sh
# 上传到包仓库
dput ppa:your-ppa-name/mond mond_1.2.3_amd64.changes
```
## 5. 发布后验证
1. 检查 GitHub/Gitea Releases
2. 验证包管理仓库的可用性
3. 测试不同平台的安装
4. 确认 systemd 服务正常运行
## 注意事项
- 遵循语义化版本Semantic Versioning
- 每次发布前运行完整的测试套件
- 更新 CHANGELOG.md

View File

@@ -0,0 +1,55 @@
# 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` 参数指定,默认为控制台输出

18
llmdoc/index.md Normal file
View File

@@ -0,0 +1,18 @@
# Mond 项目文档
## 概述
Mond 是一个基于 Monero 的区块链项目,专注于隐私和去中心化。
## 文档导航
### 项目概览
- [项目背景](/overview/project-overview.md)
### 构建指南
- [如何构建项目](/guides/how-to-build.md)
### 架构
- [构建系统](/architecture/build-system.md)
### 参考
- [常见问题](/reference/faq.md)

View File

@@ -0,0 +1,12 @@
# Mond 项目概览
## 1. 项目定位
Mond 是一个基于 Monero 区块链技术的开源项目,专注于提供更加安全、私密的去中心化交易解决方案。
## 2. 核心特点
- 高度私密的交易机制
- 基于 Monero 核心技术
- 跨平台支持Ubuntu, Alpine Linux, amd64/arm64
- 灵活的构建系统

View File

@@ -0,0 +1,159 @@
# 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-dir=/var/lib/mond/data
# 区块链修剪
prune-blockchain=1
# ZMQ 发布端口
zmq-pub=tcp://127.0.0.1:18083
# 网络对等节点设置
out-peers=32
in-peers=64
# 优先节点
add-priority-node=p2pmd.xmrvsbeast.com:18080
add-priority-node=nodes.hashvault.pro:18080
# DNS 检查点和黑名单
enforce-dns-checkpointing=1
enable-dns-blocklist=1
# P2P 和 RPC 绑定设置
#p2p-bind-ip=0.0.0.0
#p2p-bind-port=18080
#rpc-bind-ip=0.0.0.0
#rpc-bind-port=18081
#confirm-external-bind=1
# RPC 认证
#rpc-login=user:password
# 启用 RPC SSL
#rpc-ssl=1
#rpc-ssl-certificate=/path/to/your/certificate.pem
#rpc-ssl-private-key=/path/to/your/private_key.pem
# 日志设置
log-level=1
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`: 调试级别(最详细)

20
llmdoc/reference/faq.md Normal file
View File

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