Alist有很详细的官方文档(没看过建议先看)和非常丰富的第三方教程,这里主要按照我自己配置的方式来记录一下,很多千篇一律的地方就略去了。
安装
我使用的安装方式是Docker Compose
+ nginx反向代理
+ Cloudflare CDN
,和官方安装教程有一点点细节的不同。
假设已经拥有了一个托管在Cloudflare的域名,叫my.domain
,这一步就不展开了,有需要自行搜索
docker-compose.yaml
文件如下:
|
|
这里和官方的有两个细小区别,
- volumes的data目录和compose文件放在一起,因为我觉得这样方便管理
- ports的端口映射加上了
127.0.0.1
,因为https是在nginx上配置的,出于安全考虑,这里不对外暴露此端口。
先运行docker compose up -d
启动,按要求设置密码,再docker compose down
关闭。如无意外,当前目录会有个data目录生成,且data目录下有个config.json
文件,再按要求配置site_url为https://my.domain
。
接下来需要到Cloudflare的Dashboard,
- 先选择自己的域名,点击DNS菜单,添加一条DNS记录,确保Proxy Status是开启的状态
- (尽管实际可选,但对于我的配置来说是必选)点击展开SSL/TLS菜单
- 点击Overview,选择Full (strict)模式
- 点击Origin Server,为对应的域名创建一个15年的证书
- 将证书的公钥和私钥分别放到服务器上。这里我存放的路径为
/etc/nginx/certs/my.domain.pem
/etc/nginx/certs/my.domain.key
然后配置nginx,就是用的官方配置,完整的文件如下,因为配置了证书,所以只需要监听443端口即可
|
|
都配置完成之后docker compose up -d
启动容器,nginx -t && nginx -s reload
重载nginx,浏览器打开 https://my.domain,就可以看到页面了。用户名是admin
,密码是前面自己设置的。
配置
安装完成之后下面就来进行一番配置,Alist支持特别多的存储类型,这里就以本机存储为例来说明一下,其他方式可以自行查看相关教程
添加本机存储
首先在终端执行docker exec -it alist /bin/sh
,进入容器内部,然后在data目录创建一个文件夹,名字就叫test
吧,对应命令为mkdir /opt/alit/data/test
,接着输入exit
退出即可。这一步也可以在宿主机操作,不过为了避免未知的权限问题,我还是选择进入容器操作。
然后进入web端的管理页面
➡️ 点击存储
➡️ 添加
➡️ 选择本机存储
,会多出来一堆选项,我来解释下几个比较关键的选项如何使用,
- 挂载路径:这里可以填自己容易记的名称,比如和刚才的文件夹一样,也可以嵌套到已经存在的文件夹下。除了常规的字符串,还有一种用法,填一个长的随机字符串,比如一个uuid,或者用
openssl rand -hex 16
命令生成一个,由于使用了https,这一段路径是无法被外界探测到的,这也是一种加密方式,有点类似于私有的gist,不同之处在于私有gist后面一段hash会随内容变化而变化,而这里的不会。此处假设我填一个2c815e094039bdda4c867c18960b054d
- WebDAV 策略:本地存储可选本地代理或使用代理URL,由于已经套了Cloudflare的CDN,因此这里选择本地代理即可
- 启用签名:这同样是一种加密方式,和前面提到的路径用长字符串不同,这个签名是加在URL的参数中的,而且每个文件是不一样的,且可以设置过期时间。
- 根文件夹路径:这里的路径是容器内的路径,即
/opt/alit/data/test
,必须确保这里填的路径存在,否则会报错 - 创建文件夹权限:这指的是在根文件夹下新创建的文件夹的权限,一般是
755
- 回收站路径:这里可以保持默认,即没有回收站,如果设置,注意需要确保文件夹是存在的
都设置好之后,点击最下面的添加,一个存储就添加好了,此时可以点击左边的主页按钮到主页进行查看。
添加一个WebDAV专用用户
一切顺利的话,下一步我们来添加一个只有该目录WebDAV权限的用户。进入管理页面
➡️ 点击用户
➡️ 添加
,自行设置用户名和密码。这里假设分别为user
password
接着到基本路径这里,如果选择/root
,那么根目录的所有目录,包括后续添加的,该用户都能看见;
如果选择刚才的挂载路径,即/2c815e094039bdda4c867c18960b054d
,那么该用户将只能看到这个目录下的文件,并且这个用户是看不到2c815e094039bdda4c867c18960b054d
这串路径的,这里选择后者。
权限选择Webdav 读取
和Webdav 管理
,这样此用户将只能通过WebDAV api来管理目录,而无法通过alist的api管理。
rclone配置
下面使用rclone来实际挂载,安装就略过了,直接配置。
由于交互式太麻烦了,可以直接把下面这段配置放到~/.config/rclone/rclone.conf
中
|
|
其中中括号内的是存储的名称,密码是用rclone obscure 'password'
命令生成的。
接着运行rclone mkdir webdav-test:/test
,没报错就是成功了,用rclone lsd webdav-test:
来验证,可以看到test
文件夹的相关信息。
总结
拥有一个自己的文件服务器之后,做很多事情就很方便了,相比传统的FTP/FTPS/WEBDAV等文件服务器,alist的优势就在于简单、方便、稳定。
容器化的配置相当简单;自带实用的web界面,既可以利用其WebDAV特性来写一些自动化脚本,又能够通过web端进行文件管理,相当方便;自由组合各种存储方式,让人拥有一个相当稳定的文件服务器(可以保持路径不变替换其对应的存储介质)。