Site icon Cung cấp dịch vụ Cloud VPS, Server, Hosting Việt Nam & Thế giới

Hướng dẫn cài Nextcloud trên Ubuntu 24.04 LTS chi tiết từ A đến Z trong 5′

Hướng dẫn cài Nextcloud trên Ubuntu 24.04 LTS chi tiết từ A đến Z trong 5'

Nextcloud là nền tảng lưu trữ và cộng tác dữ liệu mã nguồn mở, cho phép người dùng tự xây dựng hệ thống lưu trữ file riêng thay vì phụ thuộc hoàn toàn vào các dịch vụ như Google Drive, Dropbox hoặc Microsoft OneDrive.

Nextcloud có thể được triển khai trên VPS, Dedicated Server hoặc máy chủ vật lý tại Data Center. Ngoài chức năng lưu trữ và đồng bộ dữ liệu, hệ thống còn hỗ trợ nhiều tính năng mở rộng như chia sẻ file, lịch, danh bạ, chat, video conference và tích hợp các nền tảng văn phòng trực tuyến.

Trong bài viết này, chúng ta sẽ thực hiện cài đặt Nextcloud trên Ubuntu Server 24.04 LTS, sử dụng Nginx, PHP-FPM và MariaDB. Đồng thời cấu hình PHP, database, Nginx, quyền thư mục, HTTPS và Cron để Nextcloud có thể hoạt động ổn định trong môi trường production.

DataOnline cung cấp VPS giá rẻ cài đặt sẵn nextcloud

Mục lục nội dung

Toggle

Nextcloud là gì?

Nextcloud là một nền tảng private cloud cho phép doanh nghiệp hoặc cá nhân tự lưu trữ và quản lý dữ liệu trên máy chủ của mình.

Về chức năng, Nextcloud có thể cung cấp trải nghiệm tương tự các dịch vụ cloud storage phổ biến:

Một mô hình triển khai Nextcloud cơ bản:

Internet => Nginx => PHP-FPM =>  Nextcloud => MariaDB

Trong môi trường thực tế, có thể mở rộng kiến trúc bằng Redis, object storage, database server riêng, load balancer hoặc storage cluster khi số lượng người dùng và dữ liệu tăng lên.

Nextcloud phù hợp với những trường hợp nào?

Nextcloud phù hợp với nhiều nhu cầu khác nhau:

Nếu triển khai cho doanh nghiệp, nên sử dụng VPS hoặc Dedicated Server có SSD/NVMe, RAM đủ lớn và hệ thống backup riêng.

Mô hình cài đặt Nextcloud trên Ubuntu

Trong bài viết này sử dụng:

Thành phần Cấu hình
Operating System Ubuntu Server 24.04 LTS
Web Server Nginx
PHP PHP 8.x
PHP Runtime PHP-FPM
Database MariaDB
Storage SSD/NVMe
Nextcloud Bản phát hành ổn định
Domain cloud.example.com

Thay cloud.example.com bằng domain thực tế của bạn.

Yêu cầu máy chủ

Nextcloud không có một cấu hình phần cứng cố định cho mọi trường hợp. Tài nguyên cần thiết phụ thuộc vào số lượng user, dung lượng dữ liệu, số lượng file, ứng dụng cài thêm và lưu lượng đồng bộ.

Đối với hệ thống thử nghiệm hoặc cá nhân, có thể bắt đầu với:

Đối với doanh nghiệp, nên cân nhắc:

Dung lượng lưu trữ cần được tính riêng dựa trên dữ liệu thực tế của người dùng.

Chuẩn bị DNS

Giả sử sử dụng domain:

cloud.example.com

Tạo bản ghi:

Type: A
Name: cloud
Value: IP_SERVER

Ví dụ:

cloud.example.com -> 103.x.x.x

Kiểm tra DNS:

dig cloud.example.com

Hoặc:

nslookup cloud.example.com

Đảm bảo domain đã trỏ đúng IP trước khi cấu hình SSL.

Bước 1: Cập nhật Ubuntu Server

Đăng nhập SSH bằng tài khoản có quyền sudo.

Cập nhật package:

sudo apt update
sudo apt upgrade -y

Kiểm tra phiên bản Ubuntu:

cat /etc/os-release

Kiểm tra hostname:

hostnamectl

Có thể đặt hostname:

sudo hostnamectl set-hostname cloud.example.com

Kiểm tra lại:

hostnamectl

Bước 2: Cài đặt Nginx

Cài Nginx:

sudo apt install nginx -y

Khởi động:

sudo systemctl start nginx

Cho phép tự động khởi động cùng hệ thống:

sudo systemctl enable nginx

Kiểm tra:

sudo systemctl status nginx

Nếu hiển thị:

Active: active (running)

Nginx đang hoạt động.

Kiểm tra phiên bản:

nginx -v

Kiểm tra website mặc định:

http://IP_SERVER

Nếu xuất hiện trang mặc định của Nginx, Web Server đã hoạt động.

Bước 3: Cài đặt PHP-FPM

Nextcloud cần PHP để thực thi ứng dụng.

Cài PHP và các package cần thiết:

sudo apt install php-fpm php-cli php-gd php-mysql php-curl php-mbstring php-intl php-gmp php-xml php-imagick php-zip php-bcmath php-apcu unzip -y

Kiểm tra PHP:

php -v

Kiểm tra PHP-FPM:

systemctl status php8.3-fpm

Nếu server đang sử dụng phiên bản PHP khác, thay 8.3 bằng phiên bản tương ứng.

Kiểm tra socket:

ls -lah /run/php/

Ví dụ:

php8.3-fpm.sock

Socket này sẽ được sử dụng để kết nối Nginx với PHP-FPM.

Bước 4: Cấu hình PHP cho Nextcloud

Nextcloud thường xử lý các file lớn nên cấu hình PHP mặc định có thể không phù hợp.

Mở file:

sudo nano /etc/php/8.3/fpm/php.ini

Tìm và điều chỉnh:

memory_limit = 512M
upload_max_filesize = 2G
post_max_size = 2G
max_execution_time = 3600
max_input_time = 3600
max_input_vars = 5000
output_buffering = 0
date.timezone = Asia/Ho_Chi_Minh

Nếu cần upload file lớn hơn, có thể tăng:

upload_max_filesize = 10G
post_max_size = 10G

Tuy nhiên, không nên đặt giới hạn quá lớn nếu máy chủ không có đủ RAM, CPU, network và storage.

Sau khi thay đổi:

sudo systemctl restart php8.3-fpm

Bước 5: Cấu hình OPcache

OPcache giúp giảm thời gian PHP phải biên dịch lại mã nguồn, từ đó cải thiện hiệu suất Nextcloud.

Mở:

sudo nano /etc/php/8.3/fpm/php.ini

Tìm phần OPcache và cấu hình:

opcache.enable=1
opcache.interned_strings_buffer=16
opcache.max_accelerated_files=20000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=60

Sau đó:

sudo systemctl restart php8.3-fpm

Kiểm tra:

php -m | grep -i opcache

Bước 6: Cài đặt MariaDB

Cài MariaDB:

sudo apt install mariadb-server mariadb-client -y

Khởi động:

sudo systemctl start mariadb

Cho phép tự động khởi động:

sudo systemctl enable mariadb

Kiểm tra:

sudo systemctl status mariadb

Kiểm tra phiên bản:

mariadb --version

Bước 7: Bảo mật MariaDB

Chạy:

sudo mariadb-secure-installation

Thực hiện các bước bảo mật theo yêu cầu hệ thống.

Nên:

Sau đó đăng nhập MariaDB:

sudo mariadb

Bước 8: Tạo database cho Nextcloud

Trong MariaDB:

CREATE DATABASE nextcloud
CHARACTER SET utf8mb4
COLLATE utf8mb4_general_ci;

Tạo user:

CREATE USER 'nextcloud'@'localhost'
IDENTIFIED BY 'MAT_KHAU_MẠNH';

Cấp quyền:

GRANT ALL PRIVILEGES ON nextcloud.* 
TO 'nextcloud'@'localhost';

Áp dụng:

FLUSH PRIVILEGES;

Kiểm tra:

SHOW DATABASES;

Thoát:

EXIT;

Nên sử dụng password mạnh và không sử dụng lại password của tài khoản quản trị server.

Bước 9: Tải Nextcloud

Chuyển đến thư mục website:

cd /var/www/

Tải bản Nextcloud:

sudo wget https://download.nextcloud.com/server/releases/latest.zip

Giải nén:

sudo unzip latest.zip

Sau khi giải nén:

ls -lah /var/www/nextcloud

Xóa file ZIP:

sudo rm latest.zip

Bước 10: Phân quyền Nextcloud

Thiết lập owner:

sudo chown -R www-data:www-data /var/www/nextcloud

Thiết lập quyền cơ bản:

sudo find /var/www/nextcloud -type d -exec chmod 750 {} \;
sudo find /var/www/nextcloud -type f -exec chmod 640 {} \;

Kiểm tra:

ls -ld /var/www/nextcloud

Không nên cấp quyền 777 cho toàn bộ thư mục Nextcloud.

Bước 11: Tạo cấu hình Nginx

Tạo file:

sudo nano /etc/nginx/sites-available/nextcloud

Cấu hình cơ bản:

upstream php-handler {
    server unix:/run/php/php8.3-fpm.sock;
}

server {
    listen 80;
    listen [::]:80;

    server_name cloud.example.com;

    root /var/www/nextcloud;

    client_max_body_size 2G;

    index index.php index.html /index.php$request_uri;

    location = /robots.txt {
        allow all;
        log_not_found off;
        access_log off;
    }

    location = /.well-known/carddav {
        return 301 $scheme://$host/remote.php/dav;
    }

    location = /.well-known/caldav {
        return 301 $scheme://$host/remote.php/dav;
    }

    location ^~ /.well-known {
        location = /.well-known/webfinger {
            try_files $uri $uri/ /index.php$request_uri;
        }

        location = /.well-known/nodeinfo {
            try_files $uri $uri/ /index.php$request_uri;
        }

        try_files $uri $uri/ =404;
    }

    location / {
        try_files $uri $uri/ /index.php$request_uri;
    }

    location ~ \.php(?:$|/) {
        rewrite ^/(?!index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|ocs-provider/.+|.+/richdocumentscode/proxy) /index.php$request_uri;

        fastcgi_split_path_info ^(.+?\.php)(/.*)$;

        set $path_info $fastcgi_path_info;

        try_files $fastcgi_script_name =404;

        include fastcgi_params;

        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $path_info;

        fastcgi_param modHeadersAvailable true;
        fastcgi_param front_controller_active true;

        fastcgi_pass php-handler;

        fastcgi_intercept_errors on;
        fastcgi_request_buffering on;
        fastcgi_max_temp_file_size 0;
    }

    location ~ \.(?:css|js|mjs|svg|gif|ico|jpg|png|webp|wasm|tflite|map|ogg|flac|mp4|webm)$ {
        try_files $uri /index.php$request_uri;
        expires 6M;
        access_log off;
    }

    location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)(?:$|/) {
        deny all;
    }

    location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) {
        deny all;
    }
}

Thay:

cloud.example.com

bằng domain thực tế.

Nếu PHP-FPM sử dụng phiên bản khác, thay:

/run/php/php8.3-fpm.sock

bằng socket tương ứng.

Bước 12: Kiểm tra cấu hình Nginx

Chạy:

sudo nginx -t

Nếu nhận:

syntax is ok
test is successful

cấu hình hợp lệ.

Kích hoạt website:

sudo ln -s /etc/nginx/sites-available/nextcloud /etc/nginx/sites-enabled/nextcloud

Có thể tắt website mặc định:

sudo rm -f /etc/nginx/sites-enabled/default

Kiểm tra lại:

sudo nginx -t

Reload:

sudo systemctl reload nginx

Bước 13: Truy cập trình cài đặt Nextcloud

Mở trình duyệt:

http://cloud.example.com

Nếu DNS đã trỏ đúng, bạn sẽ thấy giao diện cài đặt Nextcloud.

Tạo:

Administrator account
Username
Password

Phần Database chọn:

MySQL/MariaDB

Nhập:

Database user: nextcloud
Database password: MAT_KHAU
Database name: nextcloud
Database host: localhost

Sau đó bắt đầu cài đặt.

Nextcloud sẽ tự tạo các bảng database cần thiết.

Bước 14: Kiểm tra Nextcloud bằng OCC

Sau khi cài đặt, nên kiểm tra hệ thống bằng command line.

Chuyển đến thư mục:

cd /var/www/nextcloud

Chạy:

sudo -u www-data php occ status

Nếu hệ thống hoạt động bình thường, có thể nhận thông tin tương tự:

installed: true
version: ...
versionstring: ...

Kiểm tra phiên bản:

sudo -u www-data php occ -V

Kiểm tra trạng thái:

sudo -u www-data php occ status

Bước 15: Cấu hình Cron cho Nextcloud

Nextcloud cần chạy các background jobs định kỳ.

Đây là bước rất quan trọng nếu muốn hệ thống hoạt động ổn định trong production.

Mở crontab của user www-data:

sudo -u www-data crontab -e

Thêm:

*/5 * * * * php -f /var/www/nextcloud/cron.php

Sau đó vào giao diện:

Administration Settings

Tìm phần:

Background jobs

Chọn:

Cron

Không nên sử dụng AJAX background jobs cho hệ thống Nextcloud production có nhiều người dùng nếu có thể sử dụng Cron.

Bước 16: Cài đặt Redis

Redis giúp cải thiện caching và file locking cho Nextcloud.

Cài đặt:

sudo apt install redis-server php-redis -y

Khởi động:

sudo systemctl enable redis-server
sudo systemctl start redis-server

Kiểm tra:

sudo systemctl status redis-server

Kiểm tra Redis:

redis-cli ping

Nếu trả về:

PONG

Redis đang hoạt động.

Sau đó có thể cấu hình Redis trong:

/var/www/nextcloud/config/config.php

Ví dụ:

'memcache.local' => '\\OC\\Memcache\\APCu',
'memcache.locking' => '\\OC\\Memcache\\Redis',
'redis' => [
    'host' => '/var/run/redis/redis-server.sock',
    'port' => 0,
],

Cần kiểm tra chính xác đường dẫn Redis socket trên hệ thống trước khi áp dụng.

Nếu chưa sử dụng Redis, không nên thêm cấu hình Redis vào config.php một cách tùy tiện.

Bước 17: Cấu hình HTTPS cho Nextcloud

Không nên sử dụng HTTP thuần cho Nextcloud production vì dữ liệu đăng nhập và dữ liệu người dùng cần được truyền qua kết nối mã hóa.

Cài Certbot:

sudo apt install certbot python3-certbot-nginx -y

Tạo SSL:

sudo certbot --nginx -d cloud.example.com

Certbot sẽ cấu hình certificate cho domain.

Kiểm tra:

https://cloud.example.com

Kiểm tra certificate:

sudo certbot certificates

Kiểm tra HTTPS bằng:

curl -I https://cloud.example.com

Bước 18: Cấu hình Trusted Domains

Nextcloud chỉ cho phép truy cập thông qua các domain được khai báo trong trusted_domains.

Kiểm tra:

sudo -u www-data php /var/www/nextcloud/occ config:system:get trusted_domains

Thêm domain:

sudo -u www-data php /var/www/nextcloud/occ config:system:set trusted_domains 1 --value=cloud.example.com

Nếu có thêm IP:

sudo -u www-data php /var/www/nextcloud/occ config:system:set trusted_domains 2 --value=IP_SERVER

Kiểm tra lại:

sudo -u www-data php /var/www/nextcloud/occ config:system:get trusted_domains

Bước 19: Cấu hình upload file lớn

Một trong những lỗi phổ biến khi triển khai Nextcloud là upload file lớn bị giới hạn bởi PHP hoặc Nginx.

Nginx:

client_max_body_size 10G;

PHP:

upload_max_filesize = 10G
post_max_size = 10G

Thời gian xử lý:

max_execution_time = 3600
max_input_time = 3600

Sau khi thay đổi PHP:

sudo systemctl restart php8.3-fpm

Reload Nginx:

sudo systemctl reload nginx

Nếu sử dụng reverse proxy hoặc Cloudflare, cần kiểm tra thêm giới hạn upload của lớp proxy phía trước.

Bước 20: Tách dữ liệu Nextcloud khỏi web directory

Đối với hệ thống production, có thể đặt thư mục data bên ngoài web root.

Ví dụ:

/var/www/nextcloud
/data/nextcloud

Điều này giúp giảm nguy cơ dữ liệu người dùng bị truy cập trực tiếp thông qua Web Server.

Khi cài đặt Nextcloud, có thể chỉ định:

Data folder:
/data/nextcloud

Tạo thư mục:

sudo mkdir -p /data/nextcloud

Phân quyền:

sudo chown -R www-data:www-data /data/nextcloud

Không nên đặt thư mục dữ liệu trong một vị trí có thể bị Nginx phục vụ trực tiếp.

Bước 21: Kiểm tra dung lượng storage

Nextcloud thường là hệ thống có tốc độ tăng dữ liệu nhanh.

Kiểm tra:

df -h

Kiểm tra thư mục:

du -sh /var/www/nextcloud

Nếu data nằm ở storage riêng:

du -sh /data/nextcloud

Đối với hệ thống lưu trữ lớn, nên theo dõi:

Không nên chỉ dựa vào dung lượng còn trống để đánh giá khả năng đáp ứng của storage.

Bước 22: Kiểm tra database

Kiểm tra MariaDB:

sudo systemctl status mariadb

Kiểm tra database:

sudo mariadb -e "SHOW DATABASES;"

Kiểm tra InnoDB:

sudo mariadb -e "SHOW ENGINES;" | grep InnoDB

InnoDB phải được hỗ trợ.

Không nên sử dụng MyISAM cho database Nextcloud.

Bước 23: Kiểm tra Nginx và PHP-FPM

Kiểm tra Nginx:

sudo nginx -t

Kiểm tra service:

sudo systemctl status nginx

Kiểm tra PHP-FPM:

sudo systemctl status php8.3-fpm

Kiểm tra socket:

ls -lah /run/php/

Nếu Nginx trả về:

502 Bad Gateway

hãy kiểm tra PHP-FPM trước tiên.

Log Nginx:

sudo tail -f /var/log/nginx/error.log

Log PHP-FPM:

sudo journalctl -u php8.3-fpm -n 100 --no-pager

Bước 24: Kiểm tra log Nextcloud

Log chính thường nằm tại:

/var/www/nextcloud/data/nextcloud.log

Xem log:

sudo tail -f /var/www/nextcloud/data/nextcloud.log

Nếu data nằm ở thư mục khác, thay đường dẫn tương ứng.

Log có thể giúp phát hiện:

Một số lỗi Nextcloud thường gặp

Lỗi 502 Bad Gateway

Nguyên nhân thường liên quan đến:

Kiểm tra:

systemctl status php8.3-fpm

Kiểm tra socket:

ls -lah /run/php/

Kiểm tra Nginx:

nginx -t

Lỗi 413 Request Entity Too Large

Nguyên nhân thường do Nginx giới hạn kích thước upload.

Kiểm tra:

client_max_body_size 10G;

Sau đó:

sudo nginx -t
sudo systemctl reload nginx

Upload file lớn bị lỗi

Kiểm tra đồng thời:

Nginx client_max_body_size
PHP upload_max_filesize
PHP post_max_size
PHP max_execution_time
PHP max_input_time

Nếu có reverse proxy hoặc CDN, cần kiểm tra giới hạn của proxy.

Lỗi Trusted Domain

Nếu Nextcloud báo:

Access through untrusted domain

kiểm tra:

sudo -u www-data php /var/www/nextcloud/occ config:system:get trusted_domains

Sau đó thêm domain tương ứng.

Lỗi Permission

Kiểm tra:

ls -ld /var/www/nextcloud

Các file Nextcloud cần được phân quyền phù hợp cho user chạy PHP-FPM.

Thông thường:

www-data:www-data

Không nên chạy:

chmod -R 777 /var/www/nextcloud

để xử lý lỗi permission.

Nextcloud cảnh báo Background Jobs

Kiểm tra Cron:

sudo -u www-data crontab -l

Kiểm tra:

sudo -u www-data php /var/www/nextcloud/occ background:cron

Nếu Cron không chạy, kiểm tra lại đường dẫn PHP và cron.php.

Tối ưu Nextcloud cho môi trường production

Sau khi cài đặt thành công, nên thực hiện thêm một số cấu hình.

Sử dụng Redis

Redis đặc biệt hữu ích khi hệ thống có nhiều user hoặc nhiều hoạt động đồng bộ file.

Bật OPcache

OPcache giúp giảm overhead khi PHP xử lý ứng dụng.

Sử dụng Cron

Cron giúp xử lý background jobs ổn định hơn AJAX.

Sử dụng HTTPS

Nextcloud nên được triển khai hoàn toàn qua HTTPS.

Theo dõi database

Khi số lượng file và user tăng, database có thể trở thành một trong những thành phần cần tối ưu đầu tiên.

Sử dụng storage phù hợp

Nếu Nextcloud được sử dụng làm private cloud cho doanh nghiệp, storage cần ưu tiên:

Không nên lựa chọn storage chỉ dựa trên dung lượng.

Bảo mật Nextcloud Server

Một hệ thống Nextcloud chứa dữ liệu cá nhân hoặc dữ liệu doanh nghiệp nên được bảo mật nhiều lớp.

Sử dụng SSH Key

Hạn chế sử dụng password SSH.

Firewall

Chỉ mở các port cần thiết:

22/tcp
80/tcp
443/tcp

Nếu SSH sử dụng port khác, thay đổi rule tương ứng.

Không nên mở trực tiếp:

3306
6379

ra Internet nếu không cần thiết.

Cập nhật hệ điều hành

Định kỳ:

sudo apt update
sudo apt upgrade

Cập nhật Nextcloud

Trước khi nâng cấp Nextcloud:

Không nên nâng cấp trực tiếp trên production mà không có backup và phương án rollback.

Backup Nextcloud

Backup nên bao gồm ít nhất:

Database

Ví dụ:

mysqldump --single-transaction nextcloud > nextcloud.sql

Config

/var/www/nextcloud/config/

Data

/data/nextcloud/

Ứng dụng

/var/www/nextcloud/

Quan trọng nhất là phải kiểm tra khả năng restore. Một file backup chưa được kiểm tra khôi phục không thể xem là phương án backup hoàn chỉnh.

Nextcloud có nên chạy trên VPS không?

Có.

Nextcloud có thể chạy tốt trên VPS nếu VPS có:

Đối với cá nhân hoặc nhóm nhỏ, VPS là lựa chọn tiết kiệm và dễ triển khai.

Đối với doanh nghiệp có nhiều user và dữ liệu lớn, nên cân nhắc Dedicated Server hoặc kiến trúc storage riêng.

Nextcloud trên VPS và Dedicated Server

Tiêu chí VPS Dedicated Server
Chi phí Thấp hơn Cao hơn
Triển khai Nhanh Cần chuẩn bị phần cứng
CPU Chia sẻ hoặc phân bổ theo cấu hình Toàn bộ máy
Storage Tùy nhà cung cấp Chủ động hơn
Khả năng mở rộng Dễ Phụ thuộc phần cứng
Dữ liệu lớn Phù hợp tùy cấu hình Phù hợp
Nhiều user Tốt với cấu hình phù hợp Tốt
Private Cloud doanh nghiệp Phù hợp Rất phù hợp

Checklist cài đặt Nextcloud

Trước khi đưa hệ thống vào production, nên kiểm tra:

Kết luận

Nextcloud là một giải pháp private cloud mạnh, phù hợp cho cả cá nhân, nhóm làm việc và doanh nghiệp muốn chủ động kiểm soát dữ liệu.

Trên Ubuntu Server, mô hình Nginx + PHP-FPM + MariaDB cung cấp nền tảng tốt để triển khai Nextcloud. Tuy nhiên, cài đặt thành công giao diện Nextcloud mới chỉ là bước đầu. Để hệ thống hoạt động ổn định trong môi trường production, cần tiếp tục cấu hình HTTPS, Cron, Redis, OPcache, database, storage, firewall và backup.

Đối với hệ thống có lượng dữ liệu lớn hoặc nhiều người dùng đồng thời, cần đánh giá riêng CPU, RAM, PHP-FPM, database, IOPS và network. Khi quy mô tăng, Nextcloud có thể được mở rộng với storage riêng, database server riêng, Redis, object storage hoặc kiến trúc nhiều máy chủ.

Màn hình hiển thị như này là thành công!

Exit mobile version