疑難排解
常見問題與解決辦法。
本頁內容
忘記管理員密碼
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 回報問題,說明操作過程、預期結果和實際發生的情況。