Nextcloud 替代方案:值得自行代管的選擇
依需求比較 Nextcloud 替代方案:僅檔案同步、較輕量伺服器、搭配用戶端的物件儲存,或單純 SFTP,並說明資料夾移轉成本與小型 VPS 資源取捨。
值得自行代管的 Nextcloud 替代方案有哪些?
值得執行的 Nextcloud 替代方案,是那些移除你從未使用之功能的方案。Nextcloud 將檔案伺服器、行事曆、通訊錄、辦公室套件與應用程式平台整合在單一 PHP 應用程式中,而每次載入頁面都必須承擔全部功能的成本。因此,請先列出仍需要的單一用途,再確認移轉現有檔案所需的成本。
本指南依用途整理各項選擇:僅同步、搭配更快速伺服器的同步、搭配用戶端的物件儲存,或單純的遠端檔案存取。各節會說明這些方案在小型 VPS(virtual private server)上需要的伺服器資源,以及現有資料夾結構會如何處理。如果你是從 Dropbox 或 Google Drive 轉移,而不是從目前已執行的 Nextcloud 主機轉移,請先參閱較完整的自行代管 Dropbox 替代方案整理。
為什麼 Nextcloud 在小型 VPS 上會變慢
變慢通常有明確原因。了解這些原因,才能判斷搬遷是否真的有幫助。
每次頁面載入都會佔用一個 PHP worker。 Nextcloud 的系統需求指出,每個 process 至少需要 128 MB 記憶體,建議使用 512 MB;截至 2026 年 8 月仍是如此。這不是整台伺服器的總需求。在 2 GB 方案上,10 個 worker 組成的 pool 就會佔用實際的記憶體預算。因此,管理員會降低 PHP-FPM pool 設定中的 pm.max_children,接著請求會在現有的 worker 後方排隊。此時磁碟可能處於閒置狀態,但介面仍會感覺緩慢。
資料庫大小取決於檔案數量,而不是位元組數。 在預設的 table prefix 下,檔案快取資料表 oc_filecache 會為伺服器知道的每個 storage 中的每個檔案與資料夾各儲存一筆資料。包含 300,000 個小檔案的相片資料庫會形成大型資料表;包含 400 個檔案、總容量 300 GB 的影片資料則會形成較小的資料表。分享、搜尋與檔案掃描器都會讀取這個資料表。
sudo mysql nextcloud -e 'SELECT COUNT(*) FROM oc_filecache;'資料筆數達到數百萬時,比任何磁碟效能測試更能解釋檔案清單載入緩慢的原因。如果執行個體使用不同的 table prefix,或使用 PostgreSQL,請調整查詢。
背景工作會與 Web 介面競爭資源。 Nextcloud 手冊建議加入 system cron,每 5 分鐘執行一次 cron.php。預覽圖產生與檔案掃描都會在同一個 CPU 上執行,並與提供瀏覽器請求的工作競爭資源。
重大升級會執行資料庫遷移。 執行個體會進入維護模式,並以 Nextcloud is in maintenance mode, please try again later 回應每個請求,直到遷移完成為止。在 oc_filecache 較大的小型 VPS 上,這段時間可能長到足以被察覺。
先決定要保留的功能
- 在自有的多台機器之間同步單一資料夾,且不需要 Web 介面:Syncthing。
- 供多人同步,並需要 Web 介面、行動用戶端及分享連結:Seafile。
- 以低成本儲存大量資料,並讓指令碼與備份工具存取:object storage 加上用戶端。
- 不安裝新的伺服器軟體,遠端讀寫檔案:SFTP 或 WebDAV。
- 在瀏覽器中共同編輯文件,或在人員之間共用行事曆:繼續使用 Nextcloud,或接受同時執行兩項服務。
Syncthing:不使用伺服器應用程式的檔案同步
Syncthing 會將檔案保留為一般檔案。它沒有內容資料庫,也沒有用來提供文件的網頁介面。加入資料夾的每台裝置都會保存完整副本,Syncthing 會讓這些副本保持一致。
sudo mkdir -p /etc/apt/keyrings
sudo curl -L -o /etc/apt/keyrings/syncthing-archive-keyring.gpg https://syncthing.net/release-key.gpg
echo "deb [signed-by=/etc/apt/keyrings/syncthing-archive-keyring.gpg] https://apt.syncthing.net/ syncthing stable-v2" | sudo tee /etc/apt/sources.list.d/syncthing.list
sudo apt-get update
sudo apt-get install syncthingsudo systemctl enable --now syncthing@$USER
sudo ss -lntp | grep 8384顯示 127.0.0.1:8384 表示網頁介面正在執行,且只繫結至 localhost;在公開 VPS 上應採用此設定。使用 SSH tunnel 連線:ssh -L 8384:127.0.0.1:8384 you@your-vps,然後在筆記型電腦上開啟 http://127.0.0.1:8384。若 8384 上沒有 listener,表示服務啟動失敗;journalctl -u syncthing@$USER -n 50 會說明原因。
資源。 Syncthing 沒有公布最低記憶體需求。它的資源用量取決於索引的檔案數量,而不是檔案總大小,因為每個共享資料夾中的每個檔案都會有一筆索引項目。大型資料夾的首次掃描會消耗 CPU:Syncthing 必須先對每個檔案計算雜湊,才能進行比對。在共享 vCPU 上,首次掃描可能需要一段時間;記憶體用量會隨檔案數量增加,而不是隨 GB 數增加。
磁碟才是真正的成本。 Syncthing 不是伺服器,因此不會在伺服器端保存單一份資料。VPS 與筆記型電腦共享 200 GB 資料夾時,兩端都需要 200 GB。這與 Nextcloud 相反:Nextcloud 將所有資料保存在伺服器上,由用戶端選擇要同步的內容。如果 VPS 的用途是備份目標而不是對等端,請使用選擇性資料夾,並在 VPS 上使用 receive only 資料夾。
選擇它的理由是遷移。 將 Syncthing 指向現有的目錄樹即可。不需要匯入、上傳或轉換。在 VPS 上新增資料夾,再以相同的資料夾 ID 在筆記型電腦上新增該資料夾,然後讓兩端逐步達成一致。如果兩端在首次連線時都存在同一檔案但內容不同,Syncthing 會保留兩個檔案,並將其中一個重新命名為 filename.sync-conflict-20260809-142530-ABCD123.txt。首次同步時看到這些檔案屬於正常情況,不代表同步失敗。
需要放棄的功能。 沒有帳戶、沒有可傳送給其他人的共享連結,也無法使用手機瀏覽器瀏覽檔案。原始 Android 應用程式已不再由專案本身維護,目前由社群 fork 延續維護;如果重點是行動裝置存取,這一點很重要。Syncthing 與 Nextcloud 的直接比較會逐項說明兩者的功能差異。
Seafile:以較輕量的伺服器實現快速同步
Seafile 將工作分成兩部分。名為 Seahub 的 Python Web 應用程式負責呈現介面,獨立的 C 程式則處理同步流量。檔案傳輸不會經過 Web 應用程式,因此即使其他人正在操作介面,大型上傳仍能維持速度。13.0 版於 2026 年 1 月 5 日發布。
sudo mkdir -p /opt/seafile
cd /opt/seafile
sudo wget -O .env https://manual.seafile.com/13.0/repo/docker/ce/env
sudo wget https://manual.seafile.com/13.0/repo/docker/ce/seafile-server.yml
sudo wget https://manual.seafile.com/13.0/repo/docker/seadoc.yml
sudo wget https://manual.seafile.com/13.0/repo/docker/caddy.yml開始前先編輯 .env。它會設定 SEAFILE_SERVER_HOSTNAME、INIT_SEAFILE_ADMIN_EMAIL、INIT_SEAFILE_ADMIN_PASSWORD、SEAFILE_MYSQL_DB_PASSWORD 和 JWT_PRIVATE_KEY;其中 JWT_PRIVATE_KEY 必須是至少 32 個字元的隨機字串。該檔案也會告訴 compose 要讀取哪些下載的 YAML 檔案,因此這 4 個下載項目會作為同一個 stack 運作。
cd /opt/seafile
sudo docker compose up -d
sudo docker compose ps每個容器都應回報執行中狀態。容器若持續重啟,幾乎總是因為 .env 缺少某個值,而 sudo docker compose logs seafile 會指出缺少的是哪一項。
資源需求。 截至 2026 年 8 月,Seafile 文件要求至少 2 GB RAM,以及時脈高於 2 GHz 的 2 core CPU。這應視為整個 stack 的最低需求,因為 Docker 部署還會啟動 MariaDB、Caddy 反向代理和 SeaDoc 編輯器。如果有超過 1 或 2 人使用,請配置 4 GB,或省略選用容器。
遷移時的關鍵問題是儲存格式。 Seafile 不會以檔案形式保存資料,而是將每個檔案切分成位於 /opt/seafile-data 下的區塊,並在資料庫中記錄其樹狀結構。你無法將 Seafile 指向現有目錄,讓該目錄直接顯示為 library,因此遷移到 Seafile 時,必須將所有資料完整上傳 1 次。同樣的設計也表示你無法使用 cp 直接取回資料:復原必須透過伺服器、使用 seaf-fsck 進行一致性檢查,或掛載唯讀的 seaf-fuse。
rclone 具備原生 Seafile backend,可將這次上傳轉換成 1 個可續傳的命令,不必長時間以拖放方式處理。
rclone config
rclone copy /srv/files seafile:MyLibrary --progressrclone 文件列出 Seafile 6.x 至 9.x 為已測試版本,因此請先對 1 個小型資料夾執行,確認結果後再傳送 1 TB 資料。
加密 library 是許多人選擇遷移的功能。密碼會在 client 中設定,伺服器只會儲存無法讀取的區塊。但有 1 項限制需要注意:在瀏覽器中預覽加密 library 的檔案時,該次工作階段會將密碼傳送至伺服器,因此瀏覽器預覽與零知識儲存無法同時成立。Seafile 與 Nextcloud 功能比較涵蓋其餘功能取捨。
在上層搭配同步用戶端的物件儲存
如果目標是以低成本儲存大量資料,並讓指令碼能夠存取,請執行相容 S3 的物件儲存服務,並將同步工作交由獨立工具處理。這樣可取得資料耐久性、版本控制,以及所有備份工具都支援的通訊協定。但這不是檔案伺服器,不會提供檔案伺服器式的使用者帳號,也不會提供使用者容易操作的檔案管理器。使用 MinIO 自架物件儲存說明伺服器端的設定。
rclone copy /srv/files s3remote:mybucket --progress
rclone check /srv/files s3remote:mybucketrclone check會依大小和雜湊值比較兩端,並列出不同的檔案數量。只要錯誤數不是零,就表示複製尚未完成,因此請在刪除來源前再次執行 copy。有兩點需要注意:物件儲存沒有目錄,只有索引鍵前綴,因此空資料夾不會在複製後保留;此外,同時提高 --transfers 與 S3 區塊大小會增加 rclone 的記憶體用量,因此在 1 GB VPS 上請保留兩者的預設值。
只需要遠端檔案時,使用 Plain WebDAV 或 SFTP
最便宜的替代方案通常是不新增任何元件。如果 VPS 執行 OpenSSH,您已經具備檔案伺服器。SFTP 不需要額外的 daemon、資料庫或 PHP,也不必進行可能在星期日造成故障的升級。
sftp you@your-vps
rclone mount sftpremote: ~/vps --vfs-cache-mode writes對於支援 WebDAV 的用戶端(包括大多數手機檔案管理器),可以使用 rclone 提供相同的檔案樹。
sudo apt install apache2-utils
sudo htpasswd -c /etc/rclone/htpasswd you
rclone serve webdav --addr 127.0.0.1:8080 --htpasswd /etc/rclone/htpasswd /srv/files將其繫結至 127.0.0.1,並在前方設定搭配 TLS(傳輸層安全性)的反向代理。WebDAV 基本驗證會在每個請求中傳送密碼,因此此處使用純 HTTP,代表每分鐘要多次傳送密碼。遷移成本為 0,因為檔案完全不必搬移。代價是沒有同步功能,也沒有離線副本:連線中斷時,檔案會從用戶端消失,直到連線恢復為止。
取代行事曆、聯絡人與文件編輯的方案
離開 Nextcloud 在這方面會有所取捨,因此應先釐清具體影響。行事曆與聯絡人使用 CalDAV 和 CardDAV(透過 HTTP 進行行事曆與聯絡人同步),Radicale 是精簡的替代方案。它會將每個集合儲存為磁碟上的檔案,執行時僅使用數十 MB 的記憶體。
sudo apt install radicale
sudo systemctl enable --now radicale
sudo ss -lntp | grep 5232此套件會提供 /usr/lib/systemd/system/radicale.service,以及位於 /etc/radicale/config 的預設設定檔,並監聽 localhost:5232。Radicale 沒有編輯事件的介面,因此請將手機或桌面用戶端指向 Radicale,並在用戶端中進行編輯。
瀏覽器文件編輯較難替代。OnlyOffice Docs 和 Collabora Online 都是編輯引擎,不是儲存系統;兩者都需要一個存放檔案並傳送文件給編輯引擎的主應用程式。移除 Nextcloud 後,您需要另一個主應用程式,例如搭配自有 SeaDoc 編輯器的 Seafile。OnlyOffice 與 Collabora 的比較會說明在決定主應用程式後,應選用哪個編輯引擎。
如果符合以下任一情況,請繼續使用 Nextcloud
- 多人共用同一個行事曆與通訊錄,且使用與檔案相同的帳號。
- 你需要在瀏覽器中編輯 Office 文件,並與其他人同時編輯同一份檔案。
- 你需要可設定到期日與密碼的個別檔案分享連結,以及群組權限。
- 使用者不熟悉技術,而且實際上使用的是行動應用程式。
這些工作沒有更精簡、又能一次完整處理所有需求的替代方案。與其放棄,不如修正現有安裝。多數效能緩慢的執行個體都使用預設的 PHP-FPM pool,且未設定記憶體快取。Nextcloud 的管理概覽頁面也會警告缺少快取。減少追蹤的檔案數量,比其他單一變更更有效,因為檔案快取資料表會持續增長。在 VPS 上使用 Docker、TLS 與備份安裝 Nextcloud 的設定方式可避免大多數這類問題。
實際的移轉成本:逐一比較各種選項
- Syncthing:不需要匯入。讓它在兩端指向現有的目錄樹,等待兩端內容同步收斂。
- SFTP 或 WebDAV 使用相同的目錄樹:完全不需要匯入,因為沒有任何資料需要搬移。
- Object storage:需要完整複製一次網路資料,可續傳並以指令碼執行;空資料夾不會保留。
- Seafile:需要完整上傳至 libraries,因為伺服器儲存的是區塊而不是檔案。
無論選擇哪個方案,都應先從 Nextcloud 取得一份乾淨的複本。使用者檔案以一般檔案形式存放在 data directory 下,每位使用者各有一個資料夾,因此 rsync 該目錄樹就是來源。複製前請先將 instance 設為 maintenance mode,否則複製到的檔案可能正處於寫入中。
sudo -u www-data php occ maintenance:mode --on
sudo rsync -a --info=progress2 /path/to/nextcloud/data/ /srv/files/
find /srv/files -type f | wc -l將這個數量與來源端相同的 find 進行比較。數量不足通常表示權限導致 rsync 無法讀取部分內容,而它會在執行期間列出這些錯誤。
複製過程有兩個常見陷阱。透過 Nextcloud 的 external storage 功能存取的檔案,完全不在 data directory 中,因為這些檔案位於 Nextcloud 設定使用的遠端系統上。如果曾啟用 server-side encryption,磁碟上的檔案會是 ciphertext,因此必須先執行 occ encryption:decrypt-all,再進行複製;否則搬移的會是一整個無法讀取的資料夾。取消任何操作前,請先確認這兩點。
FAQ
是否有能保留現有資料夾結構的 Nextcloud 替代方案?
Syncthing,以及任何純 SFTP 或 WebDAV 設定都可以。Syncthing 會為指定的目錄建立索引,並在每台裝置上保留相同的名稱與配置,因此不需要匯入或上傳。Seafile 和 object storage 都需要完整上傳一次,因為兩者都不會將資料儲存為一般目錄樹中的一般檔案。Seafile 會在其資料目錄下將檔案拆分為區塊,而 object storage 使用的是 key,不是目錄。
Seafile 能在 2 GB VPS 上執行嗎?
截至 August 2026,Seafile 文件要求至少 2 GB RAM,以及 2 GHz 以上的 2 core CPU。請將這視為沒有餘裕的最低要求,因為 Docker 部署還會在各自的容器中執行 MariaDB、Caddy 和 SeaDoc editor。單一使用者可以使用。若供家庭或小型團隊使用,請改用 4 GB,或從 stack 中移除 SeaDoc container,放棄在瀏覽器中編輯文件。
為什麼下載速度仍然很快,但我的 Nextcloud web interface 很慢?
因為兩條路徑執行的工作不同。下載會從磁碟串流傳送位元組;載入頁面則會執行 PHP、查詢 file cache table,並經常等待可用的 PHP-FPM worker。在歸咎於儲存設備之前,先計算 oc_filecache 中的資料列數,並檢查 PHP-FPM pool 中的 pm.max_children。包含數百萬筆資料列的 table,加上只有 five 個 worker 的 pool,正好會產生這種情況。
我可以保留 Nextcloud 的行事曆,只搬移檔案嗎?
可以,而且這通常是成本最低的做法。使用 Syncthing 或 Seafile 同步大型資料夾,並讓 Nextcloud 繼續提供 CalDAV、CardDAV 和瀏覽器文件編輯功能。由於 Nextcloud 的 database 會隨著追蹤的檔案數量增加,將大型目錄樹移出 Nextcloud,介面才會恢復快速。請透過 web interface 或 occ 刪除這些資料,不要直接從磁碟上的 data directory 刪除,否則 database 會保留指向不存在檔案的資料列。