[ Raspberry Pi ]ทำ Private Cloud Storage ด้วย NextCloud : Part 1 : การติดตั้ง Nextcloud Server

พยายามหาทางแก้ปัญหาที่เก็บไฟล์และแชร์ไฟล์ระหว่างกันในบ้าน เปลี่ยนไปเปลี่ยนมาหลายตลบกว่า @Spaggiari จะพอใจ จนหวยมาออกที่ Nextcloud เอามาลงใน Raspberry Pi เหมาะกับกลุ่มเล็กๆ เราใช้ไม่เกิน 5 users ไม่ได้ซิงค์ข้อมูลตลอดเวลา
NextCloud เป็น Open Source Cloud Storage ซึ่ง fork มาจาก ownCloud แต่เอามาใช้งานเป็นคลาวด์ส่วนตัว สามารถใช้งานผ่านหน้าเว็บและก็มีแอพซิงค์ไฟล์ผ่านคอมพิวเตอร์และมือถือ (การใช้งานคล้าย Dropbox/OneDrive/GoogleDrive แต่เราตั้งเซิร์ฟเวอร์เอง ตั้งค่าต่างเอง เหนื่อยเอง ?)

มาเริ่มกันเลยดีกว่า

Tools

1. Raspberry Pi ลง Raspbian เรียบร้อย (ในนี้เราลงตัว Raspbian Lite นะ)
2. External HDD หรือ flash drive ลองก่อนก็ได้นะ เพราะเราสามารถย้ายที่เก็บข้อมูลไปอันที่ใหญ่ขึ้นทีกลังก็ได้

General Recommendations

Operating system: Linux.
Web server: Apache 2.4.
Database: MySQL/MariaDB.
PHP 5.6+.

Step 1 : ติดตั้ง Web Server

เนื่องจากตัว Server เป็น Web ก็ต้องติดตั้ง Web Server กันก่อน ไปดูที่บทความนี้เลย

[ Raspberry Pi ] ติดตั้ง Web Server : Apache,MariaDB,PHP
https://playelek.com/rpi-web-server-lamp/

ทีนี้พอติดตั้งเว็บเซิร์ฟเวอร์แล้วก็ต้องมาดูว่าขาด module อะไรอีก ติดตั้งเพิ่ม

Step 2 : เตรียม Storage

ต่อ flash drive หรือ HDD เข้ากับ Raspberry Pi ใช้คำสั่ง lsblk (list block devices) เพื่อแสดง devices

จะเห็นว่าไดรฟ์ที่เราจะใช้คือ sda เรามาทำการแบ่ง partition ของไดร์ฟกันใหม่

แล้วตอบ:   o    เพื่อสร้าง DOS partition table ขึ้นใหม่

ตอบ:    n    เพื่อเพิ่ม  partition ใหม่

ตอบ:    p    เพื่อตั้ง partition ประเภท Primary

Partition number :พิมพ์ 1 หรือ Enter จะได้ค่า default

First sector : Enter จะได้ค่า default

Last sector: Enter  จะได้ค่า default

จากนั้นตอบ :   w   เพื่อ save ค่าที่เราตั้งไว้ก่อนหน้าและออกจาก fdisk

ลองใช้คำสั่ง lsblk อีกที จะเห็น sda-sda1

ด้วยความที่เราอยากให้ใช้งานไดร์ฟ ntfs ได้ ต้องลง ntfs-3g ก่อน (ถ้าอยากใช้แบบ ext4 ก็ไม่ต้องลงก็ได้)

ทำการ format ไดร์ฟ sda1 (ตรง .ntfs ถ้าใช้ ext4 ก็เปลี่ยนเป็น .ext4)

edit 7/2/2017 :  ตรง -f  คือ quick format ถ้าไม่ใส่ -f จะเป็น full format เพราะถ้า format แค่ flash drive คงไม่เท่าไหร่ แต่เป็น HDD full format คงรอจนหลับแน่

สร้าง directory ไว้ใน /mnt ชื่อ mydata (อันนี้แล้วแต่คุณจะตั้งนะ)

ทำการ mount /dev/sda1 เข้ากับ directory ที่เราสร้างไว้คือ /mnt/mydata

ทีนี้เราต้องจัดการกับ permission ของไดร์ฟก่อนค่ะ เพราะพอปิดเครื่องแล้วเปิดใหม่มันจะไม่ mount ไดร์ฟให้เราอัตโนมัติ เราต้องหา UUID ของ /dev/sda1

copy เลข UUID เก็บไว้ แล้วเข้าไปแก้ permission ใน /etc/fstab

เพิ่มบรรทัดนี้เข้าไปบรรทัดสุดท้าย แต่เปลี่ยนเลข UUID กับ directory ของไดร์ฟให้เป็นของเราเอง (ตรง ntfs-3g ถ้าใช้ ext4 ก็เปลี่ยนเป็น ext4)

Ctrl+x ตอบ y เพื่อ save แล้ว Enter

ทำการ reboot

เมื่อบูทขึ้นมาใหม่ สร้างโฟลเดอร์ชื่อ data ไว้ใน /mnt/mydata/data

แก้ permission

จำไว้นะ /mnt/mydata/data เราต้องใช้ในภายหลังไว้เป็นที่เก็บไฟล์ของเรานั่นเอง

Step 3 : สร้าง Database

เข้าไปจัดการฐานข้อมูลด้วย root

คำสั่งสร้าง database ชื่อ nextcloud

สร้าง user ชื่อ ncadmin กับรหัสผ่าน passncadmin (ชื่อกับรหัสผ่านนี่แล้วแต่จะตั้งนะ)

กำหนดการเข้าถึง database nextcloud ของ ncadmin และรหัสผ่าน

 

 Step 4 : ติดตั้ง NextCloud

ไปที่หน้าดาวน์โหลด NextCloud    https://nextcloud.com/install/#instructions-server

ทำการ copy link มา อย่างตอนนี้ที่เราดาวน์โหลดมาคือ https://download.nextcloud.com/server/releases/nextcloud-11.0.1.zip
ใช้คำสั่ง wget ดาวน์โหลดมา

รอจน 100% เราก็จะได้ไฟล์ nextcloud-x.x.x.zip มา

ทำการ unzip ออกมา

จะได้ folder ชื่อ nextcloud

Copy folder nextcloud ไปไว้ใน directory ของ web server คือ /var/www

ลองดูใน directory /var/www จะเห็นว่าเข้ามาละ

ตั้ง permissiom ของ directory /var/www/nextcloud/

Step 5 : Web Server Configuration

สร้างไฟล์ nextcloud.conf ใน /etc/apache2/sites-available/

แล้วพิมพ์ดังนี้

Ctrl+x ตอบ y เพื่อ save แล้ว Enter

สร้าง symlink ไปยัง /etc/apache2/sites-enabled

enable module เพิ่มเติมดังนี้

module mod_rewrite

ตามด้วย modules  mod_headers, mod_env, mod_dir และ mod_mime:

แล้ว

รีสตาร์ท Apache Web Server

เปิดหน้าเว็บ http://<your_pi_ipaddress>/nextcloud

admin account ให้ตั้ง username และ password ของ admin

Data Folder ใช้ directory ที่เราทำไว้ใน step 2 ก็คือ /mnt/mydata/data

Configure the database ใช้  username, password และ database name ที่เราทำไว้ใน step 3

แล้วกด Finish setup รอซักพักใหญ่

ก็จะสามารถ login เข้าใช้งานได้แล้ว

 

เขียนตอนแรกเสร็จแล้ว เย้

 

 

 

 

ตอนต่อไปจะพูดถึงการใช้งานทั่วไปในเว็บและแอพทั้งในคอมพิวเตอร์และมือถือ การย้ายไดร์ฟ data storage รวมทั้งการปรับแต่งให้ใช้งานได้ราบรื่นขึ้นอีกนิด

รวมลิงก์ตอน Nextcloud on Raspberry Pi

Part 1 : การติดตั้ง Nextcloud Server 

Part 2 : การติดตั้ง Desktop Client และ Mobile Client 

Part 3 : การตั้งค่า cache, max upload, pretty url

References
  1. https://docs.nextcloud.com/server/11/admin_manual/
  2. https://superuser.com/questions/625421/change-owncloud-data-directory-to-an-external-drive