在 VPS.Town 上使用 Docker 部署 MinIO 个人图床完全指南
📖 本文目录
前言
MinIO 是一种开源的大型、高性能、分布式对象存储服务,可以作为个人网盘、图床的通用基座。需要注意的是,MinIO 虽然有着非常好的优化,但如果只是作为个人图床使用,我们更推荐 Lsky 这类的轻量图床应用。
适用环境
本教程适用于 Debian 12 系统,其他 Linux 发行版可能需要调整部分命令。
准备工作
购买 VPS
🖼️ VPS.Town & MiniIO + PicGo 图床解决方案
- 最多可提供高达 8TB 大容量存储 的选项,随时随地为您的图床安个新家;
- 同时提供 SSD & HDD 混合方案,读写速度更快、上传图片更稳定;
- 完善的 7/12 售后保障,支持随时灵活升级配置、支持 7 天内有理由退款;
- 可在香港抗下 DMCA 版权投诉,分享图床更安全;
- 服务器位于香港,距离大陆近,对于移动用户更加友好
无 AFF 购买链接:点我一键直达
安装 Docker
提示
如果已安装 Docker,则可以跳过这一步,您可以使用 docker -v
命令检查是否已安装。
Debian 12 系统可直接复制以下命令安装 docker、docker-compose,其它系统请参见 Docker 官方文档。
安装 Docker CE 和 Docker Compose
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done
sudo apt-get update
sudo apt-get install ca-certificates curl -y
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
Docker 安装 MinIO
首先创建并进入你的安装目录,编辑 docker-compose.yaml,这里我的目录是 /root/minio
mkdir -p /root/minio
cd /root/minio
vim docker-compose.yaml
将以下内容输入后,按下 esc
:x
保存,输入 docker compose up -d
启动
docker-compose.yaml
services:
minio:
container_name: minio
image: quay.io/minio/minio
restart: always
volumes:
- ./data:/data
environment:
- TZ=Asia/Shanghai
- MINIO_BROWSER_REDIRECT_URL=https://minio.yourdomain/minio/ui # 请在这里输入你的域名
- MINIO_SERVER_URL=https://minio.yourdomain # 请在这里输入你的域名
- MINIO_ROOT_USER=user # 请在这里输入你的用户名
- MINIO_ROOT_PASSWORD=password # 请在这里输入你的密码
ports:
- "9001:9000"
- "9091:9090"
command: server /data --console-address ":9090"
安全提示
请务必修改默认的用户名和密码,使用强密码增强安全性。同时确保将 yourdomain 替换为你实际使用的域名。
配置反向代理和 Cloudflare 加速
不出意外的话,你已经可以通过 ip:端口号
的方式访问 MinIO 的管理面板了,但考虑到存储服务的公开性,我强烈建议开启反向代理并启用 Cloudflare 加速,这里我使用 nginx proxy manager 配置反向代理,npm 的具体安装方式请参照官方文档。
配置 nginx 你首先需要一个域名,以 Cloudflare 为例,添加如下的 DNS 解析,注意开启小黄云。

小黄云说明
Cloudflare 的"小黄云"是指开启了 Cloudflare 代理服务,它能为你的服务提供额外的安全防护和性能优化。
由于 Cloudflare 代理会修改请求头,导致 MinIO 的鉴权出现问题,并且缓存对象存储违反了 Cloudflare 的用户协议,我们需要关闭该子域名的缓存。

在 缓存
- Cache Rules
下创建一条新的规则如下

现在,我们进入 npm 的管理面板进行配置,请尽量按照我的配置方式,避免不必要的折腾。
重要提醒
由于 MinIO 同 nginx 的适配非常烂,如果要关闭小黄云可能需要另外的 nginx 配置。所以建议 开启小黄云+绕过缓存
。


点设置按钮,填入以下信息:
nginx 配置
location /minio/ui/ {
rewrite ^/minio/ui/(.*) /$1 break;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-NginX-Proxy true;
# This is necessary to pass the correct IP to be hashed
real_ip_header X-Real-IP;
proxy_connect_timeout 300;
# To support websockets in MinIO versions released after January 2023
proxy_http_version 1.1;
proxy_buffering off;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
# Some environments may encounter CORS errors (Kubernetes + Nginx Ingress)
# Uncomment the following line to set the Origin request to an empty string
# proxy_set_header Origin '';
chunked_transfer_encoding off;
proxy_pass http://172.17.0.1:9091;
}

配置 MinIO 存储桶
现在你应该可以访问 https://minio.yourdomain/minio/ui
,输入你在 docker-compose.yaml 中填写的用户名和密码登录到 MinIO 的后台。
点击 Create a Bucket
创建一个新的存储桶。

这里以 img
为例,下面三个选项一般无需勾选。

创建好桶后第一步是配置权限,首先将匿名用户的对根路径的权限设为 read only
。

刷新页面后,手动调整关闭匿名用户的 s3:ListBucket
权限,避免被刷目录,删除红框中标记的行,及上一行结尾的逗号,并保存。

权限说明
关闭 s3:ListBucket
权限是为了防止他人浏览你的存储桶中的所有文件,这是一个重要的安全措施。
现在,你可以点击右上角的文件夹图标,进入 img
存储桶的根目录,上传一张照片,并测试他的预览和加载功能是否正常。

同时,开启一个浏览器的匿名窗口,使用以下格式的直链测试外部访问,请注意将域名和路径替换为你自己的。

如果能够正常打开,恭喜你,你的图床已经可用了。
PicGo 连接图床上传图片
PicGo 是一个非常实用的 Markdown 图片上传软件,为了能够连接你搭建的 MinIO 图床,你需要为存储桶配置密钥,密钥在创建后只会显示一次,请妥善保存。

同时,你还要为 PicGo 安装一个插件。

接下来配置这个插件。注意将端口设为 443
并勾选 useSSL

bucket
是你存储桶的名称,基础目录
可任意填写,自定义域名
建议手动填写,否则图片链接会添加 443 端口,不太美观,归档
建议开启。

在 上传区
将默认图床修改为 MinIO图床
,拖动并上传文件测试。

测试图床

图片可以正常加载,至此为止,搭建完成。
MinIO 的其他用途
- 个人网盘系统
- 网站静态资源存储
- 应用程序的对象存储后端
- 备份存储解决方案
你可以根据自己的需求进一步探索 MinIO 的高级功能。