全网首发:Nat 机部署 MinIO 对象存储

全网首发:Nat 机部署 MinIO 对象存储

免费 Nat 小盘机申请

申请地址:NETJETT

申请条件:

  • 博客或 github 项目挂赞助广告
  • 博客需要一定的流量,到底多少流量我不知道,我的博客月流量大约 2000-3000,就通过了
  • github 需要多少⭐,我不知道,因为我的项目⭐都不多,没有超过 100 的

机器配置有两种:

  • 第一种:小盘鸡。1c,384m,250g 硬盘,无限流量
  • 第二种:1c,1g,20g 硬盘(具体多少我忘了),无限流量
  • IP 都是加拿大的

如何申请:

  • 给网站管理员发邮件: admin@netjett.com
  • 告诉他你需要申请哪一种服务器,你的博客有多少流量或 github 项目有多少⭐,并截图
  • 申请通过后会收到邮件,去官网开机,然后在博客或 github 项目挂上赞助广告

我踩过的坑:

  • 系统重装不能选 debian,ssh 连不上,只有乌班图是正常的
  • 系统比较精简,连 unzip 都没有,必须更新软件包并安装基础软件
  • nat 机需要在网页端管理面板进行端口映射,只能使用 30000-60000 之间的端口
  • ssh 链接默认映射端口为 10010,也就是说你在 ssh 工具上你不能直接使用 22 端口,而应该使用 10010 端口

我申请的是 250g 的小盘鸡,因为我不缺富强的机器,正好需要一个小盘鸡来做网盘

部署 MinIO 对象存储

1. 设置端口映射

在 vps 网页管理面板上设置 nat 机的 端口映射,端口范围 30000-60000 之间

  • 默认的 10010 端口不用管,那是登录 ssh 用的
  • 增加以下三个端口,内外端口号相同即可
    • 第一个是 dpanel 面板访问端口,我设置的是 50000
    • 第二个是 MinIO API 需要用到的端口,你可以跟我一样设置为 59000
    • 第三个是 MinIO 网页面板需要用到的端口,你可以跟我一样设置为 59001

2. 安装 Dpanel 面板

如果你熟悉 docker 部署的话,也可以不安装面板,直接参照官方文档来部署,或者搜索 MinIO docker 版部署教程

不推荐二进制部署,因为默认的 9000 和 9001 端口在我们的 nat 机上无法使用

如果你是跟我一样的小白,推荐安装 Dpanel 面板来部署项目,一键脚本如下:

1
curl -sSL https://dpanel.cc/quick.sh -o quick.sh && sudo bash quick.sh

执行脚本后根据提示输入相关参数,基本都可以保持默认,除了端口,我设置的是 50000

3. 安装 Argo 隧道

我使用 cf argo 隧道 反代,这里不讨论 nginx 等反代方法

  • 首先创建一个隧道,命名为 minio (名称可以随意)
  • 获得乌班图系统(面板上选 debian 就行)的安装命令

image.png

  • 在 cf argo 网页管理面板添加域名。这里我的端口设置的是 50000,也就是 dpanel 面板的端口

image.png

  • 在这条隧道里再添加两个主机
    • 第一个:minio 网页面板需要用到的域名,假定为 web.minio.com,端口设置为 59001
    • 第二个:minio api 端点需要用到的域名,假定为 api.minio.com,端口设置为 59000
    • 保存好这两个域名,后面会用到

image.png

  • 在 ssh 终端依次运行你获得的命令
1
2
3
4
5
6
7
8
9
# Add cloudflare gpg key
sudo mkdir -p --mode=0755 /usr/share/keyrings
curl -fsSL https://pkg.cloudflare.com/cloudflare-main.gpg | sudo tee /usr/share/keyrings/cloudflare-main.gpg >/dev/null

# Add this repo to your apt repositories
echo 'deb [signed-by=/usr/share/keyrings/cloudflare-main.gpg] https://pkg.cloudflare.com/cloudflared any main' | sudo tee /etc/apt/sources.list.d/cloudflared.list

# install cloudflared
sudo apt-get update && sudo apt-get install cloudflared
  • 运行以下命令启动 cloudflared 服务
1
2
# ey开头的事你的隧道token
sudo cloudflared service install eyJhIjoiOTg1ZDYwN2.........................................................................................................
  • 使用你设置的 argo 域名访问 dpanle 面板,假设为 https://dpanel.minio.com

4. 部署 MinIO

在 dpanel 中依次点击 系统应用商店添加第三方应用商店

image.png

再依次点击 compose应用商店搜索 关键词 minio

image.png

在搜出来的结果中随便选择一个进行安装,注意修改以下变量:

  • MINIO_API_PORT(API 端口):59000
  • PANEL_APP_PORT_API(面板 API 端口):59000
  • PANEL_APP_PORT_HTTP(面板访问端口):59001
  • MINIO_BROWSER_REDIRECT_URL(面板访问地址):http://127.0.0.1:59001
  • MINIO_SERVER_URL(API 端点地址):https://api.minio.com,也就是你设置好的 MinIO API 端点的 argo 域名
  • MINIO_SERVER_HOST(API 内部地址):0.0.0.0
  • MINIO_ROOT_USER:设置你的用户名
  • MINIO_ROOT_PASSWORD:设置的登录密码

安装完成后,访问 https://web.minio.com(也就是你设置好的 MinIO 面板 argo 域名),使用上面的用户名和密码登录

登录后点击左上角 创建存储桶 就 OK 了,现在你可以上传一张图片试试

挂载 MinIO 对象存储

虽然现在是可以上传和下载了,但是没法分享,你会发现你的下载链接是类似这样的一长串:

1
https://api.minio.com/minio/wallhaven-ympzyl.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=adminadmin%2F20250709%2Fauto%2Fs3%2Faws4_request&X-Amz-Date=20250709T110601Z&X-Amz-Expires=3600&X-Amz-Signature=e9b94350db7e0cgdsggggege6788534534352a025c63da66db10995&X-Amz-SignedHeaders=host&response-content-disposition=inline%3B%20filename%3D%22wallhaven-ympzyl.jpg%22&response-content-type=image%2Fjpeg&x-id=GetObject

前面的 https://api.minio.com/minio/wallhaven-ympzyl.jpg 是文件,后面的 ?X-Amz-Algorithm=*********** 是查询参数,它并不是一个固定地址,查询参数会随机变动,你能打开的地址分享给其他人就打不开了

怎么办呢? 万能的 cf worker 登场了,它可以反代 minio 的 api 请求,以 https://worker域名/存储桶名/文件名 的方式来访问,从而实现文件分享

部署 Worker 反代

代码地址:cf-github-script/minio-s3/worker反代.js at main · yutian81/cf-github-script

大家可以给我点个免费的 ⭐

部署后设定以下环境变量

  • MINIO_ENDPOINT=你的 MINIO api 端点域名,示例:https://api.minio.com
  • ACCESS_KEY=部署 MINIO 时设置的用户名
  • SECRET_KEY=部署 MINIO 时设置的密码

给 worker 绑定一个域名,示例:https://raw.minio.com

现在,试试通过 worker 域名来访问你的文件,https://worker域名/存储桶名/文件名,示例:
https://minio.24811213.xyz/netjett/wallhaven-ympzyl.jpg

挂载到 Alist

alist 不地道,我已经改成 openlist 了,挂载方法是一样的,关键参数如下:

  • 驱动:对象存储
  • 存储桶:你创建的存储桶名称
  • Endpoint:api 端点地址,示例:https://api.minio.com
  • 访问密钥 Id:你的用户名
  • 安全访问密钥:你的密码
  • 自定义 HOST:你的反代 worker 域名,示例:https://raw.minio.com
  • 强制路径样式:打 √

挂载到 CloudPaste

新出来的,挺不错的,专门挂载对象存储,相比 alist 的优势:它可以上传大文件,而 alist 经常失败

参数和 alist 差不多,注意:需要勾选 使用路径样式访问

仓库地址:GitHub - ling-drag0n/CloudPaste

挂载到兰空图床

参数都一样,就是 BucketEndpoint 需要勾选

#存储 #VPS #容器