Cài đặt NextCloud lên Ubuntu Server

Cài đặt NextCloud lên Ubuntu Server

Giới thiệu

NextCloud là gì? NextCloud là một ứng dụng mã nguồn mở, hỗ trợ lưu trữ và đồng bộ dữ liệu trên nền tảng điện toán đám mây. Với Nextcloud bạn có thể xây dựng cho tổ chức, doanh nghiệp hay cá nhân một nền tảng lưu trữ dữ liệu và đồng bộ dữ liệu tương tự như Google Drive, Dropbox, Onedrive
→ Tại sao nên dùng NextCloud?
NextCloud có thể hỗ trợ trên nhiều nền tảng phổ biến hiện nay, từ các nền tảng di động cho đến máy tính để bàn. Bạn có thể tải về các ứng dụng dụng gốc cho hầu hết các hệ điều hành. Đồng thời bạn hoặc nhóm của bạn có thể làm việc từ bất kỳ thiết bị và địa điểm nào. Do đó, nó tiết kiệm tối đa chi phí cơ sở hạ tầng.
★ Có ứng dụng desktop riêng cho Windows, LinuxMacOS, đồng thời cũng có ứng dụng cho SmartPhone chạy Android hay iOS.
NextCloud cung cấp nhiều tính năng để tạo ra một đám mây riêng, ví dụ như: Tự động lưu trữ, chia sẻ đơn giản, bảo mật cao và đi kèm nhiều dịch vụ tích hợp nhờ các plugin.

Hiện tại mình đang dùng xPenology (Synology fake). Tuy nhiên, vì là hàng fake nên việc cập nhập phiên bản mới phụ thuộc khá nhiều vào loader có hay không. Vì vậy, mình chuyển xPenology về chỉ sử dụng trong LAN. Còn các ứng dụng tương tự mình cố gắng xây dựng trên nền Ubuntu Server hết. Và NextCloud là một trong số đó.

Cài đặt

Tải về, thời điểm viết bài này phiên bản mới nhất là 23.0.2, bạn có thể lên trang chủ của NextCloud để kiểm tra phiên bản mới hơn nếu có.

#về thư mục home của user
cd ~
wget https://download.nextcloud.com/server/releases/nextcloud-23.0.2.tar.bz2

Giải nén

tar -xjvf nextcloud-23.0.2.tar.bz2
#hoặc là, tùy file tải về
unzip nextcloud-23.0.2.zip

copy về thư mục www của Apache, vì NextCloud viết trên nền PHP nên chúng ta dùng Apache làm server, Nginx làm Reverse Proxy

sudo cp -r nextcloud /var/www

đổi tên cho dễ nhớ, mình test trên local với domain là cloud.local. Thư mục để ở /var/www/cloud.local

#vào thư mục /var/www
cd /var/www
sudo mv nextcloud cloud.local

chỉnh sửa file cấu hình virtualhost của apache

sudo nano /etc/apache2/sites-available/cloud.local.conf

và chèn vào nội dung sau

#dùng cổng 8888 để 80 cho nginx
<VirtualHost *:8888>
 DocumentRoot "/var/www/cloud.local"
 ServerName cloud.local
 ServerAlias cloud.local

 #Alias cloud.local /var/www/cloud.local
 ErrorLog ${APACHE_LOG_DIR}/error.log
 CustomLog ${APACHE_LOG_DIR}/access.log combined

<Directory /var/www/cloud.local/>
 Options +FollowSymlinks
 AllowOverride All

 <IfModule mod_dav.c>
 Dav off
 </IfModule>
 SetEnv HOME /var/www/cloud.local
 SetEnv HTTP_HOME /var/www/cloud.local
 Satisfy Any
</Directory>
</VirtualHost>

Kích hoạt virtualhost

sudo a2ensite cloud.local.conf
#Kiểm tra và khởi động lại Apache
sudo apachectl -t
sudo systemctl restart apache2

Kích hoạt các module cần thiết

sudo a2enmod rewrite
sudo a2enmod headers
sudo a2enmod env
sudo a2enmod dir
sudo a2enmod mime

khởi động lại Apache

sudo systemctl reload apache2

Kiểm tra xem apache2 chạy dưới quyền user nào

sudo apachectl -S

Phân quyền cho thư mục với user đã xác nhận được ở trên, thường là www-data

sudo chown -R www-data:www-data /var/www/cloud.local/
sudo chmod -R 755 /var/www/cloud.local/

Cấu hình nginx, tạo file config cho Nginx - để Reverse Proxy

sudo nano /etc/nginx/sites-available/cloud.local

Chèn vào nội dung sau

#cloud.local
server {
    listen 80;
    listen [::]:80;
    server_name cloud.local;
    root /var/www/cloud.local;
    index index.php index.htm index.html;

    location / {
        proxy_pass http://192.168.1.34:8888;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

    location ~ /\.ht {
        deny all;
    }

    listen 443 ssl;
    ssl_certificate /etc/letsencrypt/live/local-0001/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/local-0001/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}

Tạo liên kết

sudo ln -s /etc/nginx/sites-available/cloud.local /etc/nginx/sites-enabled/cloud.local

xác nhận ok và khởi động lại Nginx

sudo nginx -t
sudo systemctl restart nginx

Vào trình duyệt web và tiếp tục tiến hành cài đặt trên web. Điền đầy đủ thông tin và nhấn Install.

Quá trình cài đặt hoàn tất, NextCloud sẽ khuyến khích một số app, mình nghĩ nên cài hết, nhấn "Install recommended apps" để cài đặt.

Một số Recommended apps: Calendar, Collabora Online - Built-in CODE Server , Contact, Mail, NextCloud Office, Talk. Trong quá trình này, có một số App vì quá nặng nên có thể khó cài đặt, tạm thời bỏ qua. Chúng ta sẽ cài đặt sau bằng dòng lệnh.

Kết luận

Cài đặt hoàn tất. Nếu có thời gian rảnh, mình sẽ cố gắng note lại hướng dẫn cơ bản để sử dụng NextCloud.
Nếu có khó khăn hay có câu hỏi gì hãy đừng ngại ngần mà viết comment ở phần bên dưới nhé.

Tham khảo thêm

Cài đặt Ubuntu server 20.04 LTS
Hướng dẫn cài đặt LAMP(Linux, Apache, MariaDB, PHP) trên Ubuntu server 20.04
Hướng dẫn cài đặt Nginx trên Ubuntu Server 20.04