Syncthing چیست و چگونه همگام‌سازی فایل‌ها را روی VPS راه‌اندازی کنیم

1 دقیقه خواندن
Tropic
Syncthing چیست و چگونه همگام‌سازی فایل‌ها را روی VPS راه‌اندازی کنیم

Language: fa

Syncthing: همگام‌سازی فایل‌ها بین دستگاه‌ها بدون ابر دیگران

صبح روی لپ‌تاپ خود یک سند را ویرایش می‌کنید و آن را خاموش می‌کنید. عصر که کامپیوتر خانه را باز می‌کنید، آخرین نسخه از قبل آنجاست. فایل هیچ‌وقت از Google Drive یا Dropbox عبور نکرده است؛ بلکه توسط نود Syncthing خودتان دریافت شده است.

Syncthing پوشه‌های انتخابی را مستقیماً بین دستگاه‌های مورد اعتماد همگام می‌کند و شما همچنان کنترل می‌کنید داده‌ها کجا ذخیره شوند. داشتن یک سرور مرکزی اختیاری است.

اما اگر دو کامپیوتر به‌ندرت هم‌زمان آنلاین باشند، تبادل تغییرات دشوار می‌شود. یک VPS همیشه‌روشن این مشکل را حل می‌کند: فایل را از یک دستگاه می‌گیرد و بعداً به دستگاه دیگر می‌رساند.

باید بدانید Syncthing برای چه کاری طراحی شده است. این برنامه درایو شبکه یا فایل‌منیجر تحت وب نیست؛ ابزاری برای تکثیر خودکار پوشه‌های انتخابی است.

Syncthing در پنج مرحله

حداقل تنظیمات چنین است:

  1. Syncthing را روی کامپیوترهای مورد نیاز نصب کنید.
  2. یک نمونه دیگر از Syncthing را روی VPS اجرا کنید.
  3. داشبورد سرور را از طریق تونل SSH باز کنید.
  4. شناسه‌های دستگاه را مبادله و اتصال را تأیید کنید.
  5. یک پوشه اشتراکی اضافه کنید، حالت همگام‌سازی را انتخاب کنید و نسخه‌بندی فایل را فعال کنید.

Syncthing چیست و چگونه کار می‌کند

Syncthing یک نرم‌افزار رایگان و متن‌باز برای همگام‌سازی پیوسته فایل‌ها است. این برنامه روی Windows، macOS، Linux و دیگر سیستم‌عامل‌های دسکتاپ و سرور اجرا می‌شود.

هر نصب یک Device ID یکتا، یعنی یک شناسه رمزنگاری‌شده، دریافت می‌کند. پیش از آنکه دو نود بتوانند داده مبادله کنند، باید هرکدام را به دیگری اضافه کنید و دسترسی به یک پوشه مشخص را صریحاً بدهید. یک حساب واحد Syncthing که دستگاه‌ها و فایل‌های شما را نگه دارد وجود ندارد.

وقتی فایلی تغییر می‌کند، Syncthing آن را به بلوک‌ها تقسیم می‌کند، checksumها را مقایسه می‌کند و فقط بخش‌های کمبود را انتقال می‌دهد. بنابراین یک ویرایش کوچک درون یک فایل بزرگ همیشه نیازمند ارسال دوباره کل فایل نیست.

سرویس‌های Discovery به دستگاه‌ها کمک می‌کنند یکدیگر را پیدا کنند، اما فایل‌ها را ذخیره نمی‌کنند. اگر اتصال مستقیم ممکن نباشد، ترافیک رمزگذاری‌شده می‌تواند از یک relay کندتر عبور کند.

VPS چه چیزی را تغییر می‌دهد

بدون سرور، لپ‌تاپ می‌تواند مستقیماً با کامپیوتر خانه همگام شود، اما هر دو دستگاه باید حتی برای مدت کوتاهی هم‌زمان آنلاین باشند. VPS این تنظیمات را به یک نقطه تبادل همیشه‌در‌دسترس تبدیل می‌کند.

برای نمونه، لپ‌تاپ شما صبح یک پروژه را روی سرور بارگذاری و سپس خاموش می‌شود. عصر کامپیوتر خانه نسخه جدید را از VPS دریافت می‌کند.

Syncthing برای اسناد، یادداشت‌های Obsidian، کد منبع، عکس‌ها و پوشه‌های خانوادگی مناسب است. بهتر است cacheها، node_modules و خروجی‌های build را با .stignore مستثنا کنید. پایگاه‌های داده فعال و ایمیج‌های ماشین مجازی نباید همگام شوند.

VPS یک کپی از داده‌های شما را بیرون از خانه هم ایجاد می‌کند. بااین‌حال، این کپی فقط زمانی پشتیبان واقعی است که با نسخه‌بندی و یک آرشیو پشتیبان جداگانه همراه شود: حذف تصادفی می‌تواند به همه دستگاه‌ها نیز منتقل شود.

Syncthing یا Nextcloud: کدام را انتخاب کنیم؟

این دو ابزار اغلب با هم مقایسه می‌شوند، هرچند مسئله‌های متفاوتی را حل می‌کنند.

معیارSyncthingNextcloud
مدلپوشه‌ها بین دستگاه‌ها کپی می‌شوندفایل‌ها روی یک سرور مرکزی ذخیره می‌شوند
نیاز به سرورخیر، VPS اختیاری استبله
دسترسی به فایل از مرورگردرایو وب کامل نداردبله
لینک عمومیخیربله
ویرایش مشارکتیارائه نمی‌شودقابل افزودن است
بهترین کاربردنگه‌داشتن پوشه‌های یکسان روی دستگاه‌های خودتانابر شخصی یا تیمی

اگر همگام‌سازی بی‌دردسر و پس‌زمینه‌ای می‌خواهید، Syncthing را انتخاب کنید. اگر به دسترسی وب، لینک‌های قابل اشتراک، حساب‌های کاربری، تقویم و قابلیت‌های همکاری نیاز دارید، Nextcloud انتخاب مناسب‌تری است.

چگونه Syncthing را روی VPS با Docker Compose نصب کنیم

مراحل زیر برای VPS دارای Ubuntu 24.04 است. داشبورد به آدرس محلی سرور محدود می‌ماند و از طریق تونل SSH به آن متصل می‌شوید.

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

این پیکربندی از ایمیج رسمی 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 بروید و نام کاربری و گذرواژه تنظیم کنید. اگر بعداً می‌خواهید داشبورد را از طریق دامنه باز کنید، آن را پشت یک reverse proxy دارای HTTPS قرار دهید و احراز هویت را فعال نگه دارید.

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 با دوره نگهداری ۳۰ تا ۹۰ روز است. وقتی یک نود راه دور فایل را جایگزین یا حذف می‌کند، نسخه قبلی به .stversions منتقل می‌شود. نسخه‌های قدیمی فضای دیسک مصرف می‌کنند، پس برای نگهداری محدودیت تعیین کنید.

یک تنظیم قابل اعتماد سه لایه دارد:

  1. Syncthing نسخه‌های کاری را به‌روز نگه می‌دارد.
  2. نسخه‌بندی به برگرداندن برخی اشتباه‌ها کمک می‌کند.
  3. یک پشتیبان زمان‌بندی‌شده جداگانه، مستقل از Syncthing نگهداری می‌شود.

آیا VPS می‌تواند فایل‌ها را بدون دیدن محتوایشان ذخیره کند؟

Syncthing حالت دستگاه غیرقابل اعتماد را ارائه می‌دهد. روی کامپیوتر اصلی برای پوشه گذرواژه بگذارید و در VPS گزینه Receive Encrypted را انتخاب کنید. سرور داده‌های رمزگذاری‌شده را ذخیره می‌کند و می‌تواند آن‌ها را به دستگاه مورد اعتماد دیگری که همان گذرواژه را دارد منتقل کند.

محتوا، نام فایل‌ها، زمان‌ها و ساختار پوشه پنهان می‌ماند. اطلاعات مربوط به پوشه اشتراکی و اندازه تقریبی فایل‌ها همچنان قابل مشاهده است.

توسعه‌دهندگان هنوز این قابلیت را آزمایشی می‌دانند. گذرواژه و Folder ID را جداگانه ذخیره کنید؛ بدون آن‌ها بازیابی پوشه رمزگذاری‌شده ممکن است غیرممکن باشد.

Syncthing به چه نوع VPS نیاز دارد؟

مصرف منابع فقط به مقدار داده بستگی ندارد؛ تعداد فایل‌ها، دفعات تغییر و فرایند نمایه‌سازی اولیه نیز مهم هستند. برای یک نود شخصی با اسناد و چند ده گیگابایت داده، پیکربندی آغازین زیر معمولاً کافی است:

  • 1 vCPU؛
  • 1 GB RAM؛
  • فضای ذخیره‌سازی SSD یا NVMe؛
  • فضای دیسک کافی برای فایل‌ها و .stversions؛
  • اتصال شبکه پایدار.

کتابخانه بزرگ عکس یا صدها هزار فایل به منابع بیشتری نیاز خواهد داشت. بیشترین بار معمولاً هنگام اسکن اولیه و محاسبه checksum ایجاد می‌شود.

یک VPS پایه Ubuntu از tropic.host برای این کار مناسب است. می‌توانید با پیکربندی کوچک شروع کنید و با رشد مجموعه، منابع را افزایش دهید. هنگام انتخاب ظرفیت دیسک، فقط پوشه‌های فعلی را حساب نکنید؛ فایل‌های آینده، داده‌های موقت و تاریخچه نسخه‌ها را هم در نظر بگیرید.

پنج اشتباهی که باید از آن‌ها دوری کنید

  • باز گذاشتن پورت 8384 برای کل اینترنت. برای راه‌اندازی از تونل SSH استفاده کنید. برای دسترسی دائمی وب، HTTPS، گذرواژه و reverse proxy به کار ببرید.
  • در نظر گرفتن کپی سرور به‌عنوان پشتیبان کامل. نسخه‌بندی را فعال کنید و آرشیوهای پشتیبان جداگانه بسازید.
  • همگام‌سازی cacheها و وابستگی‌ها. پوشه‌های غیرضروری را با .stignore مستثنا کنید.
  • نادیده گرفتن مصرف دیسک. پوشه .stversions ممکن است در طول زمان به‌طور چشمگیری بزرگ شود.
  • اعتماد نگه‌داشتن به دستگاه گم‌شده. آن را از نودهای دیگر حذف کنید و از پیکربندی Syncthing که کلیدهای دستگاه را دارد محافظت کنید.

آنچه باید درباره گوشی‌های هوشمند بدانید

اپلیکیشن رسمی Android در پایان سال 2024 متوقف شد، اما کلاینت‌های جامعه کاربری در دسترس هستند. برای iOS نیز کلاینت رسمی وجود ندارد: محدودیت اجرای پس‌زمینه، همگام‌سازی پیوسته را دشوار می‌کند. پیش از اتصال کتابخانه اصلی عکس‌ها، اپلیکیشن موبایل انتخابی را با یک پوشه کوچک آزمایش کنید.

نتیجه‌گیری

Syncthing برای کسانی مناسب است که می‌خواهند پوشه‌های یکسانی روی چند دستگاه داشته باشند، بدون اینکه به یک واسطه ابری اجباری وابسته شوند. VPS سیستم را راحت‌تر می‌کند: کامپیوترها دیگر مجبور نیستند هم‌زمان آنلاین باشند و شما یک کپی همیشه‌در‌دسترس بیرون از خانه خواهید داشت.

برای راه‌اندازی امن، داشبورد مدیریتی را مستقیماً در اینترنت باز نکنید، نسخه‌بندی را فعال کنید و همگام‌سازی را با یک پشتیبان مستقل تکمیل کنید.

FAQ

آیا برای Syncthing به VPS نیاز دارم؟

خیر. دستگاه‌ها می‌توانند مستقیماً همگام شوند. VPS یک نود همیشه‌روشن است که به آن‌ها اجازه می‌دهد تغییرات را در زمان‌های متفاوت مبادله کنند.

آیا می‌توانم فایل‌های Syncthing را در مرورگر باز کنم؟

داشبورد وب برای پیکربندی طراحی شده است، نه مرور اسناد مانند Google Drive. اگر درایو وب می‌خواهید، Nextcloud انتخاب بهتری است.

آیا Syncthing راهکار پشتیبان‌گیری است؟

خیر. حذف و خراب شدن فایل می‌تواند به دستگاه‌های دیگر منتقل شود. نسخه‌بندی کمک می‌کند، اما جایگزین پشتیبان مستقل نیست.

آیا لازم است پورت 8384 را باز کنم؟

خیر. داشبورد را روی 127.0.0.1:8384 نگه دارید و از تونل SSH متصل شوید. برای همگام‌سازی، 22000/TCP و 22000/UDP را باز کنید.

آیا مالک VPS می‌تواند فایل‌ها را بخواند؟

در تنظیمات استاندارد، بالقوه بله. گزینه Receive Encrypted فایل‌ها را به‌شکل رمزگذاری‌شده ذخیره می‌کند، اما این قابلیت هنوز آزمایشی است و باید از گذرواژه و Folder ID محافظت کنید.