ในปัจจุบันหลายหน่วยงานมองหา Solution ที่ต้องการเก็บข้อมูลที่มีสะดวกปลอดภัยง่ายต่อการใช้งาน หลายคนคงนึกถึง Google Drive , OneDrive, หรือ Dropbox ที่หลายคนคงคุ้นเคยในการใช้อยู่ในปัจจุบัน ที่มีการให้การบริการในรูปแบบของ Cloud Service อย่างแน่นอน แต่หากเราต้องการสร้าง Storage ในรูปแบบเดียวกันแต่สามารถใช้งานได้ภายในองค์กรเอง เป็นลักษณะ (one premise) คงจะดีเนื่องจากไม่จำเป็นต้องเปลือง bandwidth และสามารถที่จะใช้ทรัพยากรที่มีอยู่ได้อย่างมีประสิทธิ ในวันนี้จะนำเสนอการติดตั้ง Solution NextCloud ที่นำมาสนับสนุนการทำงานในองค์กรได้อย่างมีประสิทธิภาพ นองจากในตอนนี้จะสอนวิธีการติดตั้งอย่างละเดียดถูกต้องและใช้งานความอย่างปลอดภัยแล้ว จะแนะนำวิธีการใช้งาน ผ่านวิธีการ Connect โดยตรงผ่าน pc (Mapdrive) มายัง nextCloud
สิ่งที่ต้องเตรียม
- Server ที่จะติดตั้งการใช้งาน ให้ติดตั้ง Centos7 รอไว้ให้เรียบร้อย (ไม่ต้องปิด SElinux)
- วางแผนพื้นการใช้งาน nextcloud ในกรณีนี้ เตรียมพื้นที่การใช้งานไว้ 100G สำหรับใช้งาน Storage
1). ติดตั้ง software ที่จำเป็น
1 2 3 4 |
# yum update -y # yum install epel-release # rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm # yum install httpd php71w php71w-dom php71w-mbstring php71w-gd php71w-pdo php71w-json php71w-xml php71w-zip php71w-curl php71w-mcrypt php71w-pear setroubleshoot-server bzip2 |
เลือกฐานข้อมูล ที่สนับสนุนการทำงาน โดยเลือกได้เป็น sqlite, mysql/mariadb, postgreSQL ซึ่งจะเลือกติดตั้งดังนี้ (เลือกอย่างใดอย่างหนึ่ง)
1.1) สำหรับการติดตั้งใช้งาน mariadb
1 2 3 4 5 6 7 8 9 10 11 12 |
# yum install mariadb-server php71w-mysql # systemctl start mariadb # systemctl enable mariadb # mysql_secure_installation $ mysql -u root -p mysql> CREATE DATABASE nextcloud; mysql> CREATE USER 'nc_admin'@'localhost' IDENTIFIED BY 'YOUR_PASSWORD_HERE'; mysql> GRANT ALL PRIVILEGES ON nextcloud.* TO 'nc_admin'@'localhost'; mysql> FLUSH PRIVILEGES; mysql> \q |
– แทนค่า YOUR_PASSWORD_HERE ด้วย password ที่มีความปลอดภัย
1.2) สำหรับการติดตั้งการใช้งาน postgresl
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
# yum install postgresql postgresql-server php71w-pgsql # postgresql-setup initdb # systemctl start postgresql # systemctl enable postgresql # sudo -u postgres psql postgres=# CREATE DATABASE nextcloud; CREATE DATABASE postgres=# CREATE USER nc_admin WITH PASSWORD 'YOUR_PASSWORD_HERE'; CREATE ROLE postgres=# GRANT ALL PRIVILEGES ON DATABASE nextcloud to nc_admin; GRANT postgres=# |
สำหรับการใช้งาน postgres จะต้องมีการตั้งค่าวิธีการ authentication method โดยเปลี่ยนค่าจาก ident ที่เป็นค่า default ให้กลาย md5 คือต้องมาใช้ การ authentication แบบ username password มีขั้นตอนดังนี้
1 2 3 4 |
postgres=# alter role postgres with password 'PASSWORD_POSTGRES'; ALTER ROLE postgres=# \q |
– แทนค่า PASSWORD_POSTGRES ที่ต้องการ
1 |
# vim /var/lib/pgsql/data/pg_hba.conf |
เปลี่ยนจาก
1 2 3 |
local all all peer host all all 127.0.0.1/32 ident host all all ::1/128 ident |
เปลี่ยนเป็น
1 2 3 |
local all all md5 host all all 127.0.0.1/32 md5 host all all ::1/128 md5 |
รีสตาร์ท
1 |
# systemctl restart postgresql |
2). ติดตั้ง nextcloud 13 ใน version ล่าสุดได้จากขั้นตอนดังนี้
1 2 3 4 5 6 |
# cd /var/www/html # curl -o nextcloud-13-latest.tar.bz2 https://download.nextcloud.com/server/releases/latest-13.tar.bz2 # tar -xvjf nextcloud-13-latest.tar.bz2 # mkdir nextcloud/data # chown -R apache:apache nextcloud # rm nextcloud-13-latest.tar.bz2 |
3). สร้าง config file /etc/httpd/conf.d/nextcloud.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
Alias /nextcloud "/var/www/html/nextcloud/" <Directory /var/www/html/nextcloud/> Options +FollowSymlinks AllowOverride All <IfModule mod_dav.c> Dav off </IfModule> SetEnv HOME /var/www/html/nextcloud SetEnv HTTP_HOME /var/www/html/nextcloud </Directory> |
4). ตั้งค่า Apache ให้ใช้งาน SELinux
1 2 3 4 5 6 7 |
# semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/nextcloud/data(/.*)?' # semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/nextcloud/config(/.*)?' # semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/nextcloud/apps(/.*)?' # semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/nextcloud/.htaccess' # semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/nextcloud/.user.ini' # restorecon -Rv '/var/www/html/nextcloud/' # setsebool -P httpd_can_network_connect_db 1 |
5). Verify
1 2 3 4 5 6 7 8 9 |
# semanage fcontext --list | grep httpd | grep nextcloud /etc/nextcloud(/.*)? all files system_u:object_r:httpd_sys_rw_content_t:s0 /var/lib/nextcloud(/.*)? all files system_u:object_r:httpd_sys_rw_content_t:s0 /var/www/html/nextcloud/data(/.*)? all files system_u:object_r:httpd_sys_rw_content_t:s0 /var/www/html/nextcloud/config(/.*)? all files system_u:object_r:httpd_sys_rw_content_t:s0 /var/www/html/nextcloud/apps(/.*)? all files system_u:object_r:httpd_sys_rw_content_t:s0 /var/www/html/nextcloud/.htaccess all files system_u:object_r:httpd_sys_rw_content_t:s0 /var/www/html/nextcloud/.user.ini all files system_u:object_r:httpd_sys_rw_content_t:s0 |
6). รีสตาร์ท http
1 2 |
# systemctl start httpd # systemctl enable httpd |
7).สร้าง กฎของไฟล์วอล
1 2 3 |
# firewall-cmd --add-service http --permanent # firewall-cmd --add-service https --permanent # firewall-cmd --reload |
8). เปิด http://ip_address/nextcloud/ เพื่อสร้าง user admin เป็น user admin และกดปุ่ม Finish up
เมื่อเสร็จสิ้น
รูปแบบการเชื่อมต่อการใช้งาน
1). Destop App (https://nextcloud.com/install/#install-clients)
2). Android (https://play.google.com/store/apps/details?id=com.nextcloud.client)
3). AppStore (https://itunes.apple.com/us/app/nextcloud/id1125420102?mt=8)
ติดตามการใช้งาน ในตอนที่ 2 ต่อไป ตอน2