防Alist重走Goedge老路,自行魔改了份脚本

以下文章均从Alist旧版官网(https://alist.nn.ci/)复制的

一键脚本

仅适用于 Linux amd64/arm64 平台。

注:github.io被国内部分地区屏蔽,如果无法拉取脚本可自行下下来上传服务器

推荐使用3.39.4版本

安装

curl -fsSL "https://huan-starvm.github.io/app/alist/v3.sh" -o v3.sh && bash v3.sh

保险起见写了 3.39.4的脚本

curl -fsSL "https://huan-starvm.github.io/app/alist/v339.sh" -o v339.sh && bash v339.sh

以及 3.40.0的脚本

curl -fsSL "https://huan-starvm.github.io/app/alist/v340.sh" -o v340.sh && bash v340.sh

面板管理命令

使用命令:alist 或者 alist-manager

自定义路径

默认安装在 /opt/alist 中。 自定义安装路径,将安装路径作为第二个参数添加,必须是绝对路径(如果路径以 alist 结尾,则直接安装到给定路径,否则会安装在给定路径 alist 目录下),如 安装到 /root

# Install
curl -fsSL "https://huan-starvm.github.io/app/alist/v3.sh" -o v3.sh && bash v3.sh install /root
# update
curl -fsSL "https://huan-starvm.github.io/app/alist/v3.sh" -o v3.sh && bash v3.sh update /root
# Uninstall
curl -fsSL "https://huan-starvm.github.io/app/alist/v3.sh" -o v3.sh && bash v3.sh uninstall /root
  • 启动: systemctl start alist
  • 关闭: systemctl stop alist
  • 状态: systemctl status alist
  • 重启: systemctl restart alist

手动安装

获取 AList

打开 AList Release 下载待部署系统对应的文件。最新版的前端已经和后端打包好了,不用再下载前端文件了。

xxxx 指的是不同系统/架构对应的名称,一般 Linux-x86/64 为 alist-linux-amd64

手动安装如果有如下提示:是因为你的 GLIBC 版本太低,建议下载 musl 版本

lib64/libc.so.6: version `GLIBC_2.28' not found (required by ./alist)  
#或者
accept: function not implemented

当你看到 start [email protected]:5244 的输出,之后没有报错,说明操作成功。 第一次运行时会输出初始密码。程序默认监听 5244 端口。 现在打开 http://ip:5244 可以看到登录页面,WebDAV 请参阅 WebDav

手动运行

v3.25.0以上版本将密码改成加密方式存储的hash值,无法直接反算出密码,如果忘记了密码只能通过重新 随机生成 或者 手动设置

Linux

# 解压下载的文件,得到可执行文件:
tar -zxvf alist-xxxx.tar.gz
# 授予程序执行权限:
chmod +x alist
# 运行程序
./alist server

# 获得管理员信息 以下两个不同版本,新版本也有随机生成和手动设置
# 低于v3.25.0版本
./alist admin

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

Windows

# 解压下载的文件,得到可执行文件:
unzip alist-xxxx.zip
# 运行程序
.\alist.exe server

# 获得管理员信息 以下两个不同版本,新版本也有随机生成和手动设置
# 低于v3.25.0版本
.\alist.exe admin

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

macOS

# 解压下载的文件,得到可执行文件:
tar -zxvf alist-xxxx.tar.gz
# 授予程序执行权限:
chmod +x alist
# 运行程序
./alist server

# 获得管理员信息 以下两个不同版本,新版本也有随机生成和手动设置
# 低于v3.25.0版本
./alist admin

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

win(scoop)

# 安装
scoop install alist
# 运行
alist server

守护进程

Linux

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

[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

守护进程不会配置? 视频教程

macOS

使用任意方式编辑 ~/Library/LaunchAgents/ci.nn.alist.plist 并添加如下内容,修改 path_alist 为 AList 所在的路径,path/to/working/dir 为 AList的工作路径

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
    <dict>
        <key>Label</key>
        <string>ci.nn.alist</string>
        <key>KeepAlive</key>
        <true/>
        <key>ProcessType</key>
        <string>Background</string>
        <key>RunAtLoad</key>
        <true/>
        <key>WorkingDirectory</key>
        <string>path/to/working/dir</string>
        <key>ProgramArguments</key>
        <array>
            <string>path_alist/alist</string>
            <string>server</string>
        </array>
    </dict>
</plist>

然后,执行 launchctl load ~/Library/LaunchAgents/ci.nn.alist.plist 加载配置,现在你可以使用这些命令来管理程序:

  • 开启: launchctl start ~/Library/LaunchAgents/ci.nn.alist.plist
  • 关闭: launchctl stop ~/Library/LaunchAgents/ci.nn.alist.plist
  • 卸载配置: launchctl unload ~/Library/LaunchAgents/ci.nn.alist.plist

Windows

方法1
  1. 在 https://nssm.cc/download 下载最新版本的 nssm
  2. 在解压后的文件夹内按住 Shift 并右击空白处,选择“在此处打开 Powershell 窗口”;
  3. 在弹出的窗口中输入 .\nssm.exe install alist
  4. Path 选择 alist.exe 的路径,如 D:\alist\alist.exe,Arguments 填 server
  5. Details 选项卡中可以自定义标题和描述,可以选择服务的自启动模式(自动|延迟启动|手动|禁用);
  6. 在 I/O 选项卡为 Output (stdout) 和 Output (stderr) 各自指定一个日志文件的路径,如 D:\alist\stdout.log,文件本身(stdout.log)可以不存在,但是指定的目录(D:\alist)必须存在;
  7. 点击“Install Service”即可。

此后可以直接在服务中启动 alist

方法2

用 .VBS 脚本启动和停止,分别创建两个脚本 分别是 启动.vbs 和 停止.vbs

直接在和Alist启动程序同级文件夹里面双击启动即可,不用担心没有反应 直接去 浏览器访问即可

两个启动脚本

启动.vbs

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

停止.vbs

Dim ws
Set ws = Wscript.CreateObject("Wscript.Shell")
ws.run "taskkill /f /im alist.exe",0
Wscript.quit
  1. 脚本不会创建的可以自行下载:脚本下载

  2. 脚本不会使用的可以看看视频:参考视频

如何实现Windows开机自启,可以参考上面提到的脚本使用视频(第二个)

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

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

如何更新

下载新版Alist,把之前的替换了即可。

  • 启动: systemctl start alist
  • 关闭: systemctl stop alist
  • 状态: systemctl status alist
  • 重启: systemctl restart alist

反向代理

程序默认监听 5244 端口。如有修改,请一并修改下列配置中的端口号。如果你使用反向代理,建议你设置site_url,以帮助alist更好的工作。

如果你想使用子目录,参考这里

反向代理非标准端口或启用https后丢失https或端口号/无法播放视频?

你需要通过正确的Host头,请参考 #726 #1159 #2429 #3644 #4181 #4719

Nginx

在网站配置文件的 server 字段中添加

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;
}

如果需要使用HTTP/3,需要将对应HOST行修改为:

proxy_set_header Host $host:$server_port;

这样修改后的配置同时也可以兼容HTTP/2及更低版本的请求。

注意

如果使用宝塔面板,请务必删除以下默认配置

- location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md
- location ~ .\*\.(gif|jpg|jpeg|png|bmp|swf)$
- location ~ .\*\.(js|css)?$

并在/www/server/nginx/conf/proxy.conf中或对应网站配置文件中设置禁用Nginx缓存,否则默认配置下访问较大文件时Nginx会先尝试将远程文件缓存至本机,导致播放失败

proxy_cache cache_one; # 删除这一行
proxy_max_temp_file_size 0; #加上这一行

Apache

在 VirtualHost 字段下添加配置项 ProxyPass,如:

<VirtualHost *:80>
    ServerName myapp.example.com
    ServerAdmin [email protected]
    DocumentRoot /www/myapp/public

    AllowEncodedSlashes NoDecode
    ProxyPreserveHost On
    ProxyPass "/" "http://127.0.0.1:5244/" nocanon
    ProxyPassReverse "/" "http://127.0.0.1:5244/" nocanon
</VirtualHost>

Caddy

在 Caddyfile 文件下添加 reverse_proxy,如:

:80 {
  reverse_proxy 127.0.0.1:5244
}

如果部署在 443 端口正常使用的服务器上且使用域名进行访问,建议使用这种配置让 Caddy 自动申请证书:

example.com {
  reverse_proxy 127.0.0.1:5244
}

将 `example.com` 替换为你自己解析后的域名。

其他疑难杂症

获取密码

需要进入脚本安装AList的目录文件夹內执行如下命令
低于v3.25.0版本

./alist admin

高于v3.25.0版本

3.25.0以上版本将密码改成加密方式存储的hash值,无法直接反算出密码,如果忘记了密码只能通过重新 随机生成 或者 手动设置

# 随机生成一个密码
./alist admin random
# 手动设置一个密码,`NEW_PASSWORD`是指你需要设置的密码
./alist admin set NEW_PASSWORD

一直在加载怎么办?

挂载了一些网盘但是不能用了重启了一下AList,发现进不去 网页提示:获取设置失败:请稍后,正在加载存储怎么办?

  1. 等待几分钟
  2. 通过使用命令将失效的/无法启动的存储停止运行

Linux

如果通过命令停止 必须先进入你AList所在的文件夹输入命令

如果我们不知道是那个存储原因导致的,可以通过命令列出所有的存储

./alist storage list
[root@OPSD-g8xXordx3B9f alist]# ./alist storage list
INFO[2023-11-23 17:54:10] reading config file: data/config.json
INFO[2023-11-23 17:54:10] load config from env with prefix: ALIST_
INFO[2023-11-23 17:54:10] init logrus...
INFO[2023-11-23 17:54:10] Found 2 storages
┌─────────────────────────────────────────────────────────────────┐
│ ID    Driver            Mount Path                      Enabled │
│─────────────────────────────────────────────────────────────────│
│ 1     S3                /R2                             true    │
│ 2     UrlTree           /233                            true    │
└─────────────────────────────────────────────────────────────────┘

输入查询命令后我们会进入另一种模式无法输入,如果添加的存储过多可以通过键盘的 ↑ 和 ↓ 来往下翻,等找到后可以按Ctrl+C退出

例如我们是因为 233 这个存储停止的,我们就输入命令来停止,然后在 重启一下AList就可以了

./alist storage disable /233
[root@OPSD-g8xXordx3B9f alist]# ./alist storage disable /233
INFO[2023-11-23 17:54:52] reading config file: data/config.json
INFO[2023-11-23 17:54:52] load config from env with prefix: ALIST_
INFO[2023-11-23 17:54:52] init logrus...
INFO[2023-11-23 17:54:52] Storage with mount path [/233] have been disabled

Windows

如果通过命令停止 必须先进入你AList所在的文件夹输入命令

如果我们不知道是那个存储原因导致的,可以通过命令列出所有的存储

alist.exe storage list
C:\Users\admin\Desktop\alist>alist.exe storage list
INFO[2023-11-23 18:36:23] reading config file: data\config.json
INFO[2023-11-23 18:36:23] load config from env with prefix: ALIST_
INFO[2023-11-23 18:36:23] init logrus...
INFO[2023-11-23 18:36:23] Found 13 storages
┌──────────────────────────────────────────────────────────────────┐
│ ID    Driver            Mount Path                      Enabled  │
│──────────────────────────────────────────────────────────────────│
│ 1     AliyundriveOpen   /open                           true     │
│ 9     Local             /code                           true     │
│ 10    AList V3          /ceshi                          true     │
└──────────────────────────────────────────────────────────────────┘

输入查询命令后我们会进入另一种模式无法输入,如果添加的存储过多可以通过键盘的 ↑ 和 ↓ 来往下翻,等找到后可以按Ctrl+C退出

例如我们是因为 open 这个存储停止的,我们就输入命令来停止,然后在 重启一下AList就可以了

alist.exe storage disable /open
C:\Users\admin\Desktop\alist>alist.exe storage disable /open
INFO[2023-11-23 18:41:43] reading config file: data\config.json
INFO[2023-11-23 18:41:43] load config from env with prefix: ALIST_
INFO[2023-11-23 18:41:43] init logrus...
INFO[2023-11-23 18:41:43] Storage with mount path [/open] have been disabled

macOS

如果通过命令停止 必须先进入你AList所在的文件夹输入命令

由于暂时没有Mac设备,无法提供具体示例,但是命令都是一样的也可以参考 Linux 和 Windows

列出存储:

alist storage list

停止存储:

alist storage disable /Path

Docker

这里的 Docker 如果你搭建多个Docker版本的AList你需要修改个别参数喔~

如果我们不知道是那个存储原因导致的,可以通过命令列出所有的存储

docker exec -it alist ./alist storage list
[root@OPSD-g8xXordx3B9f alist]# docker exec -it alist ./alist storage list
INFO[2023-11-23 11:50:08] reading config file: data/config.json
INFO[2023-11-23 11:50:08] load config from env with prefix: ALIST_
INFO[2023-11-23 11:50:08] init logrus...
INFO[2023-11-23 11:50:08] Found 8 storages
┌─────────────────────────────────────────────────────────────────┐
│ ID    Driver            Mount Path                      Enabled │
│─────────────────────────────────────────────────────────────────│
│ 1     PikPakShare       /pikpak                         true    │
│ 2     OnedriveAPP       /utena_onedrive                 true    │
│ 3     OnedriveAPP       /adelev_onedrive                true    │
│ 4     OnedriveAPP       /megan_onedrive                 true    │
│ 5     OnedriveAPP       /patti_onedrive                 true    │
└─────────────────────────────────────────────────────────────────┘

输入查询命令后我们会进入另一种模式无法输入,如果添加的存储过多可以通过键盘的 ↑ 和 ↓ 来往下翻,等找到后可以按Ctrl+C退出

例如我们是因为 pikpak 这个存储停止的,我们就输入命令来停止,然后在 重启一下AList就可以了

docker exec -it alist ./alist storage disable /pikpak
[root@OPSD-g8xXordx3B9f alist]# docker exec -it alist ./alist storage disable /pikpak
INFO[2023-11-23 17:54:52] reading config file: data/config.json
INFO[2023-11-23 17:54:52] load config from env with prefix: ALIST_
INFO[2023-11-23 17:54:52] init logrus...
INFO[2023-11-23 17:54:52] Storage with mount path [/pikpak] have been disabled

其它

基本上都一样的命令,只是前缀文件不同,万变不离其宗。

查询存储:

alist storage list

停止存储:

alist storage disable /path
© 版权声明
THE END
喜欢就支持一下吧
点赞10 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容