OpenBMCLAPI 是一个高效、灵活的 Minecraft 资源分发系统,旨在为国内 Minecraft 社区提供稳定、快速的资源下载服务
它通过分布式节点的方式,将资源文件分发到各地的服务器上,从而提升玩家的下载体验
本项目是 OpenBMCLAPI 官方 Node.JS 客户端的一个改进版本,增加了诸如 Onebot/Webhook 通知、额外的文件同步配置项、控制台日志优化等额外功能
本项目为 302 至其他下载服务器 (如通过 Alist 解析或 MinIO 302 下载请求至其他 OSS 服务器) 的服务方式进行了优化, 使其更加稳定可靠, 同时大幅降低了部署此类节点的成本
因此, 使用本项目的节点端, 通过简单的配置即可在低性能、低带宽服务器上搭建数个与高配本地节点无异的 OpenBMCLAPI 节点
- Node.js 20 及以上(使用安装包进行安装则无需自带Node.js环境, 但无法使用自动更新功能)
- 一个支持 Node.js 的系统
- 一个支持 Node.js 的架构
从 Github Release 中选择对应你的系统/架构的最新版本
若没有对应你的系统/架构的安装包, 请查看从源码安装
请跳转到设置参数部分
-
去 https://nodejs.org/zh-cn/ 下载对应你系统/架构版本的LTS版本的Node.js并安装
-
Clone 并安装依赖、进行编译
## 获取源码
git clone https://github.com/Zhang12334/node-oba-fix
## 切换路径
cd node-oba-fix
## 安装依赖
npm i
## 编译程序
npm run build
## 运行程序
node dist/index.js- 如果你看到了
CLUSTER_ID is not set的报错, 说明一切正常, 该设置参数了
由于配置项过多, 请在此处查看全部可选参数: 配置项说明
在程序根目录创建一个文件, 名为 .env
写入如下内容
CLUSTER_ID=你的节点ID
CLUSTER_SECRET=你的节点密钥
CLUSTER_PORT=你的开放端口
# 更多变量请看上方的配置项说明文档按照设置参数部分创建并配置好 .env 文件
不要设置自动更新,请确保ENABLE_AUTO_UPDATE=false
docker run -d --name node-oba-fix \
-p ${CLUSTER_PORT}:${CLUSTER_PORT} \
-v /openbmclapi/cache:/opt/openbmclapi/cache \
-v /openbmclapi/env:/opt/openbmclapi/.env \
-v /openbmclapi/data:/opt/openbmclapi/data \
-e TZ=Asia/Shanghai \
--restart unless-stopped \
zhang134/node-oba-fix:latest在项目根目录创建 docker-compose.yml 文件,写入以下内容:
version: '3.8'
services:
openbmclapi:
image: zhang134/node-oba-fix:latest
container_name: node-oba-fix
network_mode: "bridge"
environment:
- CLUSTER_PORT=${CLUSTER_PORT}
- TZ=Asia/Shanghai
ports:
- "${CLUSTER_PORT}:${CLUSTER_PORT}"
volumes:
- /openbmclapi/cache:/opt/openbmclapi/cache
- /openbmclapi/.env:/opt/openbmclapi/.env
- /openbmclapi/data:/opt/openbmclapi/data
restart: unless-stopped然后运行以下命令启动容器:
docker-compose up -dS3配置:
CLUSTER_STORAGE=minio
CLUSTER_STORAGE_OPTIONS={"url": "http://ak:sk@someminio/bucket/prefix"}对于内外网分开访问的情况:
CLUSTER_STORAGE=minio
CLUSTER_STORAGE_OPTIONS={"url": "http://ak:sk@someminio/bucket/prefix", "internalUrl": "http://ak:sk@192.168.1.1/bucket/prefix"}url是用户访问时重定向到的,internal是节点端访问api时使用的
也支持自定义host:
CLUSTER_STORAGE=minio
CLUSTER_STORAGE_OPTIONS={"url": "http://ak:sk@someminio/bucket/prefix", "customHost":"http://someminio/prefix"}在.env中加上
CLUSTER_STORAGE=alist
CLUSTER_STORAGE_OPTIONS={"url":"http://127.0.0.1:5244/dav","basePath":"oba","username":"admin","password":"admin" }
# ↑AList地址(别忘了加/dav) ↑文件路径 ↑账号(有webdav权限) ↑密码按照需要修改
如果您正在从 Go 端迁移至 Node 端,请确保 Alist 中的目录结构符合以下要求:
如果您的目录结构如下:
oba/
├── download/
│ ├── 00/
│ ├── 01/
│ ├── 03/
│ └── xx/(其他文件夹)
├── measure/
│ ├── 1
│ ├── 2
│ └── 3
则 basePath 应设置为 "oba/download"
如果您的目录结构如下:
download/
├── 00/
├── 01/
├── 03/
└── xx/(其他文件夹)
measure/
├── 1
├── 2
└── 3
则 basePath 应设置为 "download"
basePath是 Alist 中资源文件的根目录路径,需根据实际目录结构填写- 配置完成后,运行程序,它将自动拉取文件,并在文件同步完成后上线
openbmclapi 会自行同步需要的文件, 但是初次同步可能会速度过慢, 如果您的节点是个全量节点, 可以通过以下命令使用rsync快速同步 以下三台rsync服务器是相同的, 你可以选择任意一台进行同步
rsync -rzvP openbmclapi@home.933.moe::openbmclapi cachersync -avP openbmclapi@storage.yserver.ink::bmcl cachersync -azvrhP openbmclapi@openbmclapi.home.mxd.moe::data cache
- bangbang93 本项目 Fork 自 bangbang93 的 OpenBMCLAPI 项目
- ApliNi Dashboard API 改自 ApliNi 的 aplPanel 项目
- Uright-Xuqing233 帮助提供 Docker 构建文件 & 修改 MinIO 相关代码
- YlovexLN 帮助提供 Docker 相关配置 & 修改文档