[ 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 อะไรอีก ติดตั้งเพิ่ม
1 | sudo apt-get install php5-gd php5-json php5-curl |
1 | sudo apt-get install php5-intl php5-mcrypt php5-imagick |
Step 2 : เตรียม Storage
ต่อ flash drive หรือ HDD เข้ากับ Raspberry Pi ใช้คำสั่ง lsblk (list block devices) เพื่อแสดง devices
1 | lsblk |
จะเห็นว่าไดรฟ์ที่เราจะใช้คือ sda เรามาทำการแบ่ง partition ของไดร์ฟกันใหม่
1 | sudo fdisk /dev/sda |
แล้วตอบ: 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 ก็ไม่ต้องลงก็ได้)
1 | sudo apt-get install ntfs-3g |
ทำการ format ไดร์ฟ sda1 (ตรง .ntfs ถ้าใช้ ext4 ก็เปลี่ยนเป็น .ext4)
edit 7/2/2017 : ตรง -f คือ quick format ถ้าไม่ใส่ -f จะเป็น full format เพราะถ้า format แค่ flash drive คงไม่เท่าไหร่ แต่เป็น HDD full format คงรอจนหลับแน่
1 | sudo mkfs.ntfs -f /dev/sda1 |
สร้าง directory ไว้ใน /mnt ชื่อ mydata (อันนี้แล้วแต่คุณจะตั้งนะ)
1 | sudo mkdir -p /mnt/mydata |
ทำการ mount /dev/sda1 เข้ากับ directory ที่เราสร้างไว้คือ /mnt/mydata
1 | sudo mount /dev/sda1 /mnt/mydata |
ทีนี้เราต้องจัดการกับ permission ของไดร์ฟก่อนค่ะ เพราะพอปิดเครื่องแล้วเปิดใหม่มันจะไม่ mount ไดร์ฟให้เราอัตโนมัติ เราต้องหา UUID ของ /dev/sda1
1 | sudo blkid /dev/sda1 |
copy เลข UUID เก็บไว้ แล้วเข้าไปแก้ permission ใน /etc/fstab
1 | sudo nano /etc/fstab |
เพิ่มบรรทัดนี้เข้าไปบรรทัดสุดท้าย แต่เปลี่ยนเลข UUID กับ directory ของไดร์ฟให้เป็นของเราเอง (ตรง ntfs-3g ถ้าใช้ ext4 ก็เปลี่ยนเป็น ext4)
1 | UUID=xxxxxxxxx /mnt/mydata ntfs-3g defaults,permissions 0 0 |
Ctrl+x ตอบ y เพื่อ save แล้ว Enter
ทำการ reboot
1 | sudo shutdown -r now |
เมื่อบูทขึ้นมาใหม่ สร้างโฟลเดอร์ชื่อ data ไว้ใน /mnt/mydata/data
1 | sudo mkdir /mnt/mydata/data |
แก้ permission
1 | sudo chown -R www-data:www-data /mnt/mydata/data |
จำไว้นะ /mnt/mydata/data เราต้องใช้ในภายหลังไว้เป็นที่เก็บไฟล์ของเรานั่นเอง
Step 3 : สร้าง Database
เข้าไปจัดการฐานข้อมูลด้วย root
1 | mysql -u root -p |
คำสั่งสร้าง database ชื่อ nextcloud
1 | > create database nextcloud; |
สร้าง user ชื่อ ncadmin กับรหัสผ่าน passncadmin (ชื่อกับรหัสผ่านนี่แล้วแต่จะตั้งนะ)
1 | > create user ncadmin@localhost identified by 'passncadmin'; |
กำหนดการเข้าถึง database nextcloud ของ ncadmin และรหัสผ่าน
1 | > grant all privileges on nextcloud.* to ncadmin@localhost identified by 'passncadmin'; |
1 | > flush privileges; |
1 | > exit; |
Step 4 : ติดตั้ง NextCloud
ไปที่หน้าดาวน์โหลด NextCloud https://nextcloud.com/install/#instructions-server
ทำการ copy link มา อย่างตอนนี้ที่เราดาวน์โหลดมาคือ https://download.nextcloud.com/server/releases/nextcloud-11.0.1.zip
ใช้คำสั่ง wget ดาวน์โหลดมา
1 | wget https://download.nextcloud.com/server/releases/nextcloud-11.0.1.zip |
รอจน 100% เราก็จะได้ไฟล์ nextcloud-x.x.x.zip มา
ทำการ unzip ออกมา
1 | unzip nextcloud-10.0.1.zip |
จะได้ folder ชื่อ nextcloud
Copy folder nextcloud ไปไว้ใน directory ของ web server คือ /var/www
1 | sudo cp -r nextcloud /var/www |
ลองดูใน directory /var/www จะเห็นว่าเข้ามาละ
ตั้ง permissiom ของ directory /var/www/nextcloud/
1 | sudo chown -R www-data:www-data /var/www/nextcloud/ |
Step 5 : Web Server Configuration
สร้างไฟล์ nextcloud.conf ใน /etc/apache2/sites-available/
1 | sudo nano /etc/apache2/sites-available/nextcloud.conf |
แล้วพิมพ์ดังนี้
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | Alias /nextcloud "/var/www/nextcloud/" <Directory /var/www/nextcloud/> Options +FollowSymlinks AllowOverride All <IfModule mod_dav.c> Dav off </IfModule> SetEnv HOME /var/www/nextcloud SetEnv HTTP_HOME /var/www/nextcloud </Directory> |
Ctrl+x ตอบ y เพื่อ save แล้ว Enter
สร้าง symlink ไปยัง /etc/apache2/sites-enabled
1 | sudo ln -s /etc/apache2/sites-available/nextcloud.conf /etc/apache2/sites-enabled/nextcloud.conf |
enable module เพิ่มเติมดังนี้
module mod_rewrite
1 | sudo a2enmod rewrite |
ตามด้วย modules mod_headers, mod_env, mod_dir และ mod_mime:
1 | sudo a2enmod headers |
1 | sudo a2enmod env |
1 | sudo a2enmod dir |
1 | sudo a2enmod mime |
แล้ว
1 | sudo systemctl daemon-reload |
รีสตาร์ท Apache Web Server
1 | sudo service apache2 restart |
เปิดหน้าเว็บ 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