故障排除

常见问题与解决办法。

本页内容
  1. 忘记管理员密码
  2. docker exec thirtyfile sh 无法运行
  3. 管理员丢失了手机和恢复码
  4. 分享链接以 http://127.0.0.1:8080 开头
  5. 刚登录就退出了
  6. 所有人都看到“失败尝试过多”
  7. 大文件上传失败
  8. 启动时显示“Permission denied”
  9. 查看日志
  10. 检查运行状态
  11. 检查已存储的文件
  12. 文件如何受到保护
  13. 仍然无法解决?

忘记管理员密码

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

在控制面板 › 常规 › 网站地址中设置大家实际访问的地址。

刚登录就退出了

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。以下两种情况无法完成:

查看日志

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 才能确认磁盘内容仍与上传时相同。

文件如何受到保护

仍然无法解决?

请在 GitHub 报告问题,说明操作过程、预期结果和实际发生的情况。