สรุปขั้นตอนในการติดตั้ง 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 ตัวล่าสุด
wget https://download.nextcloud.com/server/releases/latest.zip
แตกไฟล์แล้วนำไปเก็บไว้ในที่เราต้องการ
unzip latest.zip && mv nextcloud/ /var/www/example.com/nextcloud
chown -R www-data:www-data /var/www/example.com/nextcloud
เรียกผ่าน บราวเซอร์เพื่อติดตั้ง Nextcloud
https://www.example.com/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
236 wget https://files.phpmyadmin.net/phpMyAdmin/5.1.3/phpMyAdmin-5.1.3-all-languages.zip
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