Syncthing กับ Nextcloud เลือกตัวไหนดีสำหรับ VPS
เปรียบเทียบความแตกต่างระหว่าง Syncthing และ Nextcloud สำหรับใช้งานบน VPS เพื่อช่วยให้คุณตัดสินใจเลือกเครื่องมือที่เหมาะสมกับความต้องการและทรัพยากรที่มีอยู่จริง
Syncthing กับ Nextcloud: ความแตกต่างที่เป็นตัวตัดสิน
ความแตกต่างระหว่าง Syncthing กับ Nextcloud ขึ้นอยู่กับโครงสร้างเพียงจุดเดียว ซึ่งส่งผลต่อคุณสมบัติอื่นทั้งหมด Syncthing ทำงานแบบ peer-to-peer อุปกรณ์ทุกเครื่องจะเก็บโฟลเดอร์ทั้งหมดไว้ และไม่มีสำเนาใดที่เป็นต้นฉบับหลัก ส่วน Nextcloud ทำงานแบบ server โดยมีเครื่องหนึ่งทำหน้าที่เก็บไฟล์ มีบัญชีผู้ใช้คอยควบคุมการเข้าถึง และไคลเอนต์จะดึงสำเนาไฟล์ลงมา
นี่คือเหตุผลที่ Syncthing ไม่มีลิงก์สำหรับแชร์และไม่มีหน้าเว็บสำหรับดูเอกสาร เนื่องจากไม่มีสำเนาส่วนกลางไว้ให้บริการ เบราว์เซอร์จึงไม่มีแหล่งข้อมูลให้ร้องขอ ในขณะที่ Nextcloud มีฟังก์ชันทั้งสองอย่าง ซึ่งจำเป็นต้องใช้ PHP runtime, database server, web server และ reverse proxy สำหรับ TLS (transport layer security) เพื่อให้ทำงานได้
เลือกใช้ Syncthing เมื่ออุปกรณ์ทั้งหมดเป็นของคุณเอง และเลือกใช้ Nextcloud เมื่อต้องการให้เบราว์เซอร์หรือบุคคลอื่นสามารถเข้าถึงไฟล์ได้
หน้าที่จริงของ VPS ในแต่ละรูปแบบการออกแบบ
VPS ที่รัน Nextcloud คือที่จัดเก็บข้อมูลหลักของคุณ หากคุณลบไฟล์ในเครื่องแล็ปท็อป ไฟล์นั้นจะยังคงอยู่บนเซิร์ฟเวอร์ เพราะเซิร์ฟเวอร์คือต้นทางของข้อมูลเสมอ
VPS ที่รัน Syncthing ทำหน้าที่ต่างออกไป คือเป็น peer ที่ออนไลน์อยู่ตลอดเวลา Syncthing จะถ่ายโอนข้อมูลโดยตรงระหว่างอุปกรณ์สองเครื่องที่ออนไลน์อยู่ในเวลาเดียวกัน ดังนั้นแล็ปท็อปสองเครื่องที่ไม่เคยเปิดใช้งานพร้อมกันจึงไม่สามารถซิงค์ข้อมูลกันได้ไม่ว่าจะรอนานเพียงใดก็ตาม การเพิ่ม peer ตัวที่สามบน VPS ที่ไม่เคยปิดเครื่องจะช่วยแก้ปัญหานี้ได้ โดยแล็ปท็อป A จะส่งข้อมูลตอน 09:00 น. แล็ปท็อป B จะดึงข้อมูลตอน 22:00 น. และ VPS จะทำหน้าที่พักข้อมูลไว้ระหว่างนั้น
นี่คือบทบาทที่มีประโยชน์อย่างแท้จริง และเป็นคำนิยามที่จำกัดขอบเขตกว่าการเรียกว่าเป็น "ตัวแทนของ Dropbox" Syncthing จะไม่สร้างลิงก์สำหรับส่งให้ลูกค้า หากนั่นคือความต้องการของคุณ ให้หยุดอ่านที่นี่แล้วไปอ่าน บทสรุปทางเลือกของ Dropbox ที่โฮสต์ด้วยตนเอง แทน
ค่าใช้จ่ายของแต่ละบริการบน VPS ขนาดเล็ก
Syncthing เป็นไฟล์ binary ของ Go เพียงไฟล์เดียว มันทำงานโดยฟังคำสั่งผ่าน socket และเก็บดัชนีไฟล์ของคุณไว้ในฐานข้อมูลภายใน ซึ่งเป็นองค์ประกอบทั้งหมดของระบบ ตั้งแต่เวอร์ชัน 2.0 เป็นต้นมา ดัชนีดังกล่าวได้เปลี่ยนมาใช้ SQLite แทน LevelDB ดังนั้นการอัปเกรดจากการติดตั้งเวอร์ชัน 1.x จะต้องมีการย้ายข้อมูลแบบครั้งเดียวในขณะที่เริ่มทำงานครั้งแรก หากคุณมีชุดโฟลเดอร์ขนาดใหญ่ การย้ายข้อมูลนี้อาจใช้เวลานาน โปรดปล่อยให้กระบวนการทำงานจนเสร็จสิ้น โดยไม่จำเป็นต้องติดตั้งหรือแก้ไขส่วนประกอบอื่นเพิ่มเติม
Nextcloud ต้องการทรัพยากรมากกว่านั้น ณ เดือนสิงหาคม 2026 Nextcloud 35 รองรับ PHP 8.3 ถึง 8.5 โดยมี MariaDB หรือ PostgreSQL เป็นฐานข้อมูลเบื้องหลัง และให้บริการผ่าน Apache 2.4 หรือ nginx ร่วมกับ php-fpm คู่มือสำหรับผู้ดูแลระบบแนะนำว่า "ควรมี RAM อย่างน้อย 512MB ต่อหนึ่งกระบวนการทำงาน" และ php-fpm จะรัน worker process หลายตัวพร้อมกัน
บน VPS ขนาด 1 GB นั้น Syncthing สามารถทำงานได้อย่างราบรื่น แต่ Nextcloud จะค่อนข้างตึงตัว อย่างไรก็ตาม นั่นไม่ได้หมายความว่า Nextcloud เป็นตัวเลือกที่ผิด แต่มันหมายถึงภาระที่เพิ่มขึ้นในการดูแลรักษา โดยมีส่วนประกอบถึงสี่ส่วนที่ต้องคอยอัปเดตให้เป็นปัจจุบันแทนที่จะเป็นเพียงส่วนเดียว การใช้งานผ่าน container ตามแนวทางใน คู่มือการติดตั้ง Nextcloud บน VPS ที่ครอบคลุม Docker, TLS และการสำรองข้อมูล เป็นวิธีที่ลดความยุ่งยากในการจัดการภาระดังกล่าวได้ดีที่สุด การเพิ่มฟีเจอร์แก้ไขเอกสารผ่านเบราว์เซอร์เข้าไปจะยิ่งเพิ่มความต้องการทรัพยากรขึ้นไปอีก ซึ่งเป็นสิ่งที่ การเปรียบเทียบระหว่าง OnlyOffice และ Collabora ได้อธิบายไว้สำหรับเซิร์ฟเวอร์ขนาด 2 ถึง 4 GB
การติดตั้ง Syncthing บน VPS
Ubuntu มีแพ็กเกจ syncthing มาให้ แต่เวอร์ชันจะล้าหลังกว่าต้นทางมาก ให้ใช้ repository ของโครงการโดยตรงแทน
sudo mkdir -p /etc/apt/keyrings
sudo curl -L -o /etc/apt/keyrings/syncthing-archive-keyring.gpg https://syncthing.net/release-key.gpg
echo "deb [signed-by=/etc/apt/keyrings/syncthing-archive-keyring.gpg] https://apt.syncthing.net/ syncthing stable-v2" | sudo tee /etc/apt/sources.list.d/syncthing.list
sudo apt-get update
sudo apt-get install syncthing
syncthing --versionsyncthing --version ควรแสดงบรรทัดที่ขึ้นต้นด้วย syncthing v2 หากพบ v1 แสดงว่า apt ยังคงเลือกใช้แพ็กเกจจาก distribution ให้ทำการ pin upstream repository ไว้เหนือกว่าแล้วติดตั้งใหม่อีกครั้ง
printf "Package: *\nPin: origin apt.syncthing.net\nPin-Priority: 990\n" | sudo tee /etc/apt/preferences.d/syncthing.prefให้รัน Syncthing เป็น system service ภายใต้บัญชีผู้ใช้ทั่วไป เพื่อให้โปรแกรมเริ่มทำงานเองตอนบูตเครื่องโดยไม่ต้องมีผู้ใช้ล็อกอินอยู่
sudo systemctl enable --now syncthing@youruser.service
systemctl status syncthing@youruser.servicesystemctl status ควรแสดงผลเป็น active (running) ไฟล์การตั้งค่าและดัชนีจะถูกเก็บไว้ที่ /home/youruser/.local/state/syncthing และไฟล์คอนฟิกคือ config.xml สำหรับการติดตั้งที่ทำก่อนเวอร์ชัน Syncthing 1.27 ไฟล์จะยังคงอยู่ที่ ~/.config/syncthing ดังนั้นให้ตรวจสอบทั้งสองตำแหน่งก่อนคัดลอกข้อมูลระหว่างเครื่อง
จากนั้นให้เปิดพอร์ต Syncthing ใช้พอร์ต 22000/TCP สำหรับโปรโตคอลการซิงค์, 22000/UDP สำหรับการรับส่งข้อมูลผ่าน QUIC และ 21027/UDP สำหรับการค้นหาอุปกรณ์ในเครือข่ายท้องถิ่น (local discovery) การค้นหาแบบนี้ใช้ broadcast และ multicast ซึ่งไม่สามารถข้ามผ่านอินเทอร์เน็ตได้ ดังนั้นบน VPS คุณจึงจำเป็นต้องเปิดเพียงสองพอร์ตแรกเท่านั้น
sudo ufw allow 22000/tcp
sudo ufw allow 22000/udp
sudo ufw statusufw status ควรแสดงรายการกฎทั้งสอง หากแสดงผลเป็น Status: inactive แสดงว่า ufw ไม่ได้กรองการเชื่อมต่อใดๆ และมีเพียง firewall ของเครือข่ายจากผู้ให้บริการของคุณเท่านั้นที่ทำงานอยู่ ให้ตรวจสอบแผงควบคุมของผู้ให้บริการด้วย เนื่องจากมักจะเป็นระบบควบคุมแยกต่างหาก หากอุปกรณ์ระยะไกลค้างอยู่ที่สถานะ Disconnected ในขณะที่บริการกำลังทำงานอยู่ มักหมายความว่า firewall ตัวใดตัวหนึ่งในสองจุดนี้ยังคงปิดกั้นการเชื่อมต่ออยู่
การเข้าถึง Syncthing GUI โดยไม่ต้องเปิดพอร์ตสู่สาธารณะ
โดยค่าเริ่มต้น Web GUI (Graphical User Interface) จะฟังคำสั่งที่ 127.0.0.1:8384 เท่านั้น ซึ่งหมายความว่าจะตอบสนองเฉพาะการเรียกจากตัวเซิร์ฟเวอร์เอง ค่าเริ่มต้นนี้มีความปลอดภัย เนื่องจาก GUI มี API (Application Programming Interface) key ที่สามารถแก้ไข path ของโฟลเดอร์ทุกแห่งบนเครื่องได้
อย่าเปิดให้เข้าถึงจากภายนอกในขั้นตอนแรก เอกสารระบุไว้อย่างชัดเจนว่าการผูก (binding) เข้ากับ network address ส่งผลอย่างไร: "การระบุ LAN address ของคอมพิวเตอร์จะไม่จำกัดการเข้าถึงเฉพาะอุปกรณ์ในเครือข่ายท้องถิ่นของคุณ!" ให้ใช้วิธี forward พอร์ตผ่าน SSH จากแล็ปท็อปของคุณแทน
ssh -L 8384:127.0.0.1:8384 youruser@your.vps.exampleเปิด http://127.0.0.1:8384 ในเบราว์เซอร์บนเครื่องของคุณในขณะที่ session นั้นยังทำงานอยู่ อุโมงค์เชื่อมต่อจะปิดลงพร้อมกับ session SSH ดังนั้นจึงไม่มีพอร์ตใดเปิดค้างไว้หลังจากนั้น
หากคุณจำเป็นต้องเข้าถึง GUI โดยตรง ให้ตั้งค่าข้อมูลรับรอง (credentials) ก่อน เนื่องจากบนเซิร์ฟเวอร์ไม่มีเบราว์เซอร์ ให้ดำเนินการผ่านบรรทัดคำสั่ง (command line)
sudo systemctl stop syncthing@youruser.service
sudo -H -u youruser syncthing generate --gui-user=admin --gui-password=-
sudo systemctl start syncthing@youruser.service-H มีความสำคัญ เพราะหากไม่มีค่านี้ sudo จะใช้ home directory ของ root และคุณจะแก้ไขไฟล์ config.xml ผิดตำแหน่ง การใช้เครื่องหมายขีดกลางตัวเดียวเป็นค่ารหัสผ่านจะทำให้ syncthing generate อ่านรหัสผ่านจาก standard input ซึ่งช่วยป้องกันไม่ให้รหัสผ่านปรากฏในประวัติการใช้งาน shell ของคุณ และค่าดังกล่าวจะถูกทำ hash ก่อนที่จะถูกเขียนลงในไฟล์ เมื่อคุณเข้าสู่ระบบได้แล้ว ให้เปิดใช้งาน HTTPS ในการตั้งค่า GUI
เหตุผลที่ Syncthing ส่งต่อความผิดพลาดของคุณ
คำถามที่พบบ่อย (FAQ) ของ Syncthing ได้ตอบคำถามเรื่องการสำรองข้อมูลไว้ว่า "Syncthing ไม่ใช่แอปพลิเคชันสำรองข้อมูลที่ดีนัก เพราะการเปลี่ยนแปลงทุกอย่างในไฟล์ของคุณ (การแก้ไข, การลบ ฯลฯ) จะถูกส่งต่อไปยังอุปกรณ์ทุกเครื่องของคุณ"
หากคุณเผลอลบโฟลเดอร์บนแล็ปท็อป Syncthing จะทำงานตามที่ออกแบบไว้ทุกประการ นั่นคือการลบโฟลเดอร์นั้นทิ้งในทุกอุปกรณ์ภายในเวลาไม่กี่วินาที การซิงค์หมายถึงการทำให้ตรงกัน และการทำให้ตรงกันรวมถึงการยอมรับว่าไฟล์นั้นได้ถูกลบไปแล้ว
การทำ File versioning คือวิธีบรรเทาปัญหา แต่ฟีเจอร์นี้จะถูกปิดไว้จนกว่าคุณจะเปิดใช้งาน เอกสารระบุว่า versioning "ค่าเริ่มต้นคือ 'no file versioning' หมายความว่าจะไม่มีการเก็บสำเนาเก่าของไฟล์ไว้" โดยมีกลยุทธ์ให้เลือก 4 แบบต่อหนึ่งโฟลเดอร์ ได้แก่ Trash Can ซึ่งจะเก็บสำเนาของไฟล์ที่ถูกลบหรือถูกแทนที่จากการเปลี่ยนแปลงจากระยะไกลไว้หนึ่งชุด, Simple ซึ่งจะเก็บจำนวนเวอร์ชันเก่าตามที่กำหนดต่อไฟล์, Staggered ซึ่งจะลดความละเอียดของประวัติเมื่อเวลาผ่านไป โดยเก็บสำเนารายชั่วโมงไว้หนึ่งวัน สำเนารายวันไว้หนึ่งเดือน และอื่นๆ ตามลำดับ และ External ซึ่งจะมอบการตัดสินใจให้แก่คำสั่งที่คุณเขียนขึ้นเอง สำเนาเก่าจะถูกเก็บไว้ในไดเรกทอรี .stversions ภายในโฟลเดอร์ที่แชร์
ให้ตั้งค่า Staggered บน peer ที่เป็น VPS และปล่อยให้แล็ปท็อปปิดการใช้งาน versioning ไว้ วิธีนี้จะทำให้ peer ที่เปิดทำงานตลอดเวลาเป็นตัวเก็บประวัติข้อมูล และแล็ปท็อปของคุณก็จะไม่มีข้อมูลส่วนเกิน
Nextcloud จัดการเรื่องนี้ได้ดีกว่า แต่ก็ยังไม่ใช่การสำรองข้อมูล ไฟล์ที่ถูกลบจะไปอยู่ในถังขยะ และการแก้ไขจะถูกเก็บไว้โดยแอป Versions แต่ทั้งสองอย่างจะถูกลบออกโดยอัตโนมัติเมื่อพื้นที่ดิสก์เต็ม กระบวนการบนแล็ปท็อปของคุณที่ทำการเข้ารหัสไฟล์จะซิงค์เวอร์ชันที่เข้ารหัสเหล่านั้นขึ้นไป และสำเนาที่ถูกต้องจะถูกลบออกตามกำหนดเวลาของมันเอง
เครื่องมือทั้งสองอย่างจำเป็นต้องมีการสำรองข้อมูลจริงรองรับอยู่เบื้องหลัง เช่น snapshot ที่สร้างโดยโปรแกรมแยกต่างหาก ซึ่งเขียนลงในตำแหน่งที่ไคลเอนต์ซิงค์เข้าไม่ถึง และต้องผ่านการกู้คืนอย่างน้อยหนึ่งครั้งเพื่อให้มั่นใจว่าการกู้คืนใช้งานได้จริง การเปรียบเทียบระหว่าง restic และ BorgBackup ครอบคลุมถึงการเลือกใช้เครื่องมือเหล่านี้กับไดเรกทอรีข้อมูลของคุณ
ความแตกต่างของความขัดแย้งระหว่างทั้งสองเครื่องมือ
เครื่องมือทั้งสองจะสร้างไฟล์ความขัดแย้ง (conflict file) เมื่อมีการแก้ไขไฟล์เดียวกันจากทั้งสองฝั่งระหว่างการซิงค์ สิ่งที่แตกต่างกันคือใครจะเป็นผู้เห็นไฟล์ดังกล่าว
Syncthing จะเปลี่ยนชื่อสำเนาที่แพ้เป็น <filename>.sync-conflict-<date>-<time>-<modifiedBy>.<ext> โดยสำเนาที่มีเวลาแก้ไขเก่ากว่าจะเป็นฝ่ายแพ้ หากเวลาแก้ไขเท่ากัน อุปกรณ์ที่มีค่าใน 63 บิตแรกของ device ID มากกว่าจะเป็นฝ่ายแพ้ ซึ่งเป็นเกณฑ์ที่กำหนดขึ้นโดยสุ่มแต่ให้ผลลัพธ์เดียวกันในทุก peer จากนั้นคือส่วนที่ผู้ใช้อาจไม่ทันตั้งตัว: ไฟล์เหล่านี้ "จะถูกปฏิบัติเหมือนไฟล์ปกติหลังจากถูกสร้างขึ้น ดังนั้นมันจะถูกส่งต่อไปยังอุปกรณ์อื่น" ทุก peer จะได้รับสำเนาที่ขัดแย้งกัน การล้างไฟล์เหล่านี้ทำได้โดยการลบเพียงครั้งเดียวซึ่งจะซิงค์ออกไป แต่คุณจะเห็นไฟล์ดังกล่าวบนทุกเครื่องของคุณก่อน
Nextcloud desktop client จะเขียนไฟล์เป็น <name> (conflicted copy YYYY-MM-DD HHMMSS).<ext> เช่น mydata (conflicted copy 2018-04-10 093612).txt และโดยค่าเริ่มต้นจะไม่ทำการอัปโหลดไฟล์นั้น คู่มือการใช้งานของ client ได้ให้เหตุผลไว้ว่า ผู้เขียนการเปลี่ยนแปลงนั้นคือบุคคลที่เหมาะสมที่สุดในการแก้ไขความขัดแย้ง และการแสดงความขัดแย้งให้ผู้ใช้อื่นเห็นมีแต่จะสร้างความสับสน หากคุณต้องการพฤติกรรมที่ตรงกันข้าม ให้ตั้งค่า OWNCLOUD_UPLOAD_CONFLICT_FILES=1 ใน environment ของ client
ดังนั้น ความขัดแย้งใน Syncthing จึงเป็นเหตุการณ์ที่เกิดขึ้นทั้งคลัสเตอร์ ในขณะที่ความขัดแย้งใน Nextcloud จะคงอยู่เฉพาะบนเครื่องเดสก์ท็อปเครื่องเดียวเท่านั้น
ประเภทของโฟลเดอร์ช่วยให้ Syncthing บนเซิร์ฟเวอร์มีความปลอดภัยมากขึ้น
Syncthing มีประเภทของโฟลเดอร์ให้เลือก 3 แบบ การเลือกใช้ให้เหมาะสมบน VPS จะช่วยป้องกันความผิดพลาดที่อาจเกิดขึ้นได้
- Send & Receive เป็นค่าเริ่มต้น การเปลี่ยนแปลงจะถูกซิงค์ไปในทั้งสองทิศทาง
- Send Only จะเพิกเฉยต่อทุกสิ่งที่คลัสเตอร์ส่งเข้ามา ให้ใช้โหมดนี้ในอุปกรณ์ที่ทำหน้าที่เผยแพร่ข้อมูลเพียงอย่างเดียว เมื่อสถานะไม่ตรงกัน GUI จะแสดงปุ่ม "Override Changes" สีแดง ซึ่งจะบังคับให้สถานะในเครื่องนี้ถูกส่งออกไปยังอุปกรณ์อื่นทั้งหมด
- Receive Only จะรับการเปลี่ยนแปลงจากคลัสเตอร์และไม่ส่งการแก้ไขในเครื่องกลับไป ให้ใช้โหมดนี้บน VPS ที่ทำหน้าที่เป็นที่เก็บถาวร (archive) หากมีการแก้ไขในเครื่องนี้ ระบบจะแสดงปุ่ม "Revert Local Changes" สีแดงขึ้นมาแทน
การตั้งค่าโฟลเดอร์เป็น Receive Only บน VPS ร่วมกับการเปิดใช้งาน Staggered versioning จะทำให้คุณได้ mirror ที่มีการเก็บเวอร์ชันไว้ เมื่อมีการลบไฟล์บนแล็ปท็อป การลบนั้นจะยังคงมีผลเพราะถือเป็นการเปลี่ยนแปลงที่ถูกต้องในคลัสเตอร์ แต่ไฟล์ฉบับเก่าจะถูกย้ายไปเก็บไว้ใน .stversions แทนที่จะหายไปถาวร
ควรเลือกตัวไหน
แถวข้อมูล 7 แถวด้านล่างนี้ครอบคลุมเหตุผลที่ผู้คนมักตั้งคำถามนี้
The data behind this chart
[
{
"label": "Keep two of my own laptops in sync",
"pick": "Syncthing",
"notes": "No accounts to manage. The VPS is the peer that is always awake."
},
{
"label": "Send a download link to a client",
"pick": "Nextcloud",
"notes": "Syncthing has no public link sharing at all."
},
{
"label": "Open a file from a borrowed browser",
"pick": "Nextcloud",
"notes": "The Syncthing GUI shows sync state, never file contents."
},
{
"label": "Sync 200 GB between machines I own",
"pick": "Syncthing",
"notes": "Peers transfer directly. The VPS copy is optional."
},
{
"label": "Phone photo upload with a store app",
"pick": "Nextcloud",
"notes": "The official Syncthing Android app ended in December 2024."
},
{
"label": "Calendar and contacts alongside files",
"pick": "Nextcloud",
"notes": "Syncthing syncs files. That is the entire feature set."
},
{
"label": "1 GB VPS with nothing else to spare",
"pick": "Syncthing",
"notes": "One Go binary against PHP plus a database plus a web server."
}
]ให้ดูที่แถวแรก การซิงค์แล็ปท็อปสองเครื่องของคุณเองให้ตรงกันนั้นชี้ไปที่ Syncthing ซึ่งเป็นกรณีที่ VPS จะแสดงความคุ้มค่าในฐานะโหนดที่ทำงานตลอดเวลา ทุกแถวที่เกี่ยวข้องกับเบราว์เซอร์ ลิงก์ หรือบุคคลอื่นจะชี้ไปในทิศทางตรงกันข้าม
หาก Nextcloud ยังคงเป็นตัวเลือกที่เหนือกว่าแต่คุณกังวลเรื่องการใช้ทรัพยากร การเปรียบเทียบระหว่าง Seafile และ Nextcloud คือสิ่งถัดไปที่คุณควรอ่าน เนื่องจาก Seafile ยังคงใช้โมเดลเซิร์ฟเวอร์โดยมีกลไกการซิงค์ที่แตกต่างกันอยู่เบื้องหลัง
การรันทั้งสองอย่างบน VPS เดียวกัน
เครื่องมือทั้งสองไม่ได้จำกัดการใช้งานร่วมกัน การใช้ Syncthing เพื่อย้ายไฟล์ระหว่างเครื่องของคุณเองในขณะที่ Nextcloud จัดการเรื่องการแชร์ไฟล์และปฏิทินเป็นรูปแบบที่พบได้ทั่วไป
มีกฎข้อหนึ่งหากคุณต้องการทำเช่นนี้: ห้ามชี้ Syncthing ไปที่ไดเรกทอรีข้อมูลของ Nextcloud โดยเด็ดขาด Nextcloud จะติดตามไฟล์ทุกไฟล์ในฐานข้อมูลของตน ดังนั้นไฟล์ที่ปรากฏบนดิสก์จากภายนอกจะไม่แสดงในหน้าเว็บจนกว่าฐานข้อมูลจะอัปเดตข้อมูลให้ตรงกัน จากไดเรกทอรีการติดตั้ง Nextcloud:
sudo -u www-data php occ files:scan --allคำสั่งดังกล่าวจะแสดงจำนวนไฟล์และโฟลเดอร์ที่สแกน การรันคำสั่งนี้ตามเวลาที่กำหนดเป็นเพียงวิธีแก้ปัญหาเฉพาะหน้า ไม่ใช่การออกแบบระบบที่ถูกต้อง ควรแยกไดเรกทอรีของแต่ละเครื่องมือออกจากกัน หากคุณยังตัดสินใจไม่ได้ว่าควรติดตั้งอะไรบนเซิร์ฟเวอร์บ้าง คู่มือสิ่งที่ควรทำ self-host ในปี 2026 เป็นจุดเริ่มต้นที่ดีกว่าการเลือกเครื่องมือซิงค์ไฟล์ก่อน
FAQ
Syncthing สามารถแทนที่ Dropbox ได้หรือไม่?
ได้เฉพาะในส่วนของการซิงค์ข้อมูลระหว่างอุปกรณ์ของคุณเองเท่านั้น Syncthing ไม่มีลิงก์สำหรับแชร์สาธารณะและไม่มีบัญชีผู้ใช้ อีกทั้งอินเทอร์เฟซบนเว็บไม่เคยแสดงเนื้อหาของไฟล์ เนื่องจากไม่มีสำเนาส่วนกลางให้เบราว์เซอร์เรียกดู แอปอย่างเป็นทางการบน Android ถูกยุติการพัฒนาหลังการปล่อยเวอร์ชันเดือนธันวาคม 2024 และถูกนำออกจาก Play Store แล้ว ดังนั้นการรองรับบนโทรศัพท์จึงขึ้นอยู่กับเวอร์ชันที่ชุมชนพัฒนาต่อ หากคุณต้องการส่งลิงก์ให้ผู้อื่น คุณจำเป็นต้องมีเซิร์ฟเวอร์ ซึ่งหมายถึงการใช้ Nextcloud หรือบริการในลักษณะเดียวกัน
Syncthing ถือเป็นการสำรองข้อมูลหรือไม่?
ไม่ และทางโครงการได้ระบุไว้ชัดเจน การลบหรือแก้ไขไฟล์จะส่งผลไปยังทุกอุปกรณ์ ดังนั้นการลบไฟล์โดยไม่ตั้งใจจะทำให้ไฟล์หายไปทุกที่ภายในเวลาไม่กี่วินาที การเปิดใช้งาน file versioning ในแต่ละโฟลเดอร์ โดยเฉพาะแบบ Staggered บนอุปกรณ์ที่เปิดทิ้งไว้ตลอดเวลา จะช่วยให้คุณมีช่วงเวลาในการกู้คืนข้อมูลผ่านไดเรกทอรี .stversions อย่างไรก็ตาม นี่ไม่ใช่การทดแทนการทำ snapshot โดยเครื่องมือแยกต่างหากไปยังพื้นที่จัดเก็บข้อมูลอื่น
เหตุใดฉันจึงไม่เห็นไฟล์ของฉันใน Syncthing web GUI?
เนื่องจาก GUI เป็นแผงควบคุมสำหรับสถานะการซิงค์ ไม่ใช่โปรแกรมจัดการไฟล์ มันจะแสดงโฟลเดอร์ อุปกรณ์ ความคืบหน้าในการถ่ายโอน และจำนวนไฟล์ที่ขัดแย้งกัน แต่จะไม่แสดงรายการหรือเปิดเนื้อหาของไฟล์ ซึ่งเป็นไปตามการออกแบบแบบ peer-to-peer โดยไฟล์ของคุณจะอยู่บนอุปกรณ์ของคุณ และ GUI บน VPS จะทำหน้าที่จัดการกระบวนการย้ายไฟล์เหล่านั้นเท่านั้น
Syncthing ต้องการให้เปิดพอร์ตใดบ้างบน VPS?
พอร์ต 22000/TCP สำหรับโปรโตคอลการซิงค์ และ 22000/UDP สำหรับการรับส่งข้อมูลผ่าน QUIC ส่วนพอร์ต 21027/UDP ใช้สำหรับการค้นหาอุปกรณ์ในเครือข่ายท้องถิ่นผ่าน broadcast และ multicast ซึ่งไม่สามารถใช้งานผ่านอินเทอร์เน็ตได้ ดังนั้นควรปิดพอร์ตนี้บนเซิร์ฟเวอร์สาธารณะ สำหรับ GUI ให้คงไว้ที่พอร์ต 8384 โดยผูกไว้กับ 127.0.0.1 และเข้าใช้งานผ่าน SSH tunnel นอกจากนี้ ให้ตรวจสอบ firewall ของผู้ให้บริการเครือข่ายและ ufw ด้วย เนื่องจากเป็นการควบคุมที่แยกจากกัน
ฉันสามารถรัน Syncthing และ Nextcloud บน VPS เดียวกันได้หรือไม่?
ได้ และเป็นสิ่งที่สมเหตุสมผลหากเซิร์ฟเวอร์มี RAM ตั้งแต่ 2 GB ขึ้นไป ควรแยกไดเรกทอรีของทั้งสองบริการออกจากกัน เนื่องจาก Nextcloud จะทำดัชนีไฟล์ในฐานข้อมูล ดังนั้นไฟล์ใดก็ตามที่ Syncthing เขียนลงในพื้นที่จัดเก็บของ Nextcloud จะไม่ปรากฏในอินเทอร์เฟซเว็บจนกว่าจะรัน occ files:scan การใช้เครื่องมือสองตัวเขียนข้อมูลลงในไดเรกทอรีเดียวกันจะทำให้เกิดไฟล์ที่ขัดแย้งกัน (conflict files) ซึ่งไม่มีเครื่องมือตัวใดคาดคิดว่าจะเกิดขึ้น