Tropic Host

Syncthing: là gì và cách đồng bộ tệp trên VPS?

9 phút đọc
Tropic
Syncthing: là gì và cách đồng bộ tệp trên VPS?

Syncthing: đồng bộ tệp giữa các thiết bị mà không cần cloud của người khác

Buổi sáng, bạn chỉnh sửa một tài liệu trên laptop rồi đóng lại. Buổi tối, khi mở máy tính ở nhà, phiên bản mới nhất đã ở đó. Tệp không đi qua Google Drive hay Dropbox; node Syncthing của bạn đã nhận nó.

Syncthing đồng bộ liên tục các thư mục đã chọn giữa những thiết bị đáng tin cậy; bạn vẫn kiểm soát nơi dữ liệu được lưu. Không bắt buộc phải có máy chủ trung tâm.

Tuy nhiên, việc truyền thay đổi trở nên khó khăn nếu hai máy tính hiếm khi trực tuyến cùng lúc. VPS luôn bật giải quyết vấn đề này: nhận tệp từ thiết bị này rồi chuyển tới thiết bị kia sau đó.

Điều quan trọng là hiểu Syncthing được thiết kế cho việc gì. Đây không phải ổ đĩa mạng hay trình quản lý tệp trên trình duyệt, mà là công cụ tự động nhân bản các thư mục bạn chọn.

Syncthing trong năm bước

Thiết lập tối thiểu như sau:

  1. Cài Syncthing trên các máy tính cần thiết.
  2. Chạy một instance Syncthing khác trên VPS.
  3. Mở dashboard máy chủ qua SSH tunnel.
  4. Trao đổi Device ID và xác nhận kết nối.
  5. Thêm thư mục chia sẻ, chọn chế độ đồng bộ và bật lập phiên bản tệp.

Syncthing là gì và hoạt động như thế nào?

Syncthing là phần mềm miễn phí, mã nguồn mở để đồng bộ tệp liên tục. Nó chạy trên Windows, macOS, Linux và các hệ điều hành máy tính, máy chủ khác.

Mỗi bản cài đặt nhận một Device ID duy nhất, tức định danh bằng mật mã. Trước khi trao đổi dữ liệu, bạn phải thêm hai node của nhau và cấp quyền rõ ràng cho từng thư mục. Không có một tài khoản Syncthing duy nhất lưu thiết bị và tệp của bạn.

Khi tệp thay đổi, Syncthing chia tệp thành các block, so sánh checksum và chỉ truyền những phần còn thiếu. Vì vậy, một chỉnh sửa nhỏ trong tệp lớn không phải lúc nào cũng cần gửi lại toàn bộ tệp.

Dịch vụ discovery giúp các thiết bị tìm thấy nhau nhưng không lưu tệp. Nếu không thể kết nối trực tiếp, lưu lượng được mã hóa có thể đi qua relay chậm hơn.

VPS thay đổi điều gì?

VPS trở thành node luôn sẵn sàng:

  • máy tính có thể tắt hoặc không ở cùng mạng;
  • thay đổi chờ trên máy chủ cho đến khi thiết bị khác trực tuyến;
  • các thiết bị kết nối qua internet thay vì cần mở port ở nhà;
  • bạn có thể quản lý dashboard tập trung.

Đổi lại, VPS cần được cập nhật, bảo vệ và sao lưu. Nó không phải bản sao lưu chính thức tự động: việc xóa hoặc hỏng có thể được đồng bộ sang mọi node.

Khi nào Syncthing phù hợp?

Syncthing hữu ích để:

  • đồng bộ thư mục tài liệu giữa laptop và máy tính ở nhà;
  • phân phối ảnh, video hoặc file dự án giữa các thiết bị;
  • duy trì bản sao luôn sẵn sàng trên VPS;
  • tránh phụ thuộc vào một nhà cung cấp cloud cho dữ liệu riêng.

Nó không thay thế Google Drive trong mọi trường hợp. Syncthing không có trình soạn thảo tài liệu trên web, bình luận nhóm hoặc quyền chia sẻ công khai đơn giản. Nếu bạn cần “ổ đĩa trực tuyến” với giao diện cộng tác, Nextcloud phù hợp hơn.

Yêu cầu máy chủ Syncthing

Syncthing khá nhẹ. Với vài thiết bị và các thư mục tài liệu, cấu hình khởi đầu thực tế là:

  • 1 vCPU;
  • 1 GB RAM;
  • 10 GB SSD cộng dung lượng cho dữ liệu đồng bộ;
  • Ubuntu 24.04 LTS;
  • địa chỉ IP công khai.

CPU và RAM chủ yếu cần cho việc quét tệp, checksum và mã hóa. Dung lượng đĩa phụ thuộc vào kích thước thư mục và lịch sử phiên bản. Nếu VPS là node trung gian, hãy tính toàn bộ dữ liệu và khoảng trống để tăng trưởng.

Cài Syncthing trên VPS bằng Docker Compose

Ví dụ dưới đây chạy Ubuntu 24.04. Syncthing được đặt trong /opt/syncthing, còn dashboard chỉ được mở qua SSH tunnel.

1. Cài Docker

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

2. Tạo thư mục dữ liệu

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

3. Tạo cấu hình Compose

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

Chạy container:

sudo docker compose up -d
sudo docker compose ps

network_mode: host đơn giản hóa kết nối đồng bộ vì Syncthing có thể lắng nghe trực tiếp các port cần thiết. Dashboard sẽ lắng nghe trên 0.0.0.0:8384, nhưng không nên mở port này trên firewall.

4. Mở các port đồng bộ

Nếu UFW được bật, cho phép SSH và các port Syncthing:

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

Port 22000/TCP dùng để truyền dữ liệu, còn 22000/UDP hỗ trợ QUIC. Discovery và relay giúp thiết bị tìm thấy nhau, nhưng không thay thế việc kết nối trực tiếp khi có thể.

5. Mở dashboard an toàn

Trên máy tính của bạn, tạo SSH tunnel:

ssh -L 9999:127.0.0.1:8384 root@SERVER_IP

Sau đó mở:

http://127.0.0.1:9999

Trong dashboard, đặt username và mật khẩu quản trị ngay lập tức. Giữ dashboard ở localhost và sử dụng tunnel thay vì công khai port 8384 trên internet.

Thêm thiết bị và thư mục

Mỗi thiết bị trong Syncthing hiển thị Device ID của nó. Thêm ID của VPS vào laptop và ngược lại, sau đó xác nhận lời mời. Chỉ khi cả hai bên đồng ý, chúng mới có thể trao đổi dữ liệu.

Khi thêm thư mục:

  1. chọn đường dẫn cục bộ;
  2. đặt một Folder ID ổn định;
  3. chia sẻ với những thiết bị cần thiết;
  4. chọn kiểu thư mục: Send & Receive, Send Only hoặc Receive Only;
  5. bật file versioning nếu cần bảo vệ khỏi ghi đè hoặc xóa nhầm.

Folder ID phải ổn định khi di chuyển dữ liệu hoặc thay đổi đường dẫn cục bộ. Không chia sẻ một thư mục chứa toàn bộ hệ điều hành, secret, khóa SSH hoặc database đang chạy.

Phiên bản tệp và đồng bộ một chiều

File Versioning giữ các phiên bản cũ khi tệp bị sửa hoặc xóa. Đây là lớp bảo vệ hữu ích trước các thay đổi nhầm, nhưng không thay thế backup: các phiên bản cũng chiếm dung lượng và có thể bị xóa cùng VPS.

Chế độ Send Only phù hợp với node nguồn, còn Receive Only phù hợp với bản sao. Nếu có xung đột, đừng xóa tệp .sync-conflict cho đến khi bạn kiểm tra nội dung.

Những gì Syncthing không nên đồng bộ

Đừng đồng bộ mù quáng:

  • thư mục cache và dependency;
  • cơ sở dữ liệu đang chạy nếu ứng dụng không hỗ trợ;
  • thư mục node_modules, build và log lớn;
  • secret, khóa riêng và token không cần phân phối;
  • các thư mục tạm thời.

Sử dụng .stignore để loại bỏ các mục không cần thiết. Đồng bộ không biến dữ liệu đang hoạt động thành bản backup nhất quán.

Bảo mật Syncthing

Device ID và kết nối Syncthing được bảo vệ bằng mã hóa, nhưng dashboard vẫn cần mật khẩu mạnh. Giữ nó ở localhost, giới hạn SSH bằng khóa và cập nhật container thường xuyên.

Đừng cấp quyền thư mục rộng hơn cần thiết. Kiểm tra các thiết bị đã kết nối, xóa node không còn sử dụng và xem lịch sử thay đổi. Nếu sử dụng VPS làm relay cá nhân, hãy nhớ rằng VPS có thể nhìn thấy metadata và lưu dữ liệu mà bạn đồng bộ trên đó.

Cập nhật và sao lưu

Trước khi cập nhật, lưu dữ liệu và file Compose. Kiểm tra image mới trong môi trường phù hợp, sau đó cập nhật container. Sau khi khởi động, kiểm tra dashboard, trạng thái thiết bị và các thư mục. Nếu bạn dùng file versioning, theo dõi mức sử dụng đĩa của thư mục .stversions.

Backup phải độc lập với việc đồng bộ. Sao chép dữ liệu tới một máy chủ, ổ đĩa hoặc object storage khác, giữ nhiều phiên bản và định kỳ kiểm tra khôi phục.

Điện thoại cần biết gì?

Việc phát triển ứng dụng Android chính thức đã dừng vào cuối năm 2024, nhưng vẫn có các client cộng đồng. Không có client iOS chính thức; các hạn chế chạy nền khiến đồng bộ liên tục khó khăn. Trước khi kết nối thư viện ảnh chính, hãy thử ứng dụng di động đã chọn với một thư mục nhỏ.

Kết luận

Syncthing phù hợp với người muốn giữ các thư mục giống nhau trên nhiều thiết bị mà không phụ thuộc vào một nhà cung cấp cloud bắt buộc. VPS làm hệ thống tiện dụng hơn: máy tính không cần trực tuyến cùng lúc và luôn có một bản sao truy cập được bên ngoài nhà.

Để thiết lập an toàn, không mở dashboard trực tiếp, bật file versioning và bổ sung backup độc lập cho đồng bộ.

Câu hỏi thường gặp

Tôi có cần VPS cho Syncthing không?

Không. Các thiết bị có thể đồng bộ trực tiếp. VPS đóng vai trò node luôn bật, giúp chúng trao đổi thay đổi vào những thời điểm khác nhau.

Có thể mở tệp Syncthing trong trình duyệt không?

Web dashboard dùng để cấu hình, không được thiết kế để duyệt tài liệu như Google Drive. Nếu cần web drive, Nextcloud là lựa chọn tốt hơn.

Syncthing có phải giải pháp sao lưu không?

Không. Việc xóa hoặc hỏng có thể lan sang các thiết bị khác. File versioning hữu ích nhưng không thay thế backup độc lập.

Có cần mở port 8384 không?

Không. Giữ dashboard trên 127.0.0.1:8384 và kết nối bằng SSH tunnel. Để đồng bộ, mở port 22000/TCP22000/UDP.

Chủ sở hữu VPS có thể đọc tệp không?

Với thiết lập tiêu chuẩn, về lý thuyết là có. Receive Encrypted lưu tệp ở dạng mã hóa, nhưng tính năng này vẫn được xem là thử nghiệm; cần giữ an toàn mật khẩu và Folder ID.