diff --git a/.github/README.md b/.github/README.md
index dba6dc73d..77f5144c0 100644
--- a/.github/README.md
+++ b/.github/README.md
@@ -147,6 +147,7 @@
| 🟢 |
| Redis | https://redis.io/ | 从世界上最快的内存数据库创建者那里获取该数据库 | |
| 🟢 |
| RssHub | https://rsshub.app/ | 从任何内容生成 RSS/Atom/JSON 订阅源 | |
| 🟢 |
| RustDesk API | https://github.com/lejianwen/rustdesk-api/ | RustDesk 的 API 管理平台 | RustDesk衍生 |
+| 🟢 |
| RustFS | https://rustfs.com/ | 分布式存储系统 | |
| 🟢 |
| Sentinel | https://sentinelguard.io/ | 面向分布式、多语言异构化服务架构的流量治理组件 | |
| 🟢 |
| Shiori | https://github.com/go-shiori/shiori | 简单书签管理器,旨在作为 Pocket 的简单克隆 | |
| 🟢 |
| 思源笔记 | https://b3log.org/siyuan/ | 【思源笔记】一款隐私优先、自托管、完全开源的个人知识管理软件 | |
diff --git a/README.md b/README.md
index abef74c76..17504ecf7 100644
--- a/README.md
+++ b/README.md
@@ -142,6 +142,7 @@
| 🟢 |
| Redis | https://redis.io/ | 从世界上最快的内存数据库创建者那里获取该数据库 | |
| 🟢 |
| RssHub | https://rsshub.app/ | 从任何内容生成 RSS/Atom/JSON 订阅源 | |
| 🟢 |
| RustDesk API | https://github.com/lejianwen/rustdesk-api/ | RustDesk 的 API 管理平台 | RustDesk衍生 |
+| 🟢 |
| RustFS | https://rustfs.com/ | 分布式存储系统 | |
| 🟢 |
| Sentinel | https://sentinelguard.io/ | 面向分布式、多语言异构化服务架构的流量治理组件 | |
| 🟢 |
| Shiori | https://github.com/go-shiori/shiori | 简单书签管理器,旨在作为 Pocket 的简单克隆 | |
| 🟢 |
| 思源笔记 | https://b3log.org/siyuan/ | 【思源笔记】一款隐私优先、自托管、完全开源的个人知识管理软件 | |
diff --git a/apps/rustfs/README.md b/apps/rustfs/README.md
new file mode 100644
index 000000000..7ea296a27
--- /dev/null
+++ b/apps/rustfs/README.md
@@ -0,0 +1,37 @@
+# RustFS
+
+Rust驱动的S3兼容分布式存储系统
+
+
+
+
+
+## 简介
+
+RustFS 用热门安全的 Rust 语言开发,兼容 S3 协议。适用于 AI/ML 及海量数据存储、大数据、互联网、工业和保密存储等全部场景。近乎免费使用。遵循
+Apache 2 协议,支持国产保密设备和系统。
+
+## 特性
+
+### 跨云支持
+RustFS 利用分布式架构和对象存储功能,为AI和高级分析工作负载提供卓越性能,支持从TB到EB级别的数据扩展。
+
+### 安全可靠
+RustFS 与 RustyVault 集成,提供高性能的对象存储安全加密,支持多种加密模式,确保数据安全性和透明度。
+
+### 版本控制
+对象存储版本控制功能,为每个对象版本分配唯一标识符,用户可通过API或管理界面访问和管理历史版本。
+
+### 无限扩容
+RustFS系统自动平衡节点负载,确保数据均匀分布,支持根据存储需求动态添加或移除资源,实现无限扩容。
+
+### 对象只读
+支持对象锁定模式,实现WORM(写一次读多次)功能,防止数据在指定时间范围内被修改或删除,确保数据完整性。
+
+### 主动复制
+对象写入时自动创建多个副本并分布到不同节点,支持同步和异步复制模式,提供高可用性和灾难恢复能力。
+
+
+---
+
+
diff --git a/apps/rustfs/data.yml b/apps/rustfs/data.yml
new file mode 100644
index 000000000..55bef0615
--- /dev/null
+++ b/apps/rustfs/data.yml
@@ -0,0 +1,15 @@
+additionalProperties:
+ key: rustfs
+ name: RustFS
+ tags:
+ - WebSite
+ - Storage
+ - Local
+ shortDescZh: 分布式存储系统
+ shortDescEn: Distributed Storage System
+ type: website
+ crossVersionUpdate: true
+ limit: 0
+ website: https://rustfs.com/
+ github: https://github.com/rustfs/rustfs/
+ document: https://rustfs.com/
diff --git a/apps/rustfs/latest/data.yml b/apps/rustfs/latest/data.yml
new file mode 100644
index 000000000..f21457320
--- /dev/null
+++ b/apps/rustfs/latest/data.yml
@@ -0,0 +1,71 @@
+additionalProperties:
+ formFields:
+ - default: "/home/rustfs"
+ edit: true
+ envKey: RUSTFS_ROOT_PATH
+ labelZh: 数据持久化路径
+ labelEn: Data persistence path
+ required: true
+ type: text
+ - default: 9000
+ edit: true
+ envKey: PANEL_APP_PORT_HTTP
+ labelZh: WebUI 端口
+ labelEn: WebUI port
+ required: true
+ rule: paramPort
+ type: number
+ - default: "rustfsadmin"
+ edit: true
+ envKey: RUSTFS_ACCESS_KEY
+ labelZh: 管理员账号
+ labelEn: Access Key
+ required: true
+ type: text
+ - default: "rustfsadmin"
+ edit: true
+ envKey: RUSTFS_SECRET_KEY
+ labelZh: 管理员密码
+ labelEn: Secret Key
+ required: true
+ type: text
+ - default: "127.0.0.1:9000"
+ edit: true
+ envKey: RUSTFS_SERVER_DOMAINS
+ labelZh: 域名
+ labelEn: Domains
+ required: false
+ type: text
+ - default: "true"
+ edit: true
+ envKey: RUSTFS_CONSOLE_ENABLE
+ labelZh: 启用控制台
+ labelEn: Enable Console
+ required: true
+ type: select
+ values:
+ - label: 启用
+ value: "true"
+ - label: 禁用
+ value: "false"
+ - default: ""
+ edit: true
+ envKey: CUSTOM_MOUNT_DIRECTORY_1
+ labelEn: Custom mount directory 1
+ labelZh: 自定义挂载目录 1
+ required: false
+ type: text
+ - default: ""
+ edit: true
+ envKey: CUSTOM_MOUNT_DIRECTORY_2
+ labelEn: Custom mount directory 2
+ labelZh: 自定义挂载目录 2
+ required: false
+ type: text
+ - default: ""
+ edit: true
+ envKey: CUSTOM_MOUNT_DIRECTORY_3
+ labelEn: Custom mount directory 3
+ labelZh: 自定义挂载目录 3
+ required: false
+ type: text
diff --git a/apps/rustfs/latest/docker-compose.yml b/apps/rustfs/latest/docker-compose.yml
new file mode 100644
index 000000000..bf4915ddd
--- /dev/null
+++ b/apps/rustfs/latest/docker-compose.yml
@@ -0,0 +1,26 @@
+networks:
+ 1panel-network:
+ external: true
+
+services:
+ rustfs:
+ image: rustfs/rustfs:latest
+ container_name: ${CONTAINER_NAME}
+ labels:
+ createdBy: "Apps"
+ restart: always
+ networks:
+ - 1panel-network
+ ports:
+ - ${PANEL_APP_PORT_HTTP}:9000
+ env_file:
+ - ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env}
+ - ${ENV_FILE:-/etc/1panel/envs/default.env}
+ volumes:
+ - ${RUSTFS_ROOT_PATH}/data:/etc/rustfs
+ - ${CUSTOM_MOUNT_DIRECTORY_1:-./default_mount_1}:${CUSTOM_MOUNT_DIRECTORY_1:-/default_mount_1}
+ - ${CUSTOM_MOUNT_DIRECTORY_2:-./default_mount_2}:${CUSTOM_MOUNT_DIRECTORY_2:-/default_mount_2}
+ - ${CUSTOM_MOUNT_DIRECTORY_3:-./default_mount_3}:${CUSTOM_MOUNT_DIRECTORY_3:-/default_mount_3}
+ environment:
+ - TZ=Asia/Shanghai
+ - RUSTFS_ADDRESS=:9000
diff --git a/apps/rustfs/latest/envs/default.env b/apps/rustfs/latest/envs/default.env
new file mode 100644
index 000000000..cd05f46e6
--- /dev/null
+++ b/apps/rustfs/latest/envs/default.env
@@ -0,0 +1,2 @@
+# copyright© 2024 XinJiang Ms Studio
+ENV_FILE=.env
diff --git a/apps/rustfs/latest/envs/global.env b/apps/rustfs/latest/envs/global.env
new file mode 100644
index 000000000..e10989fe4
--- /dev/null
+++ b/apps/rustfs/latest/envs/global.env
@@ -0,0 +1,2 @@
+# copyright© 2024 XinJiang Ms Studio
+TZ=Asia/Shanghai
diff --git a/apps/rustfs/latest/scripts/init.sh b/apps/rustfs/latest/scripts/init.sh
new file mode 100644
index 000000000..07fb8c3fe
--- /dev/null
+++ b/apps/rustfs/latest/scripts/init.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ # setup-1 add default values
+ CURRENT_DIR=$(pwd)
+ sed -i '/^ENV_FILE=/d' .env
+ sed -i '/^GLOBAL_ENV_FILE=/d' .env
+ echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env
+ echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/rustfs/latest/scripts/uninstall.sh b/apps/rustfs/latest/scripts/uninstall.sh
new file mode 100644
index 000000000..c86c4fbca
--- /dev/null
+++ b/apps/rustfs/latest/scripts/uninstall.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/rustfs/latest/scripts/upgrade.sh b/apps/rustfs/latest/scripts/upgrade.sh
new file mode 100644
index 000000000..07fb8c3fe
--- /dev/null
+++ b/apps/rustfs/latest/scripts/upgrade.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ # setup-1 add default values
+ CURRENT_DIR=$(pwd)
+ sed -i '/^ENV_FILE=/d' .env
+ sed -i '/^GLOBAL_ENV_FILE=/d' .env
+ echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env
+ echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/rustfs/logo.png b/apps/rustfs/logo.png
new file mode 100644
index 000000000..68d8d9390
Binary files /dev/null and b/apps/rustfs/logo.png differ
diff --git a/apps/rustfs/logo.svg b/apps/rustfs/logo.svg
new file mode 100644
index 000000000..93ca3c557
--- /dev/null
+++ b/apps/rustfs/logo.svg
@@ -0,0 +1,15 @@
+