装一套对象存储,教程往往一上来就是十几行的 docker run:挂卷、设环境变量、开端口,装完还得自己琢磨凭证和 TLS 的事。如果只是想给备份、图床或者网盘找个存储后端,可以先走一条更省事的路:RustFS 已经上架了 1Panel 的应用商店,安装、升级、日志查看都能在面板里完成。RustFS 是一个开源的分布式对象存储,100% 兼容 S3 协议,采用 Apache 2.0 协议。
先确认这三样东西在手
一台能跑 Docker 的 Linux 服务器(CentOS、Ubuntu、Debian 这些主流发行版都行;内存 1 GB 起步,这是商店条目标注的安装门槛);一个装好的 1Panel,它是飞致云出品的开源 Linux 服务器运维管理面板,用 Web 界面管网站、数据库、容器这些活;一个想绑的域名,不挂 HTTPS 可以先没有。
没装 1Panel 的话,先跑下面这一行装好面板,后续步骤都在 Web 界面里操作,这也是全文唯一要敲的 shell:
bash-c"$(curl-sSLhttps://resource.fit2cloud.com/1panel/package/v2/quick_start.sh)"脚本跑完会输出面板访问地址和初始账号,浏览器进去就行。RustFS 在商店里的条目支持 amd64 和 arm64 两种架构,常见云服务器和 ARM 小主机都能装。
应用商店里搜 RustFS
进面板后点左侧菜单的“应用商店”,右上角搜索框输入 RustFS,点应用卡片进详情页,点“安装”。安装弹窗里有几组参数要过一遍:
- 名称:默认 rustfs,不用动。
- API 端口 / Web 端口:分别映射容器里的 9000 和 9001。9000 是 S3 API(S3 是对象存储的通用协议,兼容它意味着现成的备份软件、S3 客户端、各类 SDK 都能直接接),9001 是 Web 管理控制台。宿主机上这两个口被占的话,在弹窗里改掉。
- 用户 / 密码:登录控制台、应用程序接 S3 API 用的那对凭证。这里有个值得知道的默认值:用户名默认就是 rustfsadmin,模板没给它做随机生成,务必改掉;密码一栏面板会自动生成随机值,存好或改成自己顺手的都行。RustFS 官方容器文档警告过任一凭证都别用众所周知的 rustfsadmin,商店模板的用户名默认值恰好就是它。
- 启用控制台:模板默认开启。只把 RustFS 当存储后端、不需要 Web 管理界面的,可以选关闭,9001 控制台就不存在了。
- 端口外部访问:这是 1Panel 安装弹窗的通用开关(控制面板防火墙放行),属于面板能力而非 RustFS 模板自带。想让局域网直接访问 9001 控制台就打开,但能不开就别为公网开:9000、9001 裸露在公网会被扫描器持续盯着,控制台登录页尤其招人。对外服务统一走后面说的反向代理,从 443 的域名进,原始端口只留在内网,确有直连需求再用防火墙或安全组按来源 IP 收窄。
弹窗里没有"存储路径"这一项:数据挂载在模板 compose 里写死为./data:/data,落在 1Panel 该应用目录下的 data 子目录。备份和迁移时记住这一点,数据在这儿,不在容器里。
确认之后面板自己拉镜像、起容器,已安装列表里状态变成"已启动"就算装完。整个过程的参数都收在面板里,背后就是一个普通容器,后面排查问题时按容器那一套来就行。
装完先别急着用:凭证和 HTTPS
如果安装时没填自定义凭证,先停下来处理这件事。官方文档给的改法是:停掉容器,带上RUSTFS_ACCESS_KEY和RUSTFS_SECRET_KEY两个环境变量重建,数据卷不受影响。在 1Panel 里对应“已安装”列表中修改应用参数,改完应用会重建容器,数据目录不动(不同版本的入口名称可能有差异,以面板界面为准)。强密钥可以拿openssl rand -base64 24生成,这也是官方文档给的示例。
接下来是 HTTPS。9001 控制台如果裸着走 HTTP,登录密码在公网上等于明文传。1Panel 的路子是建一个反向代理网站(把外部域名请求转发到内部服务)指向本机控制台端口,再给这个网站套证书:进“网站”创建一个反向代理类型的网站,填域名,代理地址指到 127.0.0.1:9001。然后在“网站 → 证书”里申请证书,先创建 ACME 账户(ACME 是 Let’s Encrypt 这类机构自动发证书用的协议,相当于证书机构的会员账号),验证方式选 HTTP 模式最省事,前提是 80 端口能从公网访问,记得勾上自动续签,证书 90 天到期后面板会自己续。证书签下来后,回到网站设置里启用 HTTPS,HTTP 选项选“自动跳转到 HTTPS”。
9000 那个 S3 API 口要不要套 HTTPS 看用途。给外部应用(备份软件、S3 客户端)访问的话,建议也走域名反代,或者用 RustFS 自己的 TLS 方案,挂载证书目录并加RUSTFS_TLS_PATH环境变量。两条路选一条,客户端那边记得信任对应的 CA。
反代这条路 TLS 终结在代理层,RustFS 容器内部继续跑 HTTP 就行。暴露面顺手收窄一下:只走反代的话,安装弹窗里的"端口外部访问"可以不开,9000/9001 就不直接对公网开放,流量统一从 443 的反代网站进。另外别把宿主机部署里"服务地址绑 127.0.0.1"那套写法照搬进容器:RUSTFS_ADDRESS 绑的是容器自己的回环,绑死之后反代和端口映射都够不着它,服务直接失联,容器里靠的就是"端口外部访问"开关和安全组来控暴露面。
验证它真能存东西
浏览器开http://服务器IP:9001,用安装时填的凭证登录控制台。进去先建一个存储桶,再在左侧“访问密钥”里加一把密钥:填过期时间、名称、描述,提交后复制保存,这把密钥给应用程序用,别把管理员凭证到处发。
命令行验证也快,官方文档给的两条:
dockerps--filtername=rustfscurl--failhttp://localhost:9000/health容器状态正常、健康检查端点有响应,S3 API 就在http://服务器IP:9000上等着了。想再进一步,拿 AWS CLI 或任何 S3 SDK 把 endpoint 指过来,试一次上传下载,链路就算全通了。
应用商店安装和 docker run,差在哪儿
两条路最终跑的是同一个官方镜像,差别在控制粒度。
docker run 这条路,按官方文档是这么写:
dockerrun-d\--namerustfs\--restartunless-stopped\-p9000:9000\-p9001:9001\-vrustfs-data:/data\-eRUSTFS_ACCESS_KEY="<your-access-key>"\-eRUSTFS_SECRET_KEY="<your-secret-key>"\-eRUSTFS_ADDRESS=":9000"\-eRUSTFS_CONSOLE_ADDRESS=":9001"\-eRUSTFS_CONSOLE_ENABLE=true\-eRUSTFS_OBS_LOGGER_LEVEL=error\-eRUSTFS_OBS_LOG_DIRECTORY="/var/log/rustfs/"\rustfs/rustfs:latest\/data适合要精确控制每个参数、命令要进配置仓库留档的人。代价是挂载权限、TLS、日志目录全要自己料理,比如用主机目录挂载时,容器以 10001:10001 的非 root 用户跑,目录属主不对会直接 Permission denied。
1Panel 这条路省掉的正是这些细碎活:参数在弹窗里填,升级在商店里点,日志和容器状态在面板里看,证书和反代是现成的。代价也得说清楚。其一,版本节奏。商店模板把镜像锁在固定 tag 上,当前条目装的就是 rustfs/rustfs:1.0.3,不会上游一发版就跟着动;但版本往前走的前提是 1Panel 侧的应用维护者更新了模板,所以商店版本可能滞后于上游。docker run 那条路按官方文档写 latest,拉镜像时拿到的就是当时最新版。哪条路都得自己盯版本:商店这边升级前看看条目更新到了哪个 tag,自管这边升到哪个 tag、什么时候升全由自己定。顺带一个小差异:模板的重启策略是restart: always,官方 docker run 示例用的是--restart unless-stopped,差在"服务器重启后容器要不要跟着起来",影响不大,配置留档时别混着抄。其二,商店模板是单实例部署,RustFS 的多节点要走--network host加RUSTFS_VOLUMES那套写法(官方文档有多节点专章),生产集群别指望面板模板一键拉起,这部分还是按官方文档来。
常见卡点与收尾单子
容器反复重启、日志里 Permission denied,九成是挂载目录属主问题,官方镜像以 UID/GID 10001:10001 运行,专用数据目录记得chown -R 10001:10001。控制台打不开,先看安装时“端口外部访问”开没开,再检查云服务商安全组和 1Panel 防火墙有没有放行 9001。端口冲突尽量在安装弹窗里一次改掉,别装完再折腾。凭证忘了的话环境变量里存着,容器详情里能看到;要改就按前面说的参数修改流程重建,数据不受影响。
收尾把这几件事过一遍:
- 安装弹窗里的用户名默认值是 rustfsadmin,确认已经改掉;密码若用了面板自动生成的随机值,先复制保存。
- 控制台套上 HTTPS:反向代理网站加 Let’s Encrypt 证书,勾自动续签。
- 应用程序接入前,在控制台单独建访问密钥,别共用管理员凭证。
docker ps --filter name=rustfs和curl http://localhost:9000/health各跑一遍确认。- 计划上生产多节点的话,先读官方的预安装检查清单。
RustFS 容器部署文档、访问密钥管理和 GitHub 仓库都在官方站点,1Panel 侧的证书申请文档也值得收藏,遇到面板版本差异时以官方文档为准。