多存儲文件列表神器Alist:輕松管理你的云端資源
Alist - 多存儲文件列表程序
功能特性
- 多存儲支持:集成了超過70種存儲服務(wù),包括阿里云盤、115網(wǎng)盤、百度網(wǎng)盤、騰訊云、Google Drive、OneDrive等
- 統(tǒng)一管理:將多個存儲服務(wù)聚合在單一界面中,實現(xiàn)統(tǒng)一文件管理
- WebDAV支持:提供WebDAV協(xié)議支持,兼容各種客戶端
- 快速部署:支持Docker快速部署,提供多種安裝方式
- 開源免費:基于MIT協(xié)議開源,完全免費使用
- 跨平臺:支持Windows、Linux、macOS等多個平臺
- 現(xiàn)代化界面:基于Solidjs構(gòu)建的現(xiàn)代化用戶界面
安裝指南
環(huán)境要求
- Go 1.20+
- Node.js
- GCC
- Git
從源碼安裝
- 克隆項目代碼:
git clone https://github.com/alist-org/alist.git
git clone --recurse-submodules https://github.com/alist-org/alist-web.git
- 切換到主分支:
git checkout main
- 啟動后端服務(wù):
go run main.go
- 啟動前端服務(wù):
pnpm dev
使用Docker安裝
docker pull xhofe/alist
docker run -d --restart=always -v /etc/alist:/opt/alist/data -p 5244:5244 -e PUID=0 -e PGID=0 -e UMASK=022 --name="alist" xhofe/alist:latest
二進(jìn)制文件安裝
從GitHub Releases頁面下載對應(yīng)平臺的二進(jìn)制文件,解壓后直接運行。
使用說明
基本命令
啟動服務(wù)器:
./alist server
查看版本信息:
./alist version
管理管理員賬戶:
# 顯示管理員信息
./alist admin
# 重置管理員密碼為隨機字符串
./alist admin random
# 設(shè)置管理員密碼
./alist admin set NEW_PASSWORD
# 顯示管理員token
./alist admin token
服務(wù)管理
后臺啟動服務(wù):
./alist start
停止服務(wù):
./alist stop
重啟服務(wù):
./alist restart
強制停止服務(wù):
./alist kill
存儲管理
列出所有存儲:
./alist storage list
禁用存儲:
./alist storage disable <掛載路徑>
核心代碼
主程序入口
package main
import "github.com/alist-org/alist/v3/cmd"
func main() {
cmd.Execute()
}
服務(wù)器啟動核心代碼
// ServerCmd represents the server command
var ServerCmd = &cobra.Command{
Use: "server",
Short: "Start the server at the specified address",
Long: `Start the server at the specified address
the address is defined in config file`,
Run: func(cmd *cobra.Command, args []string) {
Init()
if conf.Conf.DelayedStart != 0 {
utils.Log.Infof("delayed start for %d seconds", conf.Conf.DelayedStart)
time.Sleep(time.Duration(conf.Conf.DelayedStart) * time.Second)
}
bootstrap.InitOfflineDownloadTools()
bootstrap.LoadStorages()
bootstrap.InitTaskManager()
if !flags.Debug && !flags.Dev {
gin.SetMode(gin.ReleaseMode)
}
r := gin.New()
r.Use(gin.LoggerWithWriter(log.StandardLogger().Out), gin.RecoveryWithWriter(log.StandardLogger().Out))
server.Init(r)
// ... 服務(wù)器初始化代碼
},
}
存儲驅(qū)動接口
type Driver interface {
Config() Config
GetAddition() Additional
Init(ctx context.Context) error
Drop(ctx context.Context) error
List(ctx context.Context, dir Obj, args ListArgs) ([]Obj, error)
Link(ctx context.Context, file Obj, args LinkArgs) (*Link, error)
// ... 其他接口方法
}
阿里云盤驅(qū)動示例
type AliDrive struct {
model.Storage
Addition
AccessToken string
cron *cron.Cron
DriveId string
UserID string
}
func (d *AliDrive) List(ctx context.Context, dir model.Obj, args model.ListArgs) ([]model.Obj, error) {
files, err := d.getFiles(dir.GetID())
if err != nil {
return nil, err
}
return utils.SliceConvert(files, func(src File) (model.Obj, error) {
return &model.ObjThumb{
Object: model.Object{
ID: src.FileId,
Name: src.Name,
Size: src.Size,
Modified: src.UpdatedAt,
IsFolder: src.Type == "folder",
},
Thumbnail: model.Thumbnail{Thumbnail: src.Thumbnail},
}, nil
})
}
Alist通過模塊化的驅(qū)動設(shè)計,使得添加新的存儲服務(wù)變得簡單高效。每個存儲驅(qū)動都實現(xiàn)了統(tǒng)一的接口,保證了系統(tǒng)的一致性和可擴展性。
更多精彩內(nèi)容 請關(guān)注我的個人公眾號 公眾號(辦公AI智能小助手)
對網(wǎng)絡(luò)安全、黑客技術(shù)感興趣的朋友可以關(guān)注我的安全公眾號(網(wǎng)絡(luò)安全技術(shù)點滴分享)
公眾號二維碼

公眾號二維碼


浙公網(wǎng)安備 33010602011771號