第 17.9 节 AList

需要编译安装。

  • 功能请求:做成 Port。

安装依赖:

# pkg install git go

或者

# cd /usr/ports/devel/git/ && make install clean
# cd /usr/ports/lang/go/ && make install clean

然后:

# git clone -b v3.38.0  https://github.com/alist-org/alist # 写作本文时,最新版本为 v3.38.0
# cd alist/public
# fetch https://github.com/AlistGo/alist-web/releases/download/3.38.0/dist.tar.gz     # 这是前端部分,官方已经编译好的,注意和后端版本相对应
# tar xzvf dist.tar.gz  # 解压缩
# rm dist.tar.gz # 清理垃圾
# cd ..
# mkdir build
# cd build
# go build -ldflags="-w -s" -tags=jsoniter ..

编译后的文件即在 build 下。

部署 rc 服务

编写 /usr/local/etc/rc.d/alist

ee /usr/local/etc/rc.d/alist

#!/bin/sh
. /etc/rc.subr

name="alist"
rcvar="alist_enable"
command_path=/home/ykla/alist/build  # 可执行文件 alist 所在目录
command="${command_path}/alist"      # 命令路径
command_args="start"                 # 启动命令参数
stop_cmd=do_stop                     # 停止命令参数

do_stop()
{
    ${command} stop
}

load_rc_config $name                 # 载入 rc.conf 文件中定义的变量
: ${alist_enable:=no}                # 如果未设置 alist_enable 则设为 no
run_rc_command "$1"                  # 运行 service 命令

增加执行权限

# chmod +x /usr/local/etc/rc.d/alist

使用 alist 服务

# sysrc alist_enable=YES

增强安全,使用普通用户执行进程(注意 build 目录的属主和组都必须是 ykla):

# sysrc alist_user=ykla

初始化方案一

root@ykla:/home/ykla/alist/build # ./alist admin
INFO[2024-10-29 12:02:04] reading config file: data/config.json        
INFO[2024-10-29 12:02:04] config file not exists, creating default config file 
INFO[2024-10-29 12:02:04] load config from env with prefix: ALIST_     
INFO[2024-10-29 12:02:04] init logrus...                               
INFO[2024-10-29 12:02:04] Successfully created the admin user and the initial password is: CtSnFKv2 # 此处即是密码
INFO[2024-10-29 12:02:04] Admin user's username: admin                 
INFO[2024-10-29 12:02:04] The password can only be output at the first startup, and then stored as a hash value, which cannot be reversed 
INFO[2024-10-29 12:02:04] You can reset the password with a random string by running [alist admin random] 
INFO[2024-10-29 12:02:04] You can also set a new password by running [alist admin set NEW_PASSWORD]
root@ykla:/home/ykla/alist/build # service alist start
Starting alist.
INFO[2024-10-29 12:07:25] success start pid: 1633

初始化方案二

# service alist start # 先启动服务
Starting alist.
INFO[2024-10-28 22:43:45] success start pid: 3436                      
# service alist stop # 再结束服务
Stopping alist.
Waiting for PIDS: 3436.
# rm -rf daemon
# ps # 查看有无正在运行 alist,将其 kill,若无可跳过下一步
# kill 3436

重置 admin 密码为 1,必须指定绝对路径方可修改密码:

# ./alist admin set 1 --data /home/ykla/alist/build/data

重启服务:

# service alist start

登录

http://ip:5244,请将 ip 改为你的局域网地址。用户名是 admin

参考文献

指定 vlc 为 AList 的外部播放器

AList 中的内嵌播放器有时不能播放某些视频,但 AList 可以通过 URI 调用外部程序(通过 xdg-open )。AList 为 vlc 指定的视频地址形如 vlc://http://xxx,只要为 vlc:// 开头的 URI 指定 vlc 程序即可。

安装 vlc:

# pkg install vlc

或者:

# cd /usr/ports/multimedia/vlc/ 
# make install clean

xdg-open 向 vlc 传递 URI 时会包含 vlc:// , vlc 不能打开这样的地址,需要在打开视频地址前先去除,然后调用 vlc,下面是要调用的脚本:

safreya ~ % cat ~/.local/share/applications/vlc-noschema.sh
#!/bin/sh
url="$1"
clean_url="${url#vlc://}"           # 去除 vlc:// 头
vlc "$clean_url"

增加执行权限

$ chmod u+x ~/.local/share/applications/vlc-noschema.sh

新建 .desktop 文件,以便 xdg-open 调用上面的脚本:

safreya ~ % cat ~/.local/share/applications/userapp-vlc.desktop
[Desktop Entry]
Encoding=UTF-8
Version=1.0
Type=Application
NoDisplay=true
Exec=/home/safreya/.local/share/applications/vlc-noschema.sh %U
Name=vlc
Comment=Custom definition for vlc

注册 vlc:// URI 的调用程序

$ update-desktop-database ~/.local/share/applications
$ xdg-mime default userapp-vlc.desktop x-scheme-handler/vlc

参考文献

最后更新于

FreeBSD 中文社区 2024