直接用 alist serve 启动后访问不了 Web 界面,因默认监听 127.0.0.1:5244;需改 conf.yml 中 address 为 0.0.0.0:5244,或加 --address 参数,开放防火墙端口,并在 Nginx 反代时正确设置 Host 和 X-Real-IP 头。

为什么直接用 alist serve 启动后访问不了 Web 界面?
默认配置下 alist 只监听 127.0.0.1:5244,外部机器或域名反代时会连接拒绝。必须显式修改监听地址和端口。
- 编辑配置文件
~/.alist/conf.yml(首次运行后生成),把address:改成0.0.0.0:5244 - 若使用 systemd 服务,需在
ExecStart=行末加--address 0.0.0.0:5244 - 防火墙要放行对应端口:
sudo ufw allow 5244或sudo firewall-cmd --add-port=5244/tcp --permanent - Nginx 反代时,
proxy_set_header Host和proxy_set_header X-Real-IP必须带上,否则登录页可能无限重定向
挂载阿里云盘提示 invalid refresh token 怎么办?
阿里云盘的 refresh token 有效期约 30 天,且每次调用 /token/refresh 后旧 token 失效。Alist 不自动轮换,手动更新容易漏掉。
- 优先用扫码登录(
alist admin→ “添加存储” → 阿里云盘 → 扫码),比填 token 更可靠 - 如果必须用 token,从 Alist 后台“存储”页点击对应条目右侧的
编辑,只改refresh_token字段,其他字段(如client_id)别乱动 - 不要复用从其他项目(比如 alist-web、rclone)里抄来的 token —— 阿里云盘对 client_id 绑定严格,错一个就报
invalid_client - 挂载后立即点“测试连接”,失败时看日志:
journalctl -u alist -n 50 -f,重点找含alipan和token的行
挂载多个 OneDrive 时如何避免 drive_id 冲突?
Alist 对每个 OneDrive 存储实例要求唯一 drive_id,但用户自己无法指定;它由 Alist 在首次认证时自动获取并缓存。重复添加会导致后一个覆盖前一个的 drive_id,引发列表为空或 404。
- 每个 OneDrive 账号必须用独立浏览器无痕窗口完成授权,禁止共用同一浏览器 session
- 添加第二个账号前,先在 Alist 后台删掉第一个账号的存储项,再清空浏览器缓存(尤其要删
localhost:5244下的 LocalStorage) - 更稳妥的做法:为每个账号单独建个配置目录,启动时用
ALIST_DATA_DIR=/opt/alist/od-user1 alist server隔离元数据 - 挂载路径建议按账号区分,例如
/onedrive-personal和/onedrive-work,避免前端路由混淆
WebDAV 挂载到本地后中文文件名显示为乱码或 400 错误
本质是编码协商失败。Alist 默认返回 UTF-8 编码的响应头,但部分 WebDAV 客户端(如 macOS Finder、rclone mount)仍按 ISO-8859-1 解析路径,导致解码错位。
- Linux 下用
curl -X PROPFIND http://localhost:5244/your-path/看响应头是否含Content-Type: application/xml; charset=utf-8 - macOS Finder 挂载时,在 URL 末尾加
?encoding=utf-8(如dav://your-domain.com/?encoding=utf-8) - rclone 挂载需显式指定
--vfs-cache-mode writes并加参数--webdav-server-encoding=utf-8 - Windows 资源管理器不支持 UTF-8 路径,建议改用 RaiDrive 或 Cyberduck,它们内置编码自动探测











