กลับไปหน้ารวมไฟล์
how-to-setup-file-storage-server-8a2db8.md

บทนำ

Droppy คือเซิร์ฟเวอร์เก็บไฟล์ที่มีเว็บอินเตอร์เฟสให้ใช้งาน แถมยังสามารถแก้ไขไฟล์ข้อความทุกประเภท และดูไฟล์มีเดีย (รูปภาพ, วิดีโอ ฯลฯ) ในเบราว์เซอร์ได้เลยโดยไม่ต้องดาวน์โหลด ออกแบบมาให้รันบนฮาร์ดแวร์สเปกต่ำๆ ได้สบายๆ เช่น Raspberry Pi, Banana Pi, Nvidia Jetson, ASUS Tinker ฯลฯ ใช้ droppy ได้พื้นที่เก็บไม่จำกัด แถมข้อมูลทั้งหมดยังอยู่กับเรา ไม่มีบริษัทไหนมาแอบดูข้อมูลเราได้ ช่วยรักษาความเป็นส่วนตัวได้เต็มที่ น้องน่าจะเข้าใจว่าพี่กำลังสื่ออะไรนะ 555

ขอขอบคุณ silverwind. ด้วยนะ

เกี่ยวกับอุปกรณ์

  • Raspberry Pi: คือคอมพิวเตอร์ขนาดเท่ากับบัตรเครดิต ราคาไม่แพง เอาไปเสียบกับจอคอมหรือทีวี แล้วใช้คีย์บอร์ดกับเมาส์ธรรมดาๆ ได้เลย เป็นเจ้าเล็กแต่แจ๋ว ช่วยให้คนทุกวัยได้เรียนรู้การเขียนโปรแกรมด้วยภาษา Scratch และ Python ทำได้ทุกอย่างเหมือนคอมตั้งโต๊ะเลย ทั้งท่องเน็ต เล่นวิดีโอ HD ทำสเปรดชีต พิมพ์งาน เล่นเกม ฯลฯ แถมยังเชื่อมต่อกับโลกภายนอกได้ ถูกเอาไปใช้ในโปรเจกต์ DIY มากมาย ตั้งแต่เครื่องดนตรี ตัวตรวจจับผู้ปกครอง ไปจนถึงสถานีตรวจอากาศ และบ้านนกทวิตเตอร์พร้อมกล้องอินฟราเรด

Raspberry Pi

  • SD card (64Gb): เป็นอุปกรณ์เก็บข้อมูลประเภทนึง ใช้สำหรับอ่านเขียนข้อมูลปริมาณมาก ในโปรเจกต์นี้เราใช้เขียนอิมเมจ OS ของ Raspberry Pi และเก็บข้อมูลเซิร์ฟเวอร์ของเรา แนะนำให้ใช้ SD card ความเร็วอ่าน 100mb/s ขึ้นไปนะ

SD Card

  • ใช้ Balena Etcher หรือ Rufus ในการเขียนอิมเมจ OS ของ Raspberry Pi ลง SD card นะ

Rufus

พี่ใช้ Rufus ในการเขียนอิมเมจ OS ลง SD Card

พี่จะไม่ลงรายละเอียดในบทความและวิดีโอสอนนี้ว่าทำยังไง เพราะบน YouTube มีสอนเต็มไปหมด หาดูได้ง่ายๆ เลย

  • พัดลม 5v DC: ช่วยระบายความร้อนให้ Raspberry Pi เพราะ CPU กับ RAM มันร้อนได้ถ้าเปิดนานๆ พี่แนะนำให้ติดฮีตซิงค์บน CPU กับ RAM ด้วย จะได้ระบายความร้อนได้ดีขึ้น

DC Fan

  • Power Supply: ใช้ Power Supply 5v 4amp ให้ตรงกับรุ่น Raspberry Pi ที่ใช้นะ

Power Supply

โปรเจกต์นี้ใช้ Raspberry Pi รุ่นไหนก็ได้ แต่ถ้าอยากให้ลื่นปรื๊ดๆ แนะนำเป็น Raspberry Pi 4B แรมอย่างน้อย 4Gb นะ

พื้นที่เก็บข้อมูลของเซิร์ฟเวอร์จะขึ้นอยู่กับขนาด SD card ที่เราใช้

โปรแกรมนี้ทำงานบน Node.js เวอร์ชันล่าสุดเท่านั้นนะ ห้ามช็อตนะตัวนี้

การลงมือทำจริง: สถาปัตยกรรมเซิร์ฟเวอร์และโปรโตคอลเครือข่าย

โปรเจคนี้คือการสำรวจเทคโนโลยีเครือข่ายและการโต้ตอบข้อมูลแบบจัดเต็มเลยน้อง! เราจะมาจับแก่นสำคัญกัน นั่นก็คือ สแต็กเซิร์ฟเวอร์ Node.js และ ลอจิกการจัดการสิทธิ์และความปลอดภัยของระบบไฟล์ประสิทธิภาพสูง น้องจะได้เรียนรู้วิธีการสื่อสารและซิงค์งานข้อมูลโดยใช้ซอฟต์แวร์ลอจิกเฉพาะทางและการตั้งค่าที่มั่นคงปึ๊ก

โปรเจคนี้จะเผยให้เห็นเลเยอร์ที่ซ่อนอยู่เบื้องหลังการให้บริการไฟล์ธรรมดาๆ:

  • เลเยอร์ระบุตัวตน: Raspberry Pi OS ทำหน้าที่เป็นดวงตาความละเอียดสูงที่คอยบันทึกเวลาและวัดทุกจุดของปริมาณการใช้งานเครือข่าย พร้อมประสานงานการส่งไฟล์
  • เลเยอร์แปลงสัญญาณ: ระบบใช้โปรโตคอลดิจิทัลความเร็วสูงเพื่อรับข้อมูลแบบเป็นก้อนๆ (chunks) และประสานงานภารกิจการให้บริการไฟล์ที่สำคัญสุดๆ
  • เลเยอร์อินเทอร์เฟซข้อมูล: SD Card ให้ฟีดแบ็กภาพและสถานะการทำงานแบบชัดเจน เพื่อให้น้องเช็กสถานะพื้นที่เก็บข้อมูลได้ (เช่น สุขภาพ/ความจุ)
  • เลเยอร์ประตูควบคุม: SSH Client ให้อำนาจในการสั่งงานด้วยมือหรือตรวจสอบสถานะอัตโนมัติระหว่างการตั้งค่าเริ่มต้น เพื่อประสานสถานะของระบบ
  • ลอจิกการประมวลผล: โค้ดเซิร์ฟเวอร์ Droppy ใช้กลยุทธ์ "รับคำขอ-ส่งต่อ": มันจะตีความคำขอจากเครือข่ายที่เข้ามาและจับคู่กับพาธไฟล์ เพื่อให้บริการแชร์ข้อมูลที่ปลอดภัยและเป็นจังหวะ
  • ลูปการสื่อสาร: ระหว่างที่เซิร์ฟเวอร์กำลังสตาร์ทระบบ จะมีการส่งล็อก (Logs) ออกมาที่เทอร์มินัลเป็นจังหวะๆ เพื่อประสานสถานะ

โครงสร้างพื้นฐานฮาร์ดแวร์-เครือข่าย

  • Raspberry Pi: คือ "สมอง" ของโปรเจคนี้ จัดการการสุ่มตัวอย่างเครือข่ายหลายทิศทาง และประสานงานการซิงค์พื้นที่เก็บข้อมูลและความปลอดภัย
  • SD Card: ให้ "ลิงก์พื้นที่เก็บข้อมูล" ที่ชัดเจนและน่าเชื่อถือสำหรับทุกจุดในระบบไฟล์
  • สายแลน/ไวไฟ: ให้อินเทอร์เฟซทางกายภาพที่มีความจุสูงและเสถียร สำหรับ "ภารกิจข้อมูล" ครั้งแรกของน้องให้สำเร็จลุล่วง
  • เคส Pi: สำคัญมากสำหรับการป้องกันฮาร์ดแวร์ทุกจุดให้ชัดเจนและประหยัดพลังงาน
  • แหล่งจ่ายไฟ: ใช้เลี้ยงชีวิต Pi ของน้อง และเป็นอินเทอร์เฟซหลักสำหรับตัวควบคุมระบบ

จุดเด่น

  • อินเทอร์เฟซ HTML ที่ตอบสนองเร็ว
  • ต้องล็อกอินด้วยการยืนยันตัวตน
  • อัปเดตระบบไฟล์แบบเรียลไทม์เมื่อมีการเปลี่ยนแปลง
  • ซัพพอร์ตการอัปโหลดหลายไดเรกทอรีและไฟล์
  • มีตัวเลือกลากแล้วปล่อย (Drag-and-Drop) สำหรับอัปโหลด
  • ซัพพอร์ตการแสดงผลแบบ Split-screen
  • มีปุ่มค้นหาให้ใช้
  • ซัพพอร์ตการดาวน์โหลดไดเรกทอรีเป็นไฟล์ Zip
  • สร้างลิงก์สำหรับแชร์ไฟล์ได้
  • มี Text editor สำหรับแก้ไขไฟล์ข้อความ
  • ซัพพอร์ตหลายภาษาใน Text editor
  • ดูไฟล์มีเดียออนไลน์ได้
  • ซัพพอร์ตโหมดเต็มหน้าจอ
  • ซัพพอร์ตการเพิ่มลง Homescreen บน Android และ Windows 10
  • สร้างไฟล์และไดเรกทอรีได้
  • ลบไฟล์และไดเรกทอรีได้
  • เพิ่มและลบผู้ใช้ได้
  • หลังตั้งค่าเสร็จ สามารถเข้าถึงผ่านเครือข่ายได้ (บทความจะอัปเดตหลังจากเพิ่มฟีเจอร์นี้แล้ว)

ข้อเสียที่ต้องรู้

  • ต้องมีแหล่งจ่ายไฟเลี้ยงตลอดเวลา (ห้ามดับเด็ดขาด!)
  • ต้องเชื่อมต่ออินเทอร์เน็ตตลอดเวลาเช่นกัน
  • ยังไม่รองรับการแบ่งพาร์ทิชันเก็บข้อมูลแยกสำหรับหลายๆ ยูสเซอร์
  • ยังดูไฟล์ Word, Excel, PowerPoint แบบออนไลน์ไม่ได้นะจ๊ะ
  • เวลาเซ็ตอัพและใช้ผ่านเน็ตเวิร์ก ไฟล์ใหญ่ๆ อาจอัปโหลดไม่สำเร็จ ต้องบีบอัดเป็น zip ก่อนเท่านั้น
  • บางทีเน็ตไม่ดี ดูวิดีโอออนไลน์ก็จะโหลดช้าซะจนอยากทุบคอม

เรากำลังพัฒนาอยู่เพื่อแก้ไขข้อเสียทั้งหมดและเพิ่มฟีเจอร์ใช้ง่ายๆ ให้อีกเพียบ!

วิดีโอสอนแบบละเอียดยิบ

Tutorial Video

แนะนำให้ดูวิดีโอให้จบ จะได้เข้าใจครบทุกขั้นตอนเลย

ถ้าชอบก็กดไลค์ แชร์ คอมเมนต์กันได้เลย ส่วนใครยังไม่ได้กดติดตามช่อง ก็ไปกดติดตามกันได้นะ

รูปภาพโปรเจกต์

นี่คือรูปภาพตัวอย่างของโปรเจกต์

Main Device

Connected with constant power supply and internet

Login Page

Main Page

Search Option

Split Screen

Settings Option

คำสั่งที่ใช้

  • apt-get update –y
  • apt-get upgrade –y
  • apt-get install npm –y
  • npm install –g n
  • n latest
  • npm install –g droppy
  • npm install –g localtunnel
  • chmod –R ugo-rwx /srv/
  • cp –rvf /usr/bin/nodejs /usr/bin/node
  • droppy start –c /srv/droppy/config –f /srv/droppy/files

จากนั้นก็แค่คัดลอกที่อยู่ IP จากเทอร์มินัลแล้ววางในเบราว์เซอร์ ครั้งแรกจะต้องตั้งชื่อผู้ใช้และรหัสผ่าน หลังจากนั้นก็ล็อกอินจากเบราว์เซอร์ของอุปกรณ์ใดก็ได้ด้วยชื่อและรหัสที่ตั้งไว้

เสร็จแล้ว! ตอนนี้ก็เก็บไฟล์ออนไลน์บนเซิร์ฟเวอร์ตัวเองและเข้าถึงจากที่ไหนก็ได้แล้ว จัดไปวัยรุ่น!

[!IMPORTANT] Droppy Server ต้องการการตั้งค่า Permission mapping (เช่น chmod/chown) ที่แม่นยำในโค้ด เพื่อป้องกันการเข้าถึงไฟล์โดยไม่ได้รับอนุญาต อย่าลืมใส่ Fail-Safe flag ในลูปด้วยนะ ถ้าไฟดับจะได้ปลอดภัย! ห้ามช็อตนะตัวนี้

ต่อยอดในอนาคต

  • OLED Identity Dashboard Integration: เอาจอ OLED เล็กๆ ติดไว้บนเคส Pi เพื่อโชว์ "IP Address" หรือ "Storage Usage (%)" ไปเลย ดูเท่ดี
  • Cloud Backup Synchronization: เชื่อมต่อกับ "Cloud Backup (Rclone)" แบบเฉพาะทาง เพื่อทำ "Off-site Syncing" แม่นยำขึ้นผ่านคลาวด์แบบไร้สาย
  • Cloud Interface Registration Support: เพิ่มเว็บแดชบอร์ดเฉพาะทางบนมือถือผ่าน WiFi/BT เพื่อติดตามและบันทึกประวัติพื้นที่เก็บข้อมูลทั้งหมดแบบเป๊ะๆ
  • Advanced Automation Support: เพิ่ม "Machine Learning" เฉพาะทางลงในโค้ด เพื่อให้ระบบเปลี่ยนทริกเกอร์อัตโนมัติตามพฤติกรรมผู้ใช้! ฉลาดขึ้นอีกขั้น

File Storage Server เป็นโปรเจกต์ที่เพอร์เฟกต์สำหรับสายวิทย์-เทคที่อยากได้เครื่องมือโครงสร้างพื้นฐานแบบอินเทอร์แอคทีฟและน่าสนใจ!

หวังว่าน้องจะสนุกกับโปรเจกต์นี้นะ

สู้งานนะน้อง!

ข้อมูล Frontmatter ดั้งเดิม

apps:
  - "1x Raspbian OS / Raspberry Pi OS"
  - "1x Samba (SMB/CIFS Protocol)"
  - "1x SSH Client (Termius/PuTTY)"
author: "shashwatraj98765"
category: "Computer & PC, Software & Coding"
components:
  - "1x Raspberry Pi (3B+ or 4 recommended)"
  - "1x MicroSD Card (16GB+ for OS)"
  - "1x External Hard Drive (USB for storage)"
  - "1x Ethernet Cable (for stable network)"
  - "1x Power Supply (5V for Pi)"
  - "1x Raspberry Pi Case"
description: "A professional and advanced server-infrastructure project that uses a Raspberry Pi and Raspbian OS to build a high-performance network-attached storage (NAS) system for secure and cross-platform file sharing."
difficulty: "Intermediate"
documentationLinks: []
downloadableFiles: []
encryptedPayload: "U2FsdGVkX18KyhGh3Qcb+mtyipYkzTkjs371p8HAIZslRR6/KxfalL6sy6fXvcYAjgCtr9ZAEfidJ/LY0vf97w=="
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/how-to-setup-file-storage-server-8a2db8_cover.jpg"
lang: "en"
likes: 2
passwordHash: "a03dda468cfea47eac3679ec11a23b88afedf17f516fdb0e96993ae9177c3ac1"
price: 99
seoDescription: "An advanced and playsomely interactive File-Storage-Server-Sync for beginners interested in Arduino server-setup and raspberry-pi-to-nas projects."
tags:
  - "file-storage-server"
  - "nas-infrastructure"
  - "raspberry-pi-server"
  - "samba-cross-platform"
  - "raspbian-os"
  - "intermediate"
title: "ตั้งเซิร์ฟเวอร์เก็บไฟล์แบบเทพๆ ด้วย Raspberry Pi"
tools: []
videoLinks:
  - "https://www.youtube.com/embed/Jg_x3MIS6q8"
views: 1716