Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 1faa92266e | |||
| 2d47652a06 | |||
| b70d968390 | |||
| 319cadb352 |
@@ -9,7 +9,7 @@ on:
|
|||||||
env:
|
env:
|
||||||
DOCKER_BUILDKIT: "1"
|
DOCKER_BUILDKIT: "1"
|
||||||
PRODUCT_NAME: "mond"
|
PRODUCT_NAME: "mond"
|
||||||
MONERO_VERSION: "v0.18.4.4"
|
MONERO_VERSION: "v0.18.4.5"
|
||||||
BUILDX_NO_DEFAULT_ATTESTATIONS: "1"
|
BUILDX_NO_DEFAULT_ATTESTATIONS: "1"
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
|
|||||||
4
.gitignore
vendored
4
.gitignore
vendored
@@ -1,6 +1,10 @@
|
|||||||
|
# macOS system files
|
||||||
|
.DS_Store
|
||||||
|
|
||||||
# Claude Code
|
# Claude Code
|
||||||
.mcp.json
|
.mcp.json
|
||||||
.claude/
|
.claude/
|
||||||
|
|
||||||
|
llmdoc/
|
||||||
example/
|
example/
|
||||||
.source/
|
.source/
|
||||||
@@ -34,10 +34,10 @@ sudo apt-get install mond
|
|||||||
|
|
||||||
```bash
|
```bash
|
||||||
# 1. 下载对应架构的包
|
# 1. 下载对应架构的包
|
||||||
wget https://gitea.bcde.io/releases/download/v0.18.4.4/mond-amd64-ubuntu-v0.18.4.4.tar.gz
|
wget https://gitea.bcde.io/releases/download/v0.18.4.5/mond-amd64-ubuntu-v0.18.4.5.tar.gz
|
||||||
|
|
||||||
# 2. 解压
|
# 2. 解压
|
||||||
tar -xzf mond-amd64-ubuntu-v0.18.4.4.tar.gz
|
tar -xzf mond-amd64-ubuntu-v0.18.4.5.tar.gz
|
||||||
|
|
||||||
# 3. 运行
|
# 3. 运行
|
||||||
./mond --help
|
./mond --help
|
||||||
|
|||||||
2
debian/build-deb.sh
vendored
2
debian/build-deb.sh
vendored
@@ -4,7 +4,7 @@ set -e
|
|||||||
# 参数检查
|
# 参数检查
|
||||||
if [ $# -ne 3 ]; then
|
if [ $# -ne 3 ]; then
|
||||||
echo "Usage: $0 <ARCH> <VERSION> <BINARY_DIR>"
|
echo "Usage: $0 <ARCH> <VERSION> <BINARY_DIR>"
|
||||||
echo "Example: $0 amd64 0.18.4.4 build/Linux/release/bin"
|
echo "Example: $0 amd64 0.18.4.5 build/Linux/release/bin"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
16
debian/postinst
vendored
16
debian/postinst
vendored
@@ -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
23
debian/prerm
vendored
@@ -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
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ RUN apt-get update && apt-get install -y \
|
|||||||
|
|
||||||
FROM base AS build
|
FROM base AS build
|
||||||
|
|
||||||
ARG MONERO_VERSION=v0.18.3.4
|
ARG MONERO_VERSION=v0.18.4.5
|
||||||
ARG TARGETARCH
|
ARG TARGETARCH
|
||||||
ARG BUILDPLATFORM
|
ARG BUILDPLATFORM
|
||||||
ARG TARGETPLATFORM
|
ARG TARGETPLATFORM
|
||||||
|
|||||||
@@ -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 构建流程
|
|
||||||
- 检查系统兼容性
|
|
||||||
- 链接必要库
|
|
||||||
- 生成可执行文件
|
|
||||||
@@ -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 Registry(stable 发行版)
|
|
||||||
|
|
||||||
## 4. 设计原理
|
|
||||||
|
|
||||||
- **可移植性:** 支持多架构和发行版
|
|
||||||
- **自动化:** 减少手动干预
|
|
||||||
- **一致性:** 标准化构建和发布流程
|
|
||||||
@@ -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 提供健壮的服务管理
|
|
||||||
@@ -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 核心功能
|
|
||||||
- 简化安装和配置过程
|
|
||||||
@@ -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 版本兼容性
|
|
||||||
- 验证编译器支持情况
|
|
||||||
@@ -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 运行时环境
|
|
||||||
@@ -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
|
|
||||||
@@ -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` 参数指定,默认为控制台输出
|
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
# Mond 文档
|
|
||||||
|
|
||||||
## 概览
|
|
||||||
|
|
||||||
[项目概述](/overview/project-overview.md)
|
|
||||||
|
|
||||||
## 指南
|
|
||||||
|
|
||||||
- [安装指南](/guides/installation.md)
|
|
||||||
|
|
||||||
## 架构
|
|
||||||
|
|
||||||
- [系统设计](/architecture/system-design.md)
|
|
||||||
|
|
||||||
## 参考资料
|
|
||||||
|
|
||||||
- [配置参考](/reference/configuration-reference.md)
|
|
||||||
|
|
||||||
## 许可证
|
|
||||||
|
|
||||||
本文档遵循 BSD-3-Clause 许可证,与 Mond 项目保持一致。
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
# Mond: Monero Daemon 定制版
|
|
||||||
|
|
||||||
## 1. 身份
|
|
||||||
|
|
||||||
- **定义**:Monero 守护进程的定制开源实现
|
|
||||||
- **目的**:提供高度可移植、易于部署的 Monero 节点解决方案
|
|
||||||
|
|
||||||
## 2. 高级描述
|
|
||||||
|
|
||||||
Mond 是基于 Monero 项目的定制守护进程实现,专注于多架构支持、简化部署和增强可移植性。通过纯静态链接和多种安装方式,Mond 为不同 Linux 环境中运行 Monero 节点提供了灵活的选择。
|
|
||||||
|
|
||||||
## 3. 关键特性
|
|
||||||
|
|
||||||
- 多架构支持(AMD64、ARM64)
|
|
||||||
- 多发行版兼容(Ubuntu、Debian)
|
|
||||||
- 纯静态链接
|
|
||||||
- 灵活的安装和配置选项
|
|
||||||
- 隐私保护
|
|
||||||
- 自动更新支持
|
|
||||||
@@ -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 绑定端口
|
|
||||||
@@ -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`: 调试级别(最详细)
|
|
||||||
@@ -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. 确认编译器版本支持
|
|
||||||
Reference in New Issue
Block a user