สรุปขั้นตอนในการติดตั้ง Nextcloud
สรุปขั้นตอนในการติดตั้ง Nextcloud ในบทความนี้ เป็นแค่การแนะนำในภาพกว้างๆๆ ว่า หากเราต้องการติดตั้ง Nextcloud เพื่อใช้เป็น cloud ส่วนตัวเราต้องดำเนินการอย่างไรบ้าง
รูปแบบในการติดตั้ง ที่แนะนำในบทความนี้ เป็นการติดตั้งในกรณีที่เราได้สร้างเว็บไซต์ของเราแล้ว และเราแค่ต้องการเพิ่มการใช้งาน Nextcloud เพิ่มเติม โดยการกำหนดค่าเพิ่มเติมเล็กๆๆ น้อยๆๆ แล้วเอา nextcloud ไปติดตั้งไว้ในที่เก็บข้อมูลของเว็บไซต์ของเรา โดยทำเป็น ไดเร็กเตอรีย่อยขึ้นมา
สิ่งที่เราต้องดำเนินการ
ในกรณีที่เรายังไม่ดำเนินการจัดสร้างเพื่อทำ Webserver เราต้องสร้างก่อน ขั้นตอนในการสร้างมีภาพรวมดังนี้
เริ่มจากเราต้องติดตั้ง ระบบปฎิบัติการ Linux ตัวไหนก็ได้ (operating system) แล้วแต่เราชอบ ในกรณีที่เราสร้าง Server ขึ้นมาที่บ้านเอง แต่ หากเราใช้ Droplet ของ Digital ocean เราแค่เลือกตัว Image ที่เขาบริการให้ว่าจะใช้ตัวไหน เราสามารถเลือก หรือเอาตามที่ nextcloud แนะนำ
- Ubuntu 22.04 LTS (recommended)
- Ubuntu 20.04 LTS
- Red Hat Enterprise Linux 8 (recommended)
- Debian 12 (Bookworm)
- SUSE Linux Enterprise Server 15
- openSUSE Leap 15.4
- CentOS Stream
ติดตั้ง Lamp ซึ่งประกอบไปด้วย
- Apache (web server) สำหรับเป็นเว็บเซิร์ฟเวอร์ หรือใครถนัด nginx ก็สามารถใช้ได้เช่นกัน แล้วแต่ชอบ
- Apache 2.4 with
mod_php
orphp-fpm
(recommended) - nginx with
php-fpm
- Apache 2.4 with
- MySQL (database server) เป็นตัวเก็บฐานข้อมูลฐานข้อมูล ในกรณีที่เราใช้ Debian อาจจะใช้ MariaDB ก็ได้ แล้วแต่ตามชอบเช่นกัน
- MySQL 8.0+ or MariaDB 10.3/10.4/10.5/10.6 (recommended)
- Oracle Database 11g (only as part of an enterprise subscription)
- PostgreSQL 10/11/12/13/14/15
- SQLite (only recommended for testing and minimal-instances)
- PHP (to process dynamic PHP content) ในส่วน php อาจจะต้องติดตั้ง module เพิ่มเติมตามคำแนะนำของ nextcloud
- 8.0 (deprecated)
- 8.1
- 8.2 (recommended)
- ในกรณีที่เราติดตั้ง Ubuntu บน Server หรือเลือกใช้ ในกรณีที่เราสร้างจาก Droplet สามารถอ่านบทความการติดตั้งได้จากหน้านี้
แต่หากเราได้สร้าง Server เพื่อบริการด้านเว็บไซต์ของเราเสร็จแล้ว ก็สามารถข้ามขั้นตอนดังกล่าวได้เลย และมาติดตั้ง Nextcloud โดยปรับแต่งค่าเพิ่มเติมเล็กน้อย
ขั้นตอนการปรับแต่ง Apache แยกออกเป็น 2 กรณี
คำแนะนำในการติดตั้งและปรับแต่ง ซึ่งทางผู้จัดสร้างได้ให้คำแนะนำไว้ สามารถเข้าไปอ่านได้จากหน้า https://docs.nextcloud.com/server/latest/admin_manual/
กรณีแรก เราได้สร้าง webServer ขึ้นมาเพื่อใช้งานเฉพาะ Nextcloud ในส่วนนี้ค่อนข้างจะต้องปรับแต่งหลายเรื่องเช่น ต้องกำหนดไฟล์คอนฟิกสำหรับกำหนดที่เก็บของ Nextcloud ได้แก่การกำหนดค่า
/etc/apache2/sites-available/nextcloud.conf
ซึ่งคิดว่า น่าจะสร้างบทความแยกให้อีกที แต่ในบทความนี้ ขออธิบายเฉพาะในกรณีที่เราสร้างเว็บไซต์อยู่แล้ว และเราต้องการเพิ่ม nextcloud ให้เป็นส่วนหนึ่งของ เว็บไซต์เรา และไฟล์คอนฟิกดังกล่าวก็ได้ปรับแต่งเพื่อให้สามารถเรียนใช้งานนเว็บไซต์ได้แล้ว เราก็แค่เอาไฟล์ Nextcloud ที่เราดาวโหลดน์มาไปเก็บไว้ในส่วนที่เราเก็บข้อมูลเว็บไซต์ของเรา โดยตั้งเป็น ไดเร็กเตอรี่ย่อยขึ้นมาแล้วตั้งชื่อว่า Nextcloud
ยกตัวอย่างเช่น เว็บไซต์ของเราชื่อ nst-green.name เมื่อเรามาเพิ่มเพื่อใช้งาน Nextcloud เราแค่เอา Nextcloud ไปเก็บไว้ในที่เก็บข้อมูลเว็บไซต์ของเรา โดยอาจจะตั้ง folder แล้วตั้งชื่อว่า Nextcloud เมื่อต้องการใช้งาน แค่เรียก nst-green.name/nextcloud แค่นี้ก็สามารถทำงานได้แล้ว
ดังนั้น ในบทความนี้จะอธิบายในการติดตั้งตามกรณีหลัง คือติดตั้งเพิ่มเข้าไปยังที่เก็บข้อมูลเว็บไซต์ของเรา แต่ก่อนจะดำเนินการเราต้องปรับแต่งในส่วนต่างๆๆ เกี่ยวกับ Apache เพิ่มเติมนิดหน่อย โดยทำตามที่ Nextcloud แนะนำ ได้แก่
a2enmod rewrite a2enmod headers a2enmod env a2enmod dir a2enmod mime |
คำแนะนำในส่วน PHP modules.
เช่นกัน เป็นการติดตั้ง modules ของ php เพิ่มเติมเพื่อให้เหมาะสมกับการใช้งาน Nextcloud ประกอบด้วย Modules
- PHP (see System requirements for a list of supported versions)
- PHP module ctype
- PHP module curl
- PHP module dom
- PHP module fileinfo (included with PHP)
- PHP module filter (only on Mageia and FreeBSD)
- PHP module GD
- PHP module hash (only on FreeBSD)
- PHP module JSON (included with PHP >= 8.0)
- PHP module libxml (Linux package libxml2 must be >=2.7.0)
- PHP module mbstring
- PHP module openssl (included with PHP >= 8.0)
- PHP module posix
- PHP module session
- PHP module SimpleXML
- PHP module XMLReader
- PHP module XMLWriter
- PHP module zip
- PHP module zlib
ก่อนจะติดตั้ง เราอาจจะใช้คำสั่งเพื่อตรวจสอบว่า PHP Modules ติดตั้งแล้วหรือยัง โดยใช้คำสั่งนี้
php -m | grep -i <module_name>. |
อ่านรายละเอียดทั้งหมดได้จากคำแนะนำหน้านี้
คำแนะนำเบื้องต้นในการติดตั้ง module เพิ่มเติม
คำสั่งในการติดตั้ง กรณ๊ เป็น PHP80 หากเป็น เวอร์ชั่นอื่นอาจจะใช้คำสั่งแตกต่างกัน ก็ได้ เช่น apt install -y php php-curl
sudo apt install -y php8.0 php8.0-ctype php8.0-dom php8.0-filter php8.0-GD php8.0-JSON php8.0-libxml php8.0-mbstring php8.0-openssl php8.0-posix php8.0-session php8.0-SimpleXML php8.0-XMLWriter php8.0-zip php8.0-zlib |
ในส่วนเชื่อมต่อกับฐานข้อมูล กรณีที่ใช้ MySQL Or ,MariaDB ให้ใช้คำสั่งดังนี้ แต่หากเราสร้างเว็บไซต์แล้ว ก็ไม่ต้องใช้คำสั่งนี้ เพราะในการสร้างเว็บไซต์ เราต้องสร้างฐานข้อมูลอยู่แล้ว เราแค่มาเพิ่มฐานข้อมูลลงไปแทน เท่านั้นเองก
sudo apt install -y php8.0-pdo_mysql php8.0-mysql |
หรือใช้คำสั่งรวมแบบนี้ ก็ได้
sudo apt install php8.0-{mysql,cli,c,imap,ldap,xml,fpm,curl,mbstring,zip} |
ตัว ออฟชั่น จะติดตั้งหรือไม่ก็ได้ แต่แนะนำให้ติดตั้ง
sudo apt install -y php8.0-intl php8.0-bcmath php8.0-gmp php8.0-imagick php8.0-memcached php8.0-bz2 php8.0-fileinfo |
ในส่วนของบทความ สรุปขั้นตอนในการติดตั้ง Nextcloud ได้แนะนำ php8 แต่ล่าสุด มี php8.1 การติดตั้ง php แค่ แก้ไขหมายเลขจาก 8.0 เป็น 8.1
การติดติดตั้ง Nextcloud
การติดตั้ง Nextcloud สิ่งแรกที่เราต้องดำเนินการคือการไปดาวโหลดน์ไฟล์ หรืออาจจะใช้คำสั่งใน command line ก็ได้ ซึ่งรูปแบบในการติดตั้งมีหลายรูปแบบแล้วแต่ว่าเราต้องการติดตั้งแบบไหน แต่สำหรับบทความนี้ จะแนะนำวิธีการติดตั้งโดยการดาวโหลดน์ไฟล์สำหรับติดตั้งของ nextcloud ผ่านทาง command line เพราะไม่ต้องยุ่งยากกับการอัพโหลดผ่าน Ftp
สร้างฐานข้อมูลสำหรับ Nextcloud
แต่ก่อนจะเริ่มดำเนินการติดตั้ง เราต้องสร้างฐานข้อมูลก่อน พร้อมกับสร้างชื่อผู้ใช้ฐานข้อมูลและรหัสก่อน ตัวอย่างที่ Nextcloud แนะนำ ซึ่งหากเราถนัดอย่างอื่นก็สร้างแบบที่เราถนัดก็ได้ แต่หลักการคล้ายๆๆ กัน
CREATE USER 'username'@'localhost' IDENTIFIED BY 'password'; CREATE DATABASE IF NOT EXISTS nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; GRANT ALL PRIVILEGES ON nextcloud.* TO 'username'@'localhost'; FLUSH PRIVILEGES; |
ดาวโหลดน์ไฟล์ติดตั้งของ Nextcloud ตัวล่าสุด
แตกไฟล์แล้วนำไปเก็บไว้ในที่เราต้องการ
unzip latest.zip && mv nextcloud/ /var/www/example.com/nextcloud |
chown -R www-data:www-data /var/www/example.com/nextcloud |
เรียกผ่าน บราวเซอร์เพื่อติดตั้ง Nextcloud
สิ่งที่เราต้องเตรียมในขั้นตอนนี้คือ
- ชื่อ ฐานข้อมูล พร้อมผู้ใช้และรหัสผ่าน
- การกำหนดชื่อ และรหัสผ่าน สำหรับการเข้าใช้งาน
- ส่วนที่เก็บข้อมูล หากเรากำหนดแยกนอก แต่หากไม่กำหนด ก็ให้โปรแกรมจัดการให้เอง
รุ่นใหม่ อาจจะแตกต่างจากภาพ แต่การติดตั้งคล้ายกันไม่แตกต่างกันมากแค่กำหนดค่าตามที่บอกมาให้ถูกต้องก็ใช้ได้แล้ว


เป็นอ้นว่าเสร็จในการติดตั้งเพื่อใช้งาน จะเห็นว่าสะดวกดี หากเราติดตั้งเสริมเข้าไปในเว็บไซต์ของเรา แต่ หากเราติดตั้งเพื่อใช้งานด้านบริการ เฉพาะ Nextcloud อย่างเดียว ต้องมีการปรับแต่งค่าต่างๆๆ เพิ่มเติมอีกหลายอย่าง
ยกตัวอย่าง คำสั่งในการติดตั้งในกรณีที่เราสร้างเพื่อใช้งาน Nextcloud
init 0 3 apt update 4 sudo apt update && sudo apt upgrade -y 5 apt update && sudo apt upgrade -y 6 apt update && apt upgrade -y 7 apt-get install ca-certificates apt-transport-https software-properties-common wget curl lsb-release -y 8 apt update 9 apt upgrade 10 apt install php8.1 libapache2-mod-php8.1 11 apt install php8.1-{bcmath,fpm,xml,mysql,zip,intl,ldap,gd,cli,bz2,curl,mbstring,pgsql,opcache,soap,cgi} 12 php --modules 17 php --version 18 apt upgrade 19 apt install php8.1 libapache2-mod-php8.1 20 apt install apt-transport-https lsb-release ca-certificates wget -y 21 wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg 22 sh -c 'echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list' 23 apt update 24 apt upgrade -y 26 apt install php8.1 libapache2-mod-php8.1 27 php --version 28 apt install php8.1-{bcmath,fpm,xml,mysql,zip,intl,ldap,gd,cli,bz2,curl,mbstring,pgsql,opcache,soap,cgi} 29 apt install php8.1-{dom,gmagick,SimpleXML,ssh2,xml,xmlreader,curl,date,exif,filter,ftp,gd,hash,iconv,imagick,json,libxml,openssl,pcre,posix,sockets,SPL,tokenizerz,lib,mbstring,mysqli} 30 apt install php8.1-{dom,gmagick,SimpleXML,ssh2,xml,xmlreader,curl,date,exif,filter,ftp,gd,hash,iconv,imagick,json,libxml,openssl,pcre,posix,sockets,SPL,tokenizerz,lib,mbstring,mysqli} 31 sudo apt update 32 apt update 33 apt upgrade 34 apt install php8.1-{dom,gmagick,SimpleXML,ssh2,xml,xmlreader,curl,date,exif,filter,ftp,gd,hash,iconv,imagick,json,libxml,openssl,pcre,posix,sockets,SPL,tokenizerz,lib,mbstring,mysqli} 35 apt-cache search php8.1-curl 36 apt-cache search php8.1-hash 37 apt update && apt install -y software-properties-common 38 add-apt-repository ppa:ondrej/php 39 apt install php8.1-{dom,gmagick,SimpleXML,ssh2,xml,xmlreader,curl,date,exif,filter,ftp,gd,hash,iconv,imagick,json,libxml,openssl,pcre,posix,sockets,SPL,tokenizerz,lib,mbstring,mysqli} 40 apt update 41 cd /etc/apt 42 ls 43 vi sources.list 44 ls 45 cd sources.list.d/ 46 ls 47 vi php.list 48 add-apt-repository --remove ppa:ondrej/php 49 apt update 50 apt install php8.1-bcmath -y 51 apt install php8.1-zip -y 52 apt install php8.1-gmagick -y 53 apt install php8.1-dom 54 apt install php8.1-SimpleXML 55 apt install php8.1-ssh2 56 apt install php8.1-xmlreader 57 apt install php8.1-curl 58 apt install php8.1-date 59 apt install php8.1-exif 60 apt install php8.1-filter 61 apt install php8.1-ftp 62 apt install php8.1-gd 63 apt install php8.1-hash 64 apt install php8.1-iconv 65 apt install php8.1-imgick 66 apt install php8.1-json 67 apt install php8.1-libxml 68 apt install php8.1-openssl 69 apt install php8.1-pcre 70 apt install php8.1-posix 71 apt install php8.1-spl 72 apt install php8.1-tokenizerz 73 apt install php8.1-lib 74 apt install php8.1-mbstring 75 apt install php8.1-mysqli 76 a2enmod ssl rewrite headers 77 systemctl restart apache2 78 apt install -y libmagickcore-dev 79 cd /etc/php/8.0/apache2/ 80 cd /etc/php/8.1/apache2/ 81 vi php.ini 82 systemctl restart apache2 83 apt install mariadb-server mariadb-client 84 systemctl is-enabled mariadb 85 systemctl status mariadb 86 mysql_secure_installation 87 mysql -u root -p 88 apt install certbot 89 mkdir -p /var/lib/letsencrypt/.well-known 90 chgrp www-data /var/lib/letsencrypt 91 chmod g+s /var/lib/letsencrypt 92 cd /etc/apache2/conf-available/ 93 vi well-known.conf 94 ln -s /etc/apache2/conf-available/well-known.conf /etc/apache2/conf-enabled/ 95 apachectl configtest 96 systemctl restart apache2 97 sudo certbot certonly --agree-tos --email user@email.com --webroot -w /var/lib/letsencrypt/ -d www.green-nst.com 98 certbot certonly --agree-tos --email user@email.com --webroot -w /var/lib/letsencrypt/ -d www.green-nst.com 99 cd /etc/apache2/sites-available/ 100 vi nextcloud.conf 101 a2ensite nextcloud.conf 102 systemctl reload apache2 103 apachectl configtest 104 systemctl restart apache2 105 cd /var/www 106 ls 107 curl -o nextcloud.zip https://download.nextcloud.com/server/releases/latest.zip 108 cd /tmp/ 109 fetch http://wordpress.org/latest.tar.gz 110 apt install php8.1 libapache2-mod-php8.1 php8.1-cli php8.1-common php8.1-mbstring php8.1-xmlrpc php8.1-soap php8.1-gd php8.1-xml php8.1-intl php8.1-mysql php8.1-cli php8.1-ldap php8.1-zip php8.1-mcrypt php8.1-curl php8.1-opcache php8.1-readline php8.1-xml php8.1-gd 111 a2enmod php8.1 112 systemctl restart apache2 113 wget https://wordpress.org/latest.zip 114 unzip latest.zip 115 unzip latest.zip 116 apt install unzip 117 unzip latest.zip 118 ls 119 cp -pr wordpress/* /var/www/ 120 find /var/www/wordpress -type d -exec chmod 755 {} \; 121 find /var/www -type d -exec chmod 755 {} \; 122 find /var/www -type f -exec chmod 644 {} \; 123 chown -R www-data:www-data /var/www 124 chmod 755 /var/www 125 cd /var/www 126 ls 127 vi wp-config.php 128 ls 129 cd wp-content/ 130 ls 131 cd themes/ 132 ls 133 cd wplms/ 134 ls 135 mkdir PLUNGINS 136 chmod -R 775 PLUNGINS/ 137 chmod 755 PLUNGINS/ 138 systemctl restart apache2 139 ls 140 rm -rf PLUNGINS/ 141 mkdir plugins 142 chmod 755 plugins 143 a2enmod rewrite 144 systemctl restart apache2 145 vi /etc/apache2/sites-available/000-default.conf 146 cd /etc/apache2/ 147 cd sites-available/ 148 ls 149 vi nextcloud.conf 150 apache2ctl configtest 151 vi /etc/apache2/apache2.conf 152 systemctl restart apache2 153 cd /tmp 154 git clone https://github.com/Imagick/imagick 155 apt install php8.1-imagick 156 systemctl restart apache2 157 cd /var/www 158 ls 159 cd /tmp 160 ls 161 cd /var/www 162 unzip nextcloud.zip 163 ls 164 CD nextcloud 165 ls 166 cd nextcloud/ 167 ls 168 mkdir /var/nc_data 169 chown -R www-data:www-data /var/www 170 chmod 755 /var/www 171 chmod 755 /var/nc_data 172 chmod 755 /var/nc_data 173 chown -R www-data:www-data /var/nc_data 174 systemctl restart apache2 175 cd /etc/apache2/ 176 ls 177 cd .. 178 ls 179 php8.1 180 cd php8.1 181 cd php/8.1/ 186 cd /etc/php/8.1/apache2/ 195 vi php.ini 196 systemctl restart apache2 197 apt install php8.1-gmp 198 apt install php8.1-bcmath 199 systemctl restart apache2 200 vi php.ini 201 systemctl restart apache2 202 cd /var/www/nextcloud/ 203 ls 204 cd config/ 205 ls 206 vi config.php 207 history 208 cd /var/www 209 ls 210 cat wp-config.php 211 mysql -u root -p 235 cd /tmp 237 sudo apt-get update 238 apt-get update 239 apt-get install unzip 240 unzip phpMyAdmin-5.1.3-all-languages.zip 241 ls 242 mv phpMyAdmin-5.1.3-all-languages /var/www/phpmyadmin 243 cd /var/www/phpmyadmin/ 244 cp config.sample.inc.php config.inc.php 245 vi config.inc.php 246 systemctl restart apache2 247 chown -R www-data:www-data /var/www/ 248 chmod -R 755 /var/www 249 systemctl restart apache2 250 ls 251 ls -ls 252 vi config.inc.php 253 systemctl restart apache2 254 cd /tmp 255 ls 256 cd /var/www/ 257 vi wp-config.php 258 systemctl restart apache2 259 hitory 260 history 261 cd phpmyadmin/ 262 vi config.inc.php 263 cat config.inc.php 264 history 265 chown -R www-data:www-data /var/www/ 266 chmod -R 755 /var/www 267 systemctl restart apache2 |