alist
🗂️A file list/WebDAV program that supports multiple storages, powered by Gin and Solidjs. / 一个支持多存储的文件列表/WebDAV程序,使用 Gin 和 Solidjs。
Top Related Projects
📂 Web File Browser
☁️ Nextcloud server, a safe home for all your data
:cloud: ownCloud web server core (Files, DAV, etc.)
Open Source Continuous File Synchronization
Quick Overview
AlistGo/alist is an open-source file list program that supports multiple storage providers. It offers a web-based interface for managing and accessing files from various cloud storage services, local storage, and other sources. Alist aims to provide a unified solution for file management across different platforms.
Pros
- Supports a wide range of storage providers, including local storage, cloud services, and FTP
- User-friendly web interface with features like file preview, sharing, and search
- Customizable appearance and layout options
- Active development and community support
Cons
- May require some technical knowledge for initial setup and configuration
- Performance can vary depending on the number and size of files being managed
- Some advanced features may require additional setup or plugins
Getting Started
To get started with AlistGo/alist:
- Download the latest release from the GitHub repository.
- Extract the files and run the executable.
- Access the web interface at
http://localhost:5244
. - Log in with the default credentials (username: admin, password: displayed in the console).
- Add your storage providers in the admin panel.
- Customize settings and appearance as needed.
For more detailed instructions, refer to the official documentation on the project's GitHub page.
Competitor Comparisons
📂 Web File Browser
Pros of filebrowser
- Lightweight and simple to set up
- Built-in user management and authentication
- Supports multiple storage backends (local, S3, etc.)
Cons of filebrowser
- Limited cloud storage integration compared to Alist
- Fewer advanced features for media playback and file preview
- Less active development and community support
Code comparison
filebrowser:
func handleDownload(w http.ResponseWriter, r *http.Request, file *files.FileInfo) {
fd, err := filesystem.Open(file.Path)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
defer fd.Close()
// ... (download handling)
}
Alist:
func (d *Driver) Link(ctx context.Context, file model.Obj, args model.LinkArgs) (*model.Link, error) {
data := base.Json.Get("data")
downloadUrl := data.Get("download_url").ToString()
return &model.Link{URL: downloadUrl}, nil
}
Summary
filebrowser is a lightweight, self-hosted file browser with built-in user management, suitable for simple file hosting needs. Alist offers more extensive cloud storage integration and advanced features for media handling. filebrowser's code focuses on direct file operations, while Alist emphasizes cloud storage API interactions. Choose filebrowser for simplicity and local file management, or Alist for broader cloud storage support and media capabilities.
☁️ Nextcloud server, a safe home for all your data
Pros of Nextcloud
- More comprehensive feature set, including calendar, contacts, and collaboration tools
- Larger community and ecosystem with extensive app marketplace
- Self-hosted solution with greater control over data privacy and security
Cons of Nextcloud
- Higher resource requirements and potentially more complex setup
- Steeper learning curve for administrators and end-users
- May be overkill for users primarily seeking file storage and sharing
Code Comparison
Nextcloud (PHP):
<?php
namespace OCA\Files\Controller;
use OCP\AppFramework\Controller;
use OCP\IRequest;
class ViewController extends Controller {
public function __construct($appName, IRequest $request) {
parent::__construct($appName, $request);
}
}
Alist (Go):
package server
import (
"github.com/gin-gonic/gin"
)
func NewRouter() *gin.Engine {
r := gin.Default()
r.Use(cors.Default())
return r
}
While both projects serve as file storage and sharing solutions, Nextcloud offers a more comprehensive platform with additional features beyond file management. Alist, on the other hand, focuses primarily on file storage and sharing with a simpler architecture. Nextcloud uses PHP and follows a more traditional MVC structure, while Alist is built with Go and utilizes the Gin web framework for routing.
:cloud: ownCloud web server core (Files, DAV, etc.)
Pros of ownCloud
- More mature and established project with a larger community and ecosystem
- Offers a wider range of features, including file sharing, collaboration tools, and calendar sync
- Provides enterprise-grade security features and compliance options
Cons of ownCloud
- Heavier resource requirements and potentially slower performance
- More complex setup and configuration process
- Steeper learning curve for new users and administrators
Code Comparison
ownCloud (PHP):
public function getStorageInfo($dir = '') {
$storageInfo = $this->storage->getStorageInfo($dir);
$this->updateStorageStatistics($storageInfo);
return $storageInfo;
}
AlistGo (Go):
func (d *Driver) GetStorageInfo() (types.StorageInfo, error) {
return types.StorageInfo{
TotalSize: 0,
UsedSize: 0,
}, nil
}
ownCloud's code snippet shows a more complex storage info retrieval process, while AlistGo's implementation is simpler but may lack some advanced features.
Both projects aim to provide file storage and sharing solutions, but ownCloud offers a more comprehensive suite of features suitable for enterprise environments. AlistGo, on the other hand, focuses on simplicity and lightweight operation, making it more suitable for personal use or smaller deployments.
Open Source Continuous File Synchronization
Pros of Syncthing
- Decentralized and peer-to-peer file synchronization, offering enhanced privacy and security
- Cross-platform support with clients for various operating systems and devices
- Open-source with a large, active community and regular updates
Cons of Syncthing
- Steeper learning curve for initial setup and configuration
- Requires running the Syncthing client on all devices for synchronization
- Limited web interface functionality compared to Alist
Code Comparison
Syncthing (Go):
func (m *Model) ClusterConfig(deviceID protocol.DeviceID) protocol.ClusterConfig {
cm := protocol.ClusterConfig{
Folders: make([]protocol.Folder, 0, len(m.cfg.Folders())),
Devices: make([]protocol.Device, 0, 1),
Options: make([]protocol.Option, 0, 1),
}
// ... (additional code)
}
Alist (Go):
func (d *Driver) Link(ctx context.Context, file model.Obj, args model.LinkArgs) (*model.Link, error) {
path := getAbsPath(file.GetPath())
url := fmt.Sprintf("%s/api/v3/fs/get?path=%s", d.conf.Address, url.PathEscape(path))
res, err := d.request(url, http.MethodGet, nil, nil)
if err != nil {
return nil, err
}
// ... (additional code)
}
Both projects use Go, but Syncthing focuses on peer-to-peer synchronization, while Alist emphasizes file management and sharing through a web interface.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
English | ä¸æ| æ¥æ¬èª | Contributing | CODE_OF_CONDUCT
Features
- Multiple storages
- Local storage
- Aliyundrive
- OneDrive / Sharepoint (global, cn,de,us)
- 189cloud (Personal, Family)
- GoogleDrive
- 123pan
- FTP / SFTP
- PikPak
- S3
- Seafile
- UPYUN Storage Service
- WebDav(Support OneDrive/SharePoint without API)
- Teambition(China,International)
- Mediatrack
- 139yun (Personal, Family, Group)
- YandexDisk
- BaiduNetdisk
- Terabox
- UC
- Quark
- Thunder
- Lanzou
- ILanzou
- Aliyundrive share
- Google photo
- Mega.nz
- Baidu photo
- SMB
- 115
- Cloudreve
- Dropbox
- FeijiPan
- dogecloud
- Easy to deploy and out-of-the-box
- File preview (PDF, markdown, code, plain text, ...)
- Image preview in gallery mode
- Video and audio preview, support lyrics and subtitles
- Office documents preview (docx, pptx, xlsx, ...)
-
README.md
preview rendering - File permalink copy and direct file download
- Dark mode
- I18n
- Protected routes (password protection and authentication)
- WebDav (see https://alist.nn.ci/guide/webdav.html for details)
- Docker Deploy
- Cloudflare Workers proxy
- File/Folder package download
- Web upload(Can allow visitors to upload), delete, mkdir, rename, move and copy
- Offline download
- Copy files between two storage
- Multi-thread downloading acceleration for single-thread download/stream
Document
Demo
Discussion
Please go to our discussion forum for general questions, issues are for bug reports and feature requests only.
Sponsor
AList is an open-source software, if you happen to like this project and want me to keep going, please consider sponsoring me or providing a single donation! Thanks for all the love and support: https://alist.nn.ci/guide/sponsor.html
Special sponsors
- VidHub - An elegant cloud video player within the Apple ecosystem. Support for iPhone, iPad, Mac, and Apple TV.
- äºæ´²äº - é«é²æå¡å¨|æå¡å¨ç§ç¨|ç¦å·é«é²|广ä¸çµä¿¡|é¦æ¸¯æå¡å¨|ç¾å½æå¡å¨|æµ·å¤æå¡å¨ - å½å é è°±çä¼ä¸çº§äºè®¡ç®æå¡æä¾å (sponsored Chinese API server)
- æ¾èµæº - é¿éäºçèµæºæç´¢å¼æ
Contributors
Thanks goes to these wonderful people:
License
The AList
is open-source software licensed under the AGPL-3.0 license.
Disclaimer
- This program is a free and open source project. It is designed to share files on the network disk, which is convenient for downloading and learning Golang. Please abide by relevant laws and regulations when using it, and do not abuse it;
- This program is implemented by calling the official sdk/interface, without destroying the official interface behavior;
- This program only does 302 redirect/traffic forwarding, and does not intercept, store, or tamper with any user data;
- Before using this program, you should understand and bear the corresponding risks, including but not limited to account ban, download speed limit, etc., which is none of this program's business;
- If there is any infringement, please contact me by email, and it will be dealt with in time.
@GitHub · @TelegramGroup · @Discord
Top Related Projects
📂 Web File Browser
☁️ Nextcloud server, a safe home for all your data
:cloud: ownCloud web server core (Files, DAV, etc.)
Open Source Continuous File Synchronization
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot