Nextcloud là phần mềm miễn phí (Mã nguồn mở) giống Dropbox, một nhánh của dự án ownCloud. Nextcloud được viết bằng PHP và JavaScript, hỗ trợ nhiều hệ thống cơ sở dữ liệu như MySQL/MariaDB, PostgreSQL, Oracle Database và SQLite. Để giữ cho các tệp của bạn được đồng bộ hóa giữa Desktop và máy chủ của riêng bạn, Nextcloud cung cấp các ứng dụng cho máy tính để bàn Windows, Linux và Mac và ứng dụng di động cho Android và iOS. Nextcloud không chỉ là bản sao Dropbox, nó còn cung cấp các tính năng bổ sung như Lịch, Danh bạ, Lên lịch tác vụ và phát trực tuyến phương tiện với Ampache, v.v.
Trong hướng dẫn này, chúng tôi sẽ chỉ cho bạn cách cài đặt và cấu hình bản phát hành Nextcloud mới nhất (tại thời điểm viết bài này, bản phát hành mới nhất là 13.0.2) trên máy chủ Ubuntu 18.04. Chúng tôi sẽ chạy Nextcloud với máy chủ web Nginx và PHP7.1-FPM và sử dụng máy chủ MySQL làm hệ thống cơ sở dữ liệu.
Đăng nhập vào máy chủ và cập nhật kho lưu trữ, sau đó cài đặt máy chủ web Nginx bằng lệnh apt như hiển thị bên dưới.
Sau khi cài đặt hoàn tất, hãy khởi động dịch vụ Nginx và cho phép dịch vụ khởi chạy mỗi lần khởi động hệ thống bằng systemctl.
Máy chủ web Nginx đã được cài đặt trên Ubuntu 18.04. Kiểm tra bằng lệnh netstat hoặc curl bên dưới.
Máy chủ web Nginx hiện đang chạy trên Ubuntu trên cổng HTTP chuẩn 80.
Cài đặt gói 'software-properties-common' và thêm kho lưu trữ PPA 'ondrej PHP' bằng cách chạy các lệnh sau.
Lưu ý:
Trên Ubuntu 18.04, lệnh 'add-apt-repository' sẽ tự động cập nhật kho lưu trữ.
Bây giờ hãy cài đặt PHP7.1 và PHP7.1-FPM với tất cả các tiện ích mở rộng cần thiết bằng lệnh apt duy nhất bên dưới.
Sau khi cài đặt hoàn tất, chúng ta sẽ cấu hình các tệp php.ini cho php-fpm và php-cli.
Vào thư mục '/etc/php/7.1'.
Sửa các tệp php.ini cho php-fpm và php-cli bằng vim.
Bỏ chú thích dòng 'date.timezone' và thay đổi giá trị theo múi giờ của riêng bạn.
Bỏ chú thích dòng 'cgi.fix_pathinfo' và thay đổi giá trị thành '0'.
Lưu và thoát.
Tiếp theo, chỉnh sửa cấu hình nhóm php-fpm 'www.conf'.
Bỏ chú thích những dòng bên dưới.
Lưu và thoát.
Khởi động lại dịch vụ PHP7.1-FPM và cho phép dịch vụ này khởi chạy mỗi khi khởi động hệ thống.
Bây giờ hãy kiểm tra bằng lệnh netstat.
Và bạn sẽ thấy php-fpm hiện đang chạy trong tệp sock '/run/php/php7.1-fpm.sock'.
Cài đặt phiên bản mới nhất của máy chủ MySQL bằng lệnh apt bên dưới.
Sau khi cài đặt hoàn tất, hãy khởi động dịch vụ MySQL và cho phép dịch vụ này khởi chạy mọi lúc khi khởi động hệ thống.
Bây giờ chúng ta sẽ cấu hình mật khẩu gốc MySQL bằng lệnh 'mysql_secure_installation'.
Chạy lệnh sau.
Ở phiên bản MySQL 5.8 này, có một cải tiến về bảo mật cho chính sách mật khẩu MySQL. Bạn cần chọn chính sách mật khẩu - 0 cho chính sách THẤP, 1 cho chính sách TRUNG BÌNH và 2 cho chính sách mật khẩu MẠNH.
Đối với hướng dẫn này, chúng tôi sẽ sử dụng chính sách mật khẩu 'TRUNG BÌNH' và khuyến nghị sử dụng chính sách mật khẩu 'MẠNH' trên máy chủ sản xuất.
Chọn số '1' và nhấn Enter, sau đó nhập mật khẩu 'root' MySQL mới của bạn.
Và mật khẩu root MySQL đã được thiết lập.
Tiếp theo, chúng ta sẽ tạo cơ sở dữ liệu mới để cài đặt nextcloud. Chúng tôi sẽ tạo một cơ sở dữ liệu mới có tên 'nextcloud_db' với người dùng 'nextclouduser' và mật khẩu 'Nextclouduser421@'.
Đăng nhập vào shell MySQL với tư cách là người dùng root bằng lệnh mysql.
Bây giờ hãy tạo cơ sở dữ liệu và người dùng với mật khẩu bằng cách chạy các truy vấn MySQL sau.
Và cơ sở dữ liệu và người dùng mới cho cài đặt nextcloud đã được tạo.
Cài đặt và cấu hình MySQL cho nextcloud đã hoàn tất.
Nếu bạn không có tên miền hoặc không cài đặt nextcloud trên máy tính cục bộ, bạn có thể tạo chứng chỉ Tự ký bằng OpenSSL.
Cài đặt công cụ 'letsencrypt' bằng lệnh apt bên dưới.
Sau khi cài đặt hoàn tất, hãy dừng dịch vụ nginx.
Tiếp theo, chúng ta sẽ tạo chứng chỉ SSL cho tên miền 'nextcloud.hakase-labs.io' của mình bằng dòng lệnh cerbot. Chạy lệnh bên dưới.
Bạn sẽ được yêu cầu cung cấp địa chỉ email và địa chỉ này được sử dụng để thông báo gia hạn. Đối với thỏa thuận TOS của Letsencrypt, hãy nhập 'A' để đồng ý và đối với địa chỉ email chia sẻ, bạn có thể nhập 'N' để không.
Khi hoàn tất, bạn sẽ nhận được kết quả như hiển thị bên dưới.
Các chứng chỉ SSL Letsencrypt cho tên miền netxcloud đã được tạo, tất cả đều nằm trong thư mục '/etc/letsencrypt/live/domain'.
Bây giờ hãy đến thư mục '/var/www' và tải xuống tệp nextcloud-13.0.2.zip.
Giải nén tệp zip và bạn sẽ nhận được thư mục 'nextcloud', sau đó tạo thư mục 'data' mới.
Bây giờ hãy thay đổi chủ sở hữu của thư mục 'nextcloud' thành người dùng và nhóm 'www-data'.
Nextcloud đã được tải xuống theo Thư mục '/var/www/nextcloud' và đây sẽ là thư mục gốc của web.
Bây giờ hãy đến thư mục '/etc/nginx/sites-available' và tạo một tệp máy chủ ảo mới 'nextcloud'.
Tại đó, dán cấu hình máy chủ ảo nextcloud sau.
Lưu và thoát.
Bật máy chủ ảo và kiểm tra cấu hình, đảm bảo không có lỗi.
Bây giờ hãy khởi động lại dịch vụ PHP7.1-FPM và dịch vụ nginx bằng lệnh systemctl bên dưới.
Cấu hình máy chủ ảo Nginx cho nextcloud đã được tạo.
Bật tường lửa ufw.
Gõ 'y' và nhấn Enter để bắt đầu và bật tường lửa UFW.
Bây giờ hãy thêm SSH, HTTP và HTTPS mới vào danh sách tường lửa UFW.
Kiểm tra danh sách cổng được phép trên tường lửa UFW bằng lệnh bên dưới.
Và bạn sẽ thấy cổng HTTP 80 và cổng HTTPS 443 có trong danh sách.
Và bạn sẽ được chuyển hướng đến kết nối HTTPS an toàn.
Ở trang đầu, chúng ta cần tạo người dùng quản trị cho nextcloud, nhập mật khẩu người dùng quản trị. Trên cấu hình 'Thư mục dữ liệu', nhập đường dẫn đầy đủ của thư mục 'dữ liệu' '/var/www/nextcloud/data'.
Cuộn trang xuống cuối trang và bạn sẽ nhận được cấu hình cơ sở dữ liệu. Nhập thông tin cơ sở dữ liệu mà chúng ta đã tạo ở bước 3 rồi nhấp vào nút 'Hoàn tất thiết lập'.
Sau khi cài đặt hoàn tất, bạn sẽ nhận được Bảng điều khiển Nextcloud như bên dưới.
Quá trình cài đặt Nextcloud 13 với máy chủ web Nginx và cơ sở dữ liệu MySQL trên Ubuntu 18.04 đã hoàn tất thành công.
Trong hướng dẫn này, chúng tôi sẽ chỉ cho bạn cách cài đặt và cấu hình bản phát hành Nextcloud mới nhất (tại thời điểm viết bài này, bản phát hành mới nhất là 13.0.2) trên máy chủ Ubuntu 18.04. Chúng tôi sẽ chạy Nextcloud với máy chủ web Nginx và PHP7.1-FPM và sử dụng máy chủ MySQL làm hệ thống cơ sở dữ liệu.
Điều kiện tiên quyết
- Ubuntu 18.04
- Quyền root
Những việc chúng tôi sẽ làm
- Cài đặt máy chủ web Nginx
- Cài đặt và cấu hình PHP7.1-FPM
- Cài đặt và cấu hình máy chủ MySQL
- Tạo SSL Letsencrypt
- Tải xuống Nextcloud 13
- Cấu hình Nginx Virtual Host cho Nextcloud
- Cấu hình tường lửa UFW
- Sau khi cài đặt Nextcloud
Bước 1 - Cài đặt máy chủ web Nginx
Bước đầu tiên chúng ta sẽ thực hiện trong hướng dẫn nextcloud này là cài đặt máy chủ web Nginx. Chúng tôi sẽ sử dụng máy chủ web Nginx thay vì máy chủ web Apache.Đăng nhập vào máy chủ và cập nhật kho lưu trữ, sau đó cài đặt máy chủ web Nginx bằng lệnh apt như hiển thị bên dưới.
Mã:
sudo apt update
sudo apt install nginx -y
Mã:
systemctl start nginx
systemctl enable nginx
Mã:
netstat -plntu
curl -I localhost
Bước 2 - Cài đặt và cấu hình PHP7.1-FPM
Trong hướng dẫn này, chúng ta sẽ sử dụng PHP7.1-FPM cho nextcloud. Chúng tôi sẽ sử dụng PHP7.1-FPM từ kho lưu trữ PPA, vì vậy chúng tôi cần thêm kho lưu trữ PPA mới vào hệ thống của mình.Cài đặt gói 'software-properties-common' và thêm kho lưu trữ PPA 'ondrej PHP' bằng cách chạy các lệnh sau.
Mã:
sudo apt install software-properties-common -y
sudo add-apt-repository ppa:ondrej/php -y
Trên Ubuntu 18.04, lệnh 'add-apt-repository' sẽ tự động cập nhật kho lưu trữ.
Bây giờ hãy cài đặt PHP7.1 và PHP7.1-FPM với tất cả các tiện ích mở rộng cần thiết bằng lệnh apt duy nhất bên dưới.
Mã:
sudo apt install php7.1-fpm php7.1-mcrypt php7.1-curl php7.1-cli php7.1-mysql php7.1-gd php7.1-iconv php7.1-xsl php7.1-json php7.1-intl php-pear php-imagick php7.1-dev php7.1-common php7.1-mbstring php7.1-zip php7.1-soap -y
Vào thư mục '/etc/php/7.1'.
Mã:
cd /etc/php/7.1/
Mã:
vim fpm/php.ini
vim cli/php.ini
Mã:
date.timezone = Asia/Jakarta
Mã:
cgi.fix_pathinfo=0
Tiếp theo, chỉnh sửa cấu hình nhóm php-fpm 'www.conf'.
Mã:
vim fpm/pool.d/www.conf
Mã:
env[HOSTNAME] = $HOSTNAMEenv[PATH] = /usr/local/bin:/usr/bin:/binenv[TMP] = /tmpenv[TMPDIR] = /tmpenv[TEMP] = /tmp
Khởi động lại dịch vụ PHP7.1-FPM và cho phép dịch vụ này khởi chạy mỗi khi khởi động hệ thống.
Mã:
systemctl restart php7.1-fpm
systemctl enable php7.1-fpm
Mã:
netstat -pl | grep php
Bước 3 - Cài đặt và cấu hình MySQL Server
Trong bước này, chúng ta sẽ cài đặt phiên bản MySQL mới nhất và tạo cơ sở dữ liệu mới cho cài đặt nextcloud. Các gói MySQL phiên bản mới nhất có sẵn trên kho lưu trữ theo mặc định.Cài đặt phiên bản mới nhất của máy chủ MySQL bằng lệnh apt bên dưới.
Mã:
sudo apt install mysql-server mysql-client -y
Mã:
systemctl start mysql
systemctl enable mysql
Chạy lệnh sau.
Mã:
mysql_secure_installation
Đối với hướng dẫn này, chúng tôi sẽ sử dụng chính sách mật khẩu 'TRUNG BÌNH' và khuyến nghị sử dụng chính sách mật khẩu 'MẠNH' trên máy chủ sản xuất.
Chọn số '1' và nhấn Enter, sau đó nhập mật khẩu 'root' MySQL mới của bạn.
Mã:
Xóa người dùng ẩn danh? (Nhấn y|Y để Có, bất kỳ phím nào khác để Không): YKhông cho phép đăng nhập root từ xa? (Nhấn y|Y để Có, bất kỳ phím nào khác để Không): YXóa cơ sở dữ liệu thử nghiệm và quyền truy cập vào cơ sở dữ liệu đó? (Nhấn y|Y để Có, bất kỳ phím nào khác để Không): YTải lại bảng đặc quyền ngay bây giờ? (Nhấn y|Y để Có, bất kỳ phím nào khác để Không): Y
Tiếp theo, chúng ta sẽ tạo cơ sở dữ liệu mới để cài đặt nextcloud. Chúng tôi sẽ tạo một cơ sở dữ liệu mới có tên 'nextcloud_db' với người dùng 'nextclouduser' và mật khẩu 'Nextclouduser421@'.
Đăng nhập vào shell MySQL với tư cách là người dùng root bằng lệnh mysql.
Mã:
mysql -u root -p
NHẬP MẬT KHẨU GỐC MYSQL
Mã:
create database nextcloud_db;
create user nextclouduser@localhost được xác định bởi 'Nextclouduser421@';
cấp tất cả các quyền trên nextcloud_db.* cho nextclouduser@localhost được xác định bởi 'Nextclouduser421@';
flush privileges;
Cài đặt và cấu hình MySQL cho nextcloud đã hoàn tất.
Bước 4 - Tạo SSL Letsencrypt
Trong hướng dẫn này, chúng ta sẽ bảo mật nextcloud bằng SSL miễn phí từ Letsencrypt và chúng ta sẽ tạo tệp chứng chỉ bằng công cụ letsencrypt.Nếu bạn không có tên miền hoặc không cài đặt nextcloud trên máy tính cục bộ, bạn có thể tạo chứng chỉ Tự ký bằng OpenSSL.
Cài đặt công cụ 'letsencrypt' bằng lệnh apt bên dưới.
Mã:
sudo apt install letsencrypt -y
Mã:
systemctl stop nginx
Mã:
certbot certonly --standalone -d nextcloud.hakase-labs.io
Khi hoàn tất, bạn sẽ nhận được kết quả như hiển thị bên dưới.
Các chứng chỉ SSL Letsencrypt cho tên miền netxcloud đã được tạo, tất cả đều nằm trong thư mục '/etc/letsencrypt/live/domain'.
Bước 5 - Tải xuống Nextcloud
Trước khi tải xuống mã nguồn nextcloud, hãy đảm bảo rằng gói giải nén đã được cài đặt trên hệ thống. Nếu bạn không có gói, hãy cài đặt nó bằng lệnh apt bên dưới.
Mã:
sudo apt install wget unzip zip -y
Mã:
cd /var/www/
wgethttps://download.nextcloud.com/server/releases/latest.zip
Mã:
unzip latest.zip
mkdir -p nextcloud/data/
Mã:
chown -R www-data:www-data /var/www/nextcloud/
Bước 6 - Cấu hình Nginx Virtual Host cho Nextcloud
Trong bước này, chúng ta sẽ cấu hình nginx virtual host cho nextcloud. Chúng ta sẽ cấu hình nextcloud để chạy dưới kết nối HTTPS và sẽ tự động buộc kết nối HTTP đến kết nối HTTPS an toàn.Bây giờ hãy đến thư mục '/etc/nginx/sites-available' và tạo một tệp máy chủ ảo mới 'nextcloud'.
Mã:
cd /etc/nginx/sites-available/
vim nextcloud
Mã:
upstream php-handler { #server 127.0.0.1:9000; server unix:/run/php/php7.1-fpm.sock;}server { listen 80; listen [::]:80; server_name nextcloud.hakase-labs.pw; # enforce https return 301 https://$server_name$request_uri;}server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name nextcloud.hakase-labs.pw; ssl_certificate /etc/letsencrypt/live/nextcloud.hakase-labs.pw/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/nextcloud.hakase-labs.pw/privkey.pem; # Thêm tiêu đề để phục vụ tiêu đề liên quan đến bảo mật # Trước khi bật tiêu đề Strict-Transport-Security, vui lòng đọc kỹ # chủ đề này trước. # add_header Strict-Transport-Security "max-age=15552000; # includeSubDomains; preload;"; # # CẢNH BÁO: Chỉ thêm tùy chọn tải trước sau khi bạn đọc về # hậu quả trong https://hstspreload.org/. Tùy chọn này # sẽ thêm tên miền vào danh sách được mã hóa cứng được phân phối # trong tất cả các trình duyệt chính và việc xóa khỏi danh sách này # có thể mất vài tháng. add_header X-Content-Type-Options nosniff; add_header X-XSS-Protection "1; mode=block"; add_header X-Robots-Tag none; add_header X-Download-Options noopen; add_header X-Permitted-Cross-Domain-Policies none; # Đường dẫn đến thư mục gốc của thư mục cài đặt của bạn /var/www/nextcloud/; location = /robots.txt { allow all; log_not_found off; access_log off; } # Chỉ cần 2 quy tắc sau cho ứng dụng user_webfinger. # Bỏ chú thích nếu bạn định sử dụng ứng dụng này. #rewrite ^/.well-known/host-meta /public.php?service=host-meta last; #rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json # last; location = /.well-known/carddav { return 301 $scheme://$host/remote.php/dav; } location = /.well-known/caldav { return 301 $scheme://$host/remote.php/dav; } # đặt kích thước tải lên tối đa client_max_body_size 512M; fastcgi_buffers 64 4K; # Bật gzip nhưng không xóa tiêu đề ETag bật gzip; bật gzip_vary; gzip_comp_level 4; gzip_min_length 256; gzip_proxied đã hết hạn không có bộ nhớ đệm không lưu trữ riêng tư không có bản sửa đổi cuối cùng không có xác thực thẻ etag; gzip_types application/atom+xml application/javascript application/json application/ld+json application/manifest+json application/rss+xml application/vnd.geo+json application/vnd.ms-fontobject application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/bmp image/svg+xml image/x-icon text/cache-manifest text/css text/plain text/vcard text/vnd.rim.location.xloc text/vtt text/x-component text/x-cross-domain-policy; # Bỏ chú thích nếu máy chủ của bạn được xây dựng bằng mô-đun ngx_pagespeed # Mô-đun này hiện không được hỗ trợ. #pagespeed tắt; location / { rewrite ^ /index.php$uri; } vị trí ~ ^/(?:build|tests|config|lib|bên thứ 3|templates|data)/ { từ chối tất cả; } vị trí ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) { từ chối tất cả; } vị trí ~ ^/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|ocs-provider/.+)\.php(?:$|/) { fastcgi_split_path_info ^(.+\.php)(/.*)$; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param HTTPS on; #Tránh gửi tiêu đề bảo mật hai lần fastcgi_param modHeadersAvailable true; fastcgi_param front_controller_active true; fastcgi_pass php-handler; fastcgi_intercept_errors on; fastcgi_request_buffering off; } location ~ ^/(?:updater|ocs-provider)(?:$|/) { try_files $uri/ =404; index index.php; } # Thêm tiêu đề kiểm soát bộ đệm cho các tệp js và css # Đảm bảo tiêu đề này Ở DƯỚI vị trí khối PHP ~ \.(?:css|js|woff|svg|gif)$ { try_files $uri /index.php$uri$is_args$args; add_header Cache-Control "public, max-age=15778463"; # Thêm tiêu đề để phục vụ cho các tiêu đề liên quan đến bảo mật (Mục đích là # sao chép các tiêu đề đó vào các tiêu đề ở trên) # Trước khi bật các tiêu đề Strict-Transport-Security, vui lòng đọc # chủ đề này trước. # add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;"; # # CẢNH BÁO: Chỉ thêm tùy chọn tải trước sau khi bạn đọc về # hậu quả trong https://hstspreload.org/. Tùy chọn này # sẽ thêm tên miền vào danh sách được mã hóa cứng được phân phối # trong tất cả các trình duyệt chính và việc xóa khỏi danh sách này # có thể mất vài tháng. add_header X-Content-Type-Options nosniff; add_header X-XSS-Protection "1; mode=block"; add_header X-Robots-Tag none; add_header X-Download-Options noopen; add_header X-Permitted-Cross-Domain-Policies none; # Tùy chọn: Không ghi nhật ký truy cập vào tài sản access_log off; } location ~ \.(?:png|html|ttf|ico|jpg|jpeg)$ { try_files $uri /index.php$uri$is_args$args; # Tùy chọn: Không ghi nhật ký truy cập vào tài sản khác access_log off; }}
Bật máy chủ ảo và kiểm tra cấu hình, đảm bảo không có lỗi.
Mã:
ln -s /etc/nginx/sites-available/nextcloud /etc/nginx/sites-enabled/
nginx -t
Mã:
systemctl restart nginx
systemctl restart php7.1-fpm
Bước 7 - Cấu hình Tường lửa UFW
Trong hướng dẫn này, chúng ta sẽ bật tường lửa và sử dụng tường lửa UFW cho Ubuntu.Bật tường lửa ufw.
Mã:
ufw enable
Bây giờ hãy thêm SSH, HTTP và HTTPS mới vào danh sách tường lửa UFW.
Mã:
ufw allow ssh
ufw allow http
ufw allow https
Mã:
ufw status
Bước 8 - Cài đặt Nextcloud sau
Mở trình duyệt web của bạn và nhập địa chỉ URL nextcloud.Và bạn sẽ được chuyển hướng đến kết nối HTTPS an toàn.
Ở trang đầu, chúng ta cần tạo người dùng quản trị cho nextcloud, nhập mật khẩu người dùng quản trị. Trên cấu hình 'Thư mục dữ liệu', nhập đường dẫn đầy đủ của thư mục 'dữ liệu' '/var/www/nextcloud/data'.
Cuộn trang xuống cuối trang và bạn sẽ nhận được cấu hình cơ sở dữ liệu. Nhập thông tin cơ sở dữ liệu mà chúng ta đã tạo ở bước 3 rồi nhấp vào nút 'Hoàn tất thiết lập'.
Sau khi cài đặt hoàn tất, bạn sẽ nhận được Bảng điều khiển Nextcloud như bên dưới.
Quá trình cài đặt Nextcloud 13 với máy chủ web Nginx và cơ sở dữ liệu MySQL trên Ubuntu 18.04 đã hoàn tất thành công.