Иногда хочется поделиться файлами с другими людьми напрямую с ноутбука или удаленной машины, не загружая их ни в какое облако, мессенджер или репозиторий. Для этого есть разные инструменты, но хочу рассказать именно про sendme, который построен на интересном фреймворке iroh.
TL;DR (sendme)
Если у вас есть Pixi (рекомендую), то больше ничего и не нужно, просто делаете так:
pixi exec sendme send <FILE OR DIRECTORY>
И сообщаете получателям TICKET, который напечатала эта команда. Получатели файлов делают так:
pixi exec sendme receive <TICKET>
После чего вы ждете завершения скачивания и останавливаете процесс. Готово! Файлы переданы напрямую получателям и не остались ни на каких third-party серверах.
Можно установить и использовать sendme без Pixi как написано тут.
Детали (iroh)
На самом деле sendme — это просто минимальный пример использования фреймворка iroh, который позволяет коммуницировать компьютерам безопасно и напрямую просто по сгенерированным ID вместо IP адресов, и почти без third-party серверов. "Почти", потому что промежуточный сервер все же нужен для установки первого контакта между машинами. Если контакт по каким-то причинам не установился, то промежуточный сервер служит прокси для передачи данных в зашифрованном виде, то есть сервер не видит и не сохраняет оригинальные данные.
У компании, которая разрабатывает iroh, есть публичные промежуточные серверы, благодаря которым и работают команды из TL;DR. Если для скорости и стабильности нужен собственный сервер, то можно либо заплатить за него, либо поднять свой такой сервер. А если вам интересно как это все вообще работает, чем отличается от WebRTC и прочее, то рекомендую поговорить с LLM или почитать раздел "How it works" и страницу "FAQ" в официальной документации.
Почему sendme
Вообще инструментов типа sendme много, но я в них не эксперт, поэтому не порекомендую что-то конкретное. Лично мне sendme приглянулся по таким причинам:
• Открытый код (для такого инструмента мне это кажется важным)
• Интересная технология под капотом
• Есть организация, которая за этим всем стоит
Ограничения
• sendme — это демо-приложение, код которого умещается в одном файле, и которое по дефолту полагается на сервера без гарантий на uptime и с rate limit'ами. Этого хватит для разовых пересылок, но не для сложных (production) сценариев. Для последних можно купить или поднять свой сервер.
• Технически количество получателей может быть любым, но вся нагрузка ляжет на вашу машину, плюс есть rate limit'ы публичных серверов. Так что транслировать файлы на весь интернет лучше не надо.