PairDrop: как передавать файлы между Windows, macOS, Linux, Android и iOS без проводов и облака

2158
PairDrop: как передавать файлы между Windows, macOS, Linux, Android и iOS без проводов и облака

PairDrop – это веб-инструмент для быстрой передачи файлов, текста и медиа между устройствами через браузер. Проект вдохновлён Apple AirDrop, но не привязан к экосистеме Apple и работает на Android, iOS, Windows, Linux, macOS и других системах с современным браузером. PairDrop появился как форк Snapdrop и сохранил базовую идею простого обмена без учётных записей, но добавил постоянное связывание устройств, публичные комнаты, интернет-передачу и дополнительные варианты самостоятельного хостинга.

Главный сценарий PairDrop – передать файл с одного устройства на другое без флешки, мессенджера, почты или облачного диска. Пользователь открывает PairDrop на двух устройствах, выбирает получателя и подтверждает передачу. Для обычного локального обмена отдельный клиент не нужен. При желании PairDrop можно установить как PWA-приложение, чтобы запускать сервис с рабочего стола или экрана смартфона.

Что это за инструмент

PairDrop относится к классу браузерных решений для одноразовой передачи файлов. Это не облачное хранилище, не синхронизатор папок и не корпоративная система документооборота. Инструмент решает более узкую задачу: быстро отправить данные между устройствами, которые находятся рядом, связаны заранее или подключены к одной временной комнате.

В отличие от Snapdrop, PairDrop лучше приспособлен к смешанным сетевым условиям. Он показывает устройства из локальной сети, участников одной публичной комнаты и ранее связанные устройства. Для передачи через интернет PairDrop использует постоянные пары устройств с общим секретом и временные публичные комнаты с коротким кодом или QR-кодом. Такой механизм помогает в сетях, где простое локальное обнаружение не работает: на публичном Wi-Fi, в корпоративной сети, через VPN, iCloud Private Relay, мобильную точку доступа или за NAT.

Основные функции

  • передача файлов, изображений, документов, видео, аудио и текста;
  • работает в браузере без регистрации и установки отдельного клиента;
  • автоматически обнаруживает устройства в локальной сети;
  • постоянно связывает устройства по 6-значному коду или QR-коду;
  • создаёт временные публичные комнаты по 5-буквенному коду или QR-коду;
  • передаёт файлы между paired-устройствами через интернет;
  • автоматически упаковывает несколько файлов в ZIP;
  • показывает общий индикатор прогресса при отправке нескольких файлов;
  • отправляет файлы из меню «Поделиться» на Android и iOS при установленном PWA;
  • предпросматривает аудио и видео;
  • позволяет менять отображаемое имя устройства;
  • поддерживает самостоятельный хостинг через Docker или Node.js;
  • позволяет настраивать собственные STUN/TURN-серверы на self-hosted-инстансе;
  • поддерживает режим WebSocket fallback для self-hosted-инстансов, где WebRTC недоступен;
  • передаёт файлы через pairdrop-cli и интегрируется с контекстным меню Windows и Nautilus в Ubuntu.

PairDrop использует сервер в первую очередь для обнаружения устройств и согласования соединения. Передача файлов в штатном режиме идёт через WebRTC между браузерами. Если два устройства находятся в одной локальной сети, PairDrop устанавливает прямое WebRTC-соединение. При таком сценарии файлы не отправляются на сервер. Сервер помогает участникам найти друг друга, но не хранит переданные данные и не использует базу данных.

Постоянные пары и публичные комнаты

Постоянное связывание устройств нужно для личных устройств, которые должны находить друг друга после закрытия браузера. Пользователь связывает устройства по коду или QR-коду, после чего PairDrop использует общий секрет. Такой режим удобен для связки «телефон – ноутбук», «рабочий компьютер – домашний компьютер» или «планшет – настольная система».

Публичные комнаты рассчитаны на временный обмен. Пользователь создаёт или вводит 5-буквенный код, а все устройства в одной комнате видят друг друга. После закрытия PairDrop устройство покидает комнату. Комнаты помогают, когда участники находятся в разных сетях или когда локальное обнаружение невозможно. Для приватных файлов такой сценарий требует аккуратности: код комнаты не должен попадать посторонним, а получателя нужно проверять по имени устройства.

Приватность и безопасность

PairDrop не хранит файлы как облачный сервис и, по FAQ проекта, не использует базу данных. При прямой WebRTC-передаче сервер не участвует в передаче содержимого. WebRTC шифрует файлы в пути, что снижает риск перехвата на уровне сети.

Ограничения всё равно есть. Пользователь доверяет серверу PairDrop как точке сигнализации и источнику клиентского кода. При передаче через TURN трафик маршрутизируется через TURN-сервер, а при WebSocket fallback на self-hosted-инстансе весь поток идёт через сервер. В документации прямо указано, что при WebSocket fallback сервер может читать такой трафик, поэтому для чувствительных данных лучше использовать собственный доверенный экземпляр или дополнительно шифровать файл до отправки.

Для кого подойдёт PairDrop

Отличие PairDrop от AirDrop и Google Диск

PairDrop подойдёт пользователям, которые работают с несколькими платформами и часто передают файлы между телефоном, ноутбуком, планшетом и рабочей станцией. Инструмент удобен дома, в небольшой редакции, учебной аудитории, лаборатории или команде разработки, где нужно быстро отправить фотографию, PDF, архив, фрагмент текста или набор документов.

Сервис полезен в смешанной среде, где AirDrop недоступен на части устройств, а отправка через мессенджер ухудшает качество изображений или добавляет лишний след в стороннем облаке. PairDrop также подходит администраторам и разработчикам, которым нужен простой локальный канал передачи без настройки SMB, SFTP или общей папки.

Инструмент не заменяет Nextcloud, Google Drive, OneDrive, Syncthing или файловый сервер. В PairDrop нет долгого хранения, истории версий, сложного разграничения прав, централизованного аудита и полноценной политики доступа. Его сильная сторона – быстрый одноразовый обмен, а не управление файлами.

Как установить и запустить

Для обычного использования установка не требуется. Достаточно открыть публичный сайт PairDrop на двух устройствах. На мобильных устройствах и настольных системах сервис можно установить как PWA, если браузер поддерживает такой режим. Для self-hosted-инстанса с PWA-функциями нужен HTTPS.

Самостоятельный запуск через Node.js выглядит так:

git clone https://github.com/schlagmichdoch/PairDrop.git
 cd PairDrop
 npm install
 npm start

По умолчанию сервер слушает порт 3000. Для продакшен-запуска в документации указан режим:

npm run start:prod

При публикации PairDrop за обратным прокси нужно правильно передавать заголовок X-Forwarded-For. Если прокси настроен неверно, клиенты могут видеть друг друга не по реальной сетевой принадлежности, а как будто находятся в одной сети. Для защиты от обхода прокси документация рекомендует ограничивать прямой доступ к Node.js-серверу или Docker-контейнеру и публиковать сервис через прокси.

Для Docker-деплоя можно использовать образ linuxserver/pairdrop. Пример запуска:

docker run -d 
   --name=pairdrop 
   --restart=unless-stopped 
   -p 127.0.0.1:3000:3000 
   -e WS_FALLBACK=false 
   -e RTC_CONFIG=false 
   -e RATE_LIMIT=false 
   lscr.io/linuxserver/pairdrop

Если self-hosted-инстанс должен помогать устройствам за NAT, администратор может указать собственный STUN/TURN-конфиг через RTC_CONFIG. Если пользователи подключаются через VPN, который блокирует WebRTC, можно включить WS_FALLBACK=true, но такой режим нужно отдельно оценить с точки зрения приватности и нагрузки на сервер.

CLI и контекстное меню

PairDrop поддерживает pairdrop-cli. Утилита открывает PairDrop в браузере и передаёт туда выбранные файлы, папки или текст, после чего пользователь выбирает получателя в интерфейсе. Базовые команды выглядят так:

pairdrop
 pairdrop file1 directory1
 pairdrop -t "text"
 pairdrop -d "https://pairdrop.net/"

Для Linux и macOS pairdrop-cli устанавливается из архива pairdrop-cli.zip, после чего скрипт добавляют в PATH. На Windows требуется Git Bash, а для контекстного меню используется сценарий send-with-pairdrop.ps1 и пункт Send to. В Ubuntu с Nautilus интеграция работает через добавление скрипта send-with-pairdrop в каталог ~/.local/share/nautilus/scripts/.

Лицензия

В основном файле LICENSE сейчас указан GNU General Public License v3.0. При этом в корневом package.json той же версии 1.11.2 поле license указано как ISC. Для обычного запуска публичного сервиса или собственного экземпляра такой разнобой, скорее всего, не будет заметен пользователю, но перед модификацией, включением в коммерческий продукт или распространением производных версий лицензию стоит проверить отдельно.

У проекта также была публичная история обсуждения лицензии. В issue #23, открытом 11 февраля 2023 года, участник сообщества указал, что PairDrop является форком Snapdrop, а переход с GPL-3.0 на MIT нельзя делать без разрешения правообладателей или прошлых контрибьюторов.

Плюсы и минусы

Плюсы Минусы
Работает в браузере и не требует отдельного клиента для базовой передачи. Зависит от возможностей браузера и сетевой политики.
Поддерживает разные платформы и удобен в смешанной среде. Не заменяет облачное хранилище, синхронизацию папок и файловый сервер.
При локальной WebRTC-передаче файлы не отправляются на сервер. При TURN-маршрутизации или WebSocket fallback модель приватности меняется.
Публичный PairDrop уже использует собственный TURN для paired-устройств за NAT. Self-hosted-инстанс требует внимательной настройки прокси, HTTPS и, при необходимости, STUN/TURN.
Есть постоянные пары устройств и временные публичные комнаты. В публичных комнатах нужно проверять получателя и не раскрывать код посторонним.
Поддерживаются CLI, Share menu и контекстное меню через дополнительные скрипты. Интеграции требуют ручной установки и проверки актуальной инструкции.
Открытый исходный код упрощает самостоятельный хостинг и аудит. Лицензию стоит перепроверять перед распространением производных версий.

Заключение

PairDrop – удобный инструмент для быстрой передачи файлов между устройствами, особенно когда нужна простая альтернатива AirDrop вне экосистемы Apple. В локальной сети он работает как лёгкий браузерный канал без облачного хранения и без установки клиента. Для интернета PairDrop предлагает постоянные пары устройств и публичные комнаты, а публичный сервис уже закрывает часть проблем NAT через собственный TURN-сервер.

Главное при описании PairDrop – не смешивать публичный сервис и self-hosted-сценарии. На pairdrop.net TURN уже работает на стороне сервиса, а настройка STUN/TURN относится к собственным инстансам. WebSocket fallback тоже относится к self-hosted-развёртываниям и меняет модель передачи: вместо P2P трафик идёт через сервер.

PairDrop стоит рассматривать как инструмент для разовой передачи файлов и текста, а не как систему хранения. Для личного использования, малых команд, редакций и технических специалистов он даёт быстрый и понятный способ обмена между разными платформами. Для чувствительных данных и корпоративных процессов лучше дополнительно оценить доверие к серверу, режим передачи, настройки прокси, TURN-инфраструктуру и лицензионные нюансы проекта.

Alt text
Обращаем внимание, что все материалы в этом блоге представляют личное мнение их авторов. Редакция SecurityLab.ru не несет ответственности за точность, полноту и достоверность опубликованных данных. Вся информация предоставлена «как есть» и может не соответствовать официальной позиции компании.
17.09
11:00
Вебинар SECURITM
Как за 10 шагов превратить формальность в реальное управление рисками?
17 сентября эксперт SECURITM объяснит, где заканчивается модель угроз и начинается риск-менеджмент — и почему выбирать между ними не нужно.
Регистрируйтесь!
Реклама. 18+ ООО «Секъюритм» ИНН 7820074059

Комнатный Блогер

Объясняю новую цифровую реальность

Рекламодатель
ООО «СерчИнформ»
ИНН: 7704306397
searchinform.ru↗
ИИ-ассистент СерчИнформ