Cài đặt nextcloud trên ubuntu 18.04 LTS
Trong bài viết trước mình đã hướng dẫn các bạn cách cài đặt nextcloud trên centos 7, tiếp theo mình sẽ hướng dẫn các bạn cài đặt nextcloud 13 trên ubuntu 18.04 LTS
Yêu cầu:
- Ubuntu 18.04
- Root privileges
- Lưu ý những đoạn mình tô vàng và sửa thông tin theo cài đặt của bạn
Ok chúng ta bắt đầu thực hiện setup nextcloud on ubuntu
1- Cài đặt Nginx Web server
Bước đầu tiên chúng ta sẽ cài đặt máy chủ web Nginx. mình sẽ sử dụng máy chủ web Nginx thay vì máy chủ web Apache. Theo tài liệu khuyến nghị của nextcloud thì sử dụng Apache
sudo apt update
sudo apt install nginx -y
Khởi động và enable Nginx services
systemctl start nginx
systemctl enable nginx
Kiểm tra việc cài đặt nginx
netstat -plntu
curl -I localhost
2- Cài đặt và cấu hình PHP7.1-FPM
Ở đây chúng ta sẽ sử dụng PHP7.1-FPM cho nextcloud, chúng ta sẽ dùng PHP7.1-FPM from the PPA repository.
Cài đặt gói ‘software-properties-common’ và thêm ‘ondrej PHP’ PPA repository
sudo apt install software-properties-common -y
sudo add-apt-repository ppa:ondrej/php -y
Cài đặt PHP7.1 and PHP7.1-FPM và các phần mở rộng.
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
Di chuyển tới thư mục: ‘/etc/php/7.1’
cd /etc/php/7.1/
Sửa nội dung trong file: php.ini
vim fpm/php.ini
vim cli/php.ini
Bỏ comment dòng ‘date.timezone’ và thay giá trị bằng timezone của bạn
date.timezone = Asia/Ho_Chi_Minh
Bỏ comment dòng ‘cgi.fix_pathinfo’ và thay giá trị thành ‘0’.
cgi.fix_pathinfo=0
Lưu lại và thoát
Tiếp theo chúng ta sửa file www.conf
vim fpm/pool.d/www.conf
Bỏ comment các dòng dưới đây:
env[HOSTNAME] = $HOSTNAME env[PATH] = /usr/local/bin:/usr/bin:/bin env[TMP] = /tmp env[TMPDIR] = /tmp env[TEMP] = /tmp
Xong lưu lại và thoát
khởi động lại và enable PHP7.1-FPM service
systemctl restart php7.1-fpm
systemctl enable php7.1-fpm
kiểm tra việc cài đặt
netstat -pl | grep php
3- Cài đặt và cấu hình MySQL Server
Cài đặt MySQL mới nhất
sudo apt install mysql-server mysql-client -y
Sau khi cài đặt thành công, chúng ta khởi động và enable MySQL service
systemctl start mysql
systemctl enable mysql
Tiếp theo cấu hình MySQL root password sử dụng ‘mysql_secure_installation’
sudo mysql_secure_installation
Ở đây việc đặt mật khẩu có 3 chế độ LOW, MEDIUM, STRONG, bài hướng dẫn này mình sẽ chọn MEDIUM, theo khuyến cáo các bạn nên chọn STRONG
Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y
Tiếp theo chúng ta tạo database cho nextcloud với thông tin như dưới, thay đổi theo thông tin của bạn khi tạo
- database name: nextcloud_db
- user: nextclouduser
- password: Nextclouduser421@
mysql -u root -p
create database nextcloud_db;
create user nextclouduser@localhost identified by 'Nextclouduser421@';
grant all privileges on nextcloud_db.* to nextclouduser@localhost identified by 'Nextclouduser421@';
flush privileges;
4- Tạo chứng chỉ SSL
Trong hướng dẫn này, Mình sẽ bảo mật nextcloud bằng SSL miễn phí từ Letsencrypt, sử dụng công cụ letsencrypt để tạo.
Nếu bạn không có tên miền hoặc cài đặt nextcloud trong mạng nội bộ, thì có thể tạo chứng chỉ Tự ký bằng cách sử dụng OpenSSL. tham khảo bài viết: cài đặt nextcloud trên centos 7
Cài đặt công cụ ‘letsencrypt’
sudo apt install letsencrypt -y
Sau khi cài đặt hoàn tất, dừng nginx service
systemctl stop nginx
Tiếp theo, chúng ta tạo chứng chỉ SSL cho tên miền bằng cách sử dụng lệnh cerbot.
sudo certbot certonly --standalone -d nextcloud.yourdomain.com
Bạn sẽ được yêu cầu cung cấp địa chỉ email và được sử dụng cho thông báo gia hạn. Đối với thỏa thuận TOS Letsencrypt, nhập ‘A’ để đồng ý và cho địa chỉ email
Lưu ý: phải dùng email có dạng “administrator@your-domain”
Khi nó hoàn thành, bạn sẽ nhận được kết quả như hình dưới đây
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/your-domain-name‘.
5- Download Nextcloud 13
Trước tiên chúng ta cần cài gói unzip
sudo apt install wget unzip zip -y
Đi tới thư mục ‘/var/www’ và tải nextcloud-13.0.2.zip về (để tải bản cài đặt mới nhất các bạn truy cập trang chủ)
cd /var/www/
wget https://download.nextcloud.com/server/releases/latest.zip
Giải nén file tải về và tạo thư mục ‘data’
unzip latest.zip
mkdir -p nextcloud/data/
Thay đổi quyền thư mục
chown -R www-data:www-data /var/www/nextcloud/
Nextcloud đã được tải xuống trong thư mục ‘/var /www/nextcloud‘, và nó sẽ là thư mục gốc của web
6- Cấu hình Nginx Virtual Host for Nextcloud
Trong bước này, chúng ta sẽ cấu hình máy chủ ảo nginx cho nextcloud. Chúng ta sẽ cấu hình nextcloud sử dụng HTTPS .
Vào thư mục: ‘/etc/nginx/sites-available’ và tạo một virtual host file ‘nextcloud’ mới
cd /etc/nginx/sites-available/
vim nextcloud
Copy và dán nội dung dưới đây vào
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.yourdomain.com; # enforce https return 301 https://$server_name$request_uri; } server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name nextcloud.yourdomain.com; ssl_certificate /etc/letsencrypt/live/nextcloud.yourdomain.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/nextcloud.yourdomain.com/privkey.pem; # Add headers to serve security related headers # Before enabling Strict-Transport-Security headers please read into this # topic first. # add_header Strict-Transport-Security "max-age=15552000; # includeSubDomains; preload;"; # # WARNING: Only add the preload option once you read about # the consequences in https://hstspreload.org/. This option # will add the domain to a hardcoded list that is shipped # in all major browsers and getting removed from this list # could take several months. 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; # Path to the root of your installation root /var/www/nextcloud/; location = /robots.txt { allow all; log_not_found off; access_log off; } # The following 2 rules are only needed for the user_webfinger app. # Uncomment it if you're planning to use this app. #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; } # set max upload size client_max_body_size 512M; fastcgi_buffers 64 4K; # Enable gzip but do not remove ETag headers gzip on; gzip_vary on; gzip_comp_level 4; gzip_min_length 256; gzip_proxied expired no-cache no-store private no_last_modified no_etag auth; 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; # Uncomment if your server is built with the ngx_pagespeed module # This module is currently not supported. #pagespeed off; location / { rewrite ^ /index.php$uri; } location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)/ { deny all; } location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) { deny all; } location ~ ^/(?: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; #Avoid sending the security headers twice 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; } # Adding the cache control header for js and css files # Make sure it is BELOW the PHP block location ~ \.(?:css|js|woff|svg|gif)$ { try_files $uri /index.php$uri$is_args$args; add_header Cache-Control "public, max-age=15778463"; # Add headers to serve security related headers (It is intended to # have those duplicated to the ones above) # Before enabling Strict-Transport-Security headers please read into # this topic first. # add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;"; # # WARNING: Only add the preload option once you read about # the consequences in https://hstspreload.org/. This option # will add the domain to a hardcoded list that is shipped # in all major browsers and getting removed from this list # could take several months. 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; # Optional: Don't log access to assets access_log off; } location ~ \.(?:png|html|ttf|ico|jpg|jpeg)$ { try_files $uri /index.php$uri$is_args$args; # Optional: Don't log access to other assets access_log off; } }
Lưu lại file 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 như hình dưới đây
ln -s /etc/nginx/sites-available/nextcloud /etc/nginx/sites-enabled/
nginx -t
systemctl restart nginx
systemctl restart php7.1-fpm
7- Cấu hình UFW Firewall
Chúng ta sử dụng UFW firewall cho ubuntu
ufw enable
Nhập ‘y’ và nhấn Enter để bắt đầu và bật UFW firewall
Thêm SSH, HTTP và HTTPS mới vào UFW firewall.
ufw allow ssh
ufw allow http
ufw allow https
Kiểm tra
ufw status
8- Nextcloud Post-Installation
Mở trình duyệt web và nhập địa chỉ: http://nextcloud.yourdomain.com/
Đầu tiên chúng ta cần tạo người dùng quản trị cho nextcloud, và đường dẫn của “Data folder” như sau: /var/www/nextcloud/data‘
Phần thông tin database như đã tạo ở trên.
Xong các bạn chọn Finish Setup
Chờ đợi quá trình thiết lập hoàn tất, các bạn sẽ đăng nhập vào trang quản trị nextcloud
Ok vậy là xong, chúc các bạn cài đặt thành công
Tham khảo thêm tại:
howtoforge.com
docs.nextcloud.com