ติดตั้ง Nextcloud บน Debian 10

Nextcloud เป็น Cloud storage software ที่ถูกออกแบบมาจากผู้ก่อตั้ง ownCloud โดยสามารถติดตั้งระบบได้เองบน Server ของเรา

Step 1 Install Nginx and PHP

apt update
apt install nginx
apt install php-{fpm,mbstring,xmlrpc,soap,apcu,smbclient,ldap,redis,gd,xml,intl,json,imagick,mysql,cli,ldap,zip,curl}

Step 2 Download Nextcloud

สามารถโหลดเวอร์ชั้นล่าสุดได้ที่  https://nextcloud.com/install/#instructions-server

wget -O /path/to/nextcloud.zip https://download.nextcloud.com/server/releases/nextcloud-18.0.3.zip
cd /path/to/
unzip nextcloud.zip
chown -R www-data:www-data nextcloud

Step 3 Install MariaDB

OS อื่นๆ ดูได้ที่ https://downloads.mariadb.org/mariadb/repositories/#mirror=yamagata-university

apt-get install software-properties-common dirmngr
apt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_signing_key.asc'
add-apt-repository 'deb [arch=amd64] http://mirror.kku.ac.th/mariadb/repo/10.4/debian buster main'
apt update
apt install mariadb-server
mysql_secure_installation

Step 4 Create Database MariaDB

mysql -uroot

create database nextcloud_db character set 'utf8mb4' collate 'utf8mb4_general_ci';
GRANT ALL PRIVILEGES ON nextcloud_db.* TO nextcloud_user@'localhost' IDENTIFIED BY 'PASSWORD';
exit

Step 5 Config PHP for Nginx

vim /etc/php/7.3/fpm/pool.d/php-nextcloud.conf

[php-nextcloud]

listen = /var/run/php-nextcloud.sock
listen.backlog = 500000
rlimit_files = 500000
rlimit_core = 0

; Unix user/group of processes
user = www-data
group = www-data

listen.owner = www-data
listen.group = www-data

pm = ondemand
pm.max_children = 200
pm.process_idle_timeout = 10s
pm.max_requests = 2000

; Pass environment variables
env[HOSTNAME] = $HOSTNAME
env[PATH] = /usr/local/bin:/usr/bin:/bin
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp

Step 6 Config Nginx virtual host

ส่วนที่ต้องเปลี่ยนเป็นของตัวเองใน config

root /var/www/nextcloud << คือที่อยู่ไฟล์ nextcloud

fastcgi_pass << ตัวเรียกใช้ php ที่เราคอนฟิกไว้

server_name << ชื่อเว็บของเรา ใช้เป็น IP ได้

vim /etc/nginx/conf.d/doamin.conf

server {
listen 80;
server_name 192.168.100.12;
root /var/www/nextcloud;
index index.php;
add_header Strict-Transport-Security "max-age=15552000; includeSubDomains" always;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ ^/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|oc[ms]-provider/.+).php(?:$|/) {
fastcgi_split_path_info ^(.+.php)(/.+)$;
include /etc/nginx/fastcgi_params;
fastcgi_pass unix:/var/run/php-nextcloud.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_index index.php;
}
location ~ ^/(data|config|.ht|db_structure.xml|README) {
deny all;
}
location = /.well-known/carddav {
return 301 $scheme://$host/remote.php/dav;
}
location = /.well-known/caldav {
return 301 $scheme://$host/remote.php/dav;
}
}

Step 7 Test Nginx

nginx -t

Step 8 Restart Nginx และ PHP

systemctl restart php7.3-fpm
systemctl restart nginx

Step 9 เช็คระบบ Nextcloud

vim /etc/php/7.3/fpm/php.ini

แก้ memory_limit = 512M

systemctl restart php7.3-fpm.service

แก้ /path/to/nextcloud/config/config.php

เพิ่ม 'memcache.local' => '\OC\Memcache\APCu',

สามารถเช็ค ระบบ ว่าติดตั้งได้ถูกต้องหรือยัง โดยเข้าไปที่ setting มุมขวาบนของหน้าเว็บ