Header
以下是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