OpenCloud 自架雲碟 Nextcloud 替代 Go 檔案同步

OCIS 原班工程師整批跳到 OpenCloud:自架雲碟這條路線,這次用 Go 重新走一遍

2025 年 1 月,寫出 ownCloud Infinite Scale 的工程師整批離開 Kiteworks,在柏林 Heinlein 旗下成立 OpenCloud。本文解析它的 Go 微服務架構、無資料庫設計、與 Nextcloud 的取捨,以及在 VPS 上部署的實務考量。

自架雲端硬碟這件事,過去十年的答案幾乎只有一個:Nextcloud。它能跑、社群活躍、app store 裡什麼都有,但代價也很實在——一支 PHP 巨石應用、外加 MariaDB 或 PostgreSQL、外加 Redis 快取,閒置狀態就把一臺 2GB VPS 吃掉一半。對只想找個地方同步家裡那臺 NAS 跟手機照片的使用者來說,這個門檻不低。

OpenCloud 是 2025 年才出現的另一個選項。它從 ownCloud Infinite Scale(OCIS)分叉而來,用 Go 寫、不需要資料庫、把整個雲碟拆成幾十個 gRPC 微服務。背後的故事比技術細節更值得先講:寫出 OCIS 那批工程師,2025 年 1 月整批離開了 ownCloud 的母公司 Kiteworks。

為什麼 OCIS 的人會走

ownCloud 在 2023 年被資安公司 Kiteworks 併購。對外的說法是「強化企業安全產品線」,對內的氣氛則完全不同——根據 heise 報導,原 ownCloud 的員工事後匿名表示,併購之後管理風格轉向,Kiteworks 沒有對 OCIS 的長期投入做出具體承諾,而 OCIS 是這群工程師花了好幾年才從 PHP 重寫到 Go 的核心產品。

2025 年 1 月 22 日,OpenCloud GmbH 正式營運,創辦團隊大約十五位前 OCIS 工程師,全數加入柏林老牌開源服務商 Heinlein Group 旗下。這群人原本就是 OCIS 程式碼最熟的人,分叉出來之後等於把整條 Go 重寫的核心知識帶離原公司。Kiteworks 隨即放話要採取法律行動,但到 2026 年中,威脅並沒有實質落地,反而是 Kiteworks 自己在 5 月成立了 OSPO,把 ownCloud 旗下超過一百個專案改授權成 Apache 2.0,看起來像是被社群輿論逼著轉向。

對使用者要評估的事情很單純:OCIS 與 OpenCloud 在程式碼層面有共同起點,但接下來的方向會分開走。從 commit 活躍度與 release 節奏來看,OpenCloud 那一側的迭代速度明顯更快。

沒有資料庫的雲端硬碟

OpenCloud 在架構選擇上最違反直覺的一點是:沒有資料庫。

Nextcloud 的所有 metadata——誰擁有哪個檔案、誰把哪個資料夾分享給誰、版本歷史、活動紀錄——都塞在 MariaDB 或 PostgreSQL 裡。檔案內容放在磁碟、metadata 放在資料庫,兩邊要持續同步,備份時兩邊都要備、還原時也得確保時間點一致。檔案數量上去之後,光是 oc_filecache 這張表就能膨脹到幾十 GB,資料庫的查詢效能變成系統瓶頸。

OpenCloud 用兩個叫做 PosixFS 與 DecomposedFS 的儲存驅動把這件事拆掉。PosixFS 直接把檔案以使用者在介面上看到的目錄結構寫到磁碟,連 metadata 也是用副檔案的形式存在同一個資料夾——.foo.txt.metadata 之類的伴生檔。DecomposedFS 則是另一種路線:用內容定址的方式拆解儲存,blob 跟 metadata 分離,可以把 blob 部分接到 S3 後端(也就是 DecomposedS3 驅動),讓真正的檔案內容放在物件儲存上,metadata 留在本地。

實務上的差別是備份這件事突然變簡單。tar 整個資料目錄、restic 增量備份、rsync 到異地——任何一種檔案層級的備份方案都能直接用,不用先 pg_dump 再煩惱資料庫快照與檔案系統快照的時間點是否一致。對自架在 VPS 上、只有一個人在維運的場景,這個改變很有感。

Go 微服務不只是宣傳詞

OpenCloud 把整個服務拆成大約三十個獨立的微服務:身分驗證、權限檢查、Web 介面、WebDAV、搜尋索引、縮圖產生、防毒掃描,每個都是獨立的 Go 程序,內部用 gRPC 通訊。預設模式下這些微服務全跑在同一支 opencloud binary 裡,由內建的 supervisor 啟動成不同的 goroutine。

這個設計的好處是延展性。當使用者數量大到單機撐不住的時候,可以把吃資源的服務——例如 thumbnails、search 或 antivirus——拆到另一臺機器跑,前面的服務發現會自動把流量導過去。Nextcloud 在這個層面只能靠橫向擴展整支 PHP 應用,配合 Redis cluster 跟外接資料庫複本,整個拓樸複雜得多。

對只想跑個十幾人團隊的場景,分散式部署的能力用不上,但 Go 的記憶體效率還是體現得出來。OpenCloud 在小型部署的閒置 RAM 大約落在 400 到 600MB,Nextcloud 加 PHP-FPM 加 MariaDB 加 Redis 通常要 1.5GB 起跳。

底層的 gRPC 通訊框架沿用了 CERN 主導的 REVA 專案——這是 CS3(Cloud Storage Services for Sync and Sharing)這套 API 規範的參考實作。OCIS 當年選 Go 重寫的時候就用了 REVA,OpenCloud 把它一起帶過來並繼續維護。這意味著 OpenCloud 跟 Nextcloud 在 EU 學研機構主導的開源檔案儲存生態圈裡是同一條船上的,不是孤立分叉。

該選 OpenCloud 還是 Nextcloud

Nextcloud 的優勢非常清楚:app store 裡有幾百個外掛、能直接當作 Google Workspace 的替代品、行事曆與聯絡人與 Talk 視訊與筆記與 Deck 看板全都整合好。對一個想徹底擺脫 Microsoft 365 或 Google Workspace 的小型團隊,Nextcloud 還是目前唯一能撐住整個工作流程的方案。

OpenCloud 不打算往這個方向走。它的定位回到「把檔案管理跟分享這件事做好」,行事曆跟聯絡人用獨立的 Radicale 容器處理、文件編輯接 Collabora Online、全文搜尋接 Apache Tika,這些功能都不在主程式裡。對單純想要一個「家庭照片同步 + 跟外部分享連結 + 偶爾在瀏覽器裡編個文件」的使用者,這個取捨剛好對:少裝一堆用不到的東西,主程式更輕、升級更快、出問題更好除錯。

爭議點落在文件協作上。Nextcloud 內建 Office 整合(OnlyOffice 或 Collabora),文件直接在介面裡開、即時多人協作就能用。OpenCloud 也支援 Collabora,但需要自己另起一個容器、設好 WOPI 路由,部署時得多一些設定。對團隊協作場景,Nextcloud 還是省事;對個人或家庭使用,OpenCloud 反而比較適合 VPS 的記憶體預算。

那種「兩個都試試看再決定」的建議在這裡不適用。要做的判斷其實只有一個:「需不需要 app store 裡那一堆功能」。答案是的話選 Nextcloud,不是的話 OpenCloud 在資源、效能、備份維運上都明顯領先。

部署到 VPS 上的實務細節

官方提供的 opencloud-compose 倉庫把整套 stack 包成 Docker Compose,包括 Traefik、Keycloak、Collabora、Tika、ClamAV、Radicale。對中小型部署,建議只挑必要的元件起來——Traefik 跟 OpenCloud 本體幾乎不能少,Keycloak 可以用內建的 LibreGraph Connect 取代,Collabora 跟 ClamAV 如果用不到先關掉。

記憶體規劃上,2GB VPS 跑得起來但會有點吃緊,建議從 4GB 起跳;如果同時要開 Collabora Online,記憶體至少 6GB——Collabora 自己一個容器空閒就 800MB 到 1GB。

儲存層的 IOPS 比容量更重要。OpenCloud 在 PosixFS 模式下會頻繁讀寫小型 metadata 檔,傳統機械硬碟的 OLTP 性質負載撐不住,建議只跑在 NVMe SSD 上。如果是要存大量照片或影片但磁碟不夠,DecomposedS3 把 blob 接到 S3 後端是合理的設計——前面接 Garage 或 MinIO 替代品都行,metadata 留本地、blob 推到物件儲存。

外部反向代理建議直接用 Caddy 或 Traefik 自動處理 TLS 憑證。Nginx 也可以,但 OpenCloud 的 WebSocket 跟 gRPC 流量得手動調 timeout 跟 buffer,比較囉嗦。

什麼情況不該選 OpenCloud

2026 年中的時間點,OpenCloud 仍然是一個年輕專案,不適合幾種場景。

需要既有 Nextcloud 外掛的——例如 Nextcloud Talk、Deck、Notes、Forms——OpenCloud 沒有對應品。要等社群把這些功能補齊,短期內看不到。

組織規模超過幾百人、需要正式 SLA 跟商業支援的——Heinlein Group 雖然有提供商業合約,但相較 Kiteworks 旗下的 ownCloud 與 Nextcloud GmbH,市佔率跟服務網路規模都還小。法務團隊要審第三方廠商風險時,這個維度通常過不去。

希望大量重用既有 LDAP/AD 整合設定的——OpenCloud 用 OpenID Connect 為主,雖然可以透過 Keycloak 接 LDAP,多了一層元件要維護。原本就跑 Nextcloud 加 LDAP 的環境直接遷移意義不大。

剩下的場景——個人雲端、家庭使用、十人以下小團隊、把 S3 後端接到自架物件儲存的中等規模部署——OpenCloud 在資源效率與架構乾淨度上的優勢足以讓它成為新建置時的首選。

自架雲碟的選擇終於不只一條

自架雲端硬碟這個賽道過去十年沒怎麼變過:Nextcloud 一家獨大、Seafile 守著「同步速度快」的差異點、ownCloud Infinite Scale 的 Go 重寫雖然進度不錯但長期方向不明。2025 年 OCIS 原班人馬整批跳到 OpenCloud,把這條路線重新清出來,等於替自架族群多了一個架構選擇——不再只是「PHP 還是 PHP」的二選一。

要把 OpenCloud 跑得順,底層 VPS 的 NVMe 效能跟記憶體預算都得算到位。NCSE Network 在臺灣是方電訊機房提供 Intel Gold CPU 與 NVMe SSD 的 VPS 方案,對這類自架雲碟負載的 IOPS 跟低延遲需求相對合適,需要 6GB 以上記憶體跑完整 OpenCloud + Collabora 組合的使用者,可以參考 ncse.tw 上的 VPS 規格選擇。

需要穩定的雲端主機?

NCSE Network 提供企業級 VPS,7 天免費試用,臺灣是方電訊機房,99% SLA 保證。

查看 VPS 方案 →