A modern, high-performance file list program built with Rust + React
一个现代化、高性能的文件列表程序,使用 Rust + React 构建
- Local Storage - Local file system
- OneDrive - Microsoft OneDrive (Personal & Business)
- OneDrive App - Microsoft OneDrive App Mode (client_credentials OAuth, supports streaming upload)
- 189 Cloud - China Telecom Cloud (Personal & Family)
- 123pan - 123 Cloud Drive (Open API)
- Quark - Quark Cloud Drive
- Lanzou - Lanzou Cloud
- FTP - FTP Protocol
- WebDAV - WebDAV Protocol
- SMB/CIFS - Windows Network Share (Native Support)
- S3 - Amazon S3 & Compatible Services (MinIO, Cloudflare R2, etc.)
- PikPak - PikPak Cloud Drive
- Yun139 - China Mobile Cloud (Personal & Family)
- SFTP - SSH File Transfer Protocol
- 115 Cloud - 115 Cloud Drive
- 123pan Share - 123 Cloud Drive Share Links (Read-only)
- 115 Share - 115 Cloud Drive Share Links (Read-only)
- High Performance & Low Memory - Rust backend with async I/O, low memory footprint, handles thousands of concurrent connections
- Modern UI - Clean React frontend with TailwindCSS, supports dark mode
- Custom Themes - Customizable page backgrounds and glassmorphism styles
- File Preview - PDF, Markdown, code, images, video, audio
- Image Preview - Supports HEIC and almost all RAW formats
- Encrypted Audio - Supports NCM and other encrypted audio formats (manual enable required)
- Office Preview - DOCX, PPTX, XLSX local parsing, no public domain required, no Microsoft/Google online services
- Archive Support - Browse ZIP, 7Z, TAR, GZ archives without extraction
- Full-text Search - Built-in search engine with Chinese word segmentation (Jieba), lightweight index database
- WebDAV Server - Access your files via WebDAV protocol
- Direct Links - Generate permanent direct download links with access count limits
- Sharing - Share files/folders with password protection, expiration and access count limits
- User System - Multi-user support with group-based permissions
- Self-Registration - Users can self-register via phone/email
- Two-Factor Auth - TOTP-based 2FA support
- Group Management - Organize users into groups with different permissions
- Path Protection - Password protect specific paths
- Hide Rules - Hide files/folders based on patterns
- Login Security - Captcha on login retry, rate limiting, IP blocking
- Usage Statistics - Track each user's traffic and access count
- Task Manager - Clean background task queue for copy/move operations
- Load Balancing - Multi-node load balancing with GeoIP routing
- Notification - Email & SMS notifications
- Backup/Restore - Export and import configuration
- Streaming - Range request support for video streaming
- Scheduled Tasks - Coming soon
- File Collection - File collection form feature, coming soon
curl -fsSL https://raw.githubusercontent.com/chuyao233/yaolist/main/scripts/install.sh | sudo bash# Download the latest release
wget https://github.com/chuyao233/yaolist/releases/latest/download/yaolist-linux-amd64
# Make it executable
chmod +x yaolist-linux-amd64
# Run
./yaolist-linux-amd64# Clone the repository
git clone https://github.com/chuyao233/yaolist.git
cd yaolist
# make public dir
mkdir public
# copy static files to public , https://github.com/ChuYao233/YaoList-Frontend/releases
# Build (requires Rust 1.70+)
cargo build --release
# Run
./target/release/yaolist-backendConfiguration file: config.json
{
"server": {
"host": "0.0.0.0",
"port": 8180
},
"database": {
"data_dir": "data",
"db_file": "yaolist.db"
},
"search": {
"db_dir": "search_db",
"enabled": true
}
}- Driver Development Guide
- API Documentation (Coming soon)
- Language: Rust
- Framework: Axum
- Database: SQLite (SQLx)
- Async Runtime: Tokio
- Framework: React 18
- UI Library: TailwindCSS + shadcn/ui
- State Management: React Query
- Icons: Lucide React
This project is open-source software licensed under the AGPL-3.0 license.
⚠️ Documentation is still under construction. If you're interested in helping, contributions are very welcome!
Contributions are welcome! Please feel free to submit a Pull Request.
We especially need help with:
- 📖 Writing documentation
- 🌐 Translating to other languages
- 🐛 Bug reports and fixes
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
- GitHub: @chuyao233
- Some code logic in this project is referenced from OpenList