เปรียบเทียบ 4 ทางเลือกทำ Self-hosted Dropbox ที่ดีที่สุด
เปรียบเทียบ Nextcloud, Seafile, Syncthing และ Object Storage เจาะลึกความแตกต่างด้าน Topology ต้นทุนการรันบน VPS และเหตุผลสำคัญที่การซิงค์ไฟล์ไม่ใช่การสำรองข้อมูลอย่างที่คุณคิด
ทางเลือกสำหรับทำ Self-hosted Dropbox ที่คุณควรเลือกใช้
มีทางเลือกสำหรับการทำ self-hosted Dropbox 4 รายการที่น่าสนใจ ได้แก่ Nextcloud, Seafile, Syncthing และการใช้ object storage ร่วมกับไคลเอนต์ ซึ่งแต่ละตัวมีจุดประสงค์การใช้งานที่แตกต่างกัน Nextcloud เหมาะสำหรับใช้งานในครัวเรือนหรือทีมขนาดเล็กที่ต้องการแชร์ไฟล์ให้ผู้อื่น ส่วน Seafile เหมาะสำหรับบุคคลหรือทีมที่ต้องการซิงค์ไฟล์ขนาดเล็กจำนวนมาก โดยให้ความสำคัญกับความเร็วในการซิงค์มากกว่ารูปแบบการจัดเก็บข้อมูลบนดิสก์ สำหรับ Syncthing นั้นเหมาะสำหรับบุคคลที่ต้องการซิงค์ข้อมูลระหว่างอุปกรณ์ของตนเองโดยไม่จำเป็นต้องแชร์ลิงก์ให้บุคคลภายนอก และสุดท้ายคือ object storage ซึ่งเหมาะสำหรับการเก็บข้อมูลถาวร (archive) ที่มีต้นทุนต่ำและไม่ค่อยมีการเข้าถึงบ่อยนัก
ควรพิจารณากลไกการซิงค์ก่อนที่จะเปรียบเทียบฟีเจอร์ เพราะรายการฟีเจอร์ของแต่ละตัวมักจะดูคล้ายคลึงกัน แต่โครงสร้างการเชื่อมต่อ (topology) หรือการกำหนดว่าเครื่องใดเป็นเครื่องหลักที่อุปกรณ์อื่นต้องอ้างอิงข้อมูลตามนั้น คือปัจจัยสำคัญที่จะตัดสินว่าคุณจะยังคงพอใจกับการใช้งานในอีก 6 เดือนข้างหน้าหรือไม่
รูปแบบการซิงค์: เซิร์ฟเวอร์หลัก หรือการเชื่อมต่อแบบ peer-to-peer โดยไม่มีเซิร์ฟเวอร์
มีการออกแบบสองรูปแบบที่ต้องพิจารณา และเนื้อหาส่วนใหญ่หลังจากนี้จะขึ้นอยู่กับรูปแบบที่คุณเลือก
เซิร์ฟเวอร์หลัก (Server of record): Nextcloud, Seafile และ object storage ทั้งหมดทำงานในลักษณะนี้ เครื่องหนึ่งเครื่อง ซึ่งมักจะเป็น VPS (virtual private server) จะทำหน้าที่เก็บสำเนาที่เป็นต้นฉบับ อุปกรณ์ทุกเครื่องจะสื่อสารกับเครื่องนั้น แล็ปท็อปของคุณสามารถปิดเครื่องไปเป็นเดือน เมื่อกลับมาเปิดใหม่ก็จะซิงค์ข้อมูลให้เป็นปัจจุบันได้ด้วยตัวเอง โทรศัพท์ที่มีพื้นที่ว่าง 6 GB สามารถเก็บข้อมูลเพียงบางส่วนในขณะที่เซิร์ฟเวอร์เก็บข้อมูลทั้งหมดไว้ เบราว์เซอร์สามารถเข้าถึงไฟล์ได้ ซึ่งเป็นเหตุผลว่าทำไมลิงก์สำหรับแชร์จึงสามารถใช้งานได้
การเชื่อมต่อแบบ peer-to-peer โดยไม่มีเซิร์ฟเวอร์: Syncthing ทำงานในลักษณะนี้ อุปกรณ์ต่างๆ จะค้นหากันและแลกเปลี่ยนรายการไฟล์โดยตรงผ่านการเชื่อมต่อที่เข้ารหัส ไม่มีสำเนาใดที่เป็นต้นฉบับ: ไฟล์จะอยู่บนอุปกรณ์ที่เก็บไฟล์นั้นไว้เท่านั้นและไม่มีที่อื่นอีก อุปกรณ์สองเครื่องต้องออนไลน์พร้อมกันเพื่อให้การเปลี่ยนแปลงถูกส่งผ่านระหว่างกันได้ ไม่มี URL สำหรับส่งให้ผู้อื่น เพราะไม่มีเครื่องใดทำหน้าที่ให้บริการหน้าเว็บ
ผลลัพธ์สี่ประการที่ตามมา ซึ่งมักเป็นสิ่งที่ผู้ใช้งานพบเจอในภายหลัง:
- การส่งไฟล์ให้บุคคลที่ไม่ต้องการติดตั้งซอฟต์แวร์จำเป็นต้องใช้เซิร์ฟเวอร์หลัก ลิงก์คือ URL และ URL จำเป็นต้องมีกระบวนการทำงานที่คอยฟังพอร์ตอยู่
- การเข้าถึงไฟล์ของคุณจากเครื่องที่คุณไม่ได้เป็นผู้ควบคุม เช่น แล็ปท็อปของที่ทำงาน จำเป็นต้องใช้เซิร์ฟเวอร์หลัก
- อุปกรณ์ที่ปิดไปหลายสัปดาห์จะซิงค์ข้อมูลให้เป็นปัจจุบันจากเซิร์ฟเวอร์ทันทีที่เปิดใช้งาน ในขณะที่การตั้งค่าแบบ peer จะซิงค์ได้ก็ต่อเมื่ออุปกรณ์อื่นที่มีข้อมูลนั้นออนไลน์อยู่ด้วยเช่นกัน นี่คือเหตุผลที่ผู้ใช้ Syncthing หลายคนรันหนึ่ง instance บน VPS เพื่อให้ทำหน้าที่เป็น peer ที่ออนไลน์ตลอดเวลา
- การใช้พื้นที่จัดเก็บข้อมูลจะแตกต่างกัน เซิร์ฟเวอร์หลักจะเก็บสำเนาเต็มหนึ่งชุด บวกกับสิ่งที่อุปกรณ์แต่ละเครื่องเก็บไว้ในเครื่อง สำหรับ peer สี่เครื่องที่แชร์โฟลเดอร์เดียวกัน จะต้องเก็บสำเนาเต็มสี่ชุด เพราะ peer แต่ละเครื่องจะเก็บโฟลเดอร์นั้นไว้ทั้งหมด
Nextcloud: ผู้ใช้ กลุ่ม และลิงก์สาธารณะ
Nextcloud เป็นเว็บแอปพลิเคชันที่ทำงานด้วย PHP โดยจะจัดเก็บไฟล์ของคุณไว้เป็นไฟล์ปกติภายใต้ไดเรกทอรีข้อมูลและติดตามสถานะผ่านฐานข้อมูล คุณสามารถแชร์โฟลเดอร์ให้กับผู้ใช้รายอื่น กลุ่ม หรือสร้างเป็นลิงก์สาธารณะที่กำหนดรหัสผ่านและวันหมดอายุได้ ระบบมีการเปิดใช้งานประวัติเวอร์ชันไว้เป็นค่าเริ่มต้น และไฟล์ที่ถูกลบจะถูกย้ายไปไว้ในถังขยะก่อน สำหรับไคลเอนต์เดสก์ท็อปนั้นรองรับทั้ง Linux, macOS และ Windows รวมถึงมีแอปพลิเคชันอย่างเป็นทางการสำหรับ iOS และ Android หากเหตุผลที่คุณต้องการย้ายออกจาก Dropbox คือการที่ผู้อื่นจำเป็นต้องได้รับไฟล์จากคุณ นี่คือคำตอบที่ตรงไปตรงมาที่สุด
ราคาที่ต้องจ่ายคือความซับซ้อนของส่วนประกอบต่างๆ การติดตั้งทั่วไปต้องรันเว็บเซิร์ฟเวอร์, PHP-FPM (ตัวจัดการกระบวนการ PHP), ฐานข้อมูลอย่าง MariaDB หรือ PostgreSQL และ Redis สำหรับการล็อกไฟล์ นอกจากนี้ยังมีงานเบื้องหลังที่ทำงานทุกๆ 5 นาทีผ่าน cron หรือ systemd timer บน VPS ขนาด 1 GB ระบบสามารถเริ่มทำงานได้ แต่เมื่อมีการอัปโหลดไฟล์ขนาดใหญ่หรือรันคำสั่ง occ maintenance เป็นเวลานาน ระบบอาจถูก out-of-memory killer สั่งปิดการทำงานได้ ควรพิจารณาขนาด 2 GB เป็นขั้นต่ำสำหรับผู้ใช้จำนวนน้อย และคาดหวังว่าจะต้องใช้ถึง 4 GB เมื่อคุณเปิดใช้งานแอปพลิเคชันเพิ่มเติม อีกหนึ่งสิ่งที่ต้องคำนึงถึงคือการอัปเกรด เนื่องจากแอปใน app-store ถูกสร้างขึ้นมาให้รองรับ core release เฉพาะรุ่น ดังนั้นควรตรวจสอบให้แน่ใจว่าแอปที่คุณใช้งานอยู่รองรับเวอร์ชันหลักถัดไปก่อนที่จะทำการอัปเกรด
Nextcloud จะทำงานช้าลงเมื่อบัญชีเดียวมีไฟล์ขนาดเล็กจำนวนหลายแสนไฟล์ เนื่องจากแต่ละไฟล์คือหนึ่งแถวในตาราง file cache และเป็นไฟล์จริงบนดิสก์ ซึ่งไคลเอนต์เดสก์ท็อปจะทำการตรวจสอบทีละไฟล์ สำหรับการใช้งานในระดับครัวเรือน ปัญหานี้มักไม่เกิดขึ้น การกำหนดขนาด, TLS (transport layer security) และการสำรองข้อมูลได้ถูกอธิบายไว้ใน การติดตั้ง Nextcloud บน Docker พร้อม TLS และการสำรองข้อมูล ซึ่งเป็นจุดที่คุณควรไปศึกษาต่อเมื่อตัดสินใจได้แล้ว
คำเตือนเรื่องขอบเขตการใช้งาน: Nextcloud สามารถจัดการปฏิทิน, รายชื่อผู้ติดต่อ, บันทึกย่อ และคลังรูปภาพของคุณได้ แต่ทุกแอปที่คุณเปิดใช้งานจะเพิ่มภาระงานเบื้องหลังและเพิ่มปัจจัยที่อาจขัดขวางการอัปเกรด หากปัญหาหลักของคุณคือเรื่องรูปภาพ เครื่องมือเฉพาะทางจะจัดการได้ดีกว่า: ดูที่ Immich ในฐานะทางเลือกทดแทน Google Photos สำหรับการ self-host หากปัญหาหลักคือเรื่องเอกสารและวิกิ ให้พิจารณา ทางเลือกทดแทน Notion สำหรับการ self-host แทนการติดตั้งแอปจำนวนมากทับลงบนเซิร์ฟเวอร์ไฟล์ของคุณ การแก้ไขเอกสารเหล่านั้นผ่านเบราว์เซอร์จำเป็นต้องใช้เซิร์ฟเวอร์แยกต่างหาก ไม่ใช่แค่แอปใน Nextcloud ดังนั้นควรเปรียบเทียบ OnlyOffice กับ Collabora ก่อนที่คุณจะสรุปว่าขนาด 2 GB ยังคงเพียงพอต่อความต้องการของคุณ
Seafile: ออกแบบมาเพื่อรองรับไฟล์ขนาดเล็กจำนวนมหาศาล
Seafile จะแบ่งไฟล์ทุกไฟล์ออกเป็นบล็อกและจัดเก็บไว้ใน object store ภายใน โดยอ้างอิงตำแหน่งด้วย content hash ซึ่งเป็นแนวคิดเดียวกับที่ git ใช้สำหรับ object ของตน หน่วยของการซิงค์และการแชร์คือ library ไม่ใช่โครงสร้างโฟลเดอร์ เนื่องจากไคลเอนต์จะอัปโหลดบล็อกและ commit เพียงหนึ่งรายการแทนที่จะส่งคำขอแยกตามไฟล์ การซิงค์ไดเรกทอรีที่มีไฟล์ขนาดเล็ก 100,000 ไฟล์จึงเสร็จสิ้นเร็วกว่าโปรโตคอลที่ทำงานแบบไฟล์ต่อไฟล์มาก บล็อกที่เหมือนกันจะถูกจัดเก็บเพียงครั้งเดียว ดังนั้นการมีสำเนาที่สองของไฟล์ขนาดใหญ่จึงแทบไม่เปลืองพื้นที่จัดเก็บเพิ่มเติม
ข้อแลกเปลี่ยนคือไฟล์ของคุณบนเซิร์ฟเวอร์จะไม่ใช่ไฟล์ในรูปแบบปกติอีกต่อไป หากคุณเปิดไดเรกทอรีจัดเก็บข้อมูล คุณจะพบเพียงไฟล์ object ที่มีชื่อเป็นเลขฐานสิบหก การดึงข้อมูลออกมาจำเป็นต้องใช้ไคลเอนต์ของ Seafile หรือเครื่องมือ export และ fsck ของ Seafile เอง การสำรองข้อมูลยังคงทำได้ตามปกติเนื่องจาก object เหล่านั้นเป็นไฟล์ทั่วไป แต่คุณไม่สามารถกู้คืนสเปรดชีตเพียงไฟล์เดียวด้วย cp ได้ โปรดตัดสินใจให้แน่ชัดว่าเงื่อนไขนี้ยอมรับได้หรือไม่ เพราะนี่คือคุณสมบัติที่ผู้ใช้งานมักจะมาเสียใจในภายหลัง
Seafile มีทั้งรุ่น Community Edition และรุ่น Professional Edition ที่ต้องชำระเงิน โดยขอบเขตความแตกต่างระหว่างสองรุ่นมีการเปลี่ยนแปลงอยู่เสมอในแต่ละ releases ดังนั้นโปรดอ่านเงื่อนไขปัจจุบันบนเว็บไซต์ของพวกเขาก่อนวางแผนการใช้งานในทีมสำหรับฟีเจอร์เฉพาะทาง มีไคลเอนต์อย่างเป็นทางการสำหรับเดสก์ท็อปและมือถือให้บริการ สำหรับ library ที่มีการเข้ารหัส ข้อมูลจะถูกเข้ารหัสตั้งแต่ฝั่งไคลเอนต์ ดังนั้นเซิร์ฟเวอร์จะจัดเก็บเฉพาะ ciphertext ที่ไม่สามารถอ่านได้ หากคุณทำรหัสผ่านหาย library นั้นจะไม่สามารถอ่านได้อีกต่อไปแม้แต่ตัวคุณเอง การเปิด library ที่เข้ารหัสผ่านเบราว์เซอร์หมายถึงการส่งรหัสผ่านนั้นไปยัง web session ดังนั้นการรับประกันความปลอดภัยในระดับสูงสุดจึงจำกัดอยู่เพียงการใช้งานผ่านไคลเอนต์เดสก์ท็อปและมือถือเท่านั้น
ต้นทุนทรัพยากรที่ใช้ใกล้เคียงกับ Nextcloud คุณจำเป็นต้องรันฐานข้อมูล, memory cache และกระบวนการแอปพลิเคชันอีกสองรายการ ดังนั้น 2 GB จึงเป็นค่าเริ่มต้นที่เหมาะสมสำหรับการใช้งาน
Syncthing: ไม่ต้องเข้าสู่ระบบ
Syncthing เป็นไฟล์ binary ภาษา Go เพียงไฟล์เดียว ทำหน้าที่เฝ้าสังเกตโฟลเดอร์ ค้นหาอุปกรณ์คู่สนทนาผ่าน discovery server หรือ relay และซิงค์ข้อมูลโดยตรงระหว่างอุปกรณ์ ไม่มีการสร้างบัญชีผู้ใช้และไม่มีหน้าล็อกอินสำหรับผู้ที่คุณต้องการซิงค์ข้อมูลด้วย คุณเพียงจับคู่อุปกรณ์สองเครื่องผ่าน ID และกดยอมรับโฟลเดอร์ในแต่ละฝั่ง นี่เป็นซอฟต์แวร์ที่ดูแลรักษาง่ายที่สุดในบรรดาตัวเลือกทั้งหมด เนื่องจากมีส่วนประกอบที่ต้องรันน้อยมาก
สิ่งที่คุณต้องแลกคือความสามารถในการแชร์ข้อมูลทั้งหมด โดยในตารางระบุไว้ว่า Device pairing only, no links คุณไม่สามารถส่งลิงก์ให้ลูกค้า นักบัญชี หรือญาติได้ อีกจุดหนึ่งคือเรื่องอุปกรณ์พกพา: Android app, no official iOS หน้า FAQ ของโครงการระบุไว้อย่างชัดเจนว่า "ทีมงาน Syncthing ในปัจจุบันไม่มีแผนที่จะรองรับ iOS อย่างเป็นทางการในอนาคตอันใกล้" เนื่องจาก iOS มีข้อจำกัดด้านการประมวลผลเบื้องหลังที่ทำให้การซิงค์ข้อมูลอย่างต่อเนื่องทำได้ยาก ผู้ใช้งาน iOS จึงต้องพึ่งพาแอปพลิเคชันจากนักพัฒนาภายนอกแทน
การใช้ทรัพยากรอยู่ในระดับต่ำ โดยมีสิ่งหนึ่งที่ควรทราบคือ Syncthing จะเก็บดัชนีของทุกไฟล์ที่ซิงค์ ดังนั้นการใช้หน่วยความจำและการสแกนครั้งแรกจะขึ้นอยู่กับจำนวนไฟล์มากกว่าขนาดรวมของข้อมูล การทำ hashing โฟลเดอร์ขนาดใหญ่ในครั้งแรกจะใช้ CPU สูงในช่วงเวลาหนึ่งก่อนที่จะกลับสู่สภาวะปกติ บน VPS แผนที่เล็กที่สุดก็สามารถรันได้อย่างราบรื่น
กรณีเกิดความขัดแย้งของข้อมูล (Conflicts) ระบบจะเก็บไฟล์ไว้ทั้งสองเวอร์ชัน เมื่ออุปกรณ์สองเครื่องแก้ไขไฟล์เดียวกันในขณะที่เชื่อมต่อกันไม่ได้ Syncthing จะเปลี่ยนชื่อไฟล์สำเนาหนึ่งชุดและเก็บไว้ข้างไฟล์เดิม เพื่อให้คุณพบไฟล์ในรูปแบบ notes.sync-conflict-20260802-141530-K7MB3QT.md ข้อมูลจะไม่สูญหาย แต่ระบบก็ไม่มีการรวมไฟล์ (merge) ให้โดยอัตโนมัติ คุณจะต้องเป็นผู้จัดการแก้ไขความขัดแย้งด้วยตนเอง
Object storage กับไคลเอนต์: พื้นที่เก็บข้อมูลราคาประหยัด ไม่ใช่โฟลเดอร์สำหรับซิงค์
Object storage หมายถึง bucket ที่รองรับโปรโตคอล S3 (simple storage service) ไม่ว่าจะติดตั้งใช้งานเองด้วย MinIO หรือเช่าจากผู้ให้บริการ คุณสามารถเข้าถึงได้ผ่านเครื่องมืออย่าง rclone จากบรรทัดคำสั่ง หรือใช้เดสก์ท็อปไคลเอนต์ที่จำลอง bucket ให้เป็นไดรฟ์ หากคุณต้องการเรียกดูไฟล์ใน bucket ผ่านหน้าเว็บแทนการใช้เชลล์ เครื่องมือหลายตัวใน การเปรียบเทียบตัวจัดการไฟล์แบบ self-hosted นี้ สามารถใช้ S3 bucket เป็นแบ็กเอนด์และเพิ่มฟีเจอร์การแชร์ลิงก์ได้ การแชร์จะทำผ่าน presigned URL ซึ่งเป็นลิงก์ที่คุณสร้างขึ้นโดยมีเวลาหมดอายุในตัว ส่วนการทำ versioning เป็นการตั้งค่าระดับ bucket: Bucket versioning, off by default ดังนั้นควรเปิดใช้งานตั้งแต่ตอนสร้าง bucket เพราะการตั้งค่านี้จะไม่มีผลกับออบเจกต์ที่อัปโหลดไปก่อนหน้า
การมองว่า bucket เป็นโฟลเดอร์สำหรับซิงค์คือจุดที่มักจะเกิดปัญหา เพราะไม่มีกระบวนการใดคอยเฝ้าสังเกตไดเรกทอรี Documents ของคุณโดยค่าเริ่มต้น rclone bisync สามารถทำ two-way sync ได้ และเอกสารประกอบของ rclone เองก็ได้ระบุไว้อย่างชัดเจนถึงความระมัดระวังที่จำเป็น สิ่งที่ object storage ทำได้ดีมากคือการเป็นฐานรองรับ เช่น เป็นเป้าหมายสำหรับการสำรองข้อมูล หรือเป็นเลเยอร์จัดเก็บข้อมูลเบื้องหลังแอปพลิเคชัน บทความ การติดตั้งใช้งาน Object storage ที่รองรับ S3 แบบ self-hosted ด้วย MinIO จะครอบคลุมเนื้อหาฝั่งเซิร์ฟเวอร์
ต้นทุนของทรัพยากรในกรณีนี้มีความเฉพาะตัว MinIO เป็นไฟล์ binary เพียงไฟล์เดียวและใช้ทรัพยากรน้อยมากในขณะที่ไม่ได้ทำงาน ต้นทุนที่คุณต้องจ่ายจริงคือค่าพื้นที่ดิสก์ ซึ่งบน VPS หมายถึง block volume ที่เช่าตามขนาดกิกะไบต์ บวกกับค่า bandwidth ที่ใช้ในการรับส่งออบเจกต์เข้าและออก ค่าใช้จ่ายเหล่านี้ไม่ปรากฏใน free -h ดังนั้นโปรดอ่าน ต้นทุนที่แท้จริงของ VPS ต่อเดือน ก่อนที่จะกำหนดขนาดพื้นที่จัดเก็บข้อมูลของคุณ
เปรียบเทียบการแชร์ ไคลเอนต์มือถือ และการจัดการเวอร์ชัน
The data behind this chart
[
{
"tool": "Nextcloud",
"sharing": "Public links, users and groups",
"mobile": "Official iOS and Android apps",
"versioning": "On by default, plus trash"
},
{
"tool": "Seafile",
"sharing": "Public links with password and expiry",
"mobile": "Official iOS and Android apps",
"versioning": "Library history and snapshots"
},
{
"tool": "Syncthing",
"sharing": "Device pairing only, no links",
"mobile": "Android app, no official iOS",
"versioning": "Optional per folder, off by default"
},
{
"tool": "Object storage",
"sharing": "Presigned URLs you generate",
"mobile": "Third party clients only",
"versioning": "Bucket versioning, off by default"
}
]ตัวเลือกทั้งหมด 4 รายการจะถูกแบ่งไว้ในบรรทัดเดียว โดย 3 รายการสามารถส่งไฟล์ให้บุคคลภายนอกได้โดยใช้เพียงเว็บเบราว์เซอร์เท่านั้น ส่วนอีก 1 รายการรองรับเฉพาะอุปกรณ์ที่คุณเป็นเจ้าของเองเท่านั้น สำหรับรายการการจัดการเวอร์ชันของ Seafile คือ Library history and snapshots มีข้อควรทราบคือ ประวัติการแก้ไขจะถูกเก็บแยกตามไลบรารี ดังนั้นหากลบไลบรารีทิ้ง ประวัติการแก้ไขทั้งหมดของไลบรารีนั้นจะถูกลบไปด้วย
การนำข้อมูลของคุณออกมา
ค่าใช้จ่ายในการย้ายออกนั้นตรวจสอบได้ง่ายในตอนนี้ แต่จะมีราคาแพงหากเพิ่งมาพบในภายหลัง ดังนั้นควรตรวจสอบให้แน่ใจก่อนที่คุณจะตัดสินใจเลือกใช้งาน
Nextcloud จัดเก็บไฟล์จริงไว้ในไดเรกทอรีจริง ดังนั้นการทำ tar ของไดเรกทอรีข้อมูลจะช่วยให้คุณได้เอกสารของคุณคืนมา แม้ว่าแอปพลิเคชันจะไม่สามารถเริ่มทำงานได้อีกต่อไปก็ตาม Syncthing ทำงานในลักษณะเดียวกันบนทุกอุปกรณ์ ซึ่งถือเป็นกลยุทธ์การย้ายออกที่แข็งแกร่งที่สุดในที่นี้ เนื่องจากไฟล์จะถูกจัดเก็บไว้บนแต่ละอุปกรณ์โดยตรง ส่วนการจัดเก็บแบบ object store ของ Seafile จำเป็นต้องใช้ Seafile หรือเครื่องมือส่งออกข้อมูลของมันเพื่อประกอบบล็อกข้อมูลกลับเป็นไฟล์ สำหรับการจัดเก็บแบบ Object storage นั้น คุณสามารถใช้ rclone หรือเครื่องมือที่เทียบเท่ากัน ซึ่งสามารถดำเนินการได้ด้วยคำสั่งเดียว
การซิงค์ไม่ใช่การสำรองข้อมูล และช่องว่างนี้คือจุดที่ทำให้ข้อมูลสูญหาย
เครื่องมือทุกตัวที่กล่าวถึงนี้จะคัดลอกการเปลี่ยนแปลงระหว่างเครื่อง การลบไฟล์ถือเป็นการเปลี่ยนแปลงอย่างหนึ่ง หากคุณลบโฟลเดอร์บนแล็ปท็อป ไคลเอนต์จะแจ้งไปยังเซิร์ฟเวอร์ เซิร์ฟเวอร์จะดำเนินการตามนั้น และอุปกรณ์อื่นทุกเครื่องก็จะลบโฟลเดอร์นั้นออกเช่นกัน มัลแวร์เรียกค่าไถ่ (Ransomware) ก็ใช้ช่องทางเดียวกันนี้ โดยมันจะเข้ารหัสไฟล์ในเครื่อง ไคลเอนต์จะตรวจพบว่าไฟล์มีการแก้ไข และอัปโหลดเวอร์ชันที่ถูกเข้ารหัสขึ้นไป การซิงค์ทำงานได้อย่างถูกต้อง แต่ข้อมูลของคุณก็ยังคงสูญหายไปอยู่ดี
ถังขยะ (Trash bin) และประวัติเวอร์ชัน (Version history) ช่วยบรรเทาปัญหานี้ได้บ้าง แต่สิ่งเหล่านี้มีวันหมดอายุ สามารถถูกล้างโดยบัญชีผู้ใช้เดียวกับที่ทำผิดพลาด และยังคงเก็บอยู่บนดิสก์ลูกเดียวกับข้อมูลจริง หากโวลุ่มเสียหาย ข้อมูลและประวัติทั้งหมดก็จะสูญหายไปพร้อมกัน
การสำรองข้อมูลคือการทำสำเนาแยกต่างหาก บนฮาร์ดแวร์แยกต่างหาก โดยมีการกำหนดตารางเวลา และคุณต้องเคยทดสอบกู้คืนข้อมูลจากสำเนานั้นอย่างน้อยหนึ่งครั้งแล้ว อย่าลืมสำรองข้อมูลฐานข้อมูลไปพร้อมกับการสำรองไฟล์ การกู้คืนเฉพาะไดเรกทอรีข้อมูลของ Nextcloud โดยไม่มีฐานข้อมูล จะทำให้คุณได้อินสแตนซ์ที่ไม่รู้จักไฟล์เหล่านั้น และการใช้ occ files:scan ในภายหลังจะกู้คืนได้เพียงไฟล์ แต่จะสูญเสียข้อมูลการแชร์และประวัติเวอร์ชันที่อยู่ในตารางฐานข้อมูลไป การสำรองข้อมูลด้วย restic ตามตารางเวลาจาก VPS ครอบคลุมถึงวิธีการสำรองข้อมูลแบบเข้ารหัสและลดความซ้ำซ้อน (deduplicated) รวมถึงวิธีการทดสอบกู้คืนข้อมูลแทนที่จะคาดเดาไปเองว่าข้อมูลนั้นใช้งานได้จริง
สิ่งที่ผมเลือก
สำหรับผู้อ่านส่วนใหญ่ ผมแนะนำ Nextcloud สิ่งที่ผู้ใช้มักจะโหยหาหลังจากเลิกใช้ Dropbox คือการส่งลิงก์ให้ผู้อื่นโดยที่ผู้รับไม่ต้องติดตั้งซอฟต์แวร์ใดๆ และการเปิดไฟล์บนโทรศัพท์มือถือ Nextcloud ตอบโจทย์ทั้งสองอย่างด้วยแอปพลิเคชันอย่างเป็นทางการและไม่มีการเก็บค่าบริการรายเดือน โดยใช้ RAM เพียง 2 GB ซึ่งถือว่าคุ้มค่า ผมมีข้อยกเว้นอยู่ 2 กรณี หากโฟลเดอร์นั้นเป็นของคุณเพียงคนเดียวและอยู่บนฮาร์ดแวร์ที่คุณเป็นเจ้าของเท่านั้น ให้ใช้ Syncthing คุณจะได้ไม่ต้องคอยแพตช์เซิร์ฟเวอร์และไม่ต้องกังวลเรื่องการป้องกันการล็อกอินผ่านเว็บ หากคุณต้องการซิงค์ไดเรกทอรีการทำงานที่มีไฟล์จำนวนหลายแสนไฟล์ ให้ใช้ Seafile และยอมรับการจัดเก็บข้อมูลแบบ opaque เพื่อแลกกับความเร็ว ทั้งนี้ ควรใช้ Object storage เป็นปลายทางสำหรับการสำรองข้อมูลภายใต้ซอฟต์แวร์ที่คุณเลือก ไม่ใช่ใช้เป็นเครื่องมือซิงค์ข้อมูลหลักที่อยู่หน้าแอปพลิเคชัน
FAQ
Syncthing เป็นระบบสำรองข้อมูลสำหรับแล็ปท็อปของฉันหรือไม่?
ไม่เป็น Syncthing ทำหน้าที่คัดลอกการเปลี่ยนแปลงระหว่างอุปกรณ์ และการลบไฟล์ถือเป็นการเปลี่ยนแปลงรูปแบบหนึ่ง ดังนั้นไฟล์ที่คุณลบโดยไม่ตั้งใจจะหายไปจากทุกอุปกรณ์ที่จับคู่ไว้ภายในเวลาไม่กี่วินาที คุณสามารถใช้ฟีเจอร์ file versioning ในแต่ละโฟลเดอร์ได้ แต่ฟีเจอร์นี้จะปิดอยู่จนกว่าคุณจะเปิดใช้งานด้วยตนเอง คุณควรเก็บข้อมูลสำรองที่แท้จริงไว้บนฮาร์ดแวร์แยกต่างหาก โดยกำหนดตารางเวลาสำรองข้อมูล และควรทดสอบการกู้คืนข้อมูลอย่างน้อยหนึ่งครั้งเพื่อให้มั่นใจว่ากระบวนการกู้คืนใช้งานได้จริง
ฉันสามารถรัน Nextcloud และ Syncthing บน VPS เดียวกันได้หรือไม่?
ได้ ทั้งสองบริการฟังพอร์ตที่แตกต่างกันจึงไม่เกิดความขัดแย้งกัน ห้ามชี้โฟลเดอร์ของ Syncthing ไปยังไดเรกทอรีข้อมูลของ Nextcloud โดยตรง เนื่องจาก Nextcloud ติดตามไฟล์ทุกไฟล์ผ่านฐานข้อมูล ไฟล์ที่ถูกเพิ่มเข้าไปในดิสก์โดยตรงจะไม่ปรากฏในระบบจนกว่าคุณจะรัน occ files:scan และไฟล์ที่ถูกลบออกไปจะทำให้เกิดแถวข้อมูลในฐานข้อมูลที่อ้างอิงถึงไฟล์ที่ไม่มีอยู่จริง คุณควรจัดสรรไดเรกทอรีแยกต่างหากให้ Syncthing หรือเชื่อมต่อไดเรกทอรีนั้นเข้ากับ Nextcloud ในฐานะ external storage เพื่อให้ Nextcloud ทราบว่าต้องตรวจสอบข้อมูลในส่วนนั้น
บริการใดที่อนุญาตให้ฉันแชร์ลิงก์กับผู้ที่ไม่มีบัญชีได้?
ทั้ง Nextcloud และ Seafile สามารถสร้างลิงก์สาธารณะได้ โดยสามารถกำหนดรหัสผ่านและวันหมดอายุได้ ส่วน Object storage จะให้ presigned URL ซึ่งจะหยุดทำงานโดยอัตโนมัติหลังจากครบกำหนดเวลาที่คุณตั้งไว้ Syncthing ไม่มีฟีเจอร์นี้ เนื่องจากรูปแบบการแชร์ของ Syncthing คือการจับคู่อุปกรณ์ ดังนั้นอีกฝ่ายจำเป็นต้องติดตั้ง Syncthing, แจ้ง device ID ให้คุณทราบ และกดตอบรับการแชร์โฟลเดอร์
เซิร์ฟเวอร์ต้องใช้พื้นที่ดิสก์เท่าใด?
สำหรับเซิร์ฟเวอร์ที่เป็นศูนย์กลางข้อมูลหลัก ให้วางแผนพื้นที่ให้ครอบคลุมขนาดข้อมูลทั้งหมดที่แชร์ บวกกับพื้นที่สำหรับประวัติเวอร์ชัน (version history) และถังขยะ (trash) รวมถึงพื้นที่ว่างสำหรับการอัปโหลดที่กำลังดำเนินการอยู่ ประวัติเวอร์ชันเป็นสิ่งที่ผู้ใช้มักประเมินต่ำเกินไป การเก็บทุกเวอร์ชันของไฟล์ขนาด 2 GB ที่มีการเปลี่ยนแปลงทุกวันจะทำให้พื้นที่เต็มอย่างรวดเร็ว ดังนั้นควรตั้งค่านโยบายการเก็บรักษาข้อมูล (retention policy) ตั้งแต่เนิ่นๆ การจัดเก็บข้อมูลไว้บน volume แยกต่างหากจะช่วยป้องกันไม่ให้การขยายตัวของข้อมูลส่งผลกระทบต่อ root filesystem ซึ่งหากดิสก์เต็มจะทำให้เซิร์ฟเวอร์หยุดทำงานทั้งหมดแทนที่จะเป็นเพียงการหยุดอัปโหลดไฟล์เดียว