Syncthing: คืออะไรและตั้งค่าการซิงโครไนซ์ไฟล์บน VPS อย่างไร

1 อ่านขั้นต่ำแล้ว
Tropic
Syncthing: คืออะไรและตั้งค่าการซิงโครไนซ์ไฟล์บน VPS อย่างไร

Syncthing: ซิงโครไนซ์ไฟล์ระหว่างอุปกรณ์โดยไม่พึ่งคลาวด์ของผู้อื่น

คุณแก้ไขเอกสารบนแล็ปท็อปในตอนเช้าแล้วปิดเครื่อง ตอนเย็นเปิดคอมพิวเตอร์ที่บ้าน และพบว่าเวอร์ชันล่าสุดอยู่ที่นั่นแล้ว ไฟล์ไม่ได้ผ่าน Google Drive หรือ Dropbox แต่ถูกส่งมาจากโหนด Syncthing ของคุณเอง

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

อย่างไรก็ตาม หากคอมพิวเตอร์สองเครื่องออนไลน์ไม่ตรงกันเป็นประจำ การแลกเปลี่ยนการเปลี่ยนแปลงจะทำได้ยาก VPS ที่เปิดทำงานตลอดเวลาช่วยแก้ปัญหานี้: รับไฟล์จากอุปกรณ์หนึ่ง แล้วส่งต่อให้อีกอุปกรณ์ในภายหลัง

สิ่งสำคัญคือต้องเข้าใจว่า Syncthing ออกแบบมาเพื่ออะไร มันไม่ใช่ไดรฟ์เครือข่ายหรือโปรแกรมจัดการไฟล์ผ่านเบราว์เซอร์ แต่เป็นเครื่องมือสำหรับจำลองโฟลเดอร์ที่เลือกไว้อย่างอัตโนมัติ

Syncthing ในห้าขั้นตอน

การตั้งค่าขั้นต่ำมีดังนี้:

  1. ติดตั้ง Syncthing บนคอมพิวเตอร์ที่ต้องการ
  2. เรียกใช้อินสแตนซ์ Syncthing อีกตัวบน VPS
  3. เปิดแดชบอร์ดเซิร์ฟเวอร์ผ่าน SSH tunnel
  4. แลกเปลี่ยนตัวระบุอุปกรณ์และอนุมัติการเชื่อมต่อ
  5. เพิ่มโฟลเดอร์ที่แชร์ เลือกโหมดซิงโครไนซ์ และเปิดใช้การเก็บเวอร์ชันไฟล์

Syncthing คืออะไรและทำงานอย่างไร

Syncthing เป็นซอฟต์แวร์โอเพนซอร์สฟรีสำหรับซิงโครไนซ์ไฟล์อย่างต่อเนื่อง ทำงานบน Windows, macOS, Linux และระบบปฏิบัติการเดสก์ท็อปหรือเซิร์ฟเวอร์อื่น ๆ

การติดตั้งแต่ละครั้งจะได้รับ Device ID ที่ไม่ซ้ำกัน ซึ่งเป็นตัวระบุแบบเข้ารหัส ก่อนที่โหนดสองตัวจะแลกเปลี่ยนข้อมูลได้ คุณต้องเพิ่มโหนดเหล่านั้นให้กันและกัน และอนุญาตการเข้าถึงโฟลเดอร์ที่ระบุอย่างชัดเจน ไม่มีบัญชี Syncthing กลางเพียงบัญชีเดียวที่ใช้เก็บอุปกรณ์และไฟล์ทั้งหมดของคุณ

เมื่อไฟล์เปลี่ยนแปลง Syncthing จะแบ่งไฟล์เป็นบล็อก เปรียบเทียบ checksum และส่งเฉพาะส่วนที่ขาดหายไป ดังนั้นการแก้ไขเล็กน้อยภายในไฟล์ขนาดใหญ่จึงไม่จำเป็นต้องส่งไฟล์ทั้งไฟล์ซ้ำเสมอไป

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

VPS เปลี่ยนแปลงการทำงานอย่างไร

หากไม่มีเซิร์ฟเวอร์ แล็ปท็อปสามารถซิงโครไนซ์โดยตรงกับคอมพิวเตอร์ที่บ้านได้ แต่ทั้งสองอุปกรณ์ต้องออนไลน์พร้อมกัน แม้จะเพียงช่วงสั้น ๆ VPS เปลี่ยนการตั้งค่าให้เป็นจุดแลกเปลี่ยนที่พร้อมใช้งานเสมอ

ตัวอย่างเช่น แล็ปท็อปอัปโหลดโครงการไปยังเซิร์ฟเวอร์ในตอนเช้าแล้วปิดเครื่อง ตอนเย็นคอมพิวเตอร์ที่บ้านจะดาวน์โหลดเวอร์ชันใหม่จาก VPS

Syncthing เหมาะกับเอกสาร โน้ต Obsidian ซอร์สโค้ด รูปภาพ และโฟลเดอร์ครอบครัว ส่วนแคช node_modules และผลลัพธ์จากการ build ควรยกเว้นด้วย .stignore ไม่ควรซิงโครไนซ์ฐานข้อมูลที่กำลังใช้งานและอิมเมจของเครื่องเสมือน

VPS ยังสร้างสำเนาข้อมูลของคุณไว้นอกบ้าน แต่สำเนานั้นจะเป็นข้อมูลสำรองที่สมบูรณ์ก็ต่อเมื่อใช้ร่วมกับการเก็บเวอร์ชันและไฟล์สำรองแยกต่างหาก: การลบโดยไม่ตั้งใจอาจถูกส่งต่อไปยังทุกอุปกรณ์ได้เช่นกัน

Syncthing หรือ Nextcloud: ควรเลือกอะไร

มักนำเครื่องมือทั้งสองมาเปรียบเทียบกัน แม้จะใช้แก้ปัญหาคนละแบบ

เกณฑ์SyncthingNextcloud
รูปแบบคัดลอกโฟลเดอร์ระหว่างอุปกรณ์เก็บไฟล์ไว้บนเซิร์ฟเวอร์ส่วนกลาง
ต้องมีเซิร์ฟเวอร์หรือไม่ไม่จำเป็น VPS เป็นตัวเลือกจำเป็น
เข้าถึงไฟล์ผ่านเบราว์เซอร์ไม่มีไดรฟ์เว็บแบบครบฟังก์ชันมี
ลิงก์สาธารณะไม่มีมี
การแก้ไขร่วมกันไม่มีให้ในตัวเพิ่มได้
กรณีใช้งานที่เหมาะสมเก็บโฟลเดอร์เดียวกันไว้บนอุปกรณ์ของคุณเองคลาวด์ส่วนตัวหรือสำหรับทีม

เลือก Syncthing หากต้องการซิงโครไนซ์เบื้องหลังอย่างไม่รบกวนการทำงาน เลือก Nextcloud เมื่อจำเป็นต้องเข้าถึงผ่านเว็บ มีลิงก์แชร์ บัญชีผู้ใช้ ปฏิทิน และฟีเจอร์การทำงานร่วมกัน

วิธีติดตั้ง Syncthing บน VPS ด้วย Docker Compose

ขั้นตอนด้านล่างใช้กับ VPS ที่รัน Ubuntu 24.04 แดชบอร์ดจะผูกอยู่กับที่อยู่ภายในของเซิร์ฟเวอร์ และคุณจะเชื่อมต่อผ่าน SSH tunnel

1. ติดตั้ง Docker

sudo apt update
sudo apt install -y docker.io docker-compose-v2
sudo systemctl enable --now docker

2. สร้างไดเรกทอรีและไฟล์ Compose

sudo mkdir -p /opt/syncthing/data
sudo chown -R 1000:1000 /opt/syncthing/data
cd /opt/syncthing
sudo nano compose.yaml

วางเนื้อหาต่อไปนี้:

services:
  syncthing:
    image: syncthing/syncthing:latest
    container_name: syncthing
    hostname: syncthing-vps
    environment:
      - PUID=1000
      - PGID=1000
      - STGUIADDRESS=
    volumes:
      - ./data:/var/syncthing
    network_mode: host
    restart: unless-stopped

การตั้งค่านี้ใช้ image Syncthing อย่างเป็นทางการ โหมดเครือข่าย host ทำให้การเชื่อมต่อโดยตรงง่ายขึ้น ส่วนค่า STGUIADDRESS ที่ว่างจะทำให้แดชบอร์ดทำงานที่ 127.0.0.1:8384

เริ่มคอนเทนเนอร์:

sudo docker compose up -d
sudo docker compose ps

3. อนุญาตการเชื่อมต่อเพื่อซิงโครไนซ์

ขั้นแรกให้อนุญาต SSH เพื่อไม่ให้ตัวเองถูกล็อกออกจากเซิร์ฟเวอร์:

sudo ufw allow OpenSSH
sudo ufw allow 22000/tcp
sudo ufw allow 22000/udp
sudo ufw enable

22000/TCP ใช้โดยโปรโตคอลซิงโครไนซ์หลัก ส่วน 22000/UDP ใช้สำหรับ QUIC ไม่จำเป็นต้องเปิดพอร์ตแดชบอร์ด 8384 ให้สาธารณะ พอร์ตค้นหาอุปกรณ์ภายใน 21027/UDP มักไม่จำเป็นบน VPS สาธารณะ

4. เปิดแดชบอร์ดผ่าน SSH

เรียกใช้คำสั่งต่อไปนี้บนคอมพิวเตอร์ของคุณ:

ssh -L 9999:127.0.0.1:8384 root@SERVER_IP

เปิดเทอร์มินัลนี้ค้างไว้ แล้วไปที่:

http://127.0.0.1:9999

หลังเปิดแดชบอร์ด ให้ไปที่ Actions → Settings → GUI และตั้งชื่อผู้ใช้กับรหัสผ่าน หากภายหลังต้องการเข้าถึงแดชบอร์ดผ่านโดเมน ให้ใช้ HTTPS reverse proxy และเปิดใช้การยืนยันตัวตนต่อไป

5. เพิ่มอุปกรณ์และโฟลเดอร์

ติดตั้ง Syncthing บนคอมพิวเตอร์ของคุณ จากนั้น:

  1. บนคอมพิวเตอร์และ VPS ให้เลือก Actions → Show ID
  2. เพิ่ม Device ID ของแต่ละโหนดลงในอุปกรณ์อีกฝั่ง
  3. บนคอมพิวเตอร์ คลิก Add Folder เลือกไดเรกทอรี และแชร์กับเซิร์ฟเวอร์
  4. บน VPS ยอมรับโฟลเดอร์และเลือกพาธ เช่น /var/syncthing/Files

เปิด Send & Receive ไว้บนคอมพิวเตอร์เพื่อซิงโครไนซ์สองทาง บน VPS โหมด Receive Only มักสะดวกกว่า: เซิร์ฟเวอร์ยังคงรับและส่งต่อการเปลี่ยนแปลงระหว่างโหนด แต่การแก้ไขโดยไม่ตั้งใจที่ทำโดยตรงบน VPS จะไม่ถูกกระจายไปทั้งเครือข่าย

ทำไม Syncthing จึงไม่สามารถแทนที่ข้อมูลสำรองได้

หากไฟล์ถูกลบหรือเข้ารหัสบนอุปกรณ์หนึ่ง การเปลี่ยนแปลงนั้นอาจถูกส่งต่อไปยังอุปกรณ์อื่น ด้วยเหตุนี้ ให้เปิดการตั้งค่าโฟลเดอร์บน VPS และเปิดใช้ File Versioning

ตัวเลือกที่ใช้งานได้จริงคือ Staggered File Versioning โดยกำหนดระยะเวลาเก็บรักษา 30–90 วัน เมื่อโหนดระยะไกลแทนที่หรือลบไฟล์ เวอร์ชันก่อนหน้าจะถูกย้ายไปที่ .stversions สำเนาเก่าจะใช้พื้นที่ดิสก์ ดังนั้นควรกำหนดขีดจำกัดการเก็บรักษา

การตั้งค่าที่เชื่อถือได้มีสามชั้น:

  1. Syncthing ทำให้สำเนาที่กำลังใช้งานเป็นเวอร์ชันล่าสุด
  2. การเก็บเวอร์ชันช่วยย้อนกลับความผิดพลาดบางอย่าง
  3. ข้อมูลสำรองตามกำหนดเวลาแยกต่างหากถูกเก็บไว้นอก Syncthing

VPS จะเก็บไฟล์โดยไม่เห็นเนื้อหาได้หรือไม่

Syncthing มีโหมดอุปกรณ์ที่ไม่น่าเชื่อถือ คุณตั้งรหัสผ่านให้โฟลเดอร์บนคอมพิวเตอร์หลัก และเลือก Receive Encrypted บน VPS เซิร์ฟเวอร์จะเก็บข้อมูลที่เข้ารหัสไว้ และส่งต่อให้กับอุปกรณ์ที่เชื่อถือได้อีกเครื่องซึ่งใช้รหัสผ่านเดียวกันได้

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

นักพัฒนายังคงถือว่าฟีเจอร์นี้อยู่ในขั้นทดลอง เก็บรหัสผ่านและ Folder ID แยกกัน: หากไม่มีข้อมูลเหล่านี้ การกู้คืนโฟลเดอร์ที่เข้ารหัสอาจเป็นไปไม่ได้

Syncthing ต้องการ VPS แบบใด

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

  • 1 vCPU
  • RAM 1 GB
  • พื้นที่จัดเก็บ SSD หรือ NVMe
  • พื้นที่ดิสก์เพียงพอสำหรับไฟล์และ .stversions
  • การเชื่อมต่อเครือข่ายที่เสถียร

คลังรูปภาพขนาดใหญ่หรือไฟล์หลายแสนรายการจะต้องใช้ทรัพยากรมากขึ้น ภาระงานสูงสุดมักเกิดขึ้นระหว่างการสแกนครั้งแรกและการคำนวณ checksum

Ubuntu VPS พื้นฐานจาก tropic.host เหมาะกับงานนี้ คุณเริ่มจากการตั้งค่าขนาดเล็กและเพิ่มทรัพยากรเมื่อคอลเลกชันเติบโตได้ เมื่อเลือกความจุดิสก์ อย่าคำนึงเฉพาะโฟลเดอร์ปัจจุบัน แต่ควรเผื่อไฟล์ในอนาคต ข้อมูลชั่วคราว และประวัติเวอร์ชันด้วย

ห้าข้อผิดพลาดที่ควรหลีกเลี่ยง

  • เปิดพอร์ต 8384 ให้ทั้งอินเทอร์เน็ตเข้าถึงได้ ใช้ SSH tunnel ในการตั้งค่า หากต้องการเข้าถึงเว็บถาวร ให้ใช้ HTTPS รหัสผ่าน และ reverse proxy
  • ถือว่าสำเนาบนเซิร์ฟเวอร์เป็นข้อมูลสำรองที่สมบูรณ์ เปิดใช้การเก็บเวอร์ชันและสร้างไฟล์สำรองแยกต่างหาก
  • ซิงโครไนซ์แคชและ dependencies ยกเว้นไดเรกทอรีที่ไม่จำเป็นด้วย .stignore
  • ไม่ติดตามการใช้ดิสก์ ไดเรกทอรี .stversions อาจเติบโตขึ้นมากเมื่อเวลาผ่านไป
  • ปล่อยให้อุปกรณ์ที่สูญหายยังเป็นอุปกรณ์ที่เชื่อถือได้ ลบอุปกรณ์นั้นออกจากโหนดอื่น และป้องกันการตั้งค่า Syncthing ที่มีคีย์ของอุปกรณ์

สิ่งที่ควรรู้เกี่ยวกับสมาร์ทโฟน

แอป Android อย่างเป็นทางการยุติการพัฒนาในช่วงสิ้นปี 2024 แต่ยังมีไคลเอนต์จากชุมชนให้ใช้งาน ส่วน iOS ก็ไม่มีไคลเอนต์อย่างเป็นทางการเช่นกัน เพราะข้อจำกัดการทำงานเบื้องหลังทำให้ซิงโครไนซ์ต่อเนื่องได้ยาก ก่อนเชื่อมต่อคลังรูปภาพหลัก ให้ทดสอบแอปมือถือที่เลือกกับโฟลเดอร์ขนาดเล็กก่อน

บทสรุป

Syncthing เหมาะสำหรับผู้ที่ต้องการให้โฟลเดอร์เดียวกันอยู่บนอุปกรณ์หลายเครื่องโดยไม่ต้องพึ่งตัวกลางคลาวด์ที่บังคับใช้ VPS ทำให้ระบบสะดวกขึ้น: คอมพิวเตอร์ไม่จำเป็นต้องออนไลน์พร้อมกัน และคุณมีสำเนาที่พร้อมใช้งานเสมอนอกบ้าน

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

FAQ

จำเป็นต้องมี VPS สำหรับ Syncthing หรือไม่?

ไม่จำเป็น อุปกรณ์สามารถซิงโครไนซ์กันโดยตรงได้ VPS ทำหน้าที่เป็นโหนดที่เปิดตลอดเวลา ช่วยให้อุปกรณ์แลกเปลี่ยนการเปลี่ยนแปลงกันคนละช่วงเวลาได้

เปิดไฟล์ Syncthing ในเบราว์เซอร์ได้หรือไม่?

แดชบอร์ดเว็บมีไว้สำหรับการกำหนดค่า ไม่ใช่การเรียกดูเอกสารแบบ Google Drive หากต้องการไดรฟ์ผ่านเว็บ Nextcloud เป็นตัวเลือกที่เหมาะกว่า

Syncthing เป็นโซลูชันสำรองข้อมูลหรือไม่?

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

จำเป็นต้องเปิดพอร์ต 8384 หรือไม่?

ไม่จำเป็น ให้แดชบอร์ดทำงานที่ 127.0.0.1:8384 และเชื่อมต่อผ่าน SSH tunnel เปิด 22000/TCP และ 22000/UDP สำหรับการซิงโครไนซ์

เจ้าของ VPS สามารถอ่านไฟล์ได้หรือไม่?

ในการตั้งค่ามาตรฐาน อาจทำได้ โหมด Receive Encrypted จะเก็บไฟล์ในรูปแบบเข้ารหัส แต่ฟีเจอร์นี้ยังอยู่ในขั้นทดลอง และคุณต้องเก็บรหัสผ่านกับ Folder ID ให้ปลอดภัย