「技术教程」Windows下AList搭建个性Web共享站点 | 打造属于你的局域网分享平台插图

最近发现了一个不错的项目——AList。官方定义它为一个支持多种存储的文件列表程序,采用了新框架SolidJS,与传统的虚拟DOM不同,直接操作原生DOM,性能与Vanilla相当。在尝试过程中,我发现它解决了我一直以来的一个困扰。

每当我下载完一系列视频文件后,它们要么数量庞大,要么体积巨大。这些文件通常属于待确认文件,我可能只是简单地浏览一遍就会将它们删除。因此,我不希望将它们移动到手机上查看,但在电脑上查看也不够便捷,尤其是在晚上躺在床上的时候,操控电脑并不是最方便的选择。

之前我是利用windows自带的文件共享功能Samba来远程查看的,通过手机的文件管理器SMB连接到电脑,然后查看文件,但是这种方式非常痛苦,首先它的速度非常慢,而且对于快速查看视频,很容易播放无响应,必须重新打开文件才可以。

但是用了alist,它的视频是在线的,文件的读取和反馈都是通过服务器实现,服务器就是我的电脑,所以我在拖拽查看的时候,体验堪比在电脑上操作了,秒开的体验,配置5g的wifi带宽,完全满足需要。

为此记一下笔记,分享给跟我一样有这种需求的人(主要是买不起NAS)。

教程

alist下载

github:alist

使用文档:文档

注意不要看错文档了,我们看v3的,也就是我提供的这个地址的。

进入到github仓库,我们找到 Releases 下载windows版的包。

「技术教程」Windows下AList搭建个性Web共享站点 | 打造属于你的局域网分享平台插图1

下载完毕后我们解压到电脑磁盘目录,我个人把他放到了专门存放代码的自建code目录下了,这个我觉得可以分类为软件,看自己想法。

初次启动并挂载磁盘

文档我们查看 安装 – 手动安装;找到windows的教程,官方提供了这么一条命令:

.\alist.exe server

这个用于启动服务,此时我们可以看到启动的是当前目录下的alist.ext文件。

「技术教程」Windows下AList搭建个性Web共享站点 | 打造属于你的局域网分享平台插图2

输入完后我们可以看到这么一个提示:start server @ 0.0.0.0:5244

说明它用的是本地服务,5244是它的默认端口,这个是可以改动的,这个自己去看文档吧。

我们通过访问:http://localhost:5244 就能进入到站点页面了。

但是需要登录,所以我们还需要通过另一段命令获取到默认的管理员账号密码

.\alist.exe admin
「技术教程」Windows下AList搭建个性Web共享站点 | 打造属于你的局域网分享平台插图3

可以看到输出了username和password,这个就是账号密码了,默认密码是随机字符的,我这个其实是自己改过了,不用纠结是否相同。

输入账号密码进入后台我们直奔管理后台的存储菜单,点击后我们就可以添加本地存储了。

这里我以电脑的F盘为例,我希望挂载整个F盘,设置如下:

「技术教程」Windows下AList搭建个性Web共享站点 | 打造属于你的局域网分享平台插图4

注意根文件夹路径才是磁盘路径,挂载路径指的是前端路由的路径,不要搞混了。

设置完毕后保存,我们就可以在通过访问:http://localhost:5244看到刚刚挂载的目录了。

「技术教程」Windows下AList搭建个性Web共享站点 | 打造属于你的局域网分享平台插图5

至此我们测试上基本就没啥问题了,现在我们需要解决几个问题:

  • 程序保活,也就是开机自启
  • DNS本地代理,这样就可以通过域名访问
  • 配置环境变量,这样可以直接通过alist命令来控制程序

程序保活:开机自启

官方提供了两个vbs脚本,一个是启动,一个是停止,我们只需要将这两个脚本放置在和alist.exe同级目录即可,然后将启动脚本放置在windows的启动计划中即可。

官方有提供脚本下载,嫌麻烦自己创建一个text文件,然后把代码粘贴进去,把文件名改一下就行了,文件后缀为:.vbs

我的脚本名为:alist_start.vbs

右键创建一个快捷方式,然后 win + r调出运行,输入:shell:Startup 回车。

会打开一个这样的文件夹:C:\Users\你的用户名\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup

我们将刚刚创建的快捷方式,剪切到这个文件夹中即可。

「技术教程」Windows下AList搭建个性Web共享站点 | 打造属于你的局域网分享平台插图6

此时我们的程序会在系统重启后自动启动。

DNS本地代理

访问alist站点,本机电脑可以通过:http://localhost:5244访问,但是其他设备就需要通过主机ip+端口访问了。

略有一些不方便,有没有办法通过域名访问,比如通过nas.com:5244访问呢?

这个就需要看使用的路由器是否支持DNS代理了,我的路由是爱快,它是支持这个功能的:

「技术教程」Windows下AList搭建个性Web共享站点 | 打造属于你的局域网分享平台插图7

添加完毕后,我们在局域网内,都可以通过nas.com:5244来访问页面了。

比较可惜的是还是需要增加端口号,爱快不支持带端口,暂时就这样吧。

配置环境变量

到这里我们就要考虑下alist的一些方便的操作了,如果我们想要停止这个程序,只能运行我们之前创建的停止的vbs脚本,双击运行即可。

但是有些不方便,我看到官方在底部有说:

对于所有平台,您可以使用以下命令来静默启动、停止和重新启动。 (v3.4.0 及更高版本)

# 携带`--force-bin-dir`参数启动服务
alist start
# 通过pid停止服务
alist stop
# 通过pid重启服务
alist restart

但是此时我们在cmd或者PowerShell调用alist得到的是一个报错,因为我们还没有将其设置为全局变量,这种用法是不行的。

为此,我们在我的电脑右键 -> 属性 -> 高级 -> 环境变量 -> Path

点击编辑,新建一条程序目录的path路径:

「技术教程」Windows下AList搭建个性Web共享站点 | 打造属于你的局域网分享平台插图8

确定后在下面的系统变量区域新建一个系统变量:

「技术教程」Windows下AList搭建个性Web共享站点 | 打造属于你的局域网分享平台插图9

确定后,关闭所有的命令行程序,然后重新打开,输入alist就不会再报错了,会返回一段命令提示:

「技术教程」Windows下AList搭建个性Web共享站点 | 打造属于你的局域网分享平台插图10

这就表示我们的设置成功了。

完事后我们还需要更新下vbs脚本内容,不需要再通过路径去触发了。

启动脚本:

Dim ws
Set ws = Wscript.CreateObject("Wscript.Shell")
ws.run "alist start",vbhide
Wscript.quit

停止脚本:

Dim ws
Set ws = Wscript.CreateObject("Wscript.Shell")
ws.run "alist stop",0
Wscript.quit

此时完成,现在当我们有需要时,就可以通过alist stop来停止程序的运行,比如更新下程序。