Разработка 4 мин чтения

croc: тяжёлые файлы клиентам без облака и без аккаунтов

croc пересылает тяжёлые файлы и папки между двумя компьютерами по короткому коду, с шифрованием от края до края и докачкой. Разбираю по README и исходникам, как поднять свой ретранслятор, что видит публичный и чем рискует короткий код.

передача файловopen sourceбезопасностьсвой сервер
Коротко. Архив проекта на несколько гигабайт, видео со съёмки, дамп базы: клиенту или подрядчику это обычно уходит через чужое облако, и копия остаётся лежать у провайдера. croc (MIT, около 40 тысяч звёзд на GitHub) передаёт файл или папку напрямую с компьютера на компьютер по короткому коду, шифрует от края до края, докачивает после обрыва и не требует ни своего сервера, ни проброса портов. Получателю хватит браузера. Код нужно передать другим каналом, оба человека должны быть онлайн, а публичный ретранслятор чужой, поэтому для рабочего обмена я ставлю свой.
Хотите внедрить это у себя?

Сделаю под ключ: разберу задачу, назову срок и цену. Чтобы начать, напишите в Telegram одной фразой.

Настроить обмен файлами с клиентами

Тяжёлый файл и три плохих варианта

Дизайнер собрал проект на шесть гигабайт, подрядчик сидит в другом городе. Почта такое не примет. В мессенджере видео либо пережмётся, либо упрётся в лимит. Остаётся облако: час на загрузку, час на скачивание, и файл дальше лежит на чужом диске. С дампом базы клиентов хуже: в чужом облаке окажутся живые данные.

Про LocalSend я уже писал, он гоняет файлы между устройствами в одной сети. Здесь люди далеко друг от друга, и общего Wi-Fi нет. Для этого подходит croc.

Что такое croc и как он работает

croc (github.com/schollz/croc) пишет на Go Зак Шоллц. Проект создан в октябре 2017 года, лицензия MIT, проверял по файлу LICENSE. На 15 октября 2026 у репозитория около 40,6 тысячи звёзд, последний коммит от 14 октября, последний релиз v11.5.4 вышел 26 сентября.

Отправитель запускает croc send папка-или-файл и получает код из трёх слов. Получатель вводит код у себя, и передача начинается. Работает на Windows, Linux и macOS, ставится через Scoop, Chocolatey или Homebrew, есть Docker и готовый бинарник. На Linux и macOS код принято передавать через переменную окружения CROC_SECRET, чтобы он не светился в списке процессов.

По README есть веб-версия на getcroc.com, совместимая с консольной: человек открывает страницу, вводит код и скачивает. Официального приложения с окнами у croc нет. В README перечислены сторонние оболочки для Windows, macOS, Linux и Android, я их не запускал.

Шифрование, код-фраза и что видит ретранслятор

Ключ шифрования рождается из кода по схеме PAKE (в исходниках это SPAKE2). Ретранслятор код не получает и расшифровать поток не может. По исходникам имена и размеры файлов тоже идут в зашифрованных сообщениях. Ретранслятор видит IP-адреса обоих участников, время соединения, объём трафика и хэш названия комнаты. Если передаёте клиентские базы, поднимите свой ретранслятор, о нём ниже.

Теперь про код. Сгенерированный код состоит из трёх слов из списка EFF на 1296 слов. Первое слово выбирает комнату на ретрансляторе, два других идут в ключ. Выходит около 1,7 миллиона вариантов, примерно 20 бит, это моя прикидка по исходникам. Из перехваченного трафика такой код не подобрать, на каждую догадку нужна живая попытка подключения. Ретранслятор по умолчанию ограничивает частоту подключений до 30 в минуту с одного адреса и держит ожидающую комнату около трёх часов. Всё равно фразу из трёх слов легко подсмотреть вместе с сообщением.

Для чувствительных файлов задайте свой код флагом --code. Минимум там шесть знаков, но по исходникам первые четыре идут на выбор комнаты, пятый пропускается, в ключ попадает только остаток. Короткий свой код защищает почти ничем. Берите случайную строку от 20 знаков и отправляйте её другим каналом, не тем, где обсуждаете файл.

Свой ретранслятор на сервере

По умолчанию croc ходит через публичные ретрансляторы автора (getcroc.com). Свой запускается командой croc relay или в Docker:

docker run -d -p 9009-9013:9009-9013 -e CROC_PASS='ПАРОЛЬ' docker.io/schollz/croc

Отправитель добавляет --pass ПАРОЛЬ --relay адрес:9009. По умолчанию нужны TCP-порты 9009-9013, их можно поменять, но не меньше двух, и в файрволе они должны быть открыты. Пароль проверяется при подключении, без него чужой человек ретранслятором не воспользуется. Пароль общий на всех, так что при смене его придётся обновить у каждого сотрудника.

С NAT проблем нет: оба участника соединяются с ретранслятором исходящими подключениями, на домашнем роутере порты не нужны. В новых версиях клиенты сначала пробуют прямое соединение через серверы Tailscale и при неудаче уходят на ретранслятор. Флаг --transport relay оставляет только ретранслятор. Как автоматический режим ведёт себя со своим ретранслятором, я не проверял. Файлы на сервере не хранятся, но весь поток идёт через него, поэтому у сервера нужен нормальный канал.

Браузерную версию можно поставить на свой домен: в README для неё есть программа croc-web. Клиент открывает адрес вашей компании и вводит код.

Где croc не подойдёт и чем он отличается от привычного

Оба человека должны быть онлайн одновременно: отправитель ждёт, пока получатель введёт код. В README есть режим croc store, он грузит зашифрованные файлы на сервер на ограниченный срок, сам я его не запускал. Журнала, прав доступа и истории передач нет, узнать, кто что отправил вчера, не получится. Это канал, а не хранилище. Основную работу в проекте ведёт один автор: в последних ста коммитах около шестидесяти его, около тридцати у ботов, всего контрибьюторов 147.

Теперь сравнение. Облако удобно получателю и хранит файл, но копия остаётся у провайдера, а для входа нужен аккаунт. Send на своём сервере даёт обычную ссылку, но файл лежит на вашем диске и упирается в его объём. SFTP хорош для постоянного обмена с теми, кому готовы выдать учётку, я писал о нём в статье про Filestash. magic-wormhole близок по идее: PAKE, код из слов, MIT, около 23 тысяч звёзд. Он на Python и работает с двумя серверами, почтовым и транзитным. Докачки в его README я не нашёл.

Что можно сделать уже сейчас

Поставьте croc на два своих компьютера и отправьте папку с одного на другой. Потом откройте getcroc.com на телефоне и примите ту же передачу.

Выпишите, что вы пересылаете наружу, и решите, какие типы файлов идут через croc.

Поднимите ретранслятор на сервере с широким каналом, оставьте открытыми только 9009-9013 и задайте пароль. Если сервера нет, поможет статья про выбор VPS.

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

Частые вопросы

Что если связь оборвалась на середине?

По README croc умеет возобновлять прерванную передачу: отправитель запускает отправку заново, получатель докачивает недостающие части. На больших файлах я это не проверял.

Видит ли ретранслятор содержимое файлов?

Нет, файлы шифруются до отправки, ключа у ретранслятора нет. Он видит IP-адреса, время и объём трафика.

Обязательно ли получателю ставить программу?

Нет, по README хватит браузерной версии на getcroc.com. Лимит размера файла в браузере в документации не нашёл.

Коротко о главном

croc закрывает один сценарий: быстро переслать тяжёлый файл человеку в другом городе без облака и без аккаунта. Он бесплатный, с открытым кодом под MIT и шифрует поток от края до края.

Хотите, чтобы файлы клиентам и подрядчикам уходили по понятной схеме и не лежали в чужом облаке? Напишите мне в Telegram кодовое слово «ПЕРЕСЫЛКА». Поднимем ваш ретранслятор, настроим пароль и порты и сделаем сотрудникам простую инструкцию.

Обсудим вашу задачу

Что я делаю для бизнеса

Напишите одной фразой, что нужно. Отвечу, что подойдёт, сколько займёт и сколько стоит. Сообщение уже подготовлено.

  • Боты в Telegram, MAX, VK
  • Автоматизация процессов и CRM
  • Аналитика и дашборды
  • Сайты и лендинги под ключ
Пишу о разработке, ИИ и законах для бизнеса

Разборы, кейсы и практика — без воды. Выходит регулярно, читать 3–5 минут.

Готовые решения под ключTurnkey solutionsSoluciones llave en mano交钥匙解决方案Түлхүүр гардуулах шийдэл 451 готовых IT-решений для бизнеса451 ready-made IT solutions for business451 soluciones IT listas para empresas451 个面向企业的现成 IT 解决方案Бизнест зориулсан 451 бэлэн IT шийдэл Автоматизация, боты, AI, 152-ФЗ и платформы · бесплатная консультацияAutomation, bots, AI, data privacy and platforms · free consultationAutomatización, bots, IA, privacidad de datos y plataformas · consulta gratis自动化、机器人、AI、数据合规与平台 · 免费咨询Автоматжуулалт, бот, AI, өгөгдлийн хамгаалалт ба платформ · үнэгүй зөвлөгөө Смотреть каталогView catalogVer catálogo查看目录Каталог үзэх