CloudPub: Как мы переписали Ngrok на Rust, с GUI и плагинами
Привет, друзья! Сегодня хочу рассказать о нашем проекте CloudPub, над которым мы работали последний год.
Всё началось с простой идеи — создать удобный инструмент для публикации локальных ресурсов в интернете. Как разработчик, я часто сталкивался с необходимостью показать заказчику локальный сайт, отладить webhook или дать доступ к файлам на моей машине.
Существующие решения вроде ушедшего из России ngrok.com или отечественного tuna.am решали эту задачу, но мне всегда не хватало удобного интерфейса и широкой поддержки различных протоколов.
Что нас отличает от конкурентов
Главное отличие CloudPub — это полноценное приложение с графическим интерфейсом. Мы решили, что не все разработчики любят возиться с командной строкой, поэтому создали интуитивно понятное приложение, где все функции доступны в пару кликов.
При этом мы не забыли и про консольную версию для тех, кто предпочитает классический подход.
Обе версии обладают одинаковым функционалом и работают на всех популярных платформах: Windows, macOS, Linux, Docker.
Есть версия для "интернета вещей" - armv5/aarch64 архитектур .
В процессе тестирования нам удалось запустить клиент на рутованой камере наблюдения от Ростелекома, Raspberry Pi и устройстве под управлением Android.
Модульная архитектура
Мы изначально проектировали CloudPub как модульную систему с поддержкой плагинов. Это позволило нам быстро добавлять поддержку новых протоколов:
- HTTP/HTTPS для веб-приложений
- TCP/UDP для сетевых сервисов
- WebDAV для файловых систем
- 1C для публикации конфигураций "1C предприятие"
- RTSP для видеопотоков
- Minecraft для игровых серверов
Установить и опубликовать minecraft или WebDAV сервер теперь можно буквально одним кликом.
И это только начало! Благодаря модульной архитектуре мы можем оперативно добавлять новые протоколы по запросам пользователей.
Инспектор трафика и другие возможности
Важная часть нашего продукта — встроенный инспектор трафика. Он позволяет в реальном времени анализировать и выгружать HTTP-запросы в удобном формате (JSON, XML, Binary/HEX, Image и др), в том числе с поддержкой сжатия (Content-Encoding).
Мы также реализовали гибкую систему аутентификации и авторизации, позволяющую настраивать права для разных пользователей, возможность установки CloudPub как системный сервис, встроенный менеджер файлов и многое другое.
Клиент и сервер написаны на языке Rust что обеспечивает безопасность и быстродействие.
Исходники клиента опубликованы на GitHub
Планы на будущее
Мы только в начале пути. В ближайших планах:
- Расширение списка поддерживаемых протоколов
- Улучшение производительности
- Добавление новых инструментов для анализа и отладки
- OpenSource Community версия сервера
Приглашаю всех попробовать CloudPub — скачать можно на нашем сайте https://cloudpub.ru. Буду рад услышать ваши отзывы и предложения!