Bỏ qua đến nội dung chính
AI Automation
Logo Nextcloud trắng phía trên ảnh chụp giao diện Files của Nextcloud tự host, có thư mục Công ty, Documents, Photos trên nền xanh đậm

Nextcloud AIO: tự host thay Google Drive cho công ty nhỏ

Nguyễn Việt Chung

Đăng 14 phút đọc

Mục lục · 21

Hướng dẫn tự host Nextcloud AIO cho công ty nhỏ, làm trên máy chủ thật: từng bước cài bằng Docker, RAM thực tế, tốc độ tải file, sao lưu Borg, và những chỗ dễ vấp như tên miền hay mật khẩu chỉ hiện một lần.

Nextcloud AIO (All-in-One) là cách cài Nextcloud chính thức: bạn chạy một container Docker, mở trang quản lý trên trình duyệt, nhập tên miền, bấm một nút, rồi nó tự dựng Nextcloud cùng PostgreSQL, Redis, bộ office, chat và công cụ sao lưu. Kết quả là một ổ đĩa chung kiểu Google Drive chạy trên máy chủ của bạn, có sửa Word, Excel ngay trong trình duyệt.

Mình cài Nextcloud AIO trên một máy chủ 16 vCPU, 32GB RAM, Ubuntu 24.04 có IP public ngày 11/10/2026. Vài con số để hình dung:

  • Từ lúc bấm nút đến lúc vào được trang đăng nhập: khoảng 7 phút, kéo về 12,2GB image.

  • Lúc rảnh, 10 container dùng khoảng 2,4GB RAM (cả máy 3,2GB), riêng bộ office đã chiếm 1,7GB.

  • Tải lên file 1GB đạt 24,5 MB/s, gần bằng tốc độ đường truyền thô (25,7 MB/s) đo cùng lúc.

  • Sao lưu lần đầu mất 52 giây, lần sau chỉ 15 giây vì Borg chỉ ghi phần đổi.

Giao diện Files của Nextcloud tự host bằng AIO, tiếng Việt: thư mục Công ty, Documents, Đo tốc độ, Photos, Templates, dung lượng đã dùng 1,1 GB

Nextcloud là gì, khác Google Drive ở đâu?

Nextcloud là phần mềm lưu trữ và cộng tác mã nguồn mở (giấy phép AGPL-3.0), bạn tự cài lên máy chủ của mình. Phần lõi là lưu file và đồng bộ giữa máy tính, điện thoại, giống Google Drive. Quanh đó có thêm lịch, danh bạ, chat và họp video (Talk), bảng trắng, và bộ office để sửa tài liệu ngay trên web.

Khác biệt lớn nhất nằm ở chỗ dữ liệu ở đâu và tiền trả theo gì:

Google Workspace

Nextcloud tự host

Dữ liệu nằm ở

Máy chủ Google

Máy chủ của bạn

Tính tiền

Theo người dùng mỗi tháng

Tiền máy chủ, miễn phí đến 100 người dùng

Dung lượng

Business Starter 30GB/người, Standard 2TB/người

Bằng ổ đĩa máy chủ

Ai lo cập nhật, sao lưu

Google

Bạn (AIO làm gần hết)

Sửa tài liệu cùng lúc

Google Docs, rất mượt

Nextcloud Office, đủ dùng

Theo trang giá Google Workspace ngày 11/10/2026, gói Business Starter là 7 USD và Business Standard là 14 USD mỗi người mỗi tháng nếu cam kết một năm. Một công ty 10 người dùng gói Standard trả 140 USD mỗi tháng, thêm người thì tăng theo. Với Nextcloud, README của AIO ghi rõ "Up to 100 users are free", trên 100 người mới cần bản Enterprise trả phí.

Cần chuẩn bị gì trước khi cài?

Ba thứ, thiếu một là không cài xong:

  • Máy chủ Linux có Docker (bản cài từ trang Docker, không dùng bản snap). AIO chạy được trên x86_64 và arm64, tài liệu khuyên dùng SSD.

  • IP public và cổng mở: 443/TCP cho Nextcloud, 80 và 8443 cho bước xin chứng chỉ, 8080 cho trang quản lý AIO. Bật Talk thì mở thêm 3478/TCP và UDP.

  • Một tên miền trỏ về IP đó. AIO không chấp nhận địa chỉ IP, chuyện này mình gặp ở bước 2.

Máy mình dùng có 16 vCPU (Xeon E5-2680 v4), 32GB RAM, Docker 29.6.1. Cấu hình này dư cho một công ty nhỏ. Theo số đo RAM bên dưới, mình ước tính máy 8GB là đủ cho bộ mặc định.

Cài Nextcloud AIO bằng Docker thế nào?

Bước 1: chạy mastercontainer

AIO dùng một container điều phối tên nextcloud-aio-mastercontainer. Lệnh lấy nguyên từ README chính thức của Nextcloud AIO:

bash
sudo docker run \
  --init \
  --sig-proxy=false \
  --name nextcloud-aio-mastercontainer \
  --restart always \
  --publish 80:80 \
  --publish 8080:8080 \
  --publish 8443:8443 \
  --volume nextcloud_aio_mastercontainer:/mnt/docker-aio-config \
  --volume /var/run/docker.sock:/var/run/docker.sock:ro \
  ghcr.io/nextcloud-releases/all-in-one:latest

Mình thêm -d vào cuối các tham số để container chạy nền, như trong ảnh dưới. Đừng đổi tên container và tên volume, cơ chế cập nhật và sao lưu của AIO dựa vào hai cái tên đó. Image chỉ nặng 327MB nên kéo về trong 8 giây:

Terminal chạy docker run mastercontainer của Nextcloud AIO: tải image xong trong 7,7 giây, log báo Initial startup of Nextcloud All-in-One complete và nhắc mở cổng 8080 bằng địa chỉ IP

Mở https://<IP-máy-chủ>:8080, trình duyệt sẽ cảnh báo chứng chỉ tự ký, cứ chấp nhận. Trang đầu tiên hiện một passphrase 8 từ để đăng nhập trang quản lý. Chép lại ngay: tải lại trang thì nó chỉ còn ghi "The password is only shown once on the very first visit of this page". Lỡ mất thì vẫn lấy lại được trong file cấu hình của mastercontainer:

bash
sudo docker exec nextcloud-aio-mastercontainer grep password /mnt/docker-aio-config/data/configuration.json

Bước 2: nhập tên miền

Mình thử nhập thẳng IP cho nhanh và bị chặn ngay:

Trang Nextcloud AIO v14.2.0 báo lỗi Please enter a domain and not an IP-address! khi nhập 123.16.33.125 vào ô tên miền

Chưa có tên miền thì có hai cách. AIO có sẵn mục "Don't have a domain? Get a free one from deSEC" để đăng ký tên miền miễn phí đuôi dedyn.io. Cách mình dùng để thử là sslip.io, một dịch vụ DNS trả về đúng IP viết trong tên: máy có IP 1.2.3.4 thì tên nc.1-2-3-4.sslip.io trỏ thẳng về đó. Dùng thật cho công ty thì nên dùng tên miền riêng, vì AIO chưa cho đổi tên miền trong giao diện, muốn đổi phải sửa tay file cấu hình.

Nhập tên miền xong, AIO dựng một container tạm để kiểm tra cổng 443 có ra được Internet không. Bước này mất khoảng 20 giây.

Bước 3: chọn container và bấm cài

Màn hình tiếp theo cho chọn bản Nextcloud và các container phụ:

Màn hình chọn của Nextcloud AIO: ô Install Nextcloud Hub 26 Summer chưa tick, nút Download and start containers, mục Office Suite với Nextcloud Office powered by Euro-Office được chọn sẵn

Mặc định AIO cài Nextcloud Hub 26 Spring (bản 34). Muốn bản mới hơn, Hub 26 Summer (bản 35), thì tick ô phía trên. Mình để mặc định và nhận Nextcloud 34.0.4. Bộ office mặc định là Euro-Office, bản Collabora Online vẫn chọn được. ONLYOFFICE vẫn còn trong danh sách nhưng bị đánh dấu deprecated từ tháng 6/2026, sau khi hai bên ngừng hợp tác.

Ngoài office, AIO bật sẵn Talk, Imaginary (xem trước ảnh HEIC, PDF) và Whiteboard. ClamAV quét virus và Fulltextsearch thì tắt sẵn, mỗi cái cần thêm khoảng 1GB RAM. Mình còn đặt múi giờ Asia/Ho_Chi_Minh ở ô Timezone trước khi bấm Download and start containers.

Màn hình báo "5-10 min or more". Mình bấm lúc 13:35:46, trang đăng nhập trả mã 200 lúc 13:42:53, tức chừng 7 phút. Khi xong, trang AIO hiện tài khoản admin và mật khẩu khởi tạo, sau này xem lại bằng mục "Click here to reveal the initial Nextcloud credentials". Đăng nhập lần đầu xong thì đổi mật khẩu này ngay.

Trang Nextcloud AIO sau khi cài: 9 container Apache & Caddy, PostgreSQL, Nextcloud, Client Push, Redis, Talk, EuroOffice, Imaginary, Whiteboard đều Running, mục Backup and restore bên dưới

Chứng chỉ HTTPS do Let's Encrypt cấp tự động. Chứng chỉ máy mình nhận có hạn đến 17/10/2026, chỉ khoảng 6 ngày sau khi cài, ngắn hơn nhiều so với loại 90 ngày quen thuộc. Vì vậy cổng 443 phải luôn mở ra Internet, đừng chặn sau khi cài xong.

Cài xong thì làm gì trước?

Vào Cài đặt quản trị > Tổng quan đọc mục cảnh báo. Ngay sau khi cài, máy mình báo 10 mục. Ba mục sửa được ngay hoặc tự hết:

  • Default phone region: Nextcloud chưa biết số điện thoại không có mã quốc gia là của nước nào. Đặt VN.

  • Mimetype migrations available: chạy lệnh sửa một lần, máy mình mất 1,8 giây.

  • Cron last run ... 56 years ago: nghe đáng sợ nhưng chỉ vì cron chưa chạy lần nào. Chờ vài phút là hết.

Hai lệnh sửa chạy qua occ, công cụ dòng lệnh của Nextcloud:

bash
docker exec -u www-data nextcloud-aio-nextcloud php occ config:system:set default_phone_region --value="VN"
docker exec -u www-data nextcloud-aio-nextcloud php occ maintenance:repair --include-expensive

Mục Errors in the log thì xuất hiện lại sau mỗi lần khởi động container. Hai lỗi đầu tiên là của tác vụ nền SanitizeAccountPropertiesJob (mã SQLSTATE 25P02) lúc khởi tạo, Nextcloud vẫn chạy bình thường. Mục Backend hiệu suất cao báo bản Talk 2.1.1 trong AIO thiếu tính năng changed-users, mình chưa thấy ảnh hưởng gì khi dùng.

Các mục còn lại là thông tin chứ không phải lỗi: chưa cấu hình máy chủ email, chưa bắt buộc xác thực hai lớp, Talk chưa có máy ghi hình. Hai việc nên làm sớm là nhập máy chủ SMTP để Nextcloud gửi được email đặt lại mật khẩu, và bật bắt buộc 2FA cho tài khoản admin.

Mục Bảo mật và thiết lập cảnh báo trong Nextcloud sau khi sửa: còn Whiteboard real-time collaboration, Errors in the log, Backend hiệu suất cao, Second factor configuration, Email test

Riêng cảnh báo Whiteboard "WebSocket server shared secret is not configured" thì mình chưa gỡ được. Script khởi động của AIO có sẵn lệnh đặt khóa này. Mình chạy lại đúng lệnh đó bằng occ thì nhận "Config value were not updated", tức giá trị không đổi. Vậy mà trang kiểm tra vẫn báo thiếu. Không dùng bảng trắng thì bạn tắt container Whiteboard trong AIO là xong.

Thêm người cho công ty làm trên giao diện Tài khoản, hoặc bằng occ khi cần tạo nhiều người một lúc. Mình tạo nhóm ke-toan, kinh-doanh, hai tài khoản có tên tiếng Việt có dấu, và đặt hạn mức 20GB cho tài khoản lan:

bash
docker exec -u www-data nextcloud-aio-nextcloud php occ group:add ke-toan
docker exec -u www-data -e OC_PASS='mat-khau-tam' nextcloud-aio-nextcloud \
  php occ user:add --password-from-env --display-name='Nguyễn Thị Lan' --group=ke-toan lan
docker exec -u www-data nextcloud-aio-nextcloud php occ user:setting lan files quota '20 GB'

Dùng Nextcloud hằng ngày có giống Google Drive không?

Phần lưu file và chia sẻ thì gần như giống. Mình tải lên một hợp đồng mẫu dạng .docx, tạo link công khai có mật khẩu và hạn dùng 7 ngày. Người nhận mở link sẽ thấy ô nhập mật khẩu:

Trang link chia sẻ Nextcloud: Chia sẻ này được bảo vệ bởi mật khẩu, ô Mật khẩu và nút Gửi, chân trang Nextcloud: Một ngôi nhà an toàn cho toàn bộ dữ liệu của bạn

Bấm vào file .docx trong Nextcloud thì Euro-Office mở ngay trong trình duyệt, chữ tiếng Việt có dấu hiển thị đúng, thanh công cụ đã dịch sang tiếng Việt:

Euro-Office trong Nextcloud mở file Hop-dong-mau.docx, menu Trang chủ, Chèn, Bố cục bằng tiếng Việt, nội dung HỢP ĐỒNG DỊCH VỤ với Bên A, Bên B, Điều 1

Giao diện Nextcloud nhận tiếng Việt theo trình duyệt nhưng chưa dịch hết: "Personal files", "Folder tree", các thông báo trong trang quản trị vẫn là tiếng Anh. Người dùng văn phòng vẫn dùng được, chỉ hơi lẫn tiếng Anh.

Muốn đồng bộ thư mục với máy tính như Google Drive, cài ứng dụng Nextcloud Files cho Windows, macOS hoặc Linux. Điện thoại có app Nextcloud cho Android và iOS. Các app này đều miễn phí, tải ở trang cài đặt của Nextcloud.

Nextcloud tốn bao nhiêu RAM và đĩa?

Đo bằng docker stats ngay sau khi cài, lúc chưa ai dùng:

Terminal docker stats 10 container Nextcloud AIO: eurooffice 1,721GiB, nextcloud 319,9MiB, talk 106MiB; free -m báo 3219MB đã dùng; image tổng 12,22GB

Thành phần

RAM lúc rảnh

Ghi chú

EuroOffice

1,72 GiB

Chiếm hơn nửa, tắt nếu không cần sửa tài liệu trên web

Nextcloud (PHP)

320 MiB

Tăng khi nhiều người dùng cùng lúc

Talk

106 MiB

Chat, họp video

PostgreSQL, Redis, Apache, phần còn lại

khoảng 210 MiB

Cộng 10 container

khoảng 2,4 GiB

Cả máy báo 3,2GB đã dùng. Image chiếm 12,2GB đĩa, bản office nặng nhất (6,98GB)

Từ số đo này, mình ước tính máy 8GB RAM chạy thoải mái bộ mặc định, còn máy 4GB thì nên tắt bớt office hoặc Talk. Chính trang AIO ghi: bật mọi container tùy chọn thì cần tối thiểu 5GB RAM và CPU 4 nhân.

Tải file lên Nextcloud nhanh hay chậm?

Mình đo từ máy Mac qua Internet tới máy chủ ở Hà Nội, ping khoảng 10 ms. File lớn thì Nextcloud gần như không làm chậm gì:

Phép đo

Thời gian

Tốc độ

Tải lên 1GB qua Nextcloud (WebDAV)

43,9 s

24,5 MB/s

Tải lên 1GB qua SSH, cùng đường mạng

41,8 s

25,7 MB/s

Tải về 1GB qua Nextcloud

22,1 s

48,6 MB/s

Tải về 1GB qua SSH

20,4 s

52,7 MB/s

Nextcloud đạt 92 đến 95% tốc độ đường truyền thô, nên nếu thấy chậm thì thường là do mạng chứ không phải do Nextcloud.

File nhỏ lại khác. Gửi lần lượt 200 file 20KB bằng tài khoản và mật khẩu đăng nhập mất 151,8 giây, trung vị 753 ms mỗi file. Mình tạo một app password (trong Cài đặt cá nhân > Bảo mật) rồi chạy lại đúng 200 file đó: còn 45,6 giây, nhanh gấp 3,3 lần.

Biểu đồ tải lên 200 file nhỏ 20 KB qua WebDAV: mật khẩu đăng nhập 151,8 giây (trung vị 753 ms mỗi file), app password 45,6 giây (trung vị 226 ms mỗi file)

Vì vậy, khi nối Nextcloud với công cụ khác (ổ mạng WebDAV, script sao lưu, n8n), hãy dùng app password thay cho mật khẩu thật. App password vừa nhanh hơn, vừa thu hồi riêng được khi bị lộ. Lệnh tải một file lên bằng WebDAV mình dùng khi đo có dạng:

bash
curl -u admin:<app-password> -T bao-cao.xlsx \
  "https://<ten-mien>/remote.php/dav/files/admin/bao-cao.xlsx"

Sao lưu Nextcloud AIO thế nào?

AIO có sẵn sao lưu bằng BorgBackup: mã hóa, nén, và chỉ ghi phần đổi ở các lần sau. Trong trang AIO, nhập thư mục sao lưu (mình dùng /mnt/backup). AIO hiện mật khẩu mã hóa bản sao lưu, mất mật khẩu này là không khôi phục được, nên cất nó ở chỗ khác máy chủ.

Bấm Create backup, AIO hỏi lại vì nó sẽ dừng mọi container trong lúc sao lưu. Kết quả trên máy mình:

Terminal log BorgBackup của Nextcloud AIO: lần 1 mất 48,78 giây, 2,68GB nén còn 1,64GB, khử trùng 1,56GB; lần 2 mất 11,83 giây, chỉ thêm 106MB

Có một bẫy: sao lưu bấm tay xong thì Nextcloud vẫn tắt. Mọi container đứng ở trạng thái Stopped cho tới khi bạn bấm Start containers. Lần đó mình mất 57 giây để Nextcloud trả lời lại. Ai sao lưu lúc giữa giờ làm rồi quên bấm thì cả công ty mất ổ chung.

Nên bật sao lưu hằng ngày ở mục Daily backup and automatic updates. Chế độ này tự khởi động lại container sau khi sao lưu, và có thể tự cập nhật container luôn.

Mục Daily backup and automatic updates trong Nextcloud AIO: ô giờ sao lưu 04:00, giải thích giờ tính theo UTC, tùy chọn tự cập nhật container và gửi thông báo khi sao lưu xong

Ô giờ ở đây tính theo giờ UTC, không phải giờ máy chủ. Muốn sao lưu lúc 2 giờ sáng giờ Việt Nam thì nhập 19:00. Mình nhập rồi kiểm tra lại trong file cấu hình của AIO, giá trị lưu đúng là 19:00. Thư mục sao lưu nằm cùng ổ với dữ liệu chỉ chống được xóa nhầm. Muốn an toàn khi hỏng máy thì cho Borg sao lưu sang ổ khác hoặc máy khác (AIO nhận cả kho Borg từ xa).

Những lỗi mình gặp khi cài

Nhập IP thay cho tên miền. AIO báo Please enter a domain and not an IP-address! như ở bước 2. Cách sửa: dùng tên miền trỏ về IP, tên miền miễn phí từ deSEC ngay trong giao diện, hoặc sslip.io khi chỉ cần thử.

Không vào lại được trang AIO khi Nextcloud đang chạy. Mở https://IP:8080/login thì gặp:

text
The login is blocked since Nextcloud is running.
Please use the automatic login from your Nextcloud.

Đây là cơ chế bảo vệ chứ không phải lỗi. Đăng nhập Nextcloud bằng admin, vào Cài đặt quản trị > Tổng quan, bấm nút Open Nextcloud AIO Interface, trang AIO sẽ mở mà không cần passphrase.

Khi nào không nên tự host Nextcloud?

  • Công ty chỉ vài người, đã quen Google Drive và không ngại dữ liệu nằm ở Google. Tiền Workspace khi đó rẻ hơn công sức tự vận hành.

  • Không ai trong công ty lo được việc kiểm tra sao lưu, cập nhật, gia hạn tên miền. AIO tự động hóa nhiều, nhưng vẫn cần một người đọc thông báo.

  • Mạng không có IP public và không muốn dùng đường hầm. AIO cần cổng 443 mở ra Internet để có HTTPS.

  • Nhiều người cần sửa cùng một tài liệu liên tục. Euro-Office và Collabora dùng được, nhưng chưa mượt bằng Google Docs.

Câu hỏi thường gặp

Nextcloud có miễn phí không?

Có. Nextcloud là phần mềm mã nguồn mở theo AGPL-3.0, cài bằng AIO miễn phí đến 100 người dùng, app máy tính và điện thoại cũng miễn phí. Bạn chỉ trả tiền máy chủ. Trên 100 người, Nextcloud bán bản Enterprise có hỗ trợ.

Nextcloud AIO khác cài Nextcloud bằng Docker Compose tự viết thế nào?

AIO là cách cài chính thức, tự dựng sẵn PostgreSQL, Redis, HTTPS, office, Talk và sao lưu Borg, cập nhật bằng một nút. Tự viết Docker Compose thì linh hoạt hơn nhưng bạn tự lo từng phần đó. Với công ty nhỏ không có người chuyên vận hành, AIO đỡ việc hơn nhiều.

Cài Nextcloud cần máy chủ cấu hình bao nhiêu?

Lúc rảnh, 10 container của bộ mặc định dùng khoảng 2,4GB RAM (cả máy 3,2GB), nên mình ước tính 8GB RAM là thoải mái cho nhóm nhỏ. Ổ đĩa tính theo dung lượng file của công ty, cộng khoảng 12GB cho image. Nên dùng SSD.

Có thể chạy Nextcloud AIO trên máy ở văn phòng không?

Được, AIO có hướng dẫn cài cục bộ và chạy sau Cloudflare Tunnel hoặc Tailscale khi không có IP public. Lúc đó cần thêm reverse proxy, các bước khác với bài này.

Đọc tiếp

Nếu muốn có Nextcloud cho công ty mà không tự cài và vận hành, AIDev triển khai Nextcloud lên máy chủ của bạn, phân quyền theo phòng ban và bàn giao kèm hướng dẫn.

Thử ngày 11/10/2026 trên máy CPU Standard (16 vCPU Xeon E5-2680 v4, 32GB RAM, Ubuntu 24.04, IP public) của AIDev Cloud: Nextcloud AIO v14.2.0, Nextcloud Hub 26 Spring 34.0.4, Docker 29.6.1.

Về tác giả

Nguyễn Việt Chung

Founder AIDev

Thạc sĩ AI MSE, tốt nghiệp thủ khoa với điểm 9,4/10. Đồng sáng lập, CTO E-University, SVOnline: số hóa 10+ đại học, 40.000+ sinh viên. Sáng lập AIDev và VietPlatform, xây hệ thống AI cho doanh nghiệp. Anh trực tiếp biên soạn và giảng dạy toàn bộ lộ trình AI Engineer.