Compare commits

8 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
319cadb352 feat: 更新 Monero 版本至 v0.18.4.5,并调整相关文档和配置
All checks were successful
Build and Release Mond / build-and-test (amd64) (push) Successful in 11m52s
Build and Release Mond / build-and-test (arm64) (push) Successful in 18m1s
Build and Release Mond / release (push) Has been skipped
2026-01-21 11:56:40 +08:00
b491d8af32 ci: 统一 Debian 发布为 stable 发行版并更新相关文档
All checks were successful
Build and Release Mond / build-and-test (arm64) (push) Successful in 2s
Build and Release Mond / build-and-test (amd64) (push) Successful in 16s
Build and Release Mond / release (push) Successful in 28s
- 去除多发行版支持(bookworm、trixie),改为 stable 单一发行版
- 更新 CI 配置:Debian 包统一上传到 debian/pool/stable/main
- 简化 Release 说明生成脚本
- 更新安装指南、发布指南和 CI/CD 架构文档
- 补充系统设计和配置参考文档
2025-12-25 10:55:04 +08:00
b13d06aae7 feat: 优化配置文件格式并完善文档系统
All checks were successful
Build and Release Mond / build-and-test (arm64) (push) Successful in 5s
Build and Release Mond / build-and-test (amd64) (push) Successful in 15s
Build and Release Mond / release (push) Has been skipped
- 新增详细配置示例文件(conf/params.example.conf),包含所有配置项的详细中文说明
- 配置文件采用清晰的章节分组和双语注释(英文标题 + 中文说明)
- 新增配置项:sync-pruned-blocks、limit-rate-up、limit-rate-down
- 默认启用 P2P 网络绑定(0.0.0.0:18080)
- 更新项目文档索引并同步配置参考文档
2025-12-24 10:43:51 +08:00
ff86a4e2bf 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/ 的忽略规则
2025-12-24 08:59:06 +08:00
78f66b3c23 ci: Release 描述改为中文并移除静态链接验证
All checks were successful
Build and Release Mond / build-and-test (arm64) (push) Successful in 41s
Build and Release Mond / build-and-test (amd64) (push) Successful in 53s
Build and Release Mond / release (push) Has been skipped
- 将 Release 说明翻译为简体中文
- 移除 'Verify Static Linking' 部分
- 优化下载方式说明的中文表述
2025-12-15 15:03:21 +08:00
10 changed files with 592 additions and 100 deletions

View File

@@ -9,7 +9,7 @@ on:
env:
DOCKER_BUILDKIT: "1"
PRODUCT_NAME: "mond"
MONERO_VERSION: "v0.18.4.4"
MONERO_VERSION: "v0.18.4.5"
BUILDX_NO_DEFAULT_ATTESTATIONS: "1"
jobs:
@@ -130,29 +130,19 @@ jobs:
}
done
# 上传 Debian 包到 Debian Package Registry (支持多个发行版)
# 上传 Debian 包到 Debian Package Registry (通用稳定版)
echo ""
echo "📦 上传 Debian 包到 Debian Package Registry..."
for file in *.deb; do
[ ! -f "$file" ] && continue
# 上传到 bookworm (Debian 12)
echo " ⬆️ $file → bookworm"
# 上传到 stable (通用稳定版)
echo " ⬆️ $file → stable"
curl -fsSL -X PUT \
-H "Authorization: token ${TOKEN}" \
--upload-file "$file" \
"https://${REGISTRY}/api/packages/${OWNER}/debian/pool/bookworm/main/upload" || {
echo "❌ Debian 包上传失败: $file (bookworm)"
exit 1
}
# 上传到 trixie (Debian 13)
echo " ⬆️ $file → trixie"
curl -fsSL -X PUT \
-H "Authorization: token ${TOKEN}" \
--upload-file "$file" \
"https://${REGISTRY}/api/packages/${OWNER}/debian/pool/trixie/main/upload" || {
echo "❌ Debian 包上传失败: $file (trixie)"
"https://${REGISTRY}/api/packages/${OWNER}/debian/pool/stable/main/upload" || {
echo "❌ Debian 包上传失败: $file (stable)"
exit 1
}
done
@@ -162,7 +152,7 @@ jobs:
echo "📝 生成 Release..."
export REGISTRY OWNER TAG
RELEASE_DATA=$(python3 -c 'import json,glob,os;r=os.environ["REGISTRY"];o=os.environ["OWNER"];p=os.environ["PRODUCT_NAME"];t=os.environ["TAG"];b=["## Release "+t,"","Mond is a customized build of Monero daemon (monerod).","","### ✨ Key Features","","- 🔗 **Pure Static Linking** - No dependencies required, runs on any Linux system","- 🏗️ **Multi-Architecture** - Native support for AMD64 and ARM64","- 📦 **Built with Official depends System** - Using Monero official build system for reliability","","### 📥 Download Methods","","#### Method 1: Direct Download (Recommended)","","Click on the file names in the **Assets** section below to download directly.","","**Available Packages:**",""]+[f"- [`{f}`](https://{r}/api/packages/{o}/generic/{p}/{t}/{f})" for f in sorted(glob.glob("*.tar.gz"))]+["","#### Method 2: Generic Package Registry","","Download via command line:",""]+[f"```bash\nwget https://{r}/api/packages/{o}/generic/{p}/{t}/{f}\n```" for f in sorted(glob.glob("*.tar.gz"))[:1]]+["","#### Method 3: Debian Repository","","**Debian 12 (Bookworm):**","","```bash","# Download GPG key",f"sudo curl https://{r}/api/packages/{o}/debian/repository.key -o /etc/apt/keyrings/gitea-{o}.asc","","# Add repository",f"echo \"deb [signed-by=/etc/apt/keyrings/gitea-{o}.asc] https://{r}/api/packages/{o}/debian bookworm main\" | sudo tee -a /etc/apt/sources.list.d/{o}.list","","# Update and install","sudo apt-get update","sudo apt-get install mond","```","","**Debian 13 (Trixie):**","","```bash","# Download GPG key",f"sudo curl https://{r}/api/packages/{o}/debian/repository.key -o /etc/apt/keyrings/gitea-{o}.asc","","# Add repository",f"echo \"deb [signed-by=/etc/apt/keyrings/gitea-{o}.asc] https://{r}/api/packages/{o}/debian trixie main\" | sudo tee -a /etc/apt/sources.list.d/{o}.list","","# Update and install","sudo apt-get update","sudo apt-get install mond","```","","### 🔍 Verify Static Linking","","After downloading, verify the binary is statically linked:","","```bash","ldd mond","# Expected output: \"not a dynamic executable\"","```"];print(json.dumps({"tag_name":t,"name":f"Release {t}","body":"\n".join(b),"draft":False,"prerelease":False}))')
RELEASE_DATA=$(python3 -c 'import json,glob,os;r=os.environ["REGISTRY"];o=os.environ["OWNER"];p=os.environ["PRODUCT_NAME"];t=os.environ["TAG"];b=["## Release "+t,"","Mond Monero 守护进程 (monerod) 的定制版本。","","### ✨ 主要特性","","- 🔗 **纯静态链接** - 无需依赖,可在任意 Linux 系统运行","- 🏗️ **多架构支持** - 原生支持 AMD64 ARM64","- 📦 **官方构建系统** - 使用 Monero 官方 depends 系统构建,确保可靠性","","### 📥 下载方式","","#### 方式一:直接下载(推荐)","","点击下方 **Assets** 区域的文件名直接下载。","","**可用安装包:**",""]+[f"- [`{f}`](https://{r}/api/packages/{o}/generic/{p}/{t}/{f})" for f in sorted(glob.glob("*.tar.gz"))]+["","#### 方式二:通用软件包仓库","","通过命令行下载:",""]+[f"```bash\nwget https://{r}/api/packages/{o}/generic/{p}/{t}/{f}\n```" for f in sorted(glob.glob("*.tar.gz"))[:1]]+["","#### 方式三Debian 软件源","","```bash","# 下载 GPG 密钥",f"sudo curl https://{r}/api/packages/{o}/debian/repository.key -o /etc/apt/keyrings/gitea-{o}.asc","","# 添加软件源",f"echo \"deb [signed-by=/etc/apt/keyrings/gitea-{o}.asc] https://{r}/api/packages/{o}/debian stable main\" | sudo tee -a /etc/apt/sources.list.d/{o}.list","","# 更新并安装","sudo apt-get update","sudo apt-get install mond","```"];print(json.dumps({"tag_name":t,"name":f"Release {t}","body":"\n".join(b),"draft":False,"prerelease":False}))')
# 创建 Release
echo ""

5
.gitignore vendored
View File

@@ -1,7 +1,10 @@
# macOS system files
.DS_Store
# Claude Code
.mcp.json
.claude/
llmdoc/
llmdoc/
example/
.source/

View File

@@ -16,36 +16,16 @@
## 🚀 快速开始
### 方式一:Debian/Ubuntu推荐
#### Debian 12 (Bookworm)
### Debian/Ubuntu推荐
```bash
# 1. 下载并添加 GPG 密钥
sudo curl https://gitea.bcde.io/api/packages/wangdefa/debian/repository.key \
-o /etc/apt/keyrings/gitea-wangdefa.asc
# 下载 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
# 添加仓库
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
```
#### 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
```
@@ -54,10 +34,10 @@ sudo apt-get install mond
```bash
# 1. 下载对应架构的包
wget https://gitea.bcde.io/releases/download/VERSION/mond-amd64-ubuntu-VERSION.tar.gz
wget https://gitea.bcde.io/releases/download/v0.18.4.5/mond-amd64-ubuntu-v0.18.4.5.tar.gz
# 2. 解压
tar -xzf mond-amd64-ubuntu-VERSION.tar.gz
tar -xzf mond-amd64-ubuntu-v0.18.4.5.tar.gz
# 3. 运行
./mond --help
@@ -112,10 +92,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
```
**优势**:配置文件在升级时不会被覆盖,您的自定义设置会被保留。
#### 通用二进制包
```

388
conf/params.example.conf Normal file
View File

@@ -0,0 +1,388 @@
# 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 STORAGE
# ============================================================================
# data-dir: 区块链数据存储目录
# - 包含完整的区块链数据、交易池和节点状态
# - 确保该目录所在磁盘有足够空间(完整节点需要 150GB+,修剪节点需要 50GB+
# - 默认位置: ~/.bitmonero (用户安装) 或 /var/lib/mond (系统服务)
data-dir=/var/lib/mond/data
# BLOCKCHAIN PRUNING
# ============================================================================
# prune-blockchain: 启用区块链修剪模式
# - 1 = 启用修剪,只保留最近的区块数据和必要的历史信息
# - 0 = 禁用修剪,保留完整的区块链历史(默认)
# - 优点: 大幅减少磁盘使用(从 150GB+ 降至 50GB 左右)
# - 缺点: 无法向其他节点提供完整的历史区块数据
# - 注意: 修剪节点仍然可以完全验证区块链,只是不存储所有旧数据
prune-blockchain=1
# sync-pruned-blocks: 同步修剪后的区块
# - 1 = 允许从其他修剪节点同步数据(推荐)
# - 0 = 仅从完整节点同步
# - 建议与 prune-blockchain=1 一起使用,加速初始同步
sync-pruned-blocks=1
# ZMQ NOTIFICATION SYSTEM
# ============================================================================
# zmq-pub: ZeroMQ 发布接口,用于实时广播区块链事件
# - tcp://IP:PORT 格式指定绑定地址和端口
# - 127.0.0.1 = 仅本地访问(推荐,除非需要远程订阅)
# - 18083 = 默认 ZMQ 端口(可修改)
# - 用途: P2Pool 挖矿、实时监控工具、区块浏览器等
# - 发布的事件类型:
# * json-full-chain_main: 新区块添加到主链
# * json-full-txpool_add: 新交易进入交易池
# * json-minimal-chain_main: 简化的新区块信息
# * json-minimal-txpool_add: 简化的新交易信息
# - 如需外部访问,改为 tcp://0.0.0.0:18083 并添加 confirm-external-bind=1
zmq-pub=tcp://127.0.0.1:18083
# NETWORK PEER SETTINGS
# ============================================================================
# out-peers: 主动连接的对等节点数量(出站连接)
# - 默认: 8这里设置为 32 可提高网络连接性和同步速度
# - 范围: 0-1000推荐值: 8-64
# - 更多出站连接 = 更快的区块传播,但消耗更多带宽和资源
out-peers=32
# in-peers: 接受连接的对等节点数量(入站连接)
# - 默认: 无限制,这里设置为 64 可平衡网络贡献和资源消耗
# - 范围: 0-无限,推荐值: 32-128
# - 入站连接有助于网络去中心化,但需要开放 P2P 端口18080
in-peers=64
# limit-rate-up: 上传速率限制kB/s千字节/秒)
# - 1024 kB/s = 1 MB/s = 8 Mbps
# - 默认: 8192 kB/s = 8 MB/s = 64 Mbps
# - -1 = 无限制(不推荐,可能耗尽带宽)
# - 根据网络带宽调整,建议保留部分带宽给其他应用
# - 计算公式: (总上传带宽 Mbps * 1024) / 8 = kB/s
# - 示例:
# * 10 Mbps 上传 → limit-rate-up=1280 (10 * 1024 / 8)
# * 50 Mbps 上传 → limit-rate-up=6400 (50 * 1024 / 8)
# * 100 Mbps 上传 → limit-rate-up=12800 (100 * 1024 / 8)
limit-rate-up=1048576
# limit-rate-down: 下载速率限制kB/s千字节/秒)
# - 1024 kB/s = 1 MB/s = 8 Mbps
# - 默认: 32768 kB/s = 32 MB/s = 256 Mbps
# - -1 = 无限制(初始同步时推荐)
# - 同步完成后可设置限制,节省带宽
# - 注意: 限制过低会影响区块同步速度
# - 示例:
# * 50 Mbps 下载 → limit-rate-down=6400 (50 * 1024 / 8)
# * 100 Mbps 下载 → limit-rate-down=12800 (100 * 1024 / 8)
# * 无限制(推荐初始同步)→ limit-rate-down=-1
limit-rate-down=1048576
# PRIORITY NODES
# ============================================================================
# add-priority-node: 优先连接的可信节点
# - 格式: 域名:端口 或 IP:端口
# - 节点会优先与这些节点建立连接并保持连接
# - 用途:
# * 加速初始同步(连接到高速节点)
# * 提高网络可靠性(连接到稳定节点)
# * 优先从可信来源获取区块
# - 可以添加多个优先节点(重复使用此选项)
# - 这些节点必须开放 P2P 端口(通常是 18080
add-priority-node=p2pmd.xmrvsbeast.com:18080
add-priority-node=nodes.hashvault.pro:18080
# 可以添加更多优先节点:
# add-priority-node=node.supportxmr.com:18080
# add-priority-node=node.moneroworld.com:18080
# add-priority-node=opennode.xmr-tw.org:18080
# SECURITY AND NETWORK INTEGRITY
# ============================================================================
# enforce-dns-checkpointing: 强制执行 DNS 检查点验证
# - 1 = 启用(推荐),通过 DNS TXT 记录验证区块链检查点
# - 0 = 禁用
# - 作用: 防止长期离线后被恶意分叉欺骗
# - DNS 检查点由 Monero 核心开发者维护
# - 安全增强措施,几乎没有缺点
enforce-dns-checkpointing=1
# enable-dns-blocklist: 启用 DNS 黑名单
# - 1 = 启用(推荐),阻止连接到已知的恶意节点
# - 0 = 禁用
# - 黑名单通过 DNS 记录维护,包含:
# * Sybil 攻击节点
# * 已知的恶意节点
# * 降低网络性能的节点
# - 提高网络安全性和连接质量
enable-dns-blocklist=1
# P2P AND RPC NETWORK BINDING
# ============================================================================
# 以下配置控制节点的网络接口绑定
# 默认全部注释掉(使用内置默认值)
# 根据使用场景取消注释并修改
# --- P2P 绑定设置 ---
# p2p-bind-ip: P2P 网络监听地址
# - 0.0.0.0 = 监听所有网络接口(公网+内网+本地)
# - 127.0.0.1 = 仅本地访问(不接受外部节点连接)
# - 192.168.x.x = 仅内网访问
# - 默认: 0.0.0.0(接受所有连接)
# 使用场景:
# * 公共节点: 0.0.0.0(贡献网络,需开放防火墙 18080 端口)
# * 私有节点: 127.0.0.1(不接受入站连接,仅主动连接其他节点)
#p2p-bind-ip=0.0.0.0
# p2p-bind-port: P2P 网络监听端口
# - 18080 = 主网默认端口
# - 28080 = 测试网 (testnet) 端口
# - 38080 = 预发布网 (stagenet) 端口
# - 使用非标准端口可以减少扫描攻击,但会降低网络发现性
#p2p-bind-port=18080
# --- RPC 绑定设置 ---
# rpc-bind-ip: RPC 接口监听地址
# - 0.0.0.0 = 监听所有网络接口(危险!需要配合认证和 SSL
# - 127.0.0.1 = 仅本地访问(推荐,安全)
# - 192.168.x.x = 仅内网访问
# - 默认: 127.0.0.1(仅本地)
# ⚠️ 安全警告:
# * RPC 端口有完整控制权限,暴露到公网极度危险!
# * 如果必须远程访问,必须配置:
# 1. rpc-login (用户名密码)
# 2. rpc-ssl (SSL/TLS 加密)
# 3. 防火墙规则(限制访问 IP
# * 推荐使用 SSH 隧道代替直接暴露
#rpc-bind-ip=0.0.0.0
# rpc-bind-port: RPC 接口监听端口
# - 18081 = 主网默认 RPC 端口
# - 28081 = 测试网 RPC 端口
# - 38081 = 预发布网 RPC 端口
# - 用于本地钱包、P2Pool、管理工具连接
#rpc-bind-port=18081
# --- 公共受限 RPC (推荐用于公共服务) ---
# rpc-restricted-bind-ip: 受限 RPC 监听地址
# - 仅提供只读 API不能发送交易或控制节点
# - 可以安全绑定到 0.0.0.0 提供公共查询服务
# - 不返回隐私敏感数据
# 使用场景: 公共区块浏览器、轻钱包后端、查询服务
#rpc-restricted-bind-ip=0.0.0.0
# rpc-restricted-bind-port: 受限 RPC 监听端口
# - 推荐使用与标准 RPC 不同的端口(如 18089
# - 可以与标准 RPC 同时运行
#rpc-restricted-bind-port=18089
# --- 启用受限 RPC 模式 ---
# restricted-rpc: 将绑定的 RPC 端口设为受限模式
# - 必须与 rpc-restricted-bind-port 配合使用
# - 限制可用的 RPC 方法,禁止敏感操作
#restricted-rpc=1
# confirm-external-bind: 确认外部网络绑定
# - 1 = 明确确认将服务绑定到非本地地址
# - 安全措施: 防止误将服务暴露到公网
# - 当使用 0.0.0.0 或非 127.0.0.1 地址时必须添加此选项
# - 适用于: p2p-bind-ip, rpc-bind-ip, rpc-restricted-bind-ip, zmq-pub
#confirm-external-bind=1
# RPC AUTHENTICATION
# ============================================================================
# rpc-login: RPC 访问认证凭据
# - 格式: username:password
# - ⚠️ 强制要求: 当 rpc-bind-ip 不是 127.0.0.1 时必须配置
# - 密码要求:
# * 至少 16 字符
# * 包含大小写字母、数字、特殊字符
# * 避免使用字典词汇
# - 生成强密码命令:
# openssl rand -base64 32
# pwgen -s 32 1
# - 示例: rpc-login=admin:xK9mP2vL8qR5nW7jT3hY6fB4sD1gA0cE
# - 客户端连接示例:
# curl -u admin:password http://127.0.0.1:18081/json_rpc
# mond-wallet-cli --daemon-address admin:password@node.example.com:18081
#rpc-login=user:password
# RPC SSL/TLS ENCRYPTION
# ============================================================================
# rpc-ssl: 启用 RPC 连接的 SSL/TLS 加密
# - enabled = 强制使用 SSL推荐用于远程访问
# - disabled = 禁用 SSL仅本地访问时可用
# - autodetect = 自动检测客户端支持情况(默认)
# - ⚠️ 远程访问必须启用 SSL否则密码明文传输
# - 需要配合 rpc-ssl-certificate 和 rpc-ssl-private-key
#rpc-ssl=enabled
# rpc-ssl-certificate: SSL 证书文件路径
# - PEM 格式的 SSL/TLS 证书
# - 可以使用自签名证书或由 CA 签发的证书
# - 生成自签名证书(仅用于测试):
# openssl req -newkey rsa:4096 -nodes -keyout key.pem \
# -x509 -days 365 -out cert.pem
# - 生产环境推荐使用 Let's Encrypt 免费证书:
# certbot certonly --standalone -d your-node.example.com
# - Let's Encrypt 证书路径:
# /etc/letsencrypt/live/your-domain/fullchain.pem
#rpc-ssl-certificate=/path/to/your/certificate.pem
# rpc-ssl-private-key: SSL 私钥文件路径
# - PEM 格式的私钥文件
# - ⚠️ 安全要求:
# * 文件权限必须是 600 (chmod 600 key.pem)
# * 所有者必须是运行 mond 的用户
# * 不要将私钥文件暴露到公共位置
# - Let's Encrypt 私钥路径:
# /etc/letsencrypt/live/your-domain/privkey.pem
#rpc-ssl-private-key=/path/to/your/private_key.pem
# rpc-ssl-ca-certificates: CA 证书路径(可选)
# - 用于验证客户端证书(双向 SSL
# - 大多数情况下不需要
#rpc-ssl-ca-certificates=/path/to/ca-bundle.pem
# rpc-ssl-allow-any-cert: 允许任何证书(不推荐)
# - 1 = 禁用客户端证书验证
# - 0 = 验证客户端证书(默认)
# - ⚠️ 仅用于测试,生产环境不要启用
#rpc-ssl-allow-any-cert=0
# rpc-access-control-origins: CORS 跨域访问控制(可选)
# - 允许从特定域名的 Web 应用访问 RPC
# - 格式: http://domain.com 或多个域名用逗号分隔
# - 用于 Web 钱包、区块浏览器等前端应用
# - 示例: https://wallet.example.com,https://explorer.example.com
# - 使用 * 允许所有域名(不推荐)
#rpc-access-control-origins=https://your-domain.com
# LOGGING SETTINGS
# ============================================================================
# log-level: 日志详细程度
# - 0 = 最小化日志(仅关键错误)
# - 1 = 错误级别(推荐用于生产环境)
# - 2 = 警告级别(包含潜在问题)
# - 3 = 信息级别(当前设置,常规操作信息)
# - 4 = 调试级别(详细的调试信息,仅用于故障排查)
# - 更高级别 = 更多日志输出,但也消耗更多磁盘 I/O
# - 建议:
# * 生产环境: 1 或 2
# * 开发/调试: 3 或 4
# * 初始同步: 3监控同步进度
log-level=3
# log-file: 日志文件保存路径
# - 所有日志输出将写入此文件
# - 确保目录存在且有写入权限
# - 文件会自动轮转(达到一定大小后创建新文件)
# - 查看日志命令:
# tail -f /var/log/mond/mond.log (实时查看)
# grep ERROR /var/log/mond/mond.log (搜索错误)
# - 日志管理:
# * 定期清理旧日志释放磁盘空间
# * 可配合 logrotate 自动管理
# * 推荐保留最近 7-30 天的日志
log-file=/var/log/mond/mond.log
# max-log-file-size: 单个日志文件最大大小(字节)
# - 达到此大小后自动创建新日志文件
# - 默认: 104850000 (约 100 MB)
# - 推荐值: 10485760 (10 MB) 到 104857600 (100 MB)
# - 示例: max-log-file-size=52428800 # 50 MB
#max-log-file-size=104850000
# max-log-files: 保留的日志文件数量
# - 超过此数量后删除最旧的日志文件
# - 默认: 50
# - 计算存储空间: max-log-file-size * max-log-files
# - 示例: 如果单文件 50MB保留 20 个文件 = 1GB 空间
#max-log-files=50
# ADVANCED OPTIONS (COMMENTED OUT)
# ============================================================================
# 以下是一些高级选项,默认不启用,根据需求取消注释
# --- 数据库设置 ---
# db-sync-mode: 数据库同步模式
# - fast:async:250000000bytes = 快速异步模式(默认,推荐)
# - fast:sync = 快速同步模式(更安全但稍慢)
# - fastest:async:250000000bytes = 最快模式(性能优先)
# - safe = 最安全模式(每次写入都刷盘,非常慢)
# 影响: 同步速度 vs 断电时的数据完整性
#db-sync-mode=fast:async:250000000bytes
# --- 区块同步设置 ---
# block-sync-size: 每次同步请求的区块数量
# - 默认: 20
# - 范围: 1-100更大的值可能加快同步但消耗更多内存
#block-sync-size=20
# prep-blocks-threads: 预处理区块的线程数
# - 默认: 4
# - 根据 CPU 核心数调整,建议为核心数的 50-100%
#prep-blocks-threads=4
# --- 带宽和连接设置 ---
# max-txpool-weight: 交易池最大权重(字节)
# - 默认: 648000000 (约 618 MB)
# - 限制内存中未确认交易的总大小
#max-txpool-weight=648000000
# pad-transactions: 填充交易大小(隐私增强)
# - 1 = 启用,将交易填充到标准大小
# - 0 = 禁用(默认)
# - 增强隐私但增加交易费用
#pad-transactions=0
# --- 挖矿设置 ---
# start-mining: 启动时开始挖矿
# - 格式: 钱包地址
# - 不推荐在 mond 直接挖矿,应使用专用挖矿软件或 P2Pool
#start-mining=YOUR_WALLET_ADDRESS
# mining-threads: 挖矿线程数
# - 仅在 start-mining 启用时有效
# - 推荐: CPU 核心数的 50-75%
#mining-threads=2
# --- 匿名网络支持 ---
# tx-proxy: 通过代理发送交易(增强隐私)
# - 格式: socks4a://IP:PORT 或 i2p://address
# - 用于通过 Tor/I2P 广播交易
# - 示例Tor: tx-proxy=socks4a://127.0.0.1:9050
#tx-proxy=socks4a://127.0.0.1:9050
# anonymous-inbound: 匿名网络入站地址
# - 格式: address,port[,max_connections]
# - 允许通过 Tor/I2P 接收连接
# - 示例: anonymous-inbound=your_onion_address.onion:18083,127.0.0.1:18083,25
#anonymous-inbound=your_address.onion:18083,127.0.0.1:18083
# --- 性能优化 ---
# max-concurrency: 最大并发线程数
# - 默认: 0自动检测 CPU 核心数)
# - 手动设置可限制 CPU 使用
#max-concurrency=0
# db-salvage: 尝试修复损坏的数据库
# - 1 = 启动时检查并修复
# - 0 = 不自动修复(默认)
# - 仅在数据库损坏时使用
#db-salvage=0
# --- 网络类型 ---
# testnet: 使用测试网络
# - 1 = 启用测试网(用于开发测试)
# - 0 = 使用主网(默认)
#testnet=0
# stagenet: 使用预发布网络
# - 1 = 启用预发布网(开发者测试环境)
# - 0 = 使用主网(默认)
#stagenet=0

2
debian/build-deb.sh vendored
View File

@@ -4,7 +4,7 @@ set -e
# 参数检查
if [ $# -ne 3 ]; then
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
fi

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

148
debian/postinst vendored
View File

@@ -18,19 +18,126 @@ 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 << 'CONF'
# 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 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
CONF
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
chmod 755 /opt/mond/mond
# Reload systemd
# Reload systemd and handle service restart on upgrade
if [ -d /run/systemd/system ]; then
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:
# systemctl enable mond.service
# systemctl start mond.service
@@ -39,22 +146,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)

43
debian/prerm vendored
View File

@@ -1,17 +1,36 @@
#!/bin/sh
set -e
# Stop and disable service if running
if [ -d /run/systemd/system ]; then
if systemctl is-active --quiet mond.service; then
echo "Stopping mond service..."
systemctl stop mond.service
fi
if systemctl is-enabled --quiet mond.service 2>/dev/null; then
echo "Disabling mond service..."
systemctl disable mond.service
fi
fi
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 systemctl is-active --quiet mond.service; then
echo "Stopping mond service..."
systemctl stop mond.service
fi
if systemctl is-enabled --quiet mond.service 2>/dev/null; then
echo "Disabling mond service..."
systemctl disable mond.service
fi
fi
;;
failed-upgrade)
# 升级失败时不做操作
;;
*)
echo "prerm called with unknown argument \`$1'" >&2
exit 1
;;
esac
exit 0

View File

@@ -41,7 +41,7 @@ RUN apt-get update && apt-get install -y \
FROM base AS build
ARG MONERO_VERSION=v0.18.3.4
ARG MONERO_VERSION=v0.18.4.5
ARG TARGETARCH
ARG BUILDPLATFORM
ARG TARGETPLATFORM