Các lựa chọn thay thế Nextcloud đáng tự host
So sánh lựa chọn thay thế Nextcloud theo nhu cầu: chỉ đồng bộ file, server nhẹ nhanh hơn, object storage hoặc SFTP, kèm chi phí chuyển dữ liệu hiện có.
Những lựa chọn thay thế Nextcloud nào đáng tự host?
Những lựa chọn thay thế Nextcloud đáng chạy là các giải pháp loại bỏ những phần bạn chưa từng sử dụng. Nextcloud vừa là file server, lịch, sổ liên hệ, office suite vừa là nền tảng app trong cùng một ứng dụng PHP, nên bạn phải trả chi phí cho toàn bộ các thành phần đó ở mỗi lần tải trang. Vì vậy, hãy chọn giải pháp thay thế bằng cách xác định công việc duy nhất bạn vẫn cần, rồi kiểm tra chi phí để chuyển các file hiện có.
Hướng dẫn này phân loại các lựa chọn theo công việc đó: chỉ đồng bộ, đồng bộ với server nhanh hơn, object storage kết hợp với client, hoặc chỉ truy cập file từ xa. Mỗi phần nêu rõ server cần gì trên một VPS nhỏ (virtual private server) và cấu trúc thư mục hiện có của bạn sẽ thay đổi như thế nào. Nếu bạn chuyển từ Dropbox hoặc Google Drive thay vì từ một máy Nextcloud đang chạy, bài tổng hợp rộng hơn về các lựa chọn thay thế Dropbox tự host sẽ bắt đầu từ trường hợp đó.
Vì sao Nextcloud chạy chậm trên VPS nhỏ
Tình trạng chậm có những nguyên nhân cụ thể. Biết các nguyên nhân này giúp bạn xác định việc chuyển đi có thực sự cải thiện hiệu năng hay không.
Mỗi lần tải trang đều sử dụng một PHP worker. Yêu cầu hệ thống của Nextcloud nêu mức bộ nhớ cho mỗi tiến trình: tối thiểu 128 MB, khuyến nghị 512 MB, tính đến tháng 8 năm 2026. Đây không phải tổng bộ nhớ của server. Pool gồm 10 worker là một khoản ngân sách bộ nhớ thực tế trên gói 2 GB. Vì vậy, admin thường giảm pm.max_children trong cấu hình PHP-FPM pool, rồi request phải xếp hàng phía sau số worker hiện có. Giao diện có cảm giác chậm dù disk không bận.
Database tăng theo số lượng file, không phải theo dung lượng byte. Bảng file cache, oc_filecache dưới table prefix mặc định, chứa một row cho mỗi file và folder trong mọi storage mà server biết đến. Thư viện ảnh gồm 300,000 file nhỏ là một bảng lớn; 300 GB file video chỉ nằm trong 400 file lại là một bảng nhỏ. Tính năng chia sẻ, tìm kiếm và file scanner đều đọc bảng này.
sudo mysql nextcloud -e 'SELECT COUNT(*) FROM oc_filecache;'Số lượng lên đến hàng triệu giải thích danh sách file chậm tốt hơn bất kỳ bài benchmark disk nào. Nếu instance của bạn dùng table prefix khác hoặc PostgreSQL, hãy điều chỉnh query.
Background job cạnh tranh tài nguyên với giao diện web. Manual của Nextcloud khuyến nghị một system cron entry chạy cron.php mỗi 5 phút. Việc tạo preview và quét file chạy trong job đó, trên cùng CPU đang phục vụ trình duyệt của bạn.
Major upgrade là một database migration. Instance chuyển sang maintenance mode và trả lời mọi request bằng Nextcloud is in maintenance mode, please try again later cho đến khi migration hoàn tất. Trên VPS nhỏ có oc_filecache lớn, khoảng thời gian này đủ dài để bạn nhận thấy.
Trước tiên, hãy xác định bạn muốn giữ lại gì
- Đồng bộ một thư mục giữa các máy bạn sở hữu, không cần giao diện web: Syncthing.
- Đồng bộ cho nhiều người, có giao diện web, client di động và liên kết chia sẻ: Seafile.
- Lưu trữ nhiều dữ liệu với chi phí thấp và truy cập dữ liệu từ script cùng công cụ backup: object storage kết hợp với client.
- Đọc và ghi file từ xa mà không cần cài thêm phần mềm máy chủ: SFTP hoặc WebDAV.
- Cùng chỉnh sửa tài liệu trong trình duyệt hoặc chia sẻ lịch giữa nhiều người: tiếp tục dùng Nextcloud hoặc chấp nhận chạy hai service.
Syncthing: đồng bộ file không cần ứng dụng máy chủ
Syncthing giữ file của bạn dưới dạng file thông thường. Không có cơ sở dữ liệu nội dung và không có web interface để phân phối tài liệu. Mỗi thiết bị tham gia một folder đều giữ một bản sao đầy đủ, còn Syncthing duy trì các bản sao giống nhau.
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 8384Dòng hiển thị 127.0.0.1:8384 nghĩa là web interface đang chạy và chỉ bind vào localhost, đây là cấu hình phù hợp trên một VPS public. Truy cập interface này bằng SSH tunnel: ssh -L 8384:127.0.0.1:8384 you@your-vps, sau đó mở http://127.0.0.1:8384 trên laptop. Nếu không có listener trên 8384 thì service đã không khởi động, và journalctl -u syncthing@$USER -n 50 cho biết lý do.
Tài nguyên. Syncthing không công bố mức memory tối thiểu. Mức sử dụng memory phụ thuộc vào số file được index, không phải tổng dung lượng file, vì Syncthing giữ một mục index cho mỗi file trong mỗi shared folder. Lần quét đầu tiên của một folder lớn tiêu tốn CPU: Syncthing phải hash mọi file trước khi có thể so sánh. Trên một vCPU dùng chung, lần quét đầu tiên có thể chạy khá lâu. Memory cũng tăng theo số lượng file, không phải theo số gigabyte.
Disk mới là chi phí chính. Không có phần lưu trữ phía server, vì Syncthing không phải server. Một folder 200 GB được share giữa VPS và laptop cần 200 GB trên cả hai thiết bị. Điều này trái ngược với Nextcloud, nơi server giữ toàn bộ dữ liệu còn client chọn nội dung cần sync. Nếu VPS dùng làm đích backup thay vì một peer, hãy dùng các folder chọn lọc và một folder receive only trên VPS.
Lý do chọn Syncthing là khả năng migration. Trỏ Syncthing vào cây thư mục hiện có. Không cần import, upload hay chuyển đổi. Thêm folder trên VPS, thêm folder đó trên laptop bằng cùng folder ID, rồi để hai phía tự đồng bộ. Nếu cùng một file tồn tại với nội dung khác nhau trên hai phía khi lần đầu kết nối, Syncthing giữ lại cả hai và đổi tên một file thành filename.sync-conflict-20260809-142530-ABCD123.txt. Việc thấy các file này trong lần sync đầu tiên là bình thường, không phải lỗi.
Những gì bạn phải đánh đổi. Không có account, không có share link để gửi cho người khác và không có cách duyệt file bằng trình duyệt trên điện thoại. Android app gốc không còn được chính project duy trì, còn một community fork đang tiếp tục phát triển app này. Điều đó quan trọng nếu mobile access là mục đích chính. So sánh trực tiếp Syncthing và Nextcloud lần lượt phân tích từng điểm thiếu hụt về tính năng.
Seafile: đồng bộ nhanh với server nhẹ hơn
Seafile chia công việc thành 2 phần. Một web application viết bằng Python có tên Seahub hiển thị giao diện, còn một process C riêng xử lý network traffic đồng bộ. File transfer không đi qua web application, nên upload lớn vẫn nhanh trong khi người khác thao tác trên giao diện. Version 13.0 được phát hành vào 5 January 2026.
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.ymlChỉnh sửa .env trước khi bắt đầu. File này đặt SEAFILE_SERVER_HOSTNAME, INIT_SEAFILE_ADMIN_EMAIL, INIT_SEAFILE_ADMIN_PASSWORD, SEAFILE_MYSQL_DB_PASSWORD và JWT_PRIVATE_KEY; các giá trị này phải là một chuỗi ngẫu nhiên có ít nhất 32 ký tự. File đó cũng cho compose biết cần đọc những file YAML đã tải xuống nào, nên 4 file này hoạt động như một stack duy nhất.
cd /opt/seafile
sudo docker compose up -d
sudo docker compose psMọi container phải báo trạng thái đang chạy. Container restart liên tục gần như luôn do thiếu một giá trị trong .env, và sudo docker compose logs seafile cho biết đó là giá trị nào.
Tài nguyên. Tính đến August 2026, tài liệu Seafile yêu cầu ít nhất 2 GB RAM và CPU 2 core trên 2 GHz. Hãy xem đây là mức tối thiểu cho toàn bộ stack, vì Docker deployment cũng khởi động MariaDB, reverse proxy Caddy và trình biên tập SeaDoc. Cấp 4 GB nếu có hơn 1 hoặc 2 người dùng, hoặc bỏ các container tùy chọn.
Điểm cần lưu ý khi migration là định dạng lưu trữ. Seafile không lưu file dưới dạng các file thông thường. Nó chia mỗi file thành các block trong /opt/seafile-data và lưu cây thư mục trong database. Bạn không thể trỏ Seafile vào một directory có sẵn rồi để directory đó xuất hiện dưới dạng library, nên quá trình chuyển vào cần upload đầy đủ một lần cho toàn bộ dữ liệu bạn sở hữu. Thiết kế này cũng có nghĩa là bạn không thể lấy dữ liệu ra bằng cp: quá trình khôi phục phải đi qua server, seaf-fsck để kiểm tra tính nhất quán, hoặc mount chỉ đọc seaf-fuse.
rclone có backend Seafile native, biến quá trình upload thành một command có thể resume thay vì phải kéo-thả thủ công trong thời gian dài.
rclone config
rclone copy /srv/files seafile:MyLibrary --progressTài liệu rclone liệt kê Seafile 6.x đến 9.x là các version đã được kiểm thử, nên hãy chạy thử với một folder nhỏ và kiểm tra kết quả trước khi đẩy 1 terabyte dữ liệu qua đó.
Library được mã hóa là tính năng khiến nhiều người chọn Seafile. Password được đặt trong client, còn server chỉ lưu các block mà nó không thể đọc. Có một điểm cần lưu ý: khi preview file trong library được mã hóa bằng browser, password sẽ được gửi đến server trong session đó. Vì vậy, không thể đồng thời có browser preview và lưu trữ zero-knowledge. So sánh trực tiếp Seafile và Nextcloud trình bày các khác biệt tính năng còn lại.
Object storage với sync client
Nếu mục tiêu là lưu trữ nhiều dữ liệu với chi phí thấp và có thể truy cập từ các script, hãy chạy một object store tương thích S3 và dùng một công cụ sync riêng. Bạn có được độ bền dữ liệu, versioning và một protocol mà mọi công cụ backup đều hỗ trợ sẵn. Bạn không có user account theo cách của file server, cũng không có file manager dễ dùng cho mọi người. Tự host object storage với MinIO trình bày phần server.
rclone copy /srv/files s3remote:mybucket --progress
rclone check /srv/files s3remote:mybucketrclone check so sánh hai phía theo kích thước và hash, rồi in ra số file khác nhau. Bất kỳ giá trị nào khác 0 đều cho biết bản copy chưa hoàn tất, vì vậy hãy chạy lại copy trước khi xóa source. Có 2 điểm cần lưu ý: object storage không có directory, chỉ có key prefix, nên folder rỗng sẽ không được giữ lại sau khi copy; và việc tăng --transfers cùng với S3 chunk size sẽ làm tăng mức sử dụng memory của rclone, vì vậy hãy giữ nguyên giá trị mặc định của cả hai trên VPS 1 GB.
WebDAV hoặc SFTP đơn giản khi bạn chỉ cần file từ xa
Giải pháp thay thế rẻ nhất thường là không cài thêm gì. Nếu VPS đang chạy OpenSSH, bạn đã có sẵn một file server. SFTP không cần daemon bổ sung, không cần database, không cần PHP và không cần một lần upgrade có thể gây lỗi vào Chủ nhật.
sftp you@your-vps
rclone mount sftpremote: ~/vps --vfs-cache-mode writesVới các client hỗ trợ WebDAV, bao gồm hầu hết file manager trên điện thoại, rclone có thể phục vụ cùng một cây thư mục.
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/filesBind nó vào 127.0.0.1 và đặt một reverse proxy có TLS (transport layer security) phía trước. Basic authentication của WebDAV gửi password trong từng request, vì vậy dùng HTTP thuần ở đây đồng nghĩa với việc gửi password nhiều lần mỗi phút. Chi phí migration bằng 0 vì các file không cần di chuyển. Đổi lại, không có sync và không có bản sao offline: khi kết nối bị ngắt, client không thể truy cập các file cho đến khi kết nối hoạt động trở lại.
Thành phần nào thay thế lịch, danh bạ và chỉnh sửa tài liệu
Việc rời Nextcloud khiến bạn mất một số tính năng ở đây, và cần nói rõ đó là gì. Lịch và danh bạ dùng CalDAV và CardDAV (đồng bộ lịch và danh bạ qua HTTP), còn Radicale là phần thay thế gọn nhẹ. Radicale lưu mỗi collection dưới dạng các file trên ổ đĩa và chỉ chạy với vài chục megabyte.
sudo apt install radicale
sudo systemctl enable --now radicale
sudo ss -lntp | grep 5232Gói này cung cấp /usr/lib/systemd/system/radicale.service cùng file cấu hình mặc định tại /etc/radicale/config, và lắng nghe trên localhost:5232. Radicale không có giao diện để chỉnh sửa sự kiện, nên bạn trỏ ứng dụng trên điện thoại hoặc desktop vào đó rồi chỉnh sửa trong ứng dụng.
Việc thay thế tính năng chỉnh sửa tài liệu trên trình duyệt khó hơn. OnlyOffice Docs và Collabora Online đều là engine chỉnh sửa, không phải nơi lưu trữ: mỗi engine cần một ứng dụng host giữ các file và chuyển tài liệu cho nó. Khi không dùng Nextcloud, bạn cần một host khác, chẳng hạn Seafile với trình chỉnh sửa SeaDoc riêng. So sánh OnlyOffice và Collabora trình bày nên chạy engine nào sau khi bạn đã quyết định dùng host nào.
Nếu có bất kỳ điều nào sau đây đúng, hãy tiếp tục dùng Nextcloud
- Nhiều người dùng chung một lịch và một sổ địa chỉ, trên cùng các tài khoản dùng cho tệp.
- Bạn chỉnh sửa tài liệu office trong trình duyệt, cùng một tệp và cùng lúc với người khác.
- Bạn cần link chia sẻ riêng cho từng tệp, có ngày hết hạn và password, cùng với quyền theo group.
- Người dùng của bạn không rành kỹ thuật và họ chủ yếu sử dụng mobile app.
Với các nhu cầu này, không có lựa chọn nhẹ hơn nào đáp ứng được tất cả. Vì vậy, cách hợp lý là sửa lại cài đặt thay vì bỏ Nextcloud. Phần lớn instance chậm đang chạy một PHP-FPM pool mặc định mà chưa cấu hình memory cache. Trang tổng quan quản trị của Nextcloud cũng cảnh báo về cache bị thiếu. Giảm số lượng tệp được theo dõi hiệu quả hơn bất kỳ thay đổi đơn lẻ nào khác, vì file cache table là thành phần tăng kích thước. Cài đặt Nextcloud trên VPS với Docker, TLS và backup thiết lập hệ thống theo cách tránh được phần lớn vấn đề này.
Chi phí thực tế của từng phương án migration
- Syncthing: không cần import. Trỏ nó vào cây thư mục hiện có ở cả hai bên rồi để dữ liệu tự đồng bộ.
- SFTP hoặc WebDAV trên cùng cây thư mục: hoàn toàn không cần import vì không có dữ liệu nào được di chuyển.
- Object storage: cần một lần sao chép toàn bộ qua network, có thể tiếp tục sau khi gián đoạn và có thể chạy bằng script; các thư mục trống sẽ không được giữ lại.
- Seafile: cần upload toàn bộ dữ liệu vào các library vì server lưu block thay vì file.
Dù chọn phương án nào, trước tiên hãy lấy một bản sao sạch từ Nextcloud. File của người dùng nằm ở dạng thông thường trong data directory, mỗi người dùng một thư mục, vì vậy rsync của cây thư mục đó là nguồn dữ liệu. Hãy đưa instance vào maintenance mode trước khi sao chép. Nếu không, bạn có thể sao chép các file khi chúng vẫn đang được ghi.
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Đối chiếu số lượng đó với cùng find trên source. Nếu bị thiếu, nguyên nhân thường là permissions khiến rsync không đọc được một số dữ liệu; lệnh sẽ in các lỗi đó trong quá trình chạy.
Có hai điểm dễ nhầm trong quá trình sao chép. Các file truy cập qua tính năng external storage của Nextcloud không nằm trong data directory vì chúng nằm trên hệ thống từ xa mà Nextcloud được cấu hình để sử dụng. Ngoài ra, nếu server-side encryption từng được bật, các file trên disk là ciphertext, nên occ encryption:decrypt-all phải chạy trước khi sao chép. Nếu không, bạn sẽ di chuyển một thư mục chứa dữ liệu không thể đọc. Hãy kiểm tra cả hai điểm trước khi hủy bất kỳ việc gì.
FAQ
Có giải pháp thay thế Nextcloud nào vẫn giữ nguyên cấu trúc thư mục hiện có không?
Syncthing, hoặc bất kỳ thiết lập SFTP hay WebDAV thuần nào. Syncthing index thư mục bạn chỉ định và giữ nguyên tên cùng bố cục trên mọi thiết bị, nên không cần bước import hay upload. Seafile và object storage đều cần upload toàn bộ một lần, vì không hệ thống nào lưu dữ liệu dưới dạng các file thông thường trong một cây thư mục thông thường. Seafile chia file thành các block trong data directory, còn object storage dùng key thay vì thư mục.
Seafile có chạy được trên VPS 2 GB không?
Tài liệu Seafile yêu cầu ít nhất 2 GB RAM và CPU 2 core trên 2 GHz, tính đến tháng 8 năm 2026. Hãy xem đây là mức sàn không có headroom, vì Docker deployment cũng chạy MariaDB, Caddy và trình chỉnh sửa SeaDoc trong các container riêng. Với một người dùng thì cấu hình này có thể dùng được. Với một hộ gia đình hoặc nhóm nhỏ, hãy nâng lên 4 GB, hoặc bỏ container SeaDoc khỏi stack và chấp nhận không chỉnh sửa tài liệu trong trình duyệt.
Vì sao web interface của Nextcloud chậm khi download vẫn nhanh?
Vì hai luồng này thực hiện công việc khác nhau. Download stream byte từ disk, còn page load chạy PHP, truy vấn bảng file cache và thường phải chờ một PHP-FPM worker trống. Hãy đếm số row trong oc_filecache và kiểm tra pm.max_children trong PHP-FPM pool trước khi đổ lỗi cho storage. Một bảng có hàng triệu row và pool chỉ có năm worker sẽ tạo ra đúng kiểu hiện tượng này.
Tôi có thể giữ Nextcloud cho calendar rồi chỉ chuyển file sang hệ thống khác không?
Có, và đây thường là phương án tiết kiệm nhất. Hãy sync các thư mục lớn bằng Syncthing hoặc Seafile, còn Nextcloud tiếp tục chạy cho CalDAV, CardDAV và chỉnh sửa tài liệu trong trình duyệt. Vì database của Nextcloud tăng theo số file mà nó theo dõi, việc loại bỏ các cây thư mục lớn khỏi đó sẽ giúp interface nhanh trở lại. Hãy xóa chúng qua web interface hoặc occ, không xóa trực tiếp trong data directory trên disk; nếu không, database vẫn giữ các row trỏ đến những file không còn tồn tại.