Привет, Хабр!

Я — обычный, среднестатистический (с натягом) житель глубинки — электрик. Не хотел никого взрывать, переводить чьи-то деньги на безопасный счёт и заниматься прочими непотребными и преступными штуками. Но именно из-за вот этих вот преступных штук (со слов«компетентных») мне отрубили возможность разговаривать по видео привычным для меня способом.

Неприятное чувство, когда лес рубят другие, а в тебя щепки летят. И ладно, если бы лес рубили, так… травку косят, а летят брёвна.

Как раз я только-только начал, шутки ради и безделья для, общаться с нейросетью. И на фоне летящих брёвен возьми и спроси: «Можешь сделать звонилку?» Та в ответ: «Могу». Я начал спрашивать, потом ещё спрашивать, потом ещё…

Слово за слово, ликбез поверх ликбеза, с чистого листа и меня — полного ноля, мы начали ваять. Чем больше она рассказывала про WebRTC, STUN, TURN-серверы, ICE-кандидаты и прочие страшные слова, тем интереснее мне становилось. Это как кроличья нора, из которой не хочется вылезать. Когда появились первые положительные результаты — первая удачная попытка созвона — к делу подключилась страсть, и это стало моим хобби. DeepSeek - с самого начала и по сей день. Не потому что эта нейронка выделяется своими способностями, а потому что она первая попалась мне под руку. Ее оказалось достаточно, чтобы прийти к внятному и вполне рабочему инструменту для встреч по видео. Начал понимать некоторые технические тонкости, расширять свой кругозор относительно того, как работать с нейронками. Вы бы видели моё лицо, когда я впервые столкнулся с тем фактом, что чат не бесконечен.

Начинал в буквальном смысле на коленках — у меня был один телефон, на котором я создавал проект, редактируя файлы в nano.

9 месяцев свободного времени (которого у работающего электрика не так уж много) ушло на то, чтобы из полного нуля сделать работающий P2P-видеосервис.

Программистом я, конечно, не стал. Да и не стремлюсь, ведь программист — это профессия. Профессия у меня есть, мне нужно было хобби. И теперь моё хобби — pet-проект «Визави».

«Визави» — P2P WebRTC, браузерное исполнение с собственным STUN и TURN в московском дата-центре и российским доменом — уход всей страны в Чебурнет он даже не заметит.

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

Интерфейс обычной комнаты
Интерфейс обычной комнаты

Моя архитектурная идея заключается в том, что «Визави» — это здание со множеством отдельных комнат. Если в комнату зашло двое, то они видят и слышат друг друга. Каким образом ваш будущий собеседник узнает, в какой вы комнате, — ваша задача. Скидывайте ему ссылку на комнату или при личной встрече договаривайтесь. У «Визави» в этом смысле есть только одна изюминка — возможность передать ссылку на комнату голосом. Прямо по телефону, когда понадобилось видео, один говорит другому: «Заходи в комнату 777 (последовательность цифр может быть любой)» — «Хорошо». Оба заходят на https://ви-за-ви.рф/ и набирают 777, оказываясь в одной комнате.

Принципиально: без регистрации, скачиваний приложения, логирования ip, записи сообщений и разговоров. Механизмы и логика работы обычных комнат уже созданы. Если кому-то зайдёт такой способ видеосвязи — пользуйтесь, вся хвала Всевышнему.

Закончив с базой, я продолжил развитие проекта. И следующим моим шагом стало создание VIP комнат. Те же базовые механизмы, но уже с немного другой логикой, предполагающей иерархию. Есть владелец VIP комнаты и есть приходящие к нему гости. У владельца в руках все дополнительные функции (запись встречи, он может открыть или закрыть чат, выгнать гостя, и ему доступны настройки комнаты), у гостя (наряду с владельцем) есть возможность демонстрировать экран ноутбука и передать файл. Постоянная ссылка. Можно оставить сообщение владельцу у входа в комнату. Если пришло несколько гостей сразу, то они выстраиваются в очередь.

Все зримые изменения в функционале выкладываю в t.me/videozvonkivizavi

После VIP комнат планирую создать третий вид - "комнаты для наблюдения", с той же базой, но со спецификой иерархии, по воли Всевышнего. Одно устройство будет подключаться в роли камеры, второе в роли монитора. Конечно это будет не полноценное видеонаблюдение, а что-то вроде радионяни, только её не надо будет покупать, а просто достать старый смартфон из ящика с хламом. Тут пока больше вопросов, чем понимания.

Техническая сторона проекта (этот абзац писал с помощью ИИ):

  • Всё крутится на арендованном VPS в московском дата-центре.

  • 1 ядро процессора

  • 512 МБ оперативной памяти.

  • 10 ГБ SSD-диска (из них занято около 3,3 ГБ).

  • Debian 11.

На этом же сервере развернуты: Coturn — собственный STUN/TURN сервер. Node.js (сигнальный сервер), который управляется через PM2. Nginx — reverse-прокси. Он принимает запросы на 80 и 443 порты, отдает статику напрямую, а запросы к сокетам проксирует на внутренний порт Node.js. SSL через Certbot (Let’s Encrypt) версии 1.12.0 с автоматическим обновлением по таймеру. UFW, Fail2Ban. И клиент, и сервер написаны на чистом JavaScript. Express отвечает за отдачу статики (HTML, CSS, JS) и REST API для проверки статуса VIP-комнат. Socket.io держит постоянное WebSocket-соединение для обмена WebRTC-сигналами (offer, answer, ICE-кандидаты) в реальном времени. Вместо баз данных используются JSON-файлы.

Админ-панель: текущие соединения
Админ-панель: текущие соединения

Созданная с нуля админ-панель - отдельная история. Много раз она открывала мне глаза на то, что у меня происходит. Не «под капотом», а «за окном»

В процессе индексации сайта в Яндекс и Гугл, обнаружил, что интернет просто кишит разного рода снифферами, сканерами, ботами и прочей живностью. ИИ толком мне не смог объяснить (или я не смог понять) с какими целями приходят орды ботов ко входу в мой сайт. Может уважаемая публика Хабра прольет свет на эту кучу цифровых гнусов:

Админ-панель: логи сервера
Админ-панель: логи сервера

Эти ребята не выполняют JavaScript, и сервер, вместо отправки стандартного пакета с файлами скриптов, отдает им легкий site.html с SEO текстом.

Вход в VIP комнату
Вход в VIP комнату

Сквозное шифрование у P2P WebRTC — классика жанра, тут без меня все придумали, но вот исключительно мои наработки уже под большим вопросом конфиденциальности:

Чат во время встречи хранится в localstorage браузера «как есть» (при закрытии чата владелец VIP комнаты может сохранить чат в виде html странички) Оставленные у входа в VIP комнату сообщения пока хранятся в json в открытом виде. Понятно, что никто не станет пользоваться таким способом для передачи информации, чувствительной к постороннему вниманию. Но хотелось бы более профессионального отношения к данным. Что посоветуете с учетом скромных технических характеристик VPS?

Я изучал похожие сервисы. Каждый из них требует от пользователя сделать как минимум один шаг до того как начнется подключение. И я не имею в виду выдачу разрешений на камеру и действия по передачи ссылки. Где‑то надо регистрироваться, где‑то надо имя свое указать и прочее. На Визави этот шаг не нужен. Набрав https://ви‑за‑ви.рф/, пользователь уже оказывается подключенным к комнате и готов ко встрече.

Чем больше выбора, тем лучше. Пусть каждый найдёт себе то, что по душе. Вся хвала — Всевышнему.

Комментарии (24)


  1. PechoraDev
    18.04.2026 21:00

    Неплохо выглядит! =)


    1. Sega-mobile Автор
      18.04.2026 21:00

      Спасибо) Весь дизайн - мои решения. При обсуждении решений, предложения ИИ мне не нравились. А вот дизайн админки - наоборот, почти полностью это его идеи


  1. mpetrunin
    18.04.2026 21:00

    А какова нагрузка на сервер? Делали какие-то расчёты на число пользователей?


    1. opusmode
      18.04.2026 21:00

      Так если это p2p, то задача сервера там только в том, что бы создать сессию и свести там двух человек, дальше они сами. Нагрузки там особо и не будет


    1. Sega-mobile Автор
      18.04.2026 21:00

      на данный момент количество пользователей равно нолю. Как верно было подмечено комментарием ниже, сервер в 95% случаев выполняет сигнальную роль (знакомство устройств, передача Socket.IO) Я проверял его при подключенных трех парах устройств в режиме TURN (когда сервер непосредственно задействован в передаче всего трафика устройств, при невозможности прямого P2P) - 20-30% CPU. Полагаю, что сервера хватит на 10 одновременных бесед в режиме TURN.


  1. Yarus23
    18.04.2026 21:00

    Программистом я, конечно, не стал. Да и не стремлюсь, ведь программист — это профессия. меня это пугает. я opus 4.7. за последний час написал раз пять идиот представляете качество этого кода?


    1. Sega-mobile Автор
      18.04.2026 21:00

      К сожалению не представляю)) Я даже не в самом конце списка, я вообще не в списке тех, кто может оценивать качество кода))


  1. JDJ
    18.04.2026 21:00

    вы наверно купили домен за 1000р да? через год если не бросите хобби он может стоить 12.000р :) у меня тоже был домен в кириллице 11 лет для хобби, он стоил 4000 10 лет, осенью за него выкатили 12500р :)


    1. selax
      18.04.2026 21:00

      У вас просто нестандартный случай. Обычно если зона .РФ, то регистрация в районе 200₽, продление в районе 400₽. Я примерно так и плачу уже лет 15.


    1. Sega-mobile Автор
      18.04.2026 21:00

      Не помню точно. Домен мне обошелся до 300 рублей. Кириллический домен имеет (как оказалось) свою специфику. Теперь я знаю что такое punycode))). Если без тире - визави.рф, то такой домен продают за 5 000 000. Даст Бог дорастем и до этой цифры)) Но, конечно, ценность всего этого заключается не в деньгах, а в том что у меня теперь есть занятие по душе и если это принесет пользу другим, то вся хвала Всевышнему


      1. selax
        18.04.2026 21:00

        Если без тире - визави.рф, то такой домен продают за 5 000 000.

        Такая цена из-за того, что его кто-то первее вас зарегистрировал и перепродаёт. Как таковых премиум доменов в зоне .РФ нет и они все по одной цене продаются. А сама цена уже от регистратора зависит.


  1. dyadyaSerezha
    18.04.2026 21:00

    Принципиально: без регистрации, скачиваний приложения, логирования ip, записи сообщений и разговоров.

    Без открытых исходников всё это пустые слова. Может, все сообщения и видео идут прямиком сами знаете куда? Может, есть способ зайти в режиме невидимки в любую комнату? И так далее.

    Ну и как-то слегка напрягают частые хвалы. Зачем они в техническом тексте на техническом сайте?


    1. Sega-mobile Автор
      18.04.2026 21:00

      За всю недолгую историю проекта это уже второе предположение о связях с товарищем маЁром. После 9,5 лет отсидки на строгом режиме в ИК-10 Екб, это вызывает легкое чувство иронии))

      Я не выкладываю код не потому что мне есть что скрывать, ну кроме того что все узнают о том что Визави изнутри - это костыльный набор из костылей))) Я не выкладываю, потому что боюсь подвергнуть опасности сам сайт. Я конечно какую-никакую "гигиену" соблюдаю, например fail2ban, но я не представляю какой она должна быть чтобы чувствовать себя уверено. Что мне ИИ в этом смысле рассказал - я сделал, но достаточно ли этого, чтобы спокойно выкладывать код в открытый доступ, я не знаю.

      Визави изначально не был задуман как шапочка из фольги. Антипараноидальные решения существуют, да и это не мой уровень. Я предлагаю "звонилку" для быстрого видеосозвона без того чтобы иметь одинаковые приложения. Исключительно бытовая штука. Все чувствительные к внешнему вниманию разговоры надо выносить в поле профессиональных и предназначенных для этого продуктов, ИМХО


      1. dyadyaSerezha
        18.04.2026 21:00

        это уже второе предположение о связях с товарищем маЁром.

        Это не предположение, а указание на то, что дела могут обстоять абсолютно любым образом. Например, таким.

        После 9,5 лет отсидки на строгом режиме в ИК-10 Екб

        Опять же, могли бы написать и 95 лет. Мы же не можем проверить. Да и кто сказал, что отсидевший не может начать сотрудничать? Не вижу логики.

        Насчёт остального - ок.


        1. Sega-mobile Автор
          18.04.2026 21:00

          согласен. могут обстоять любым образом. тратить свое свободное время для того чтобы подслушивать и подсматривать чужие разговоры или сливать их "компетентным" - то еще извращение (при том что даже после публикации этой статьи сервисом никто не воспользовался), но оно гипотетически вполне допустимо. руководствоваться в своих действиях (или бездействии) нужно знаниями, а они у каждого свои.

          взять старенький смартфон, подключить его к комнате и поставить рядом с кастрюлей пельменей (как объект наблюдения), а своим смарфоном или на ноуте поглядывать чтобы пельмени не убежали - такая бытовая задача не требует рассуждений о том каким именно образом могут обстоять дела и кто куда сливает информацию))


          1. dyadyaSerezha
            18.04.2026 21:00

            Да, именно так сливают и проверяют трафик все интернет-провайдеры в РФ. Откуда вы всё знаете?)


  1. Lotov
    18.04.2026 21:00

    Как любитель старой фантастики вопию , почему не экранизируют до сих пор "Далёкую Радугу" Стругацких , "заповедник гоблинов" Саймака и про пилота Пиркса ? Давно ж пора. Инструменты есть.


  1. i_vayr
    18.04.2026 21:00

    …а где были программисты… вы все сделали сами с ИИ, браво! Желаю успехов!


    1. Sega-mobile Автор
      18.04.2026 21:00

      програмисты никуда не делись

      профессиональные програмисты создают подобные решения на другом уровне. Я.Телемост, например, или Контур.Толк. Я потратил много времени чтобы найти и посмотреть на то как это сделали другие. Из тех что доступны на русском языке с десяток штук точно найдется

      Спасибо за теплые слова

      Вся хвала Всевышнему!


  1. dmitrovich_denta
    18.04.2026 21:00

    Я в шоке :)) вот, что значит упорство и труд. А так скромно о себе написал - электрик. Круто! Успехов!


    1. Sega-mobile Автор
      18.04.2026 21:00

      спасибо за добрые слова. Вся хвала Всевышнему.

      скромно потому что в этом проекте нет ничего выдающегося. Это очередная браузерная обертка WebRTC и не более. Есть кое-какой коммерческий потенциал, но в первую очередь это хобби.


  1. Optimizator_mk8
    18.04.2026 21:00

    В мире aiслопа 9 месяцев писать продукт на телефоне в nano это нифиговое достижение
    Как минимум с точки зрения фокуса на цель

    Я пришел в выводу, что вы - будущий arch юзер, но возможно, вы еще не знаете об этом.


    1. Sega-mobile Автор
      18.04.2026 21:00

      Начинал в буквальном смысле на коленках — у меня был один телефон, на котором я создавал проект, редактируя файлы в nano.

      последние три месяца телефон в качестве устройства для программирования я уже не использовал, только для тестов. Обзавелся простеньким ноутом, поставил туда Linux Mint, кастомизировал ее под задачи программирования (тоже целое приключение) - развиваюсь вместе с проектом. Конечно все сделано с помощью ИИ. От меня требовалось только терпение и понимание того что я хочу.

      Возможно вы пришли к правильному выводу, но пока я только сегодня узнал что означает термин (и что он вообще существует) arch юзер))

      Вся хвала Всевышнему.


      1. SarmatKuricin
        18.04.2026 21:00

        Ваша история мне напомнило следующее: году в 2010 на одном форуме разработчиков кто-то интересовался как компилировать си на телефоне под symbian. Ему разумно ответили, что не нужно себя мучить и проще купить дешевый б/у компьютер. На что он ответил: "где я тут в тюрьме комп куплю?". Такие истории очень мотивируют.