安装Alist

下载Alist

由于文档中给出的一键脚本无法正常安装,所以我用的是手动安装

打开 AList Release 下载待部署系统对应的文件

手动运行

1
2
3
4
5
6
7
8
9
10
11
12
# 解压下载的文件,得到可执行文件:
tar -zxvf alist-xxxx.tar.gz
# 授予程序执行权限:
chmod +x alist
# 运行程序
./alist server

# 高于v3.25.0版本
# 随机生成一个密码
./alist admin random
# 或者手动设置一个密码 `NEW_PASSWORD`是指你需要设置的密码
./alist admin set NEW_PASSWORD

守护进程

使用任意方式编辑 /usr/lib/systemd/system/alist.service 并添加如下内容,其中 path_alist 为 AList 所在的路径

alist.service
1
2
3
4
5
6
7
8
9
10
11
12
[Unit]
Description=alist
After=network.target

[Service]
Type=simple
WorkingDirectory=path_alist
ExecStart=path_alist/alist server
Restart=on-failure

[Install]
WantedBy=multi-user.target

然后,执行 systemctl daemon-reload 重载配置,现在你可以使用这些命令来管理程序:

  • 启动: systemctl start alist
  • 关闭: systemctl stop alist
  • 配置开机自启: systemctl enable alist
  • 取消开机自启: systemctl disable alist
  • 状态: systemctl status alist
  • 重启: systemctl restart alist

挂载Cloudflare R2存储桶

打开Alist主页

默认在5244端口上,如和我一样使用服务器进行部署,记得检查服务器安全组设置是否已打开5244端口的访问权限

在浏览器中访问 YourServerIP:5244 打开Alist主页,使用前边创建的管理员账号(账号就是admin)登录,会自动打开管理页面,点击存储→添加,驱动选择对象存储

挂载路径按需求填写,然后先不要关闭这个页面,先去获取R2的密钥

添加R2存储桶

在Cloudflare的控制台中,点击左侧的 R2 对象存储,选取或新建一个存储桶,把它的名字填在配置的存储桶一栏

回到R2控制台,点开你要挂载的存储桶的设置,在存储桶的详细信息里复制S3 API,并去掉末尾的存储桶名称,例如https://8b86bc7ab05e7e2adsd0c9e8aaaaa.r2.cloudflarestorage.com,将这个内容填在配置的Endpoint里

在R2概述页面中点击管理 R2 API 令牌,创建一个新的具有管理原读和写权限的令牌,将 Access key id 和 Access key secret 对应填到刚刚那个配置页面的 访问密钥 Id 和 安全访问密钥里

最后点击添加,这样就算配置好了

使用S3 Browser上传文件(推荐)

由于R2上传文件有300MB的大小限制,并且直接使用Alist上传文件很慢,所以这里我推荐使用S3 Browser来上传和管理文件

反向代理

我使用的是nginx,在网站配置文件的 http 字段中添加

nginx.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
server {
# 这两行是为了打到自定义域名上,如有需要请自行添加
listen 80;
server_name alist.example.com;

location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Range $http_range;
proxy_set_header If-Range $http_if_range;
proxy_redirect off;
proxy_pass http://127.0.0.1:5244;
# the max size of file to upload
client_max_body_size 20000m;
}
}

配置SSL证书

请自行准备SSL证书文件,然后修改nginx配置

nginx.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
server {
#SSL 默认访问端口号为 443
listen 443 ssl;
#请填写绑定证书的域名
server_name alist.example.com;

#请填写证书文件的相对路径或绝对路径
ssl_certificate alist.example.com_bundle.crt;
#请填写私钥文件的相对路径或绝对路径
ssl_certificate_key alist.example.com.key;

ssl_session_timeout 5m;
#请按照以下协议配置
ssl_protocols TLSv1.2 TLSv1.3;
#请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;

location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Range $http_range;
proxy_set_header If-Range $http_if_range;
proxy_redirect off;
proxy_pass http://127.0.0.1:5244;
# the max size of file to upload
client_max_body_size 20000m;
}
}