TechMoon 科技月球
WordPress、SEO 與 AI 工具實測指南
TechMoon 科技月球
WordPress、SEO 與 AI 工具實測指南

go-drive 是 MIT 開源的自架檔案伺服器,一支執行檔把本地磁碟與 FTP、S3、OneDrive 等儲存掛成同一棵目錄樹,權限可以逐路徑設定,還能開匿名上傳端點與排程工作;介面目前只有英文、韓文與簡中,沒有繁體中文。
用 AI 摘要這篇文章:
很多人手上的檔案早已散落在好幾個地方:NAS 或外接硬碟、公司或學校的 FTP、一個 S3 物件儲存、OneDrive、Google Drive,外加臨時跟人合作時開的 WebDAV 空間。每個服務都有自己的網頁與 app,唯獨沒有一個地方能把它們當成同一台機器的資料夾來操作;更麻煩的是想開給家人或同事用時,幾乎不可能只開放某個資料夾的讀寫權限。
go-drive 是一個用 Go 寫的開源專案,採 MIT 授權,做的事情可以用一句話講完:你自己架一台檔案伺服器,把上述這些儲存掛載到同一棵虛擬目錄樹,再用帳號與路徑規則決定每個人能讀、能寫哪些部分。專案從 2020 年 4 月開始累積,到 2026 年 9 月初仍有程式碼推送,最新穩定版 v0.16.1 於 2026 年 8 月 20 日發布。自架工具是要長期持有的軟體,這些數字值得先看。

go-drive 打包成單一執行檔,內建網頁介面,預設監聽 8089 埠。官方建議用 Docker 跑:映像檔 devld/go-drive,把資料綁在容器的 /app/data,映像檔裡連 ffmpeg 與 libvips 都備好了,所以縮圖與影片截圖功能裝好就能用。不想用 Docker 的人,Releases 頁也提供 Linux 與 Windows 的預編譯二進位檔。資料庫預設 SQLite,需要時可改用 MySQL。
它跟一般「雲端硬碟聚合」工具差別最大的地方,在權限的設計。官方文件把存取控制分成兩塊:一塊是「可見根路徑」,決定某個帳號登入後看到哪一棵子樹,這層只改變看得到的入口,本身不授予任何讀寫權;另一塊是路徑級的讀寫規則,可以對任何一個資料夾或檔案,分別指定 ANY(所有人,包含未登入的訪客)、某個使用者或某個群組能讀還是能寫。同一層規則裡拒絕優先於允許,使用者規則優先於群組,群組優先於 ANY;把某個儲存掛載到新路徑後,權限會在新位置重新套用,原位置的規則並不會跟著搬過來。
實際使用的樣子大概像這樣:把 S3 bucket 掛在 /backup,OneDrive 掛在 /team,舊機器的 FTP 掛在 /legacy,本機磁碟掛在 /media。你自己用 admin 帳號看到整棵樹;家人帳號的可見根路徑設成 /media,再給 /media/相片 ANY 唯讀規則,於是不用登入也能翻相簿,但動不了其他任何東西。同一套規則也能反著用:開放整個 /team 給群組讀取,再對 /team/薪資表單獨加一條拒絕規則,因為同層拒絕優先,清單再怎麼設都不會把那個資料夾漏出去。管理人員則另外有 LDAP 與 LDAPS 的帳號整合,企業環境裡第一次登入會自動建立對應使用者。
另外幾個跟日常操作有關的能力,官方文件與 README 都有交代:上傳走分片,傳輸中斷的任務能夠接著傳完;下載可以把多個檔案打包成 zip 一次帶走;搜尋可選擇建立檔名索引,讓整棵樹的搜尋不必逐碟翻找;網頁介面本身附圖片畫廊、音訊與影片播放器、PDF 檢視,文字與程式碼檔案可以直接在瀏覽器裡開編輯器改。這些零零碎碎的功能單獨看都不稀奇,湊在一起的意思是:它想讓你在瀏覽器裡完成大部分檔案工作,下載連結只是附帶產物。
內建的儲存類型有本地磁碟、FTP、SFTP、WebDAV、S3(含相容服務)、OneDrive 與 Google Drive。原始碼裡 OneDrive 還內建了中國世紀互聯版端點的選項,側寫出這個專案一部分使用者來自哪裡。至於 Dropbox、七牛與 GitHub 儲存庫,走的是另一條擴充路線,下面會講。
官方 demo 站正好把這套權限模型攤在公開網路上。打開首頁不用登入,介面右上有登入鈕與首頁鈕,搜尋列寫著「Search Files…」,檔案區列出根目錄的三個項目:一個 local 資料夾、一個開放所有人上傳的「公共可寫」資料夾(demo 上以簡體字標示),加上 README.md,側邊還浮著目前版本 v0.16.1 的資訊卡。2026 年 9 月 9 日,我用未登入的匿名身分直接呼叫它的列目錄 API:回應的 JSON 裡每個項目都帶 writable 旗標,公共可寫資料夾是 true,其餘全部是 false。走進那個資料夾,內容是幾年來訪客上傳的檔案,時間從 2020 年 12 月一路到 2026 年 7 月,有圖片、壓縮檔也有試算表;而 demo 根目錄 README.md 的更新時間,就是同一天早上。這些堆了好幾年的訪客檔案,本身就是「任何人都能寫進這個資料夾」最有說服力的證據。

這就是 ANY 規則的實際長相:匿名訪客預設什麼都不能寫,管理者另外指定一個資料夾開放所有人上傳。我也試了直接抓檔案:不帶簽章的下載請求會被伺服器拒絕。對照官方安全文件,檔案與縮圖連結都走簽章,預設效期 12 小時;列目錄則是公開的。這也代表一件事:若把服務開上網路並讓匿名者可見,目錄結構本身就是公開資訊,要不要走到這一步,應該在架設當下就刻意決定好。
一個是 WebDAV,而且是雙向的:你可以把別的 WebDAV 空間掛進來當後端,也可以把自己整棵樹用 WebDAV 協議開出去,手機上的檔案 app、播放器或備份軟體都能直接連。官方文件特別提醒,設定裡的 web-dav.allow-anonymous 只控制 WebDAV 要不要收匿名請求,路徑權限照樣生效,兩件事是分開判斷的。
再來是 File Buckets,官方給它的定位是自架圖床。建立一個 bucket 指向某個路徑後,上傳端點是 POST /f/<bucket>?t=<上傳金鑰>,全程不需要使用者帳號,任何知道金鑰的程式都能丟檔案進來,回應會附上下載網址;下載端則完全公開。每個 bucket 可以設檔案大小上限、類型白名單與 Referer 許可清單,文件也老實說明 Referer 可以被偽造,只能當粗略過濾,不該當認證用。自己寫筆記 app 或小工具需要一個收圖的端點時,這比開整個帳號安全得多。
還有排程工作。觸發方式有兩種:標準五欄 cron,或檔案事件(用路徑模式比對檔案的更新與刪除)。動作有四類:複製搬移、刪除、把多個步驟串起來的 Flow,以及能在腳本裡呼叫 cp、mv、ls 與 HTTP 請求的 JavaScript。跨儲存的搬運如果來源端不支援原生複製,資料會流經伺服器本身,這點在規劃大量搬移時要先算進頻寬。文件也警告:工作腳本擁有根目錄存取權與對外連網能力,本質上是受信任的管理者程式,來路不明的腳本不要裝。
Script Drive 是 go-drive 的擴充機制:儲存後端用 JavaScript 寫,在管理介面的「Other Drives」頁刷新擴充庫、挑一個安裝,之後在掛載頁面就能選它當儲存類型,全程不必重新編譯整個程式。預設擴充庫就放在專案 repo 的 script-drives 目錄,目前有 Dropbox、七牛與 GitHub 儲存庫(唯讀,支援私有 repo)三個;來源也可以換成任何回傳 JSON 清單的網址,自己部門內部的儲存服務照這個格式包一層就能掛進來。這套機制適合有 HTTP API 的儲存服務,SMB、SFTP 這類協議型儲存仍然要靠內建的 Go 實作。
代價是這個介面還在劇烈演進。v0.15.1(2026 年 8 月 16 日)把 Script Drive 遷移到新的 adapter API,四天後的 v0.16.1 又重建了一次設定與更新流程,兩版的 release notes 都明寫:已安裝的舊腳本必須更新才能繼續用。對依賴第三方腳本的人,這是實實在在的升級成本;換個角度看,這也是專案目前開發力氣放最多的地方,機制還沒定型。
官方安全文件的清單裡,最前面的兩項都跟第一天有關:首次啟動的預設帳號是 admin、密碼 123456,登入後立刻改掉;free-fs 維持預設的 false,除非你明確要讓管理者掛載主機上任意絕對路徑,在容器裡打開這個選項,等於把整台主機的檔案系統暴露給管理介面。其他值得知道的預設:檔案與縮圖連結的簽章效期 12 小時;同一來源 IP 在五分鐘內登入失敗五次會被暫時封鎖,伺服器回 HTTP 429;文件強調對外應該走 HTTPS 反向代理,別讓 8089 埠直接見光,反向代理的信任設定也要正確,否則失敗封鎖會算錯對象。
介面語言是安裝前要先確認的事:語言檔只有英文、韓文與簡體中文三份,沒有繁體中文。功能不受影響,但管理者介面得挑英文或簡中來用,要是介面文字讀起來卡,這台伺服器你會天天開,先確認自己能接受再裝。 打算開放匿名存取的話,文件給的驗收順序值得照做一遍:先把匿名帳號的可見根路徑限制在要開放的那棵子樹,給 ANY 唯讀規則,對敏感路徑另外加拒絕規則,然後用未登入的瀏覽器實測列目錄、檔案內容、縮圖、搜尋與 WebDAV 五件事。管理員看到的畫面跟訪客不同,這個檢查不能用自己登入的視窗省略。
如果需求是「把很多雲端硬碟列成一個清單,點開直接看檔案與下載連結」,站上之前介紹過的 AList 已經把這件事做得成熟,圍繞雲端硬碟分享連結的搜尋工具(例如pansou)也自成一個小生態。go-drive 的重心在後半段:多帳號、群組、逐路徑的讀寫邊界、LDAP、排程與匿名上傳端點,比較接近一台給家庭或小團隊共用的檔案伺服器,雲端硬碟掛載只是它的一部分能力。
判斷的方法很簡單,看你要不要「交出帳號給別人用」。只有自己一個人用,AList 或各家官方工具多半夠了;一旦要開帳號給家人、同學或同事,開始出現「這個人只能看這個資料夾」「那個資料夾誰都不能動」的需求,才會需要 go-drive 這種把權限當第一級公民的設計。兩者也可以並存:AList 當瀏覽門面,go-drive 當權限與自動化的後台。
如果你的情境只是偶爾把檔案交給別人,用完就丟,臨時傳檔類的工具(像之前介紹過的取文件 quwenjian)或把檔案加密封裝後寄存在圖床空間的 MixFile,都比自架一台伺服器輕得多。會需要 go-drive 這一級方案的,是那種要常駐、要多人各看各的、要把好幾種儲存來源掛在一起長期管理的情境。
照官方文件的路徑,流程很短:docker run 起一個容器並把 /app/data 綁到固定磁碟區,瀏覽器打開 8089 埠,用 admin 登入後先改密碼,接著掛第一個本地磁碟試試上傳下載,最後挑一個資料夾加上 ANY 唯讀規則,用無痕視窗驗證匿名訪客真的只能讀。文件站也把後續會遇到的事寫成了專頁:升級、備份與還原放在同一頁講,反向代理的設定(包含路徑與標頭的注意事項)另有一頁;資料庫與檔案內容都在那個 data 磁碟區,自訂過的 config.yml 記得一起帶走。懶得動手的人,直接去官方 demo 逛一圈也能看出介面順不順眼、術語對不對得上自己的用法。
專案規模順便附上:截至 2026 年 9 月 9 日,GitHub 上 803 顆星、73 個 fork、616 次 commit,Docker 映像檔累計約 1.5 萬次拉取。以自架檔案伺服器這個品類來說,這是個小而持續的專案,不是有公司撐腰的產品;MIT 授權讓商業使用沒有額外負擔,但遇到問題時,能依靠的主要是文件與 issue 區。這個前提想清楚了,go-drive 提供的東西其實相當完整。