MinIO的S3对象存储替代品Garage

据说 Minio 在最新的更新中,删除了 Web UI 中的管理员功能。后续我们可以选择 OpenMaxIO 作为替代,这是 Minio 使用 UI 的一个分支。而今天我们介绍的 Garage ,则是另一个不同的对象存储选项。
简介
什么是 Garage ?
Garage是一个S3兼容的分布式对象存储服务,设计用于小到中型的自托管环境。它旨在支持在不同物理位置运行的存储集群,能够高效地复制数据并保持可用性,即使部分服务器不可达。
主要特点
-
分布式存储:支持多个节点,提供地理分布的存储解决方案。
-
高可用性:即使部分节点出现故障,数据仍然可访问。
-
轻量级和易于操作:专注于简化管理,适合小规模部署。
-
开源:完全免费,遵循
AGPLv3许可证。
什么是 Garage Web UI ?
Garage Web UI是一个简单的管理界面,用于Garage对象存储服务。它是一个自托管的、S3兼容的分布式对象存储解决方案的前端界面。
主要特点
-
健康状态监控:可以查看
Garage的健康状态。 -
集群与布局管理:方便管理存储集群的布局。
-
桶管理:创建、更新和查看桶的信息。
-
对象浏览:集成的对象和桶浏览器。
-
访问密钥管理:创建和分配访问密钥。

Garage Web UI 提供了一个用户友好的界面,方便用户管理和操作 Garage 对象存储服务。
安装
在群晖上以 Docker 方式安装。
garage.toml.txt
metadata_dir = "/var/lib/garage/meta"
data_dir = "/var/lib/garage/data"
db_engine = "sqlite"
replication_factor = 1
rpc_bind_addr = "[::]:3901"
rpc_public_addr = "192.168.0.197:3901"
rpc_secret = "1a3dde195f0e94165b1fdd8587d54c657b3e7567646187565121526beedd70d1"
[s3_api]
s3_region = "garage"
api_bind_addr = "[::]:3900"
root_domain = ".s3.laosu.tech"
[s3_web]
bind_addr = "[::]:3902"
root_domain = ".web.laosu.tech"
index = "index.html"
[admin]
api_bind_addr = "[::]:3903"
admin_token = "040adfcd8ea79d96a6e4404355e496d11e8bf6f4bffc41e7878f9def198bf78b"
metrics_token = "cbb4a2fb16cec7c0e16ce8efe62766b22e625872e4fa24ef9020c7d11b8b0fc1"metadata_dir 存储元数据的目录,设置为 /var/lib/garage/meta。
data_dir 存储对象数据块的目录,设置为 /var/lib/garage/data。
db_engine 数据库引擎,设置为 sqlite。
replication_factor 数据的复制因子,设置为 1。
rpc_bind_addr 节点监听RPC通信的地址和端口,设置为 [::]:3901。
rpc_public_addr 其他节点用于联系该节点的公共地址和端口,设置为 192.168.0.197:3901。
rpc_secret RPC 通信的密钥,用于节点间的身份验证,通过 openssl rand -hex 32 生成。
[s3_api] S3 API 的配置部分。
s3_region S3 区域,设置为 garage。
api_bind_addr S3 API 的绑定地址,设置为 [::]:3900。
root_domain S3 桶的根域名。
[s3_web] 将桶公开为网站的配置部分。
bind_addr 网站请求的绑定地址,设置为 [::]:3902。
root_domain 网站的根域名。
index 网站的索引文件,设置为 index.html。
[admin] 管理功能的配置部分。
api_bind_addr 管理 API 的绑定地址,设置为 [::]:3903。
admin_token
管理 API 的访问令牌,通过 openssl rand -hex 32 生成。
metrics_token 监控 API 的访问令牌,通过 openssl rand -hex 32 生成。
更多设置变量的详细说明,可以参考官方的文档:https://garagehq.deuxfleurs.fr/documentation/reference-manual/configuration
docker-compose.yml
将下面的内容保存为 docker-compose.yml 文件
services:
garage:
image:dxflrs/garage:v1.1.0
container_name:garage
restart:unless-stopped
ports:
-3900:3900 ## s3 api
-3901:3901 ## rpc
-3902:3902 ## s3 web
-3903:3903 ## admin api and '/metrics' for prometheus
volumes:
-./garage.toml.txt:/etc/garage.toml
-./meta:/var/lib/garage/meta
-./data:/var/lib/garage/data
environment:
-TZ=Asia/Shanghai
webui:
image:khairul169/garage-webui:latest
container_name:garage-webui
restart:unless-stopped
ports:
-3909:3909
volumes:
-./garage.toml.txt:/etc/garage.toml:ro
environment:
API_BASE_URL:"http://garage:3903"
S3_ENDPOINT_URL:"http://garage:3900"然后执行下面的命令
# 新建文件夹 garage 和 子目录
mkdir -p /volume1/docker/garage/{data,meta}
# 进入 garage 目录
cd /volume1/docker/garage
# 将 docker-compose.yml 和 garage.toml 放入当前目录
# 一键启动
docker-compose up -d 
运行
在浏览器中输入 http://群晖IP:3909 就能看到主界面

进入 Cluster 可以查看当前节点的信息

点开后面的三个点 --> Assign

-
Node ID:默认的就可以 -
Zone:必填项,例如:home -
Capacity:必填项

点 Save 保存后,还需要点 Apply 创建分区

进入 Keys,点 Create Keys 新建一个 Key

创建成功后

进入 Buckets

点 Create Buckets 创建存储桶

创建完成后,暂时还无法使用

无论是点 Manage 还是 Browse

切换到 Permissions

点 Allow Key

勾选 key 并赋予相应的权限

现在可以开始使用了

参考文档
-
Deuxfleurs/garage: S3-compatible object store for small self-hosted geo-distributed deployments - Gitea: git with a cup of coffee 地址:https://git.deuxfleurs.fr/Deuxfleurs/garage
-
khairul169/garage-webui: WebUI for Garage Object Storage Service 地址:https://github.com/khairul169/garage-webui
-
Garage - An open-source distributed object storage service 地址:https://garagehq.deuxfleurs.fr/
-
Quick Start | Garage HQ 地址:https://garagehq.deuxfleurs.fr/documentation/quick-start/
-
Garage - S3 object storage alternative to Minio : r/selfhosted 地址:https://www.reddit.com/r/selfhosted/comments/1kw1q9j/garage_s3_object_storage_alternative_to_minio/
@所有人:写文不易,如果你都看到了这里,请点个赞和在看,分享给更多的朋友;为确保你能收到每一篇文章,请主页右上角设置星标。