故障排除
常见问题与解决办法。
本页内容
忘记管理员密码
docker exec -it thirtyfile thirtyfile reset-password admin
按提示输入新密码,避免密码留在 shell 历史中。如果账号已禁用,此操作也会重新启用账号。
docker exec thirtyfile sh 无法运行
镜像仅包含 ThirtyFile 本身,没有 shell 或其他程序,减少需要维护更新的组件。ThirtyFile 命令可按指南所示执行,例如 docker exec thirtyfile thirtyfile reset-password …。查看文件时,请使用宿主机上的 data 和 storage 文件夹,或 docker cp。
管理员丢失了手机和恢复码
其他管理员可在控制面板 › 用户中重置。如果没有其他管理员,请在服务器上关闭:
docker exec thirtyfile thirtyfile reset-two-factor admin
分享链接以 http://127.0.0.1:8080 开头
在控制面板 › 常规 › 网站地址中设置大家实际访问的地址。
刚登录就退出了
THIRTYFILE_SECURE_COOKIE 设为 true,但网站使用 http:// 打开。请通过 https:// 访问;如果不使用 HTTPS,则设为 false。
所有人都看到“失败尝试过多”
使用反向代理时,THIRTYFILE_TRUST_PROXY 必须设为 true(代理运行在另一台电脑时,需列出其地址),代理也必须按示例转发访客地址,否则所有人都会被视为同一访客。
限制会在 15 分钟后自动解除。
同一账号从任何地址累计多次密码错误后,每次重试都需等待更长时间,最长一分钟。账号本身永远不会被锁定。
大文件上传失败
遇到 413 错误时,同时检查 THIRTYFILE_MAX_UPLOAD_MB 和反向代理的请求大小限制。浏览器使用 32 MB 分块上传;请像 nginx 示例一样允许每次请求至少 64 MB。WebDAV 一次请求发送完整文件,需设置足够容纳该文件的请求限制;参阅 WebDAV 故障排除。还需检查空间配额和存储剩余容量。
启动时显示“Permission denied”
容器启动时会把文件夹交给用户 1000。以下两种情况无法完成:
- 使用
--user启动容器。请让文件夹对该用户可写:sudo chown -R 1000:1000 /srv/thirtyfile,将 1000 替换为实际用户编号。 - 文件夹位于不允许修改所有者的网络共享中。日志会显示 Can't give the folder … to user。将
THIRTYFILE_RUN_AS设为共享文件的所有者用户与用户组,例如1026:100。
查看日志
docker logs --tail 100 thirtyfile
检查运行状态
http://files.example.com:8080/api/health 返回服务器状态:"status": "ok";当 /data 或 /storage 剩余容量不足 1 GB、存储位置不可达,或过去一天内有后台任务因错误停止而重新启动(日志会写明是哪一项)时,返回 "degraded"。它还列出两个文件夹的剩余和总容量,以及各存储位置的 ok 或 offline 状态,便于监控工具在磁盘用满前告警。上传和通过 WebDAV 发送的文件会先存入 /data,若存入后 /data 剩余不到 64 MB,就会拒绝接收。请配置监控检查 JSON 的 status:降级健康状态仍返回 HTTP 200。数据库检查失败则返回 HTTP 503 和 "status": "error"。Docker 健康探针接受 HTTP 200,所以剩余空间不足或存储位置离线本身不会导致容器重启。降级状态的日志警告每小时最多记录一次。
只有在服务器本机发出(不经反向代理)的请求,以及已登录的管理员,才会看到这些详细信息。其他人只会看到 status。
任何人都可查询此端点,所以它不显示版本,避免陌生人据此查找已知漏洞。登录后可从账号菜单最后一行查看,例如 ThirtyFile 0.5.0。管理员也可在控制面板右下角查看,点击可打开该版本说明。在服务器上运行 docker exec thirtyfile thirtyfile --version 可输出版本。
检查已存储的文件
如需检查数据库中的每个文件是否仍位于存储位置,以及存储位置是否包含数据库未知的文件(例如手动留下的文件),请运行:
docker exec thirtyfile thirtyfile check
命令会列出每个存储位置中缺失、大小错误和未知的文件,发现问题时以状态码 1 退出。未知文件永远不会删除。添加 --verify 会读取每个文件,并将内容与指纹(SHA-256)比较,耗时相当于读取全部数据。文件夹空间不在检查范围内:其中是磁盘上的普通文件。
指纹在上传过程中计算,即使上传暂停或 ThirtyFile 重启也会继续,因此大文件上传完成时不需要再次读取整个文件。之后使用 --verify 才能确认磁盘内容仍与上传时相同。
文件如何受到保护
- 密码、应用密码、恢复码和登录会话均以无法还原读取的形式存储。
- 可以要求所有使用密码登录的人开启两步验证。
- 应用密码仅访问文件,无法访问账号设置或控制面板。参阅你的账号。
- 上传的文件不能在网站上执行脚本。
- 创建者失去项目访问权限后,分享链接随即失效。
- 重复的错误登录密码和应用密码尝试会被阻止 15 分钟。
仍然无法解决?
请在 GitHub 报告问题,说明操作过程、预期结果和实际发生的情况。