alist

最近折腾家庭存储这块时,感觉大多数文件都在阿里云盘百度网盘这些公共网盘里,各种APP特别麻烦,所以想把所有不同的网盘都放在一起进行管理,一直听说alist的大名,还没有用过,这次就来试试。

docker部署alist

我是使用docker-compose进行部署,docker-compose的安装方法参考部署docker及docker-compose。那么第一步,创建docker-compose.yml文件:

version: '3.2'

services:
  alist:
    image: xhofe/alist
    container_name: alist
    restart: unless-stopped
    volumes:
      - /docker/alist:/opt/alist/data
    environment:
      PUID: 0
      PGID: 0
      UMASK: 022
    ports:
      - "8080:5244"

宿主机使用8080端口转发到alist的端口,宿主机/docker/alist目录映射alist的目录。

# 启动alist容器
docker-compose up -d

启动后,访问IP+Port即可,不过我们还没有alist的默认密码,alist的默认账号为:admin,执行以下命令获取默认密码:

docker exec -it alist ./alist admin

alist设置

  • 可以在个人资料里修改用户名和密码

  • 想要挂载不同的网盘,点击侧边栏的存储,进入设置,详细的设置方式alist官方文档有教程可以参考,因为不同的网盘有不同的方式,这里就不赘述,只需要跟着官方文档的配置方式即可。

  • 设置签名,只有带有签名的链接才可以访问。alist -> 设置 -> 全局 -> 签名所有 开启

rclone

在设置好alist之后,因为alistwebdav的形式,jellyfin是没办法直接读取的,所以需要将alist挂载到本地,供jellyfin使用。

安装rclone

安装rclone我没有使用docker进行部署,主要是因为要挂载在宿主机上,来回映射路径相对来说比较麻烦。所以我就根据rclone的官方教程进行安装:

  • 安装依赖
apt-get install fuse3
  • 方式一:脚本安装
curl https://rclone.org/install.sh | sudo bash
  • 方式二:二进制文件安装
# 创建rclone目录
mkdir /opt/rclone

# 进入该目录
cd /opt/rclone

# 下载rclone预编译二进制文件压缩包
curl -O https://downloads.rclone.org/rclone-current-linux-amd64.zip

# 解压
unzip rclone-current-linux-amd64.zip

# 将rclone二进制文件放入/usr/bin目录下
cp rclone /usr/bin/

# 授权
chmod 755 /usr/bin/rclone

# 验证是否成功,显示版本号证明成功
rclone --versio

设置rclone

要将alist挂载到本地,先要设置rclone remoterclone文档说的比较清晰,可以跟着以下命令进行操作:

# 进入rclone设置
rclone config

# 选择新远程
No remotes found, make a new one?
n) New remote
s) Set configuration password
q) Quit config
n/s/q> n #这里选择n

# 设置名字
name> remote
Type of storage to configure.
Choose a number from below, or type in your own value
[snip]
XX / WebDAV
   \ "webdav"
[snip]
Storage> webdav #这里输入远程的名字,之后就是你的远程名称

# 设置远程地址url http://your_alist_ip:port/dav
URL of http host to connect to
Choose a number from below, or type in your own value
 1 / Connect to example.com
   \ "https://example.com"
url> http://127.0.0.1:8080/dav #这里设置alist的地址和端口,后面要带dav,这是alist要求的

# 这里选6就可以了,1-5都不是我们使用的
Name of the WebDAV site/service/software you are using
Choose a number from below, or type in your own value
 1 / Fastmail Files
   \ (fastmail)
 2 / Nextcloud
   \ (nextcloud)
 3 / Owncloud
   \ (owncloud)
 4 / Sharepoint Online, authenticated by Microsoft account
   \ (sharepoint)
 5 / Sharepoint with NTLM authentication, usually self-hosted or on-premises
   \ (sharepoint-ntlm)
 6 / Other site/service or software
   \ (other)
vendor> 6

# 设置远程账号
User name
user> admin #这里是你alist的密码

# 设置远程密码
Password.
y) Yes type in my own password
g) Generate random password
n) No leave this optional password blank
y/g/n> y #这里输入y
Enter the password: #这输入你的密码,密码是看不到的
password:
Confirm the password: #再次输入你的密码
password:

# 这里直接回车即可
Bearer token instead of user/pass (e.g. a Macaroon)
bearer_token>
Remote config

# 这里可能会问你是默认还是高级,选择默认即可

# 你的远程信息
--------------------
[remote]
type = webdav
url = http://127.0.0.1:8080/dav
vendor = Other
user = admin
pass = *** ENCRYPTED ***
--------------------

# 确认
y) Yes this is OK
e) Edit this remote
d) Delete this remote
y/e/d> y #输入y即可,

# 最后按q退出设置

挂载到本地

查看是否连接成功,使用以下命令可以确认是否已经挂载上了alist

# 查看alist的目录
rclone lsd alist:

# 查看alist的文件
rclone ls alist:
# 将alist挂载到本地目录 /webdav
rclone mount alist:/ /webdav  --copy-links --no-gzip-encoding --no-check-certificate --allow-other --allow-non-empty --umask 000 --use-mmap

挂载完成后,发现控制台就卡住了,在官方文档看了半天,发现这是前台命令,会一直运行,ctrl+c之后就会退出本地挂载。

后台模式挂载到本地

# 将alist挂载到本地目录 /webdav
# --daemon 强制后台模式
rclone mount alist:/ /webdav  --copy-links --no-gzip-encoding --no-check-certificate --allow-other --allow-non-empty --umask 000 --use-mmap --daemon

官方文档只是提了以下这个命令,并没有太详细的信息。

解除本地挂载

# 解除本地挂载,后面跟的是挂载的本地目录
# 当自动取消挂载失败时,也可以这样手动取消挂载
fusermount -qzu /webdav

开机自动挂载

上面的手动挂载方式,在机器重启后,就失效了,每次都要手动在设置一遍,很麻烦。我们可以使用service文件来进行自动挂载。

  • 设置service文件
#创建service文件
vim /usr/lib/systemd/system/rclone.service

文件内容:

[Unit] 
Description=rclone
Before=docker.service

[Service] 
User=root 
ExecStart=/usr/bin/rclone mount alist: /webdav  --copy-links --no-gzip-encoding --no-check-certificate --allow-other --allow-non-empty --umask 000 --use-mmap

[Install] 
WantedBy=multi-user.target
  • 设置开机自启
# reload守护进程
systemctl daemon-reload

# 设置service文件自启
systemctl enable rclone.service

# 启动service文件
systemctl start rclone.service

总结

相对来说alist配置还是比较简单,很快就能通过文档设置好。相对比较麻烦的是rclone,会出现报错情况,只能一点一点排查,如果按照文档走,大概率可以规避掉一些问题。

部分参考

文章作者: Willxup
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Willxup
Linux Linux PVE Docker
喜欢就支持一下吧