Привет, Хабр!
Я — обычный, среднестатистический (с натягом) житель глубинки — электрик. Не хотел никого взрывать, переводить чьи-то деньги на безопасный счёт и заниматься прочими непотребными и преступными штуками. Но именно из-за вот этих вот преступных штук (со слов«компетентных») мне отрубили возможность разговаривать по видео привычным для меня способом.
Неприятное чувство, когда лес рубят другие, а в тебя щепки летят. И ладно, если бы лес рубили, так… травку косят, а летят брёвна.
Как раз я только-только начал, шутки ради и безделья для, общаться с нейросетью. И на фоне летящих брёвен возьми и спроси: «Можешь сделать звонилку?» Та в ответ: «Могу». Я начал спрашивать, потом ещё спрашивать, потом ещё…
Слово за слово, ликбез поверх ликбеза, с чистого листа и меня — полного ноля, мы начали ваять. Чем больше она рассказывала про 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 текстом.

Сквозное шифрование у P2P WebRTC — классика жанра, тут без меня все придумали, но вот исключительно мои наработки уже под большим вопросом конфиденциальности:
Чат во время встречи хранится в localstorage браузера «как есть» (при закрытии чата владелец VIP комнаты может сохранить чат в виде html странички) Оставленные у входа в VIP комнату сообщения пока хранятся в json в открытом виде. Понятно, что никто не станет пользоваться таким способом для передачи информации, чувствительной к постороннему вниманию. Но хотелось бы более профессионального отношения к данным. Что посоветуете с учетом скромных технических характеристик VPS?
Я изучал похожие сервисы. Каждый из них требует от пользователя сделать как минимум один шаг до того как начнется подключение. И я не имею в виду выдачу разрешений на камеру и действия по передачи ссылки. Где‑то надо регистрироваться, где‑то надо имя свое указать и прочее. На Визави этот шаг не нужен. Набрав https://ви‑за‑ви.рф/, пользователь уже оказывается подключенным к комнате и готов ко встрече.
Чем больше выбора, тем лучше. Пусть каждый найдёт себе то, что по душе. Вся хвала — Всевышнему.
Комментарии (24)

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

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

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

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

Sega-mobile Автор
18.04.2026 21:00К сожалению не представляю)) Я даже не в самом конце списка, я вообще не в списке тех, кто может оценивать качество кода))

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

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

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

dyadyaSerezha
18.04.2026 21:00Принципиально: без регистрации, скачиваний приложения, логирования ip, записи сообщений и разговоров.
Без открытых исходников всё это пустые слова. Может, все сообщения и видео идут прямиком сами знаете куда? Может, есть способ зайти в режиме невидимки в любую комнату? И так далее.
Ну и как-то слегка напрягают частые хвалы. Зачем они в техническом тексте на техническом сайте?

Sega-mobile Автор
18.04.2026 21:00За всю недолгую историю проекта это уже второе предположение о связях с товарищем маЁром. После 9,5 лет отсидки на строгом режиме в ИК-10 Екб, это вызывает легкое чувство иронии))
Я не выкладываю код не потому что мне есть что скрывать, ну кроме того что все узнают о том что Визави изнутри - это костыльный набор из костылей))) Я не выкладываю, потому что боюсь подвергнуть опасности сам сайт. Я конечно какую-никакую "гигиену" соблюдаю, например fail2ban, но я не представляю какой она должна быть чтобы чувствовать себя уверено. Что мне ИИ в этом смысле рассказал - я сделал, но достаточно ли этого, чтобы спокойно выкладывать код в открытый доступ, я не знаю.
Визави изначально не был задуман как шапочка из фольги. Антипараноидальные решения существуют, да и это не мой уровень. Я предлагаю "звонилку" для быстрого видеосозвона без того чтобы иметь одинаковые приложения. Исключительно бытовая штука. Все чувствительные к внешнему вниманию разговоры надо выносить в поле профессиональных и предназначенных для этого продуктов, ИМХО

dyadyaSerezha
18.04.2026 21:00это уже второе предположение о связях с товарищем маЁром.
Это не предположение, а указание на то, что дела могут обстоять абсолютно любым образом. Например, таким.
После 9,5 лет отсидки на строгом режиме в ИК-10 Екб
Опять же, могли бы написать и 95 лет. Мы же не можем проверить. Да и кто сказал, что отсидевший не может начать сотрудничать? Не вижу логики.
Насчёт остального - ок.

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

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

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

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

Sega-mobile Автор
18.04.2026 21:00програмисты никуда не делись
профессиональные програмисты создают подобные решения на другом уровне. Я.Телемост, например, или Контур.Толк. Я потратил много времени чтобы найти и посмотреть на то как это сделали другие. Из тех что доступны на русском языке с десяток штук точно найдется
Спасибо за теплые слова
Вся хвала Всевышнему!

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

Sega-mobile Автор
18.04.2026 21:00спасибо за добрые слова. Вся хвала Всевышнему.
скромно потому что в этом проекте нет ничего выдающегося. Это очередная браузерная обертка WebRTC и не более. Есть кое-какой коммерческий потенциал, но в первую очередь это хобби.

Optimizator_mk8
18.04.2026 21:00В мире aiслопа 9 месяцев писать продукт на телефоне в nano это нифиговое достижение
Как минимум с точки зрения фокуса на цель
Я пришел в выводу, что вы - будущий arch юзер, но возможно, вы еще не знаете об этом.
Sega-mobile Автор
18.04.2026 21:00Начинал в буквальном смысле на коленках — у меня был один телефон, на котором я создавал проект, редактируя файлы в nano.
последние три месяца телефон в качестве устройства для программирования я уже не использовал, только для тестов. Обзавелся простеньким ноутом, поставил туда Linux Mint, кастомизировал ее под задачи программирования (тоже целое приключение) - развиваюсь вместе с проектом. Конечно все сделано с помощью ИИ. От меня требовалось только терпение и понимание того что я хочу.
Возможно вы пришли к правильному выводу, но пока я только сегодня узнал что означает термин (и что он вообще существует) arch юзер))
Вся хвала Всевышнему.

SarmatKuricin
18.04.2026 21:00Ваша история мне напомнило следующее: году в 2010 на одном форуме разработчиков кто-то интересовался как компилировать си на телефоне под symbian. Ему разумно ответили, что не нужно себя мучить и проще купить дешевый б/у компьютер. На что он ответил: "где я тут в тюрьме комп куплю?". Такие истории очень мотивируют.
PechoraDev
Неплохо выглядит! =)
Sega-mobile Автор
Спасибо) Весь дизайн - мои решения. При обсуждении решений, предложения ИИ мне не нравились. А вот дизайн админки - наоборот, почти полностью это его идеи