انتقال فایل بین موبایل و کامپیوتر همیشه ساده نیست. گاهی لازم است یک فایل را از گوشی به لپتاپ منتقل کنید، اما کابل 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 | ایرانیکاسرور
دیدگاهها
0 دیدگاه برای این مطلب ثبت شده است.