使用Ubuntu快速部署MinIO对象存储
想拥有自己的私有云存储,安全可靠又高效?MinIO是你的理想选择!这篇文章将手把手教你如何在Ubuntu 22.04服务器上部署MinIO,并使用Nginx反向代理和Let’s Encrypt证书进行安全加固。 即使你是新手,也能轻松完成!
Minio 简介
MinIO 是一个高性能、开源的对象存储服务器,兼容 Amazon S3 协议。这意味着你可以使用与 Amazon S3 相同的工具和应用程序来与 MinIO 进行交互。它设计用于在本地或云端存储非结构化数据,例如:
- 照片和视频: 轻松存储和管理大量图像和视频文件。
- 备份和归档: 安全地备份重要数据并进行长期归档。
- 日志文件: 集中存储和分析应用程序日志。
- 容器镜像: 存储和管理 Docker 镜像和其他容器化应用程序。
- 机器学习数据: 存储和访问用于机器学习模型训练的大规模数据集。
MinIO 的主要优势:
- 高性能: MinIO 针对高吞吐量和低延迟进行了优化,能够处理大量的并发请求。
- 可扩展性: 可以轻松地扩展以满足不断增长的存储需求,无论是横向扩展(添加更多服务器)还是纵向扩展(升级单个服务器)。
- 简单易用: 提供简单易懂的 API 和命令行工具,方便快速上手。
- 开源免费: MinIO 是一个完全开源的项目,你可以免费使用和修改其代码。
- 兼容性: 与 Amazon S3 兼容,这意味着你可以无缝地将现有的 S3 应用程序迁移到 MinIO。
- 安全性: 提供多种安全功能,包括访问控制、加密和审计日志,以保护你的数据安全。
- 灵活部署: 可以在各种环境中部署,包括本地服务器、云端和边缘计算环境。
MinIO 的适用场景:
- 个人云存储: 构建你自己的私有云存储,安全地存储你的个人文件。
- 企业私有云: 替换昂贵的商业云存储解决方案,降低成本并提高安全性。
- 物联网 (IoT) 应用: 存储来自各种物联网设备的数据。
- 备份和灾难恢复: 构建可靠的备份和灾难恢复系统。
- DevOps 和 CI/CD: 在 DevOps 流程中使用 MinIO 作为存储仓库。
总而言之,MinIO 是一款功能强大、灵活易用且高性能的对象存储解决方案,适用于各种规模的组织和个人。 它提供了一种经济高效且安全可靠的方式来存储和管理非结构化数据。
部署前必要准备
-
一个充满求知欲的大脑(本文内容略具挑战性,适合有一定Linux基础的读者,但勇于挑战的小伙伴也欢迎尝试!)
-
一台Linux服务器(推荐腾讯云、阿里云或雨云等)。本文将以雨云为例进行演示。
-
一个指向你服务器的域名。本教程将使用
minio.example.com作为示例,请务必替换成你自己的域名。
我将会以 雨云 为例,带大家创建一台自己的云服务器,以便尝试本篇文章的内容。
注册链接: https://www.rainyun.com/NTEzMTM1_?s=blog
创建雨云服务器
以下步骤仅供参考,请根据实际需求选择配置。
点击“云产品”→“云服务器”→“立即购买”。

选择距离你较近的区域,以降低延迟。

选择配置。

选择Ubuntu 22.04版本。

点击“立即购买”,并完成后续购买流程。购买完成后,等待服务器部署完毕,进入管理面板,找到远程连接信息。


使用PowerShell进行远程连接:输入ssh root@你的服务器IP (例如ssh root@154.9.227.239),首次连接需输入yes,然后回车即可登录。


服务器创建完毕并可通过SSH远程访问后,我们就可以开始安装MinIO了。
开始安装以及配置Minio
MinIO是一个开源的对象存储服务器,兼容Amazon S3,性能卓越,适合存储非结构化数据,例如照片、视频、日志文件、备份和容器镜像等。
1:更新系统
首先更新你的系统包:
sudo apt update
sudo apt upgrade -y
2:下载和安装MinIO
从MinIO官网下载最新的稳定版本二进制文件:
wget https://dl.min.io/server/minio/release/linux-amd64/minio
chmod +x minio
sudo mv minio /usr/local/bin/
3:配置MinIO
- 创建MinIO用户: 出于安全考虑,建议以非root用户运行MinIO。
sudo useradd -r minio-user -s /sbin/nologin
- 创建目录: 创建MinIO数据和配置文件目录:
sudo mkdir /usr/local/share/minio
sudo mkdir /etc/minio
sudo chown -R minio-user:minio-user /usr/local/share/minio
sudo chown -R minio-user:minio-user /etc/minio
- 设置环境变量: 创建一个文件来存储MinIO环境变量:
sudo nano /etc/default/minio
将以下内容添加到文件中,用你自己的访问密钥和密钥替换YOUR_ACCESS_KEY和YOUR_SECRET_KEY:
MINIO_VOLUMES="/usr/local/share/minio/"
MINIO_OPTS="--address :9000 --console-address :9090"
MINIO_ACCESS_KEY="YOUR_ACCESS_KEY"
MINIO_SECRET_KEY="YOUR_SECRET_KEY"
9000: MinIO服务端口,即外部访问端口。9090: MinIO控制台端口,即内部访问端口。YOUR_ACCESS_KEY和YOUR_SECRET_KEY: 你的MinIO访问密钥和密钥。/usr/local/share/minio/: MinIO数据目录。
- 创建systemd服务文件: 创建一个systemd服务文件来管理MinIO服务:
sudo nano /etc/systemd/system/minio.service
添加以下内容:
[Unit]
Description=MinIO
Documentation=https://docs.min.io
Wants=network-online.target
After=network-online.target[Service]
User=minio-user
Group=minio-user
EnvironmentFile=/etc/default/minio
ExecStart=/usr/local/bin/minio server $MINIO_OPTS $MINIO_VOLUMES
Restart=always
LimitNOFILE=65536[Install]
WantedBy=multi-user.target
- 启动MinIO:
sudo systemctl daemon-reload
sudo systemctl start minio
sudo systemctl enable minio
4:配置防火墙
如果启用了防火墙,需要允许MinIO默认端口 (9000,9090) 的流量:
sudo ufw allow 9000
sudo ufw allow 9090
5:安装和配置Nginx反向代理
- 安装Nginx:
sudo apt install nginx -y
- 配置Nginx: 创建一个新的Nginx服务器块:
sudo nano /etc/nginx/sites-available/minio.example.com
添加以下配置,将minio.example.com替换为你自己的域名:
server {listen 80;server_name minio.example.com;location / {proxy_pass http://127.0.0.1:9000; # 替换成你的MinIO实际端口proxy_set_header Host $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;}}
- 启用Nginx配置并测试:
sudo ln -s /etc/nginx/sites-available/minio.example.com /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
6:使用Certbot获取SSL证书
- 安装Certbot:
sudo apt install certbot python3-certbot-nginx -y
- 获取SSL证书:
sudo certbot --nginx -d minio.example.com
按照提示完成设置。
完成这个步骤后,你应该能在浏览器中访问 https://minio.example.com了。
但是注意 https://minio.example.com 是公共访问链接的域名,首先你得在 9090 端口上登录并创建存储桶等一系列操作,下面的内容会讲到。
7:访问MinIO Web界面
在浏览器中访问 http://you_server_ip:9090,使用你在/etc/default/minio文件中设置的凭据登录。

使用MinIO Web控制台
本节将指导你如何使用MinIO Web控制台创建存储桶、设置公开权限以及上传和访问文件。
创建存储桶
登录 MinIO Web 界面 (http://your_server_ip:9090)。界面如下:

点击 “Buckets”,然后点击 “Create a Bucket”。

输入存储桶名称,然后点击 “Create Bucket”。

创建完成后,你将在存储桶列表中看到新创建的存储桶:

设置公共访问权限
为了使存储桶中的文件可以公开访问,需要进行以下设置:
- 进入新创建的存储桶。
- 点击桶策略
- 将 “Access Policy” 设置为 “Public”。

上传和访问文件
进入存储桶的文件列表页面。

点击 “Upload”,然后选择 “Upload File” 上传文件。

上传完成后,点击已上传的文件,复制文件路径。

例如,复制的路径为 public/wallhaven-m3ppwy.jpg。
使用以下方式访问文件:将复制的路径添加到配置的域名或IP地址和端口号之后。
# 通过域名访问 (推荐使用HTTPS)
https://minio.example.com/public/wallhaven-m3ppwy.jpg# 通过IP地址和端口号访问
http://your_server_ip:9000/public/wallhaven-m3ppwy.jpg
相关资料
- MinIO文档: https://docs.min.io/
- MinIO GitHub仓库: https://github.com/minio/minio
相关链接
雨云 - 新一代云服务提供商: https://www.rainyun.com/NTEzMTM1_?s=blog
我的博客:https://blog.ivwv.site
相关文章:
使用Ubuntu快速部署MinIO对象存储
想拥有自己的私有云存储,安全可靠又高效?MinIO是你的理想选择!这篇文章将手把手教你如何在Ubuntu 22.04服务器上部署MinIO,并使用Nginx反向代理和Let’s Encrypt证书进行安全加固。 即使你是新手,也能轻松完成…...
基于Liquid State Machine的时间序列预测:利用储备池计算实现高效建模
Liquid State Machine (LSM) 是一种 脉冲神经网络 (Spiking Neural Network, SNN) ,在计算神经科学和机器学习领域中得到广泛应用,特别适用于处理 时变或动态数据。它是受大脑自然信息处理过程启发而提出的一种 脉冲神经网络 。 设想你正处于一片平静的湖面,四周环绕着高山,你向…...
oracle使用CTE递归分解字符串
oracle使用CTE递归分解字符串 背景 给定一个不定长度字符串 并且以,分割例如 ‘1,2,3,4’ 使用sql查询 返回1,2,3,4四行 如果‘1,2’ 则返回 1,2 两行 使用sql实现 实…...
华为HarmonyOS借助AR引擎帮助应用实现虚拟与现实交互的能力5-识别平面语义
对于检测到的平面,您可以通过AR Engine识别该平面的语义,包括墙面、地面、座椅面、桌面、天花板、门面、窗面、床面。 创建AR会话 创建AR会话并配置为平面语义识别模式。 AREngine_ARSession *arSession nullptr;// 创建AR会话。HMS_AREngine_ARSessi…...
MAC 安装 brew及其常用命令
文章:Mac安装brew的四种方法(指定能行) 以下是在 Mac 上使用 Homebrew 清理缓存和无用包的详细指南: 1. 查看系统状态 # 诊断系统问题 brew doctor# 查看已安装的包 brew list# 查看系统占用空间 brew cleanup -n # 预览需要…...
nVisual标签打印模块的部署与使用
部署 标签打印模块部署需要注意的是 前置条件 标签打印模块是以外部模块形式依附于nVisual主模块的,所以要先部署好nVisual主模块的前后端程序。 部署文件下载 标签打印模块也分前端文件和后端文件,从微盘->软件发布->nVisual official relea…...
python NLTK快速入门
目录 NLTK简介安装NLTK主要模块及用法 词汇与语料库分词与词性标注句法分析情感分析文本分类综合实例:简单的文本分析项目总结 1. NLTK简介 NLTK(Natural Language Toolkit)是一个强大的Python库,专门用于自然语言处理ÿ…...
技术速递|.NET 9 中 System.Text.Json 的新增功能
作者:Eirik Tsarpalis - 首席软件工程师 排版:Alan Wang System.Text.Json 的9.0 版本包含许多功能,主要侧重于 JSON 架构和智能应用程序支持。它还包括一些备受期待的增强功能,例如可空引用类型支持、自定义枚举成员名称、无序元…...
LLM 使用 Elastic 实现可观察性:Azure OpenAI (二)
作者:来自 Elastic Muthukumar Paramasivam•Lalit Satapathy 我们为 Azure OpenAI GA 包添加了更多功能,现在提供提示和响应监控、PTU 部署性能跟踪和计费洞察! 我们最近宣布了 Azure OpenAI 集成的 GA。你可以在我们之前的博客 LLM 可观察性…...
数据库基础(2) . 安装MySQL
0.增加右键菜单选项 添加 管理员cmd 到鼠标右键 运行 reg文件 在注册表中添加信息 这样在右键菜单中就有以管理员身份打开命令行的选项了 1.获取安装程序 网址: https://dev.mysql.com/downloads/mysql/ 到官网下载MySQL8 的zip包, 然后解压 下载后的包为: mysql-8.0.16-…...
高效自动化测试,引领汽车座舱新纪元——实车篇
引言 作为智能网联汽车的核心组成部分,智能座舱不仅是驾驶者与车辆互动的桥梁,更是个性化、智能化体验的源泉。实车测试作为验证智能座舱功能实现、用户体验、行车安全及法规符合性的关键环节,能够最直接地模拟真实驾驶场景,确保…...
GitHub中搜索项目方法
0 Preface/Foreword 1 搜索方法 1.1 项目介绍 如上截图,一个项目包含的基本信息: 项目名项目简介项目介绍Watch数量,接收邮件提醒Star数量,关注,subscribeFork数量,在repo中创建分支 1.2 限定项目名查找…...
浅谈串口服务器的作用
串口服务器是一种网络设备,它允许通过TCP/IP网络远程访问串行设备。它的作用主要包括: 1、远程访问:通过将串行通信转换为以太网通信,串口服务器使得远程访问串行设备成为可能,这对于远程监控和控制非常有用。 2、数据…...
Spark 的Standalone集群环境安装与测试
目录 一、Standalone 集群环境安装 (一)理解 Standalone 集群架构 (二)Standalone 集群部署 二、打开监控界面 (一)master监控界面 (二)日志服务监控界面 三、集群的测试 &a…...
在Java中,实现数据库连接通常使用JDBC
学习总结 1、掌握 JAVA入门到进阶知识(持续写作中……) 2、学会Oracle数据库入门到入土用法(创作中……) 3、手把手教你开发炫酷的vbs脚本制作(完善中……) 4、牛逼哄哄的 IDEA编程利器技巧(编写中……) 5、面经吐血整理的 面试技…...
Git 测验
Git 测验 引言 Git 是一款强大的分布式版本控制系统,它由Linus Torvalds创建,主要用于帮助多人协作开发项目。Git 的设计目标是速度、数据完整性以及分布式支持。自从2005年发布以来,Git 已经成为全球最流行的版本控制系统之一,被广泛应用于各种规模的软件开发项目中。 …...
L1G3000 提示工程(Prompt Engineering)
什么是Prompt(提示词)? Prompt是一种灵活、多样化的输入方式,可以用于指导大语言模型生成各种类型的内容。什么是提示工程? 提示工程是一种通过设计和调整输入(Prompts)来改善模型性能或控制其输出结果的技术。 六大基本原则: 指令要清晰提供参考内容复杂的任务拆…...
【SQL50】day 1
目录 1.可回收且低脂的产品 2.寻找用户推荐人 3.使用唯一标识码替换员工ID 4.产品销售分析 I 5.有趣的电影 6.平均售价 7.每位教师所教授的科目种类的数量 8.平均售价 1.可回收且低脂的产品 # Write your MySQL query statement below select product_id from Products w…...
jmeter脚本-请求体设置变量and请求体太长的处理
目录 1、查询接口 1.1 准备组织列表的TXT文件,如下: 1.2 添加 CSV数据文件设置 ,如下: 1.3 接口请求体设置变量,如下: 2、创建接口 2.1 见1.1 2.2 见1.2 2.3 准备创建接口的请求体TXT文件ÿ…...
基于java+SpringBoot+Vue的旅游管理系统设计与实现
项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: Springboot mybatis Maven mysql5.7或8.0等等组成&#x…...
别再纠结了!手把手教你根据团队规模和技术栈选对存储方案(Ceph vs MinIO实战对比)
技术选型实战:Ceph与MinIO的团队适配决策框架 当技术负责人面对存储方案选型时,往往陷入"功能强大"与"简单易用"的两难抉择。我曾见证过一家50人规模的AI创业公司,因盲目选择Ceph导致三个月后不得不重构基础设施——他们…...
如何通过Bilibili-Evolved打造个性化B站体验?解锁高效视频浏览新方式
如何通过Bilibili-Evolved打造个性化B站体验?解锁高效视频浏览新方式 【免费下载链接】Bilibili-Evolved 强大的哔哩哔哩增强脚本 项目地址: https://gitcode.com/gh_mirrors/bi/Bilibili-Evolved 你是否曾经在B站浏览时遇到这样的困扰:界面广告太…...
实时数据流处理实战:从滑动窗口算法到Docker部署
用 Python 造一个轻量级流处理引擎,顺便把 Git、Docker、CI/CD 全串起来 前言 你是否有过这样的需求:统计过去 5 秒内 API 的请求次数、监控传感器数据的突变、或者对直播间的弹幕进行限流?这些场景都离不开实时数据流处理。而流处理的核心&…...
AIGC查重率多少合格?看完这篇就清楚了
相信不少用AI辅助写论文的同学都有过这种焦虑:深夜改完终稿,想起学校要求提交AIGC检测报告,翻遍论坛找不到明确的合格标准,手心出汗反复刷新搜索结果,就怕自己的AI生成占比超标过不了审。作为常年跟各类论文查重工具打…...
从拖拽到对话:衡石Agentic BI如何重构企业数据分析的交互范式
传统BI的交互困局在商业智能发展史上,2025年或许会被标记为一个转折点。这一年,衡石科技发布的HENGSHI SENSE 6.0 Agentic BI平台,标志着数据分析从"被动工具"正式迈入"主动智能体"时代。过去二十年,"拖拽生成报表"一直被奉为BI工具的黄金标准。…...
MES(The Measures of Effect Size )工具箱的使用
MES(The Measures of Effect Size )效应量计算工具的使用 The Measures of Effect Size (MES) Toolbox is a set of Matlab functions which compute a wide range of effect size statistics. The four main toolbox functions cover common analysis d…...
从文档智能处理到自动化工作流:现代开发技能的全栈实践
从文档智能处理到自动化工作流:现代开发技能的全栈实践 【免费下载链接】skills 本仓库包含的技能展示了Claude技能系统的潜力。这些技能涵盖从创意应用到技术任务、再到企业工作流。 项目地址: https://gitcode.com/GitHub_Trending/skills3/skills 在日常开…...
Simple Form终极性能优化指南:如何实现Rails表单批量查询
Simple Form终极性能优化指南:如何实现Rails表单批量查询 【免费下载链接】simple_form Forms made easy for Rails! Its tied to a simple DSL, with no opinion on markup. 项目地址: https://gitcode.com/gh_mirrors/si/simple_form Simple Form是Rails生…...
PowerPaint-V1 Gradio 新手入门指南:3步搞定图片修复,小白也能变大神
PowerPaint-V1 Gradio 新手入门指南:3步搞定图片修复,小白也能变大神 1. 为什么选择PowerPaint-V1? 如果你经常需要处理图片中的瑕疵、水印或者想替换某些元素,PowerPaint-V1绝对是你的得力助手。这个由字节跳动与香港大学联合研…...
通道注意力与空间注意力【实战篇】
1. 通道注意力实战技巧 第一次在项目中引入通道注意力机制时,我对着论文反复调试了三天才跑通。现在回头看,其实核心代码不到20行,但当时确实踩了不少坑。通道注意力最实用的价值在于:它能自动发现哪些特征通道对当前任务更重要。…...
