标签 RustFS 下的文章

RustFS 默认通过 9001 端口登录控制台,9000 端口使用 API,为了安全合规,通常采用启用 HTTPS、反向代理(诸如 nginx、traefik、caddy 等)的方式来更加安全的使用 RustFS。本文分享一种更加安全的方式,通过 Cloudflare tunnel 来访问你的 RustFS 实例。

安装 RustFS

RustFS 支持二进制、Docker 以及 Helm Chart 的安装方式,详细方法可以查看官网安装指南。将如下内容写入 docker-compose.yml 文件:

services:
  rustfs:
    image: rustfs/rustfs:latest
    container_name: rustfs
    hostname: rustfs
    environment:
      - RUSTFS_VOLUMES=/data/rustfs{1...4}
      - RUSTFS_ADDRESS=0.0.0.0:9000
      - RUSTFS_CONSOLE_ENABLE=true
      - RUSTFS_CONSOLE_ADDRESS=0.0.0.0:9001
      - RUSTFS_ACCESS_KEY=rustfsadmin
      - RUSTFS_SECRET_KEY=rustfsadmin
      - RUSTFS_TLS_PATH=/opt/tls
    ports:
      - "9000:9000"  # API endpoint
      - "9001:9001"  # Console
    volumes:
      - data1:/data/rustfs1
      - data2:/data/rustfs2
      - data3:/data/rustfs3
      - data4:/data/rustfs4
      - ./certs:/opt/tls

    networks:
      - rustfs

networks:
  rustfs:
    driver: bridge
    name: rustfs

volumes:
  data1:
  data2:
  data3:
  data4:

运行如下命令

docker compose up -d

即可安装好一个 RustFS 实例:

docker compose ps
NAME      IMAGE                          COMMAND                  SERVICE   CREATED          STATUS          PORTS
rustfs    rustfs/rustfs:1.0.0-alpha.81   "/entrypoint.sh rust…"   rustfs    22 minutes ago   Up 22 minutes   0.0.0.0:9000-9001->9000-9001/tcp, [::]:9000-9001->9000-9001/tcp

配置 Cloudflare tunnel

配置 Cloudflare tunnel 大体分为 域名配置tunnel 配置 两部分。

域名配置

域名配置是为了后期能够更方便的访问 RustFS。

  • 使用 Cloudflare 账号登录 Cloudflare Domain 界面;
  • 在左侧导航栏,Account home,如果你已经有域名,则选择 Onboard a domain,否则可选择 Buy a domain
  • 如果选择 Onboard a domain,点击该选项后,在出现的界面中输入你的域名,然后继续往下走,直到在最后选择 Continue to activation
  • 如果一切顺利,可以在域名管理首页看到添加成功的域名,其 Status 会显示为 Active

image.png

tunnel 配置

  • 使用 Cloudflare 账号登录 Cloudflare Dashboard
  • 在左侧导航栏,选择 Networks -> Connectors,在右侧界面点击 Create a tunnel
  • 在 tunnel 类型中,选择 Select Clouflared
  • Install and run connectors 中,根据 RustFS 实例所在服务器的操作系统信息,选择相应的安装方式。安装完毕后,可以在服务器上查看 cloudflared 服务的状态。运行正常后点击 Next

    systemctl status cloudflared
    ● cloudflared.service - cloudflared
         Loaded: loaded (/etc/systemd/system/cloudflared.service; enabled; preset: enabled)
         Active: active (running) since Fri 2026-01-16 21:18:53 CST; 6 days ago
       Main PID: 2538004 (cloudflared)
          Tasks: 10 (limit: 4375)
         Memory: 31.3M (peak: 38.7M swap: 8.2M swap peak: 15.3M)
            CPU: 18min 16.159s
         CGroup: /system.slice/cloudflared.service
  • Route Traffic 中,配置 HostnameService 信息。

    • Hostname 中填写的域名可用于后续访问 RustFS 实例,可以在 Domain 字段中选择 域名配置 部分添加好的域名。如果想通过子域名访问,也可以在 Subdomain 字段中输入子域名名称。
    • Service 选择服务类型和 URL。对于上述安装的 RustFS 实例,Type 可以选择 HTTP/HTTPS(如果启用了 HTTPS,可选择 HTTPS,否则用 HTTP),URL 为 localhost:9001

    image.png

  • 点击 Complete setup 完成配置。

上述配置结束后,可以在 Connectors 界面看到添加好的 tunnel,如果一切顺利,则可以看到 Status 为绿色的 HEALTHY

在 Hostname 和 Service 设置页面的 Additional application settings 部分,点击 HTTP Settings,在 HTTP Host Header 部分,输入访问 RustFS 的域名,这是为了避免后续使用出现签名错误。

登录验证

恭喜你,如果你顺利完成了上述两部分的配置后,那么现在你就可以通过你配置好的域名来访问 RustFS 实例了。本文配置的域名为 rustfs.xiaomage.vip,所以在浏览器中输入 https://rustfs.xiaomage.vip 即可访问 RustFS 实例:

image.png

输入 rustfsadmin/rustfsadmin 即可登录。

接下来就可以通过多种方式来使用 RustFS 实例了,比如 mcrc 以及 rclone

通过 mc 使用 RustFS

mc 是 Minio 的专属客户端,由于 RustFS 是 S3 兼容的,而且是 Minio 的平替,所以可以用 mc 来操作 RustFS。

前提

mc --version
mc version RELEASE.2025-08-29T21-30-41Z (commit-id=f7560841be167a94b7014bf8a504e0820843247f)
Runtime: go1.24.6 darwin/arm64
Copyright (c) 2015-2025 MinIO, Inc.
MinIO Enterprise License

使用

# 添加 `alias`
mc alias set rustfs https://rustfs.xiaomage.vip rustfsadmin rustfsadmin

# 创建存储桶
mc mb rustfs/hello

# 列出存储桶
mc ls rustfs
[2026-01-23 21:39:36 CST]     0B hello/
[2026-01-23 20:12:59 CST]     0B test/

# 上传文件到存储桶
echo "123456" > 1.txt
mc cp 1.txt rustfs/hello
/tmp/1.txt:                         ██████████████████████████████████████████████████████████████████████████████████ 100.0% 7 B       1 B/s      

# 查看上传的文件
mc ls rustfs/hello
[2026-01-23 21:40:44 CST]     7B STANDARD 1.txt

更多用法可自行探索。

通过 rclone 使用 RustFS

rclone是一个命令行工具,可以对不同云提供商上的文件和目录进行同步。

前提

rclone --version
rclone v1.72.1
- os/version: ubuntu 24.04 (64 bit)
- os/kernel: 6.8.0-71-generic (x86_64)
- os/type: linux
- os/arch: amd64
- go/version: go1.25.5
- go/linking: static
- go/tags: none

使用

  • 配置 rclone

执行 rclone config 命令,根据 RustFS 实例信息,一步步进行配置。配置完成后,会生成一个 ~/.config/rclone/rclone.conf 文件,一般内容如下:

[rustfs]
type = s3
provider = Minio
access_key_id = rustfsadmin
secret_access_key = rustfsadmin
endpoint = https://rustfs.xiaomage.vip
region = us-east-1
force_path_style = true
由于目前 RustFS 还未向 rclone 官方提 PR 以增加 RustFS provider 信息,因此使用 Minio 作为 provider。
  • 开始使用
# 列出存储桶和对象

rclone ls rustfs: --s3-sign-accept-encoding=false
        7 hello/1.txt
    11792 test/1.log
   520512 test/123.mp3
     7394 test/2.log
   147240 test/321.mp3
   

# 查看某个对象内容
rclone cat rustfs:hello/1.txt --s3-sign-accept-encoding=false
123456 

对于其他用法,可以通过 rclone --help 来自行探索。

注意:添加 --s3-sign-accept-encoding=false 参数是因为 Cloudflare 会对 Accept-Encoding 参数进行修改,在 S3 协议中,这种变更会导致 SignatureDoesNotMatch 错误,详情可以查看 RustFS issue

通过 rc 使用 RustFS

rc 是 RustFS 的 Client,用来对 RustFS 进行操作。目前,刚发布 0.1.1。可以使用 cargo 或源码编译安装。

rc --version
rc 0.1.1

目前提供 aliaslsmbrb 等多种常规命令。使用方式和 mc 类似。

# 设置 alias
rc alias set rustfs https://rustfs.xiaomage.vip rustfsadmin rustfsadmin
✓ Alias 'rustfs' configured successfully.

# 列出存储桶
rc ls rustfs
[2026-01-23 13:39:36]         0B hello/
[2026-01-23 13:56:57]         0B rclone/
[2026-01-23 12:12:59]         0B test/

# 创建存储桶
rc mb rustfs/client
✓ Bucket 'rustfs/client' created successfully.

更多用法,可以通过 rc --help 进行查看并自行探索,使用过程中有任何问题,可以在 GitHub Issue中进行反馈。

RustFS 作为新一代的分布式对象存储系统,提供了 Helm Chart 以便 Kubernetes 集群上安装 RustFS 实例。而 DirectPV 是一个符合 CSI 标准的 Kubernetes 存储项目,由 Minio 发布且开源。本文使用 DirectPV 为 Kubernetes 上的 RustFS 实例提供后端存储服务,实现两个对象存储服务的“结合”。

前提

  • 运行良好的 Kubernetes 集群。

    本文使用 K3S 作为测试环境,根据 K3S 安装指南完成安装:

    # 安装 K3S
    curl -sfL https://get.k3s.io | sh -
    
    # 安装确认
    kubectl get nodes
    NAME             STATUS   ROLES           AGE   VERSION
    vm-0-17-ubuntu   Ready    control-plane   63m   v1.34.3+k3s1
  • 一块空磁盘

    本文在安装 K3S 的服务器上(OS 为 Ubuntu 24.04)挂载了一块容量为 20GB 的新磁盘:

    df -h
    vdb    253:16   0   20G  0 disk /root/data/disk
    
    mount | grep vdb
    /dev/vdb on /root/data/disk type ext4 (rw,relatime)

安装 DirectPV

可以直接根据 minio/directpv 文档进行 DirectPV 的安装。这个过程中会使用到 krew plugin,根据不同的 OS 执行安装命令即可。

在 Ubuntu 上执行如下命令:

(
  set -x; cd "$(mktemp -d)" &&
  OS="$(uname | tr '[:upper:]' '[:lower:]')" &&
  ARCH="$(uname -m | sed -e 's/x86_64/amd64/' -e 's/\(arm\)\(64\)\?.*/\1\2/' -e 's/aarch64$/arm64/')" &&
  KREW="krew-${OS}_${ARCH}" &&
  curl -fsSLO "https://github.com/kubernetes-sigs/krew/releases/latest/download/${KREW}.tar.gz" &&
  tar zxvf "${KREW}.tar.gz" &&
  ./"${KREW}" install krew
)

安装完毕,将 PATH="${KREW_ROOT:-$HOME/.krew}/bin:$PATH" 写到 ~/.bashrc 或 ~/.zshrc 即可。

开始安装 DirectPV。

  • 安装 directpv krew 插件
kubectl krew install directpv
  • 在 Kubernetes 集群中安装 DirectPV
kubectl directpv install
Installing on unsupported Kubernetes v1.34

 ███████████████████████████████████████████████████████████████████████████ 100%

┌──────────────────────────────────────┬──────────────────────────┐
│ NAME                                 │ KIND                     │
├──────────────────────────────────────┼──────────────────────────┤
│ directpv                             │ Namespace                │
│ directpv-min-io                      │ ServiceAccount           │
│ directpv-min-io                      │ ClusterRole              │
│ directpv-min-io                      │ ClusterRoleBinding       │
│ directpv-min-io                      │ Role                     │
│ directpv-min-io                      │ RoleBinding              │
│ directpvdrives.directpv.min.io       │ CustomResourceDefinition │
│ directpvvolumes.directpv.min.io      │ CustomResourceDefinition │
│ directpvnodes.directpv.min.io        │ CustomResourceDefinition │
│ directpvinitrequests.directpv.min.io │ CustomResourceDefinition │
│ directpv-min-io                      │ CSIDriver                │
│ directpv-min-io                      │ StorageClass             │
│ node-server                          │ Daemonset                │
│ controller                           │ Deployment               │
└──────────────────────────────────────┴──────────────────────────┘

DirectPV installed successfully
  • 安装确认并获取安装信息

kubectl -n directpv get pods
NAME                          READY   STATUS    RESTARTS   AGE
controller-54d56fb9f8-92cz8   3/3     Running   0          90m
controller-54d56fb9f8-kfltl   3/3     Running   0          90m
controller-54d56fb9f8-ncxcn   3/3     Running   0          90m
node-server-vgpn2             4/4     Running   0          90m

kubectl directpv info
┌──────────────────┬──────────┬───────────┬─────────┬────────┐
│ NODE             │ CAPACITY │ ALLOCATED │ VOLUMES │ DRIVES │
├──────────────────┼──────────┼───────────┼─────────┼────────┤
│ • vm-0-17-ubuntu │ -        │ -         │ -       │ -      │
└──────────────────┴──────────┴───────────┴─────────┴────────┘

0 B/0 B used, 0 volumes, 0 drives
  • 添加磁盘(驱动)

首先检测磁盘信息并将其信息写到 drives.yaml 文件中:

kubectl directpv discover

 Discovered node 'vm-0-17-ubuntu' ✔

┌─────────────────────┬────────────────┬───────┬────────┬────────────┬──────┬───────────┬─────────────┐
│ ID                  │ NODE           │ DRIVE │ SIZE   │ FILESYSTEM │ MAKE │ AVAILABLE │ DESCRIPTION │
├─────────────────────┼────────────────┼───────┼────────┼────────────┼──────┼───────────┼─────────────┤
│ 253:16$PXmUgO0FF... │ vm-0-17-ubuntu │ vdb   │ 20 GiB │ ext4       │ -    │ YES       │ -           │
└─────────────────────┴────────────────┴───────┴────────┴────────────┴──────┴───────────┴─────────────┘

Generated 'drives.yaml' successfully.

drives.yaml 文件内容如下:

version: v1
nodes:
    - name: vm-0-17-ubuntu
      drives:
        - id: 253:16$PXmUgO0FF7sKtsaVihMadap1hCZil9Rksbz2SdQkMfA=
          name: vdb
          size: 21474836480
          make: ""
          fs: ext4
          select: "yes"

接着使用 drives.yaml 文件进行 DirectPV 初始化:

kubectl directpv init drives.yaml --dangerous

 ███████████████████████████████████████████████████████████████████████████ 100%

 Processed initialization request '3a70561d-3de0-4756-b256-159fc98593d1' for node 'vm-0-17-ubuntu' ✔

┌──────────────────────────────────────┬────────────────┬───────┬─────────┐
│ REQUEST_ID                           │ NODE           │ DRIVE │ MESSAGE │
├──────────────────────────────────────┼────────────────┼───────┼─────────┤
│ 3a70561d-3de0-4756-b256-159fc98593d1 │ vm-0-17-ubuntu │ vdb   │ Success │
└──────────────────────────────────────┴────────────────┴───────┴─────────┘

恭喜你,走到这一步,你已经成功安装了 DirectPV(之前的每一步出错都会导致失败,请认真查看命令以及输出结果),使用如下命令确认:

kubectl get sc
NAME                   PROVISIONER             RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
directpv-min-io        directpv-min-io         Delete          WaitForFirstConsumer   true                   90m
local-path (default)   rancher.io/local-path   Delete          WaitForFirstConsumer   false                  115m

可以看到,名为 directpv-min-io 的 StorageClass 已经存在。接下来就使用这个 SC 进行 RustFS 的安装。

在 K3S 上安装 RustFS

RustFS 提供 Helm Chart来在 Kubernetes 上安装 RustFS。目前支持两种模式:单机单盘(SNSD)和多机多盘(MNMD)

可以将 GitHub Repo 代码 clone 到本地,然后进入到 helm/rustfs 目录下进行安装,也可以直接使用 RustFS 的远端仓库(RustFS 已经将 Helm Chart 发布到了 Artifact Hub),比如:

# 添加仓库
helm repo add rustfs https://charts.rustfs.com

# 安装 RustFS
helm install rustfs -n rustfs rustfs/rustfs --create-namespace  --version 0.0.80

由于 RustFS Helm Chart 默认使用 local-path StorageClass,而且默认的 PVC 大小为 256Mi,因此需要根据自身情况设置合适的大小,最简单的方式就是在本地创建一个 values.yml 文件,然后修改如下内容:

storageclass:
  name: directpv-min-io
  dataStorageSize: 256Mi
  logStorageSize: 256Mi
当然,也可以用 --set 来实现参数的覆盖,但是由于 RustFS 多种安装模式、多种 Ingress Controller,以及 pod 资源的自定义等,--set 就需要指定多个参数,会显得繁琐。将需要变更的信息写到本地 values.yml,然后用 -f 指定,可能更加便捷的自定义安装 RustFS。

本文采用本地安装模式(也就是 Helm Chart 代码在本地),执行如下命令进行安装:

helm install rustfs ./ -n rustfs --create-namespace -f values.yaml 

查看 PVC

kubectl -n rustfs get pvc 
NAME                     STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS      VOLUMEATTRIBUTESCLASS   AGE
data-rustfs-0-rustfs-0   Bound    pvc-8e9b520f-3a96-4a64-afb3-70f13d3edcd3   256Mi      RWO            directpv-min-io   <unset>                 61s
data-rustfs-0-rustfs-1   Bound    pvc-8bef3219-469c-452c-969a-89c8470d3945   256Mi      RWO            directpv-min-io   <unset>                 61s
data-rustfs-0-rustfs-2   Bound    pvc-aee2c489-6f4c-47dc-b464-b09fc5ea112c   256Mi      RWO            directpv-min-io   <unset>                 61s
data-rustfs-0-rustfs-3   Bound    pvc-b59ec27c-9fb0-4ad1-a204-9858c1d405da   256Mi      RWO            directpv-min-io   <unset>                 61s
data-rustfs-1-rustfs-0   Bound    pvc-8d840468-f6be-4154-ae42-73f68f6e36e3   256Mi      RWO            directpv-min-io   <unset>                 61s
data-rustfs-1-rustfs-1   Bound    pvc-c5adc67b-f6ea-470a-861d-9b48b610bbee   256Mi      RWO            directpv-min-io   <unset>                 61s
data-rustfs-1-rustfs-2   Bound    pvc-8d7b98e0-ff0b-4d5f-869c-fe7c1b71ffc2   256Mi      RWO            directpv-min-io   <unset>                 61s
data-rustfs-1-rustfs-3   Bound    pvc-9268589f-7ca7-4480-a724-36bfcdc29cff   256Mi      RWO            directpv-min-io   <unset>                 61s
data-rustfs-2-rustfs-0   Bound    pvc-f31689f3-1aa8-42f7-8fcb-f309a6b390b5   256Mi      RWO            directpv-min-io   <unset>                 61s
data-rustfs-2-rustfs-1   Bound    pvc-28fecb41-9dd7-436d-9317-e8a3a588a87a   256Mi      RWO            directpv-min-io   <unset>                 61s
data-rustfs-2-rustfs-2   Bound    pvc-77d4c8e6-918a-4b28-a2bc-408195f807d3   256Mi      RWO            directpv-min-io   <unset>                 61s
data-rustfs-2-rustfs-3   Bound    pvc-6deab996-a8a3-4e02-ae6c-845f863526c0   256Mi      RWO            directpv-min-io   <unset>                 61s
data-rustfs-3-rustfs-0   Bound    pvc-46c7cc1a-1f25-4c3e-8168-3c288ee552d5   256Mi      RWO            directpv-min-io   <unset>                 61s
data-rustfs-3-rustfs-1   Bound    pvc-a0403935-2471-48d8-beac-fcf28fd85a7a   256Mi      RWO            directpv-min-io   <unset>                 61s
data-rustfs-3-rustfs-2   Bound    pvc-d0c88736-ee1a-47e5-a335-53d086e87913   256Mi      RWO            directpv-min-io   <unset>                 61s
data-rustfs-3-rustfs-3   Bound    pvc-9fbac8a8-cb59-430b-abc1-4ad5105ed4ad   256Mi      RWO            directpv-min-io   <unset>                 61s
logs-rustfs-0            Bound    pvc-bc673cea-6cf0-479f-a323-5c2102479796   256Mi      RWO            directpv-min-io   <unset>                 61s
logs-rustfs-1            Bound    pvc-c823f3a4-2e07-4331-bdd3-f0c6172bb15b   256Mi      RWO            directpv-min-io   <unset>                 61s
logs-rustfs-2            Bound    pvc-059eeaf9-b209-41ec-87f6-da87f0105c41   256Mi      RWO            directpv-min-io   <unset>                 61s
logs-rustfs-3            Bound    pvc-348e4bfb-d272-4deb-ae8e-fc6ea70d4d74   256Mi      RWO            directpv-min-io   <unset>                 61s

可以看到生成了分布式安装所需的所有 PVC,状态是 Bound。接着查看 pods 状态:

kubectl -n rustfs get pods
NAME       READY   STATUS    RESTARTS   AGE
rustfs-0   1/1     Running   0          69s
rustfs-1   1/1     Running   0          69s
rustfs-2   1/1     Running   0          69s
rustfs-3   1/1     Running   0          69s

可以看到 pod 运行正常。接着就可以使用 ingress 来访问该 RustFS 实例了。

注意事项

安装 DirectPV 的过程中,会对该磁盘上的数据进行格式化,而且该磁盘不能被其他程序占用,否则会出现如下错误:


┌──────────────────────────────────────┬────────────────┬───────┬──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ REQUEST_ID                           │ NODE           │ DRIVE │ MESSAGE                                                                                                                                                                                                                          │
├──────────────────────────────────────┼────────────────┼───────┼──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ e9adb7af-8061-46b1-8112-d86e5fb653cd │ vm-0-17-ubuntu │ vdb   │ Failed; unable to format device /dev/vdb; unable to execute command [mkfs.xfs -i maxpct=50 -m uuid=2be5b9cc-beeb-4d54-bbcb-a1cbc5f0ef97 -f -L DIRECTPV /dev/vdb]; output=mkfs.xfs: cannot open /dev/vdb: Device or resource busy │
│                                      │                │       │ ; error=exit status 1                                                                                                                                                                                                            │
└──────────────────────────────────────┴────────────────┴───────┴──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

可以通过将此磁盘 umount 来解决。

RustFS 支持容器化部署模式,可以用 docker run 命令或 docker compose 来快速安装一个 RustFS 实例。由于 podman 也是一个可以对容器进行管理的工具,大多数情况下是可以兼容 docker 命令的。因此,也可以用 podman 对 RustFS 进行容器化安装。本文分享两种安装方式。

安装前提

  • podman 环境,本文所需的 podman 环境信息如下
# podman 版本
podman --version

# podman-compose 版本
podman-compose --version
podman-compose version: 1.0.6
['podman', '--version', '']
using podman version: 4.9.3
podman-compose version 1.0.6
podman --version 
podman version 4.9.3
exit code: 0

安装方式

可以使用 podman runpodman compose 进行安装。

podman run 安装

使用如下命令即可:

podman run -d -p 9000:9000 -p 9001:9001  \
    -v $(pwd)/data:/data -v $(pwd)/logs:/logs \
    docker.io/rustfs/rustfs:latest
注意,需要把 datalogs 目录的权限改成 10001,因为 RustFS 是非 root 用户运行,不修改权限,会导致权限问题。

查看容器状态:

podman ps
CONTAINER ID  IMAGE                           COMMAND     CREATED       STATUS       PORTS                             NAMES
593c5bffbce9  docker.io/rustfs/rustfs:latest  rustfs      21 hours ago  Up 21 hours  0.0.0.0:9000-9001->9000-9001/tcp  exciting_herschel

podman compose 安装

将如下内容写入 podman-compose.yml 文件:

services:
  rustfs:
    image: docker.io/dllhb/disk-cap:0.0.1
    container_name: rustfs
    hostname: rustfs
    environment:
      - RUSTFS_VOLUMES=/data/rustfs{1...4}
      - RUSTFS_ADDRESS=0.0.0.0:9000
      - RUSTFS_CONSOLE_ENABLE=true
      - RUSTFS_CONSOLE_ADDRESS=0.0.0.0:9001
      - RUSTFS_ACCESS_KEY=rustfsadmin
      - RUSTFS_SECRET_KEY=rustfsadmin
      - RUST_LOG=warn
    ports:
      - "9000:9000"  # API endpoint
      - "9001:9001"  # Console
    volumes:
      - ./data1:/data/rustfs1
      - ./data2:/data/rustfs2
      - ./data3:/data/rustfs3
      - ./data4:/data/rustfs4

    networks:
      - rustfs

networks:
  rustfs:
    driver: bridge
    name: rustfs

接着执行:

podman compose up -d

查看容器状态:

podman compose ps
CONTAINER ID  IMAGE                           COMMAND          CREATED             STATUS             PORTS                             NAMES
f6496b7856f3  docker.io/dllhb/disk-cap:0.0.1  /usr/bin/rustfs  About a minute ago  Up About a minute  0.0.0.0:9000-9001->9000-9001/tcp  rustfs
注意,需要把 data* 目录的权限改成 10001,因为 RustFS 是非 root 用户运行,不修改权限,会导致权限问题。

使用 RustFS

不管用哪种方式,当 RustFS 运行正常后,就可以通过 http://IP:9001 的方式登录 RustFS,默认用户名和密码都是 rustfsadmin/rustfsadmin

继硬编码凭据之后的另一个高分漏洞,获得 9.9 的高分,高于硬编码凭据 9.8


上一个硬编码凭据漏洞


📌 转载信息
原作者:
vxtls
转载时间:
2026/1/8 12:13:52