以下是AList的一些常见配置教程,仅作为个人记录和学习使用

挂载Baidu网盘

  • 官方教程
  • 视频教程
  • Token链接:https://openapi.baidu.com/oauth/2.0/authorize?response_type=code&client_id=iYCeC9g08h5vuP9UqvPHKKSVrKFXGa1v&redirect_uri=https://alist.nn.ci/tool/baidu/callback&scope=basic,netdisk&qrcode=1

挂载Google Drive

挂载本地

假如我们要挂载U盘上的内容

  • 我们插上U盘,在System → MountPoint可以看到U盘/dev/sda1被挂载到了/mnt/sda1
  • 进入AList前端页面 → Manage → Storages → Add,Driver选择Local
  • Mount Path随便填,我使用了/local
  • Root folder path填mnt/sda1,这样回到主页面就能访问到U盘的内容了

假如alist服务部署在docker中,那么我们在运行docker的时候要把要分享的文件夹一起挂载

sudo docker run -d --restart=always \
-v <path>/alist:/opt/alist/data \
-v <path_to_be_shared>:/home/share \
-p 5244:5244 \
--name="alist" \
xhofe/alist:latest

使用Cloudflared公网访问AList服务

AList服务用来管理网盘是非常方便的,同时AList还允许挂载本机的文件。这让我突然想起一个场景,假如我和小伙伴出去玩用单反拍了许多照片,体积非常大,分享这些照片就非常麻烦了,如果上传到百度云,那么小伙伴下载完不知道要等多久,而且也没开其他云的会员账号。

假如使用AList挂载本地的SD卡,再让小伙伴访问我的AList服务不就解决问题了嘛。但是如何让小伙伴在家也能访问我的OpenWrt呢,可以使用Cloudflare的内网穿透服务。

本教程参考:【韩风Talk】这期玩Alist的网络安全防护,随便折腾一下免费的内网穿透 哔哩哔哩_bilibili

前置条件

  • 需要一个域名
  • OpenWrt安装luci-app-cloudflared

配置

部署在OpenWrt
  • 首先在Cloudflare开启Zero Trust,选择免费版即可

  • 在LuCI开启Cloudflared服务,位于VPN → Cloudflare Zero Trust Tunnel,勾选Enable

  • ssh登录到OpenWrt,运行

    cloudflared tunnel login
    

    点击显示的连接,登录

  • 登录成功后会下载一个授权证书,位于/root/.cloudflared/cert.pem,我们把授权证书复制到cloudflared的配置文件夹下

    cp /root/.cloudflared/cert.pem /etc/cloudflared
    
  • 创建隧道,后面是隧道名称

    cloudflared tunnel create alist
    
  • 创建完成之后,会在之前的文件夹(~/.cloudflared/)创建一个.json文件,把它也复制到cloudflared的配置文件夹中

    cp /root/.cloudflared/xxx.json /etc/cloudflared
    
  • 进入cloudflared配置文件夹(/etc/cloudflared),修改config.yml

    # url: http://localhost:8000
    tunnel: <Tunnel-UUID>
    credentials-file: /etc/cloudflared/<Tunnel-UUID>.json
    

    <Tunnel-UUID>替换为刚才的.json文件名

  • 重启cloudflared服务

    /etc/init.d/cloudflared restart
    
  • 回到Cloudflare官网,Zero Trust → Networks → Tunnels就能找到刚才创建的隧道了,我们点击Edit,把本地配置迁移到云端,一直点击Confirm即可

  • 迁移完成后,重新点击Edit,进入Public Hostname,我们添加一个子域名,Type选择HTTP协议,URL就是局域网内AList服务器的地址和端口。

  • 这样就可以直接在公网通过域名访问家中的服务器了

  • 还有一些其他的安全配置

    • Cloudflare → SSL/TLS → Overview → Configure encryption mode,选择Full
    • Cloudflare → SSL/TLS → Edge Certificates → Always Use HTTPS,选择True
    • 开启2FA
部署在Linux

建议使用Docker部署

  • 拉取仓库,注意这里创建了一个文件夹~/alist,用于管理配置文件

    cd ~
    mkdir alist
    su <username>
    sudo docker run -d --restart=always \
    -v <path>/alist:/opt/alist/data \
    -p 5244:5244 \
    --name="alist" \
    xhofe/alist:latest
    
  • 修改密码

    sudo docker exec -it alist ./alist admin random
    

    会产生一个随机临时密码,登陆后修改密码即可

  • 下载cloudflared

    wget https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64 -O cloudflared
    sudo mv cloudflared /usr/local/bin/
    sudo chmod +x /usr/local/bin/cloudflared
    cloudflared --version
    
  • 登录同上,此时cert.pem会创建在~/.cloudflared

    cloudflared tunnel login
    
  • 创建隧道同上

    cloudflared tunnel create <tunnel_name>
    
  • 创建~/.cloudflared/config-alist.yml

    tunnel: <alist-tunnel-ID>  # 创建隧道时生成的隧道ID
    credentials-file: /home/<username>/alist/xxx.json  # 隧道凭据文件的绝对路径
    
    ingress:
      - hostname: alist.example.com  # 你的域名
        service: http://localhost:5244  # 本地服务地址
      - service: http_status:404  # 未匹配时返回 404
    
  • 重启服务

    sudo cloudflared tunnel --config ~/.cloudflared/config-alist.yml run <tunnel_name>
    
  • 如果出现以下警告

    2024-12-24T02:24:10Z WRN The user running cloudflared process has a GID (group ID) that is not within ping_group_range. You might need to add that user to a group within that range, or instead update the range to encompass a group the user is already in by modifying /proc/sys/net/ipv4/ping_group_range. Otherwise cloudflared will not be able to ping this network error="Group ID 0 is not between ping group 1 to 0"
    2024-12-24T02:24:10Z WRN ICMP proxy feature is disabled error="cannot create ICMPv4 proxy: Group ID 0 is not between ping group 1 to 0 nor ICMPv6 proxy: socket: permission denied"
    

    这个警告不影响tunnel运行,可以通过修改系统配置以扩大允许的 ping_group_range 范围,可以输入下面命令

    echo "0 2147483647" | sudo tee /proc/sys/net/ipv4/ping_group_range
    
  • 去Cloudflare官网migrate

  • 测试发现正常可用,则为alist创建一个systemd自动服务和后台运行,创建systemd单元文件

    sudo nano /etc/systemd/system/alist.service
    
  • 填写以下内容

    [Unit]
    Description=Cloudflare Tunnel for Alist
    After=network.target
    
    [Service]
    ExecStart=/usr/local/bin/cloudflared tunnel --config /home/kyxie/alist/config-alist.yml run <tunnel-name>
    Restart=always
    User=<username>
    Group=<username>
    
    [Install]
    WantedBy=multi-user.target
    
  • 启动服务

    sudo systemctl daemon-reload
    sudo systemctl start alist
    
  • 设置开机自启

    sudo systemctl enable alist