Alist 时代落幕?别担心,我们有更开放的 Openlist!

前言:一个时代的结束,一个新时代的开启

最近,文件列表程序领域的明星项目 Alist 被某公司收购的消息在开发者和用户社区中引起了轩然大波。Alist 以其强大的功能、对众多网盘的广泛支持以及简洁的界面,赢得了大量用户的喜爱。然而,商业收购往往伴随着开源精神的动摇和未来发展方向的不确定性。

许多依赖 Alist 的用户开始感到担忧:项目是否会闭源?未来的更新是否会转向付费模式?数据隐私能否得到保障?

在这样的背景下,社区的力量开始展现。为了延续 Alist 的开源精神,一个名为 Openlist 的新项目应运而生。它不仅是 Alist 的一个分支或替代品,更代表了一种回归初心、拥抱开放的承诺。这篇博客将带你深入了解 Openlist,并提供一份详尽的部署指南,让你能够轻松地搭建属于自己的、完全可控的云存储管理中心。


什么是 Openlist?它的工作原理是什么?

Openlist 本质上是一个目录文件列表程序。你可以把它想象成一个“云存储聚合器”。

核心原理:Openlist 作为中间层,通过调用各大云存储服务(如 Google Drive, OneDrive, 阿里云盘, S3 对象存储等)的官方 API,获取你的文件和目录信息。然后,它将这些来自不同来源的数据整合成一个统一的、类似网盘的界面,通过 Web 浏览器呈现给你。你甚至可以通过 WebDAV 协议,将这个聚合后的“超级网盘”挂载到你的本地电脑上,像操作本地文件夹一样方便地管理所有云端文件。

它后端采用 Go 语言开发,这保证了其出色的跨平台性能和较低的资源消耗。前端则采用现代化的 React 或 Vue 框架,提供了流畅、美观的用户体验。


为什么选择 Openlist?(优缺点分析)

在选择一个工具前,我们需要全面地了解它。

优点 (Pros)

  1. 完全开源,社区驱动:这是 Openlist 最大的优势。代码完全透明,由社区共同维护,不存在商业公司未来闭源或限制功能的风险。你可以永远相信社区。
  2. 广泛的存储支持:继承自 Alist 的强大基因,Openlist 支持几乎所有主流的云存储服务和存储协议。无论是个人网盘、企业对象存储还是本地硬盘,都可以轻松接入。
  3. 部署极其简单:得益于 Docker 技术,整个部署过程可以在几分钟内完成,对新手非常友好。
  4. 功能丰富:支持在线预览文本、代码、图片、PDF,甚至可以直接在线播放视频和音乐。同时,它还提供了文件(夹)打包下载、离线下载、文件管理等多种实用功能。
  5. 跨平台 & 低功耗:基于 Go 语言构建,可以运行在 Windows, macOS, Linux, 甚至树莓派等 ARM 设备上,且运行时内存和 CPU 占用极低。
  6. 支持 WebDAV:这是它的“杀手级”功能。通过 WebDAV,你可以将所有网盘挂载为本地磁盘,使用任何你喜欢的软件(如 PotPlayer, Infuse, nPlayer)直接播放云端视频,无需下载。

缺点 (Cons)

  1. 相对年轻:作为一个新项目,其稳定性和功能丰富度可能在短期内不及已经成熟的 Alist V3 版本。可能会存在一些未被发现的 Bug。
  2. 社区规模尚小:与 Alist 多年积累的庞大社区相比,Openlist 的社区正在成长中,遇到问题时可能需要更多时间去寻找解决方案。
  3. 配置略有门槛:虽然部署简单,但添加和配置各种网盘账户时,需要用户理解 OAuth 认证、获取 Token 等概念,对纯小白用户有一定挑战。

Openlist 适用场景

  • 个人媒体库:将散落在阿里云盘、夸克网盘、Google Drive 的电影、剧集、音乐文件统一管理,通过 WebDAV 配合播放器,打造家庭影音中心。
  • 文件分享站:快速将服务器本地文件或某个网盘目录以列表形式分享出去,方便他人浏览和下载。
  • 多云备份管理:如果你同时使用多个云服务进行文件备份,Openlist 可以为你提供一个统一的入口来检查和管理这些备份文件。
  • NAS 最佳伴侣:在你的 NAS(如群晖、威联通)上部署 Openlist,不仅可以管理 NAS 本地文件,还能将所有外部云盘统一挂载,让你的 NAS 成为真正的“数据中枢”。

核心部分:手把手教你部署 Openlist (基于 Docker)

我们将使用最简单、最推荐的方式——Docker 和 Docker Compose 来进行部署。这种方式隔离性好,不污染宿主环境,且方便迁移和管理。

前提条件

  • 一台已经安装好 Docker 和 Docker Compose 的主机(Linux / macOS / Windows 均可)。

部署步骤

第一步:创建项目目录和文件

首先,我们需要为 Openlist 创建一个专用的目录,并在其中存放配置文件。

1
2
3
4
5
# 创建一个名为 openlist 的目录并进入
mkdir -p ~/openlist

# 进入该目录
cd ~/openlist

第二步:创建 docker-compose.yml 文件

这是部署的核心。在 ~/openlist 目录下,创建一个名为 docker-compose.yml 的文件。

1
2
# 创建并编辑 docker-compose.yml 文件
nano docker-compose.yml

然后,将以下内容复制并粘贴到文件中:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
version: '3.3'
services:
openlist:
image: xhofe/alist:latest # 注意:目前 Openlist 可能仍在使用原 Alist 的镜像,后续会切换到专用镜像
container_name: openlist
restart: always
volumes:
- './data:/opt/alist/data' # 将容器内的数据目录挂载到当前目录下的 data 文件夹,实现数据持久化
ports:
- '5244:5244' # 将容器的 5244 端口映射到主机的 5244 端口
environment:
- PUID=1000 # 建议修改为你的用户ID
- PGID=1000 # 建议修改为你的用户组ID
- UMASK=022

配置解释

  • image: 指定要使用的 Docker 镜像。在 Openlist 拥有独立镜像前,我们可以暂时使用 Alist 的最新镜像,因为它们同源。
  • container_name: 给你的容器起一个好记的名字。
  • restart: always: 保证容器在宿主机重启或意外退出后能自动重启。
  • volumes: 这是最重要的一行! 它将容器内部存放配置和数据的 /opt/alist/data 目录,映射到你主机当前目录下的 data 文件夹。这样,即使容器被删除重建,你的所有配置(添加的网盘、密码等)都会保留下来。
  • ports: 将 Openlist 服务的端口 5244 暴露给你的主机,这样你才能通过 http://主机IP:5244 访问它。
  • environment: 设置运行时的环境变量,PUIDPGID 用于文件权限管理,UMASK 用于设置文件掩码。你可以通过在终端输入 id 命令来获取你当前用户的 PUID 和 PGID。

编辑完成后,保存并退出编辑器(在 nano 中是按 Ctrl+X,然后按 Y,再按 Enter)。

第三步:启动 Openlist 容器

docker-compose.yml 文件所在的目录 (~/openlist) 下,执行以下命令:

1
2
# -d 参数表示在后台运行
docker-compose up -d

Docker 会自动拉取镜像并根据你的配置启动容器。你可以使用 docker ps 命令查看容器是否正在运行。

第四步:获取初始管理员密码并登录

容器首次启动时,会生成一个随机的管理员密码。我们需要进入容器来获取它。

1
2
# 执行 alist admin 命令获取密码
docker-compose exec openlist ./alist admin

终端会输出类似下面的信息,其中就包含了你的初始密码:

1
2
3
4
5
6
7
8
INFO[2024-05-21 10:30:00] reading config file: data/config.json
INFO[2024-05-21 10:30:00] App name: AList
INFO[2024-05-21 10:30:00] Version: 3.32.0
INFO[2024-05-21 10:30:00] Build date: 2024-05-10 16:14:08
INFO[2024-05-21 10:30:00] Git commit: 199324a
INFO[2024-05-21 10:30:00] Go version: go1.21.9
INFO[2024-05-21 10:30:00] Gin version: v1.9.1
Password: your_initial_password_here

复制这个密码。现在,打开你的浏览器,访问 http://<你的服务器IP地址>:5244

使用 admin 作为用户名和刚刚获取的密码进行登录。登录后的第一件事,就是进入“个人资料”页面修改你的管理员密码!

第五步:添加你的云存储

  1. 登录后,点击页面底部的“管理”按钮。
  2. 在左侧菜单中选择“存储”。
  3. 点击“添加”按钮。
  4. 在“驱动”下拉菜单中,选择你想要添加的网盘类型(例如 阿里云盘Open)。
  5. 根据页面的提示填写“挂载路径”、“刷新令牌 (refresh_token)”等信息。每种驱动的配置方式略有不同,可以参考官方文档获取详细的配置帮助。
  6. 保存即可。刷新主页,你就能看到刚刚添加的网盘了!

结论

Alist 的商业化或许让一些用户感到失落,但这正是开源世界的魅力所在:当一条路走不通时,社区会自发地开辟出一条新的、更宽广的道路。Openlist 正是这条新路。它继承了前人的智慧,并承载着对开放、自由和用户控制权的坚持。

如果你正在寻找一个强大、灵活且完全由自己掌控的云存储管理方案,那么现在就是拥抱 Openlist 的最佳时机。动手试试吧,搭建过程的乐趣和最终成果的便利,一定会让你感到物超所值。