مجله ایرانیکاسرور آموزش سرور، هاست، وردپرس و شبکه پنل کاربری

راه‌اندازی PairDrop و Coturn روی سرور مجازی ایران؛ انتقال فایل بین موبایل و کامپیوتر با دامنه شخصی

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

Amir Jabbari 📅 2 مهر 1405 ⏱ 12 دقیقه مطالعه 👁 0 بازدید 💬 0 دیدگاه

انتقال فایل بین موبایل و کامپیوتر همیشه ساده نیست. گاهی لازم است یک فایل را از گوشی به لپ‌تاپ منتقل کنید، اما کابل USB در دسترس نیست یا نمی‌خواهید فایل‌های شخصی خود را در سرویس‌های ابری مانند Google Drive و Dropbox آپلود کنید.

یکی از راهکارهای جذاب برای این کار، راه‌اندازی PairDrop روی سرور شخصی است. PairDrop یک ابزار متن‌باز برای انتقال فایل بین دستگاه‌های مختلف در شبکه و از طریق مرورگر است که تجربه‌ای مشابه AirDrop ارائه می‌دهد و به نصب نرم‌افزار اختصاصی روی موبایل یا کامپیوتر نیاز ندارد [citation:2][citation:4].

در این آموزش قصد داریم PairDrop را روی یک سرور مجازی لینوکس نصب کنیم و با استفاده از Coturn، قابلیت ارتباط WebRTC و انتقال فایل را در شرایطی که ارتباط مستقیم بین دستگاه‌ها امکان‌پذیر نیست، بهبود دهیم. در پایان می‌توانید سرویس خود را روی یک دامنه مانند https://share.example.com در دسترس قرار دهید.

PairDrop چیست و چه قابلیت‌هایی دارد؟

PairDrop یک سرویس متن‌باز برای انتقال فایل بین دستگاه‌ها است که از فناوری‌های وب و WebRTC استفاده می‌کند. مزیت اصلی آن این است که کاربر برای ارسال فایل معمولاً فقط به یک مرورگر مدرن نیاز دارد [citation:5][citation:12].

برای مثال می‌توانید PairDrop را روی دامنه شخصی خود راه‌اندازی کنید، سپس همین آدرس را روی موبایل و کامپیوتر باز کنید. پس از ورود دستگاه‌ها به سرویس، می‌توان فایل را از یک دستگاه به دستگاه دیگر ارسال کرد.

🔹 مهم‌ترین قابلیت‌های PairDrop

🔹 انتقال فایل بین موبایل و کامپیوتر

🔹 انتقال فایل بین چند کامپیوتر

🔹 استفاده از مرورگر بدون نصب کلاینت اختصاصی

🔹 پشتیبانی از WebRTC و رمزنگاری سرتاسری

🔹 امکان راه‌اندازی روی سرور شخصی با دامنه اختصاصی

🔹 مناسب برای استفاده شخصی و تیمی

🔹 متن‌باز بودن پروژه

Coturn چیست و چرا به آن نیاز داریم؟

PairDrop برای ارتباط بین دستگاه‌ها از WebRTC استفاده می‌کند. در حالت ایده‌آل، دو دستگاه می‌توانند مستقیماً با یکدیگر ارتباط برقرار کنند. اما در دنیای واقعی، وجود NAT، فایروال، CGNAT و بعضی تنظیمات شبکه ممکن است برقراری ارتباط مستقیم را دشوار کند [citation:8][citation:19].

در این شرایط از سرورهای STUN و TURN استفاده می‌شود. Coturn یکی از سرورهای محبوب و متن‌باز برای STUN و TURN است [citation:3][citation:13].

ویژگی STUN TURN
پیدا کردن آدرس عمومی ✅ بله ✅ بله
Relay کردن ترافیک ❌ خیر ✅ بله
مصرف پهنای‌باند سرور کم می‌تواند زیاد باشد
کاربرد اصلی برقراری ارتباط مستقیم عبور ترافیک در نبود ارتباط مستقیم

به زبان ساده، STUN به دستگاه کمک می‌کند آدرس شبکه قابل دسترس خود را پیدا کند، و TURN زمانی استفاده می‌شود که ارتباط مستقیم امکان‌پذیر نباشد و ترافیک از طریق سرور واسط عبور کند [citation:19].

معماری پیشنهادی برای راه‌اندازی

در این آموزش معماری زیر را در نظر می‌گیریم:

موبایل
   │
   │ HTTPS / WebRTC
   ▼
دامنه PairDrop (share.example.com)
   │
   ▼
Nginx (Reverse Proxy)
   │
   ▼
PairDrop (Docker)
   │
   └──── WebRTC ──── Coturn (turn.example.com)
                         │
                         ▼
                    دستگاه مقصد

برای مثال share.example.com برای PairDrop استفاده می‌شود و turn.example.com برای Coturn در نظر گرفته می‌شود.

⚠️ نکته مهم درباره معماری

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

پیش‌نیازهای نصب

برای اجرای این آموزش پیشنهاد می‌شود یک سرور مجازی لینوکس در اختیار داشته باشید. مشخصات پیشنهادی برای استفاده شخصی:

منبع مقدار پیشنهادی
CPU 1 تا 2 هسته
RAM حداقل 1GB
فضای دیسک 10GB
سیستم‌عامل Ubuntu 22.04 / 24.04
دامنه یک زیردامنه

مرحله اول: اتصال به سرور و نصب پیش‌نیازها

با SSH به سرور متصل شوید و سیستم را به‌روزرسانی کنید:

apt update && apt upgrade -y
apt install -y curl wget git nginx certbot python3-certbot-nginx

فرض کنیم دامنه اصلی شما example.com است. یک زیردامنه برای PairDrop ایجاد کنید: share.example.com. در DNS دامنه، یک رکورد A با مقدار IP سرور بسازید. بعد از انتشار DNS بررسی کنید:

dig share.example.com

مرحله دوم: نصب Docker و راه‌اندازی PairDrop

اجرای PairDrop با Docker یکی از ساده‌ترین روش‌های مدیریت سرویس است. Docker را نصب و فعال کنید:

apt install -y docker.io docker-compose-plugin
systemctl enable --now docker
docker --version

برای نگهداری فایل‌های سرویس یک پوشه ایجاد کنید و فایل Compose را بسازید:

mkdir -p /opt/pairdrop && cd /opt/pairdrop
nano compose.yml

محتوای فایل Compose:

services:
  pairdrop:
    image: lscr.io/linuxserver/pairdrop:latest
    container_name: pairdrop
    restart: unless-stopped
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Asia/Tehran
    ports:
      - "127.0.0.1:3000:3000"

سرویس را اجرا کنید و وضعیت کانتینر را بررسی کنید:

docker compose up -d
docker ps

⚠️ توجه

تگ و نام ایمیج PairDrop ممکن است با نسخه‌ای که در زمان نصب در دسترس است متفاوت باشد. قبل از اجرای محیط تولید، مستندات و Image رسمی پروژه را بررسی کنید [citation:6].

برای بررسی اینکه سرویس روی پورت 3000 در حال اجراست:

curl http://127.0.0.1:3000

اگر پاسخ HTML دریافت کردید، PairDrop در حال سرویس‌دهی است.

مرحله سوم: تنظیم Nginx و فعال‌سازی HTTPS

یک فایل تنظیمات برای Nginx ایجاد کنید:

nano /etc/nginx/sites-available/pairdrop

محتوای نمونه:

server {
    listen 80;
    server_name share.example.com;

    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_http_version 1.1;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}

کانفیگ را فعال و بررسی کنید:

ln -s /etc/nginx/sites-available/pairdrop /etc/nginx/sites-enabled/pairdrop
nginx -t
systemctl reload nginx

حالا HTTPS را با Certbot فعال کنید:

certbot --nginx -d share.example.com

HTTPS برای WebRTC و سرویس‌هایی که از قابلیت‌های مرورگر استفاده می‌کنند اهمیت زیادی دارد. پس از موفقیت، آدرس سرویس شما به شکل https://share.example.com خواهد بود.

🚀 سرور مجازی پرسرعت برای راه‌اندازی PairDrop

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

📞 تماس با پشتیبانی: 021-91302460 | ایرانیکاسرور

مرحله چهارم: نصب و تنظیم Coturn

حالا سراغ سرور TURN می‌رویم. Coturn را نصب کنید:

apt install -y coturn
systemctl enable coturn

برای TURN بهتر است یک زیردامنه جدا داشته باشید. برای مثال turn.example.com. در DNS یک رکورد A بسازید و پس از انتشار بررسی کنید:

dig turn.example.com

فایل تنظیمات Coturn را باز کنید:

nano /etc/turnserver.conf

یک تنظیم پایه می‌تواند به شکل زیر باشد:

listening-port=3478
tls-listening-port=5349
listening-ip=SERVER_IP
external-ip=SERVER_IP
realm=turn.example.com
fingerprint
lt-cred-mech
user=pairdrop:CHANGE_THIS_PASSWORD
total-quota=100
bps-capacity=0
stale-nonce=600
no-cli
no-multicast-peers
no-loopback-peers

مقادیر SERVER_IP و CHANGE_THIS_PASSWORD را حتماً تغییر دهید و یک رمز عبور قوی انتخاب کنید.

⚠️ نکته درباره NAT

اگر VPS پشت NAT قرار دارد، مقدار external-ip باید مطابق توپولوژی شبکه تنظیم شود. در VPSهای عمومی که IP روی خود سرور قرار دارد، معمولاً تنظیم مستقیم IP عمومی ساده‌تر است.

در بعضی توزیع‌ها اجرای Coturn از طریق فایل زیر کنترل می‌شود:

nano /etc/default/coturn

اگر گزینه TURNSERVER_ENABLED=1 وجود داشت، آن را فعال کنید. سپس سرویس را ری‌استارت کنید:

systemctl restart coturn
systemctl status coturn

مرحله پنجم: باز کردن پورت‌های فایروال

اگر از UFW استفاده می‌کنید، پورت‌های وب و Coturn را باز کنید:

ufw allow 80/tcp
ufw allow 443/tcp
ufw allow 3478/tcp
ufw allow 3478/udp
ufw allow 5349/tcp
ufw allow 5349/udp

TURN ممکن است برای Relay کردن ترافیک به محدوده‌ای از پورت‌های UDP نیاز داشته باشد. بسته به تنظیمات Coturn می‌توانید یک محدوده مشخص تعریف کنید:

min-port=49152
max-port=65535

⚠️ هشدار امنیتی

باز کردن تعداد زیادی پورت روی سرور باید با توجه به نیاز واقعی و سیاست امنیتی شما انجام شود. اگر فقط برای تست اولیه به TURN نیاز دارید، ابتدا پیکربندی محدودتری در نظر بگیرید.

مرحله ششم: اتصال PairDrop به TURN

برای استفاده از TURN باید PairDrop را طوری پیکربندی کنید که اطلاعات ICE Server شامل STUN/TURN در اختیار کلاینت‌ها قرار بگیرد. طبق مستندات PairDrop، باید یک فایل JSON بسازید و متغیر محیطی RTC_CONFIG را به آن اشاره دهید [citation:6][citation:9].

نمونه فایل تنظیمات WebRTC:

{
  "sdpSemantics": "unified-plan",
  "iceServers": [
    {
      "urls": "stun:turn.example.com:3478"
    },
    {
      "urls": "turn:turn.example.com:3478",
      "username": "pairdrop",
      "credential": "YOUR_STRONG_PASSWORD"
    },
    {
      "urls": "turns:turn.example.com:5349",
      "username": "pairdrop",
      "credential": "YOUR_STRONG_PASSWORD"
    }
  ]
}

سپس در فایل Compose، متغیر RTC_CONFIG را به مسیر این فایل اشاره دهید و فایل را به کانتینر mount کنید. همچنین متغیر WS_FALLBACK می‌تواند به عنوان پشتیبان در شبکه‌هایی که WebRTC کاملاً مسدود است، فعال شود [citation:6].

⚠️ نکته مهم

روش دقیق تعریف ICE Servers به نسخه و Image مورد استفاده از PairDrop بستگی دارد. قبل از قرار دادن مقادیر در محیط نهایی، مستندات همان نسخه PairDrop را بررسی کنید.

🔧 در راه‌اندازی PairDrop یا Coturn به مشکل خوردید؟

تیم فنی ایرانیکاسرور آماده کمک به شما در تنظیمات سرور، پیکربندی Nginx، Coturn و رفع خطاهای WebRTC است.

📞 تماس با پشتیبانی: 021-91302460 | ایرانیکاسرور

انتقال فایل بین موبایل و کامپیوتر

حالا که سرویس راه‌اندازی شده است، استفاده از آن بسیار ساده است. روی کامپیوتر مرورگر را باز کنید و آدرس https://share.example.com را وارد کنید. سپس همین آدرس را روی موبایل باز کنید. می‌توانید از مرورگرهای مختلف مانند Chrome، Safari، Firefox و Edge استفاده کنید [citation:2].

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

ارسال فایل از کامپیوتر به موبایل

فرض کنید می‌خواهید یک عکس یا فایل PDF را از کامپیوتر به گوشی ارسال کنید:

🔹 PairDrop را روی کامپیوتر باز کنید

🔹 PairDrop را روی موبایل باز کنید

🔹 صبر کنید تا دستگاه‌ها شناسایی شوند

🔹 دستگاه موبایل را انتخاب کنید

🔹 فایل را انتخاب کنید

🔹 انتقال را تأیید کنید

🔹 دانلود را روی موبایل انجام دهید

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

ارسال فایل از موبایل به کامپیوتر

برای انتقال برعکس نیز همین مراحل را انجام دهید. روی موبایل آدرس https://share.example.com را باز کنید، کامپیوتر را انتخاب کنید و فایل موردنظر را ارسال کنید. این روش برای انتقال عکس، ویدئو، فایل ZIP، PDF، فایل Word و اسناد مناسب است.

آیا فایل‌ها روی سرور ذخیره می‌شوند؟

یکی از نکات مهم PairDrop این است که معماری انتقال فایل آن با سرویس‌های ذخیره‌سازی ابری سنتی متفاوت است. در حالت ارتباط مستقیم WebRTC، داده می‌تواند مستقیماً بین دو دستگاه منتقل شود. اگر ارتباط مستقیم امکان‌پذیر نباشد، TURN می‌تواند نقش Relay را بر عهده بگیرد [citation:8][citation:12].

⚠️ توجه به حریم خصوصی

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

تست و بررسی Coturn

برای بررسی وضعیت سرویس:

systemctl status coturn
journalctl -u coturn -f

برای مشاهده لاگ PairDrop:

docker logs pairdrop
docker logs -f pairdrop

مشکلات رایج و راه‌حل‌ها

PairDrop باز نمی‌شود

ابتدا بررسی کنید کانتینر فعال است:

docker ps
docker logs pairdrop
nginx -t

خطای 502 Bad Gateway

اگر Nginx خطای 502 نشان می‌دهد، احتمالاً سرویس PairDrop روی پورت موردنظر اجرا نمی‌شود. بررسی کنید:

ss -lntp
docker ps

مشکل انتقال فایل در شبکه موبایل

گاهی PairDrop در Wi-Fi به‌خوبی کار می‌کند اما زمانی که موبایل روی اینترنت همراه قرار می‌گیرد، ارتباط برقرار نمی‌شود. یکی از دلایل احتمالی این مشکل NAT یا محدودیت‌های شبکه اپراتور است. در چنین شرایطی TURN می‌تواند کمک کند [citation:19].

نکات امنیتی مهم

راه‌اندازی PairDrop روی اینترنت عمومی به معنی عمومی کردن یک سرویس شبکه است؛ بنابراین بهتر است چند نکته امنیتی را رعایت کنید:

🔹 از HTTPS استفاده کنید، نه HTTP

🔹 رمز عبور قوی برای TURN انتخاب کنید

🔹 سیستم‌عامل را به‌روز نگه دارید

🔹 Docker Image را بدون بررسی به‌روزرسانی نکنید

🔹 دسترسی مدیریتی VPS را محدود کنید

🔹 از کلید SSH به جای رمز عبور استفاده کنید

🔹 Fail2Ban یا ابزارهای مشابه را در نظر بگیرید

آیا PairDrop برای انتقال فایل‌های بزرگ مناسب است؟

PairDrop برای انتقال مستقیم فایل بین دستگاه‌ها بسیار کاربردی است، اما عملکرد آن به شرایط شبکه و WebRTC بستگی دارد. برای فایل‌های بسیار بزرگ باید موارد زیر را در نظر بگیرید:

🔹 سرعت اینترنت هر دو دستگاه

🔹 سرعت آپلود دستگاه فرستنده

🔹 سرعت دانلود دستگاه گیرنده

🔹 کیفیت ارتباط WebRTC و استفاده یا عدم استفاده از TURN

🔹 پهنای‌باند سرور مجازی

🔹 محدودیت‌های شبکه موبایل

🔹 منابع مرورگر

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

PairDrop یا فضای ابری؛ کدام مناسب‌تر است؟

PairDrop بیشتر برای انتقال سریع فایل بین دستگاه‌ها طراحی شده است. در مقابل، سرویس‌هایی مانند Nextcloud برای ذخیره‌سازی، مدیریت و همگام‌سازی فایل‌ها امکانات بیشتری ارائه می‌کنند [citation:5].

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

📌 جمع‌بندی

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

Coturn نیز برای سناریوهایی که ارتباط مستقیم WebRTC بین دستگاه‌ها امکان‌پذیر نیست، نقش مهمی دارد. اگر هدف شما انتقال فایل بین موبایل و کامپیوتر، بدون نصب برنامه اختصاصی و با استفاده از دامنه شخصی است، ترکیب PairDrop + Coturn + Nginx + HTTPS می‌تواند یک معماری قابل‌استفاده برای این سناریو ایجاد کند.

برای راه‌اندازی این سرویس، یک سرور مجازی لینوکس با منابع مناسب و پهنای‌باند پایدار نیاز دارید.

🎯 سرور مجازی مناسب برای PairDrop و سرویس‌های شخصی

اگر به دنبال یک سرور مجازی پایدار با دیسک NVMe، پهنای‌باند مناسب و پشتیبانی ۲۴ ساعته برای راه‌اندازی PairDrop، Coturn و سایر سرویس‌های شخصی هستید، پلن‌های ایرانیکاسرور را بررسی کنید.

📞 تماس با پشتیبانی: 021-91302460 | ایرانیکاسرور

این آموزش برایت مفید بود؟ می‌توانی لینک آن را ذخیره یا برای دیگران ارسال کنی.

Amir Jabbari

نویسنده مجله ایرانیکاسرور؛ منتشرکننده آموزش‌ها و راهنماهای کاربردی در حوزه هاست، سرور، وردپرس و شبکه.

برای اجرای آموزش به زیرساخت نیاز داری؟

سرویس مرتبط را ببین؛ معرفی خدمات در این بخش کوتاه نگه داشته شده تا تمرکز اصلی صفحه روی آموزش باقی بماند.

ایرانیکاسرور
برای ادامه یادگیری

مطالب مرتبط با این آموزش

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

گفت‌وگو درباره آموزش

دیدگاه‌ها

0 دیدگاه برای این مطلب ثبت شده است.

هنوز دیدگاهی ثبت نشده است؛ اگر سؤال یا تجربه‌ای درباره این آموزش داری، همین‌جا بنویس. پاسخ‌های مدیریت و کاربران به‌صورت مشخص از هم تفکیک می‌شوند.

دیدگاه یا سؤال خود را بنویسید

ایمیل شما منتشر نمی‌شود. فیلدهای ضروری مشخص شده‌اند.