Syncthing: কী এবং VPS-এ file synchronization কীভাবে সেট আপ করবেন

3 মিনিট পড়া
Tropic
Syncthing: কী এবং VPS-এ file synchronization কীভাবে সেট আপ করবেন

Syncthing: অন্যের cloud ছাড়াই device-এর মধ্যে file synchronize

সকালে laptop-এ একটি document edit করে সেটি বন্ধ করলেন। সন্ধ্যায় home computer খুলে দেখলেন—latest version ইতিমধ্যে সেখানে আছে। File-টি Google Drive বা Dropbox-এর মধ্য দিয়ে যায়নি: আপনার নিজের Syncthing node সেটি গ্রহণ করেছে।

Syncthing trusted device-এর মধ্যে বেছে নেওয়া folder সরাসরি synchronize করে, আর data কোথায় থাকবে তার control আপনার কাছেই থাকে। Central server বাধ্যতামূলক নয়।

তবে দুইটি computer একই সময়ে খুব কম online থাকলে change আদান-প্রদান কঠিন হয়। Always-on VPS এই সমস্যা সমাধান করে: এটি একটি device থেকে file নেয় এবং পরে অন্য device-এ পাঠায়।

Syncthing কী জন্য তৈরি, তা বোঝা গুরুত্বপূর্ণ। এটি network drive বা browser-based file manager নয়, বরং বেছে নেওয়া folder স্বয়ংক্রিয়ভাবে replicate করার tool।

পাঁচ ধাপে Syncthing

ন্যূনতম setup এমন:

  1. প্রয়োজনীয় computer-গুলোতে Syncthing install করুন।
  2. VPS-এ আরও একটি Syncthing instance চালান।
  3. SSH tunnel দিয়ে server dashboard খুলুন।
  4. Device identifier বিনিময় করে connection approve করুন।
  5. Shared folder যোগ করুন, synchronization mode বেছে নিন এবং file versioning চালু করুন।

Syncthing কী এবং কীভাবে কাজ করে

Syncthing হলো continuous file synchronization-এর জন্য free, open-source software। এটি Windows, macOS, Linux এবং অন্যান্য desktop ও server operating system-এ চলে।

প্রতিটি installation একটি unique Device ID পায়—এটি cryptographic identifier। দুই node data আদান-প্রদান করার আগে একে অপরকে add করে নির্দিষ্ট folder-এ স্পষ্টভাবে access দিতে হয়। সব device ও file রাখে—এমন একক Syncthing account নেই।

File পরিবর্তিত হলে Syncthing সেটিকে block-এ ভাগ করে, checksum তুলনা করে এবং শুধু missing অংশ স্থানান্তর করে। ফলে বড় file-এর ভেতরে ছোট edit হলে প্রতিবার পুরো file পাঠাতে হয় না।

Discovery service device-কে একে অপরকে খুঁজে পেতে সাহায্য করে, কিন্তু file সংরক্ষণ করে না। Direct connection সম্ভব না হলে encrypted traffic ধীরগতির relay-এর মাধ্যমে যেতে পারে।

VPS কী পরিবর্তন করে

Server ছাড়া laptop সরাসরি home computer-এর সঙ্গে synchronize করতে পারে, কিন্তু দুই device-ই একই সময়ে online থাকতে হবে, অল্প সময়ের জন্য হলেও। VPS setup-কে always-available exchange point-এ পরিণত করে।

যেমন, সকালে laptop project-টি server-এ upload করে বন্ধ হয়ে যায়। সন্ধ্যায় home computer VPS থেকে নতুন version download করে।

Document, Obsidian note, source code, photo ও family folder-এর জন্য Syncthing ভালো কাজ করে। Cache, node_modules এবং build output .stignore দিয়ে বাদ দেওয়া ভালো। Active database ও virtual machine image synchronize করা উচিত নয়।

VPS আপনার data-এর একটি copy বাড়ির বাইরে রাখে। তবে versioning ও আলাদা backup archive-এর সঙ্গে মিললেই সেই copy প্রকৃত backup হয়: ভুল করে delete করলেও change সব device-এ ছড়িয়ে যেতে পারে।

Syncthing নাকি Nextcloud: কোনটি বেছে নেবেন?

দুই tool-কে প্রায়ই তুলনা করা হয়, যদিও তাদের সমস্যা সমাধানের পদ্ধতি আলাদা।

CriterionSyncthingNextcloud
ModelDevice-এর মধ্যে folder copy হয়Central server-এ file সংরক্ষিত হয়
Server দরকারনা, VPS optionalহ্যাঁ
Browser-based file accessFull-featured web drive নেইআছে
Public linkনেইআছে
Collaborative editingনেইযোগ করা যায়
Best use caseনিজের device-এ একই folder রাখাPersonal বা team cloud

নেপথ্যে unobtrusive synchronization চাইলে Syncthing বেছে নিন। Web access, shareable link, user account, calendar ও collaboration feature দরকার হলে Nextcloud বেছে নিন।

Docker Compose দিয়ে VPS-এ Syncthing ইনস্টল

নিচের ধাপগুলো Ubuntu 24.04-চালিত VPS-এর জন্য। Dashboard server-এর local address-এ bound থাকবে এবং SSH tunnel দিয়ে সেখানে connect করবেন।

1. Docker ইনস্টল করুন

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

2. Directory ও Compose file তৈরি করুন

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

নিচের অংশ paste করুন:

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

এই configuration official Syncthing image ব্যবহার করে। host network mode direct connection সহজ করে, আর খালি STGUIADDRESS value dashboard-কে 127.0.0.1:8384-এ রাখে।

Container চালু করুন:

sudo docker compose up -d
sudo docker compose ps

3. Synchronization connection অনুমোদন করুন

প্রথমে SSH allow করুন, যাতে নিজের access থেকে lock out না হন:

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

Main synchronization protocol 22000/TCP ব্যবহার করে, আর QUIC-এর জন্য 22000/UDP ব্যবহৃত হয়। Dashboard-এর 8384 port expose করার দরকার নেই। Public VPS-এ local discovery port 21027/UDP সাধারণত অপ্রয়োজনীয়।

4. SSH দিয়ে dashboard খুলুন

Computer-এ নিচের command চালান:

ssh -L 9999:127.0.0.1:8384 root@SERVER_IP

Terminal খোলা রাখুন এবং খুলুন:

http://127.0.0.1:9999

Dashboard খোলার পর Actions → Settings → GUI-এ যান এবং username ও password সেট করুন। পরে domain দিয়ে dashboard access করতে চাইলে HTTPS reverse proxy-এর পেছনে রাখুন এবং authentication চালু রাখুন।

5. Device ও folder যোগ করুন

Computer-এ Syncthing install করুন, তারপর:

  1. Computer ও VPS—দুই জায়গাতেই Actions → Show ID বেছে নিন।
  2. এক device-এর Device ID অন্য device-এ add করুন।
  3. Computer-এ Add Folder click করে directory বেছে নিন এবং server-এর সঙ্গে share করুন।
  4. VPS-এ folder accept করে /var/syncthing/Files-এর মতো path বেছে নিন।

Computer-এ দুই-দিকে synchronization-এর জন্য Send & Receive চালু রাখুন। VPS-এ Receive Only প্রায়ই সুবিধাজনক: server node-গুলোর মধ্যে change গ্রহণ ও forward করতে থাকে, কিন্তু VPS-এ সরাসরি করা accidental local edit পুরো network-এ ছড়িয়ে পড়ে না।

Syncthing কেন backup-এর বিকল্প নয়

একটি device-এ file delete বা encrypt হলে সেই change অন্য device-এ ছড়িয়ে যেতে পারে। তাই VPS-এর folder setting খুলে File Versioning চালু করুন।

ব্যবহারিক option হলো 30–90 দিনের retention period-সহ Staggered File Versioning। Remote node file replace বা delete করলে আগের version .stversions-এ যায়। পুরোনো copy disk space নেয়, তাই retention limit নির্ধারণ করুন।

নির্ভরযোগ্য setup-এ তিনটি স্তর থাকে:

  1. Syncthing working copy update রাখে।
  2. Versioning কিছু ভুল উল্টে দিতে সাহায্য করে।
  3. Syncthing থেকে আলাদা জায়গায় scheduled backup সংরক্ষণ করা হয়।

VPS কি file-এর content না দেখেই সংরক্ষণ করতে পারে?

Syncthing-এ untrusted device mode আছে। Main computer-এ folder-এর জন্য password সেট করুন এবং VPS-এ Receive Encrypted বেছে নিন। Server encrypted data রাখবে এবং একই password ব্যবহার করা অন্য trusted device-এ সেটি পাঠাতে পারবে।

Content, filename, timestamp ও directory structure hidden থাকে। Shared folder সম্পর্কে information এবং আনুমানিক file size দৃশ্যমান থাকে।

Developer-রা এখনও এই feature-কে experimental মনে করেন। Password ও Folder ID আলাদা করে সংরক্ষণ করুন: এগুলো ছাড়া encrypted folder recover করা অসম্ভব হতে পারে।

Syncthing-এর জন্য কেমন VPS দরকার?

Resource usage শুধু data-এর পরিমাণের ওপর নয়, file-এর সংখ্যা, কত ঘন ঘন পরিবর্তন হয় এবং initial indexing process-এর ওপরও নির্ভর করে। Document ও কয়েক দশ GB data-সহ personal node-এর জন্য সাধারণত এই starting configuration যথেষ্ট:

  • 1 vCPU;
  • 1 GB RAM;
  • SSD বা NVMe storage;
  • file ও .stversions-এর জন্য পর্যাপ্ত disk space;
  • stable network connection।

বড় photo library বা কয়েক লক্ষ file-এর জন্য বেশি resource লাগবে। সাধারণত প্রথম scan ও checksum calculation-এর সময় load সবচেয়ে বেশি হয়।

এই কাজের জন্য tropic.host-এর basic Ubuntu VPS উপযুক্ত। ছোট configuration দিয়ে শুরু করে collection বাড়লে resource বৃদ্ধি করতে পারেন। Disk capacity বাছার সময় শুধু বর্তমান folder নয়, future file, temporary data ও version history-ও হিসাব করুন।

এড়ানোর মতো পাঁচটি ভুল

  • পুরো internet-এর জন্য port 8384 expose করা। Setup-এর সময় SSH tunnel ব্যবহার করুন। স্থায়ী web access-এর জন্য HTTPS, password ও reverse proxy নিন।
  • Server copy-কে সম্পূর্ণ backup ভাবা। Versioning চালু করে আলাদা backup archive তৈরি করুন।
  • Cache ও dependency synchronize করা। .stignore দিয়ে অপ্রয়োজনীয় directory বাদ দিন।
  • Disk usage উপেক্ষা করা। .stversions directory সময়ের সঙ্গে অনেক বড় হতে পারে।
  • হারানো device trusted রেখে দেওয়া। অন্য node থেকে সেটি remove করুন এবং device key থাকা Syncthing configuration সুরক্ষিত করুন।

Smartphone সম্পর্কে যা জানা দরকার

Official Android app 2024 সালের শেষ দিকে discontinued হয়েছে, তবে community client পাওয়া যায়। Official iOS client-ও নেই: background execution restriction continuous synchronization কঠিন করে তোলে। Main photo library connect করার আগে ছোট folder দিয়ে বেছে নেওয়া mobile app পরীক্ষা করুন।

উপসংহার

Mandatory cloud intermediary-এর ওপর নির্ভর না করে একাধিক device-এ একই folder রাখতে চাইলে Syncthing উপযুক্ত। VPS system-কে আরও সুবিধাজনক করে: computer-গুলোকে একই সময়ে online থাকতে হয় না এবং বাড়ির বাইরে always-available copy পাওয়া যায়।

নিরাপদ setup-এর জন্য administrative dashboard সরাসরি expose করবেন না, versioning চালু করুন এবং independent backup দিয়ে synchronization সম্পূরক করুন।

FAQ

Syncthing-এর জন্য কি VPS দরকার?

না। Device-গুলো সরাসরি synchronize করতে পারে। VPS একটি always-on node হিসেবে কাজ করে, যার মাধ্যমে তারা ভিন্ন সময়ে change আদান-প্রদান করতে পারে।

Browser-এ কি Syncthing file খোলা যায়?

Web dashboard configuration-এর জন্য, Google Drive-এর মতো document browse করার জন্য নয়। Web drive দরকার হলে Nextcloud ভালো পছন্দ।

Syncthing কি backup solution?

না। Delete ও corruption অন্য device-এ ছড়িয়ে যেতে পারে। Versioning সাহায্য করে, কিন্তু independent backup-এর বিকল্প নয়।

8384 port কি খুলতে হবে?

না। Dashboard 127.0.0.1:8384-এ রাখুন এবং SSH tunnel দিয়ে connect করুন। Synchronization-এর জন্য 22000/TCP22000/UDP খুলুন।

VPS owner কি file পড়তে পারেন?

সাধারণ setup-এ সম্ভাব্যভাবে পারেন। Receive Encrypted file encrypted অবস্থায় রাখে, তবে feature-টি এখনও experimental এবং password ও Folder ID নিরাপদে রাখা আপনার দায়িত্ব।