Nội Dung
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ợ.