VPS搭建MinIO自建S3兼容对象存储:API上传和文件管理

Docker部署、S3 API上传文件、管理后台和与Lsky Pro图床的搭配
发布于
1

图床、备份、静态资源——需要一个能通过API上传下载文件的存储服务。MinIO是开源的高性能对象存储,兼容Amazon S3 API,Docker单机部署,所有支持S3的工具都能对接。

Docker部署MinIO

mkdir minio && cd minio
docker run -d --restart always 
  -p 9000:9000 -p 9001:9001 
  -v ./data:/data 
  -e MINIO_ROOT_USER=admin 
  -e MINIO_ROOT_PASSWORD=强密码最少8位 
  --name minio 
  minio/minio server /data --console-address ":9001"

# 9000是API端口,9001是Web管理界面
# 访问 http://VPS_IP:9001 进管理后台

登录后→创建Bucket(存储桶)→设为公开或私有→上传文件→获取文件直链。

雨云VPS跑MinIO需要一定硬盘空间(存文件)——入门20GB起步,优惠码 admin01 首月五折。

API上传文件(S3兼容)

MinIO兼容S3 API,用Python boto3库操作:

pip install boto3

import boto3
from botocore.client import Config

client = boto3.client('s3',
    endpoint_url='http://VPS_IP:9000',
    aws_access_key_id='admin',
    aws_secret_access_key='你的密码',
    config=Config(signature_version='s3v4'))

# 上传文件
client.upload_file('local.png', 'mybucket', 'folder/remote.png')

# 生成预签名URL(临时访问链接)
url = client.generate_presigned_url('get_object',
    Params={'Bucket': 'mybucket', 'Key': 'folder/remote.png'},
    ExpiresIn=3600)  # 1小时有效

Nginx反代HTTPS

server {
    listen 80;
    server_name s3.你的域名.com;
    client_max_body_size 100M;
    location / {
        proxy_pass http://127.0.0.1:9000;
        proxy_set_header Host $host;
    }
}
# certbot --nginx -d s3.你的域名.com

和Lsky Pro图床的区别

Lsky Pro是专用的图床(面向图片、有前端上传界面)。MinIO是通用对象存储(面向API调用、所有类型文件)。需要Web界面上传管理图片→Lsky Pro。需要API程序化读写文件→MinIO。两者可以配合——Lsky Pro用MinIO做后端存储。

常见问题

MinIO占用多少资源?

内存约100MB,CPU极低。主要资源开销在磁盘IO。小文件频繁读写建议用SSD。

一个Bucket可以设公开访问吗?

可以——Bucket设置→Access Policy→设为Public。所有文件直接通过URL访问,适合做静态资源CDN源站。

数据怎么备份?

MinIO数据就是./data目录——直接tar打包同步到COS或另一台VPS。或者在另一台MinIO上设镜像复制。

本文由作者原创/授权发布于极跃圈(jiyueip.com)未经许可,禁止转载。题图来自Unsplash,基于CC0协议。

声明:极跃圈(JIYUEIP.com)内网友所发表的所有内容及言论仅代表其本人,并不反映任何极跃圈(JIYUEIP.com)之意见及观点。

0 讨论
热门最新
总结
暂无总结
0 / 600