Cài đặt Nextcloud trên Ubuntu 20.04 với Apache (LAMP stack)

Giới thiệu về Nextcloud

Nextcloud là mã nguồn mở miễn phí giúp xây hệ thống hệ thống cloud storage giống như Google Drive, iCloud, Dropbox. Vì nhiều lý do như chi phí, đường truyền chậm khi sử dụng các hệ thống hệ thống lưu trữ tại nước ngoài như Google Drive, iCloud hoặc Dropbox … bạn cần một giải pháp lưu trữ trong datacenter tại Việt Nam để đề phòng các trường hợp đứt cable quang quốc tế thì Nextcloud sẽ là một giải pháp tối ưu cho bạn.

Trong bài này vHost sẽ hướng dẫn bạn cài đặt hệ thống lưu trữ Nextcloud lên server của mình.

Tính năng của Nextcloud

  • Mã nguồn mở miễn phí
  • Có thể cài đặt trên bất kì các server nào bạn muốn
  • Mã hóa dữ liệu lưu trữ trên server
  • Có thể tích hợp với các công cụ edit office thay thế cho hệ sinh thái của Google như: Google Docs, Google Sheet, Google Slides và Google Meet
  • Hỗ trợ đa ứng dụng dành cho client như: PC, Mobile, Tablet device
  • Khả năng tích hợp với nhiều ứng dụng của bên thứ 3 khác

Yêu cầu hệ thống

  • CPU: 2 Core
  • Memory: 4GB tối thiểu
  • Storage: 10GB tối thiểu và dung lượng lưu trữ đủ để lưu hệ thống file của bạn
  • Hệ điều hành: Ubuntu 20.04

Ngoài ra bạn cần cài LAMP stack trên server trước khi tiến hành bài này, nếu bạn chưa cài đặt LAMP stack bạn có thể tham khảo hướng dẫn cài đặt LAMP stack trên Ubuntu 20.04 tại đây

Tiến hành cài đặt

Download nextcloud phiên bản mới nhất 23.0.2

wget https://download.nextcloud.com/server/releases/nextcloud-23.0.2.zip

Giải nén nextcloud

apt install unzip
unzip nextcloud-23.0.2.zip -d /var/www/

Phân quyền thư mục source code

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

Tạo database cho Nextcloud

Login MySQL

sudo mysql

Tạo database nextcloud

create database nextcloud;

Tạo user và gán quyền truy cập database nextcloud

grant all privileges on nextcloud.* to nextclouduser@localhost identified by 'yourpassword';

Apply quyền cho có tác dụng và exit

flush privileges;
exit

Tạo virtualhost cho Nextcloud

sudo nano /etc/apache2/sites-available/nextcloud.conf

Nhập nội dung và thay thế domain s.vhost.vn với domain của bạn

<VirtualHost *:80>
        DocumentRoot "/var/www/nextcloud"
        ServerName s.vhost.vn

        ErrorLog ${APACHE_LOG_DIR}/nextcloud.error
        CustomLog ${APACHE_LOG_DIR}/nextcloud.access combined

        <Directory /var/www/nextcloud/>
            Require all granted
            Options FollowSymlinks MultiViews
            AllowOverride All

           <IfModule mod_dav.c>
               Dav off
           </IfModule>

        SetEnv HOME /var/www/nextcloud
        SetEnv HTTP_HOME /var/www/nextcloud
        Satisfy Any

       </Directory>

</VirtualHost>

Enable virtualhost nextcloud vừa tạo

sudo a2ensite nextcloud.conf

Enable các module cần thiết cho Apache

sudo a2enmod rewrite headers env dir mime setenvif ssl

Kiểm tra lại config vừa tạo

sudo apache2ctl -t

Restart lại apache

sudo systemctl restart apache2

Cài đặt các PHP module cần thiết cho Nextcloud

sudo apt install imagemagick php-imagick libapache2-mod-php7.4 php7.4-common php7.4-mysql php7.4-fpm php7.4-gd php7.4-json php7.4-curl php7.4-zip php7.4-xml php7.4-mbstring php7.4-bz2 php7.4-intl php7.4-bcmath php7.4-gmp -y

Cài đặt SSL Let’s Encrypt cho Nextcloud

Cài đặt certbot cho Apache

sudo apt install certbot python3-certbot-apache -y

Chạy command sau để request SSL cho domain s.vhost.vn

sudo certbot --apache --agree-tos --redirect --staple-ocsp --email yourname@domain.com -d s.vhost.vn

Nếu bạn request SSL thành công thì màn hình sẽ thông báo

Cấu hình HSTS header cho Nextcloud

sudo nano /etc/apache2/sites-enabled/nextcloud-le-ssl.conf

Add nội dung sau như hình

Header always set Strict-Transport-Security "max-age=31536000"

Restart lại webserver Apache

systemctl restart apache2

Cài đặt Nextcloud trên Ubuntu 20.04

Tạo folder lưu trữ data của người dùng upload lên

sudo mkdir /var/www/nextcloud-data

Phân quyền cho user có thể upload data lên folder này

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

Truy cập https://s.vhost.vn để tiến hành cài đặt Nextcloud

Khai báo thông tin admin, password, đường dẫn lưu trữ file và thông tin database và nhấn install để bắt đầu cài đặt

Tại bước recommended apps chúng ta nhấn Cancel và sẽ cài đặt các app tùy ý sau

Sau khi cài đặt xong hệ thống sẽ hiện ra màn hình welcome như hình sau

Giao diện dashboard sau khi login

Tới đây chúng ta đã hoàn tất cài đặt Nextcloud trên Ubuntu 20.04 tuy nhiên nếu truy cập Settings -> Overview chúng ta sẽ thấy khá nhiều warning.

Để có thể sử dụng mượt mà không bị lỗi chúng ta cần thực hiện thêm các công việc tối ưu cho Nextcloud

Tối ưu nâng cao cho Nextcloud

Khai báo SMTP cho Nextcloud để gửi thông báo cho người dùng

Truy cập Settings -> Personal info để khai báo email cho admin

Truy cập Settings -> Basic setttings để khai báo thông tin SMTP vào phần Email Server

Sau đó nhấn Send email để kiểm tra kết quả tích hợp SMTP thành công hay chưa. Nếu bạn kiểm tra email và đã nhận được thông báo như hình sau chứng tỏ SMTP đã khai báo thành công

Tối ưu PHP cho phép upload file lớn và kéo dài thời gian xử lý code PHP

Tối ưu memory_limit

Edit file PHP.ini trên PHP-FPM

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

Tìm giá trị memory_limit và điều chỉnh lên 512MB

memory_limit = 512M
Cho phép upload file 10GB

Tìm giá trị upload_max_filesize và thay thế vào con số 10240M

upload_max_filesize = 10240M

Save file và restart lại PHP-FPM để load giá trị mới

systemctl restart php7.4-fpm

Cấu hình Redis Cache cho Nextcloud

Cài đặt Redis cache server
sudo apt install redis-server -y

Kiểm tra lại version Redis sau khi cài đặt

redis-server -v
Cài đặt module redis cho PHP
sudo apt install php-redis -y

Kiểm tra lại extension redis cho PHP đã enable hay chưa?

php --ri redis

Restart PHP-FPM và Apache để reload lại cấu hình PHP extension mới

systemctl reload php7.4-fpm
systemctl reload apache2
Cấu hình Nextcloud hoạt động với Redis cache

Edit file cấu hình của Nextcloud

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

Bổ sung nội dung sau trước dòng cuối cùng );

'memcache.distributed' => '\OC\Memcache\Redis',
'memcache.local' => '\OC\Memcache\Redis',
'memcache.locking' => '\OC\Memcache\Redis',
'redis' => array(
     'host' => 'localhost',
     'port' => 6379,
     ),

Cấu hình default phone region cho Nextcloud

Edit file cấu hình của Nextcloud

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

Bổ sung nội dung sau trước dòng cuối cùng );

'default_phone_region' => 'VN',

Cấu hình cron để xử lý background jobs trên Nextcloud

Truy cập Settings -> Basic Settings chọn Cron

Tạo cronjob cho user www-data trên Ubuntu 20.04

sudo -u www-data crontab -e

Bổ sung cron như hình sau

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

Như vậy ta đã thực hiện xong các bước tối ưu cần thiết cho Nextcloud, truy cập lại Settings -> Overview để kiểm tra lại kết quả

Như vậy trong bài này vHost đã giúp bạn cài đặt xong hệ thống lưu trữ file Nextcloud trên Ubuntu 20.04 và các bước tối ưu nâng cao cần thiết. Nếu bạn gặp khó khăn trong quá trình cài đặt, hãy để lại comment để vHost có thể hỗ trợ.

Leave a Comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Scroll to Top