Skip to content

Latest commit

 

History

History
70 lines (42 loc) · 2.63 KB

SELFHOST.md

File metadata and controls

70 lines (42 loc) · 2.63 KB

Build yourself mirror

Architecture

先来理解一下一下原理,内容分为三大块,分别是存储服务网关服务同步服务。 存储和同步是完全分离的,同步程序可以脱离存储服务存在。但是网关服务往往会和存储服务一同使用。

存储服务

存储顾名思义,用于存储镜像资源的,但存储并不限制任何类型任何介质。比如本地磁盘、云存储、块存储等等都是可以的。

另外很多云厂商提供了一定程度上的免费容量,羊毛党怎么可以错过这个呢?

网关服务

当有了存储之后,那么怎么将资源发送给使用者呢?那么这个就是网关服务的用处。举几个简单的例子:

  • 针对云存储来说,往往都是自带网关的,比如 OSS 的外网地址。但你也可以选择使用 CDN 作为网关来提供服务
  • 针对本地存储来说,nginx 提供静态资源托管,那么他也是一个网关
  • 网关也可以是代理服务器,比如 serverless 服务,接收到请求之后通过 304 转发到其他网关服务

同步服务

同步服务就是定期将源站的内容同步回存储服务,从而能够对外提供服务。 同步程序不需要一直在运行,只需要隔一段时间运行一次即可,比如每天进行一次同步。

CLI

首先安装同步程序

deno install -A --unstable https://raw.githubusercontent.com/XGHeaven/mcm/master/mcm.ts

此时 mcm 会安装到你的终端下,运行如下命令即可将所有的内容同步到 /data/mcm/storage

mcm --storage-type fs --storage-options /data/mcm/storage 'mc:all' 'fabric:all' 'forge:all'

本同步程序暂时会按照 mcm.xgheaven.com 的目录结构同步,具体结构可以查看配置字符串。

存储服务的选择

目前支持两大存储服务:

  • fs 本地磁盘
  • alioss 阿里云 OSS 对象存储

通过 --storage-type 指定,通过 --storage-options 指定参数,不同的服务有不同的参数配置,请通过 --help 查询。

同步版本的选择

CLI 提供了多种版本选择的能力,通过 关键字:版本选择器 的方式进行操作,关键字目前有如下:

  • mc/minecrat 同步 minecraft 原生版本
  • fabric 同步 fabric 相关服务
  • forge 同步 forge 相关服务

而版本选择器简单来说有如下几种:

  • 1.15.* 选择 1.15 的所有版本进行同步
  • all 选择全部版本进行同步
  • diff 仅仅选择未同步版本进行同步

更多帮助信息,请查看 mcm --help

网关服务

针对文件系统,推荐使用 nginx 作为网关服务