当前位置: 首页 > news >正文

RustFS x Cloudflare Tunnel,实现对象存储的安全访问

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:latestcontainer_name: rustfshostname: rustfsenvironment:- 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/tlsports:- "9000:9000"  # API endpoint- "9001:9001"  # Consolevolumes:- data1:/data/rustfs1- data2:/data/rustfs2- data3:/data/rustfs3- data4:/data/rustfs4- ./certs:/opt/tlsnetworks:- rustfsnetworks:rustfs:driver: bridgename: rustfsvolumes: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

tunnel 配置

  • 使用 Cloudflare 账号登录 Cloudflare Dashboard;

  • 在左侧导航栏,选择 Networks -> Connectors,在右侧界面点击 Create a tunnel

  • 在 tunnel 类型中,选择 Select Clouflared

  • Install and run connectors 中,根据 RustFS 实例所在服务器的操作系统信息,选择相应的安装方式。安装完毕后,可以在服务器上查看 cloudflared 服务的状态。运行正常后点击 Next

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

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

    image

  • 点击 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

输入 rustfsadmin/rustfsadmin 即可登录。

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

通过 mc 使用 RustFS

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

前提

  • 根据 minio 官网指南安装好 mc
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 官网指南安装好 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=false7 hello/1.txt11792 test/1.log520512 test/123.mp37394 test/2.log147240 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中进行反馈。

http://www.jsqmd.com/news/307169/

相关文章:

  • 小程序开发公司哪家专业,专注于小程序运营优化的综合服务
  • 构建一个智能 BMI 计算器:深入解析 Flutter 中的实时计算、状态反馈与健康数据可视化
  • 告别错位与分页噩梦:Excel转PDF完美指南,让表格完整如初
  • 2026年青岛西海岸新区奔驰4S店排名,可分期且保养口碑好的店盘点
  • 小程序开发公司哪家靠谱,支持多平台兼容的开发团队实测
  • 2026年行业观察:通蔚生物在生物试剂领域的创新实践,mda检测试剂盒/sod试剂盒/ELISA,通蔚生物品牌哪个好
  • 构建高可用ISBN查询服务:技术架构与工程实践深度解析
  • 小程序定制开发公司怎么选,基于行业特性的定制化方案深度解析
  • 2026年京津冀互联网科技公司费用对比,北京华创价格贵不贵
  • 高杆灯按需定制有啥优势,高杆灯品牌制造商哪家值得选?
  • 说说昆明实力强的民宿设计企业,它们的价格分别是多少?
  • 2026年工装装修设计推荐,江浙沪口碑佳企业费用怎么算
  • 导师推荐10个AI论文平台,继续教育学生轻松搞定毕业论文!
  • 汽车与新能源海外营销推广服务商盘点:海外社媒代运营+本地化营销服务商精选
  • 【ACM出版 | EI检索】第二届数据挖掘与项目管理国际研讨会(DMPM 2026)
  • 2026年空调维修服务指南:专业师傅快速上门,透明收费无隐患
  • 如何选择EOR名义雇主服务?2026年性价比最高的五大品牌推荐
  • 智能出海新趋势:海外AI营销公司 + 海外整合营销公司联手,为外贸B2B企业提供自动化获客解决方案
  • 实用指南:WPF 国际化ResXManager的使用-梳理
  • ISBN查询服务技术架构深度解析:如何构建高可用、高性能的图书数据平台
  • springboot文化旅游小程序系统设计实现
  • Java快速开发平台深度评测:若依、芋道、Jeesite、JeecgBoot四剑客全解析
  • 计算机软件著作权(软著)全解析:价值、流程与应用场景
  • springboot图书馆座位预约微信小程序系统设计实现
  • springboot图书捐赠管理系统设计开发实现
  • 测试执行引擎核心模块设计解析
  • 多环境适配测试架构设计:原则与优化策略
  • 配置中心在测试框架中的应用:提升测试效率的关键策略
  • 行为驱动开发(BDD)框架集成指南
  • 微服务架构下的 UI 测试策略