Pull to refresh

Comments 104

А почему нельзя было взять self-hosted Jitsi!? Работает прямо в браузере..

Первый раз о нем слышу. Но, судя по тому, что я посмотрел - это намного сложнее и избыточно

Сложнее браузера?

Сложнее для реализации цели, которую я поставил - организовать семью и дать ей возможность как можно более проще общаться без риска блокировок

Я хз, что может быть сложнее docker-compose. Разве что вы хотите извращений :)

Сложнее может быть все что угодно) Проще - надо постараться. Portainer ставится за 2 команды и поднятие в нем любых docker compose контейнеров сводится в пару кликов мыши, без знания команд

Автору респект, НО:

подобных продуктов на гитхабе миллион. Проблемы у всех одни: протоколы безопасности, стабильность соединения, потери пакетов и т.п.

протоколы безопасности, стабильность соединения, потери пакетов и т.п.

Вы совсем не правы. Все эти перечисленные проблемы уже решаются WebRTC на стороне браузера во всех сущуствующих продуктах для видео/аудио звонков через браузер.

Все, что ему нужно от сервера - это один раз в начале передать строку SDP между хостами, STUN сервер для пробития NAT, да TURN сервер, если дырки в NAT проковырять не получается. Можно на STUN и забить и использовать только TURN. И простой JS скрипт для запуска WebRTC (это называется PeerConnection) умещается на пару экранов неминифицированного JS кода.

Более сложный бакенд, вроде Microsoft Teams, Google Meet нужен только если вы хотите устраивать конференции с несколькими участниками. Тут уже нужен Selective Forwarding Unit вместо TURN сервера, да и логика клиента будет сильно сложнее. Но этот случай не рассматривается тут и во всех этих "миллионах продуктов на гитхабе".

Ну, jitsi это прям не про один файл. А у автора именно такая цель стояла. Плюс, jitsi из коробки тянет за собой минимум 2 сервиса

Ну, jitsi это прям не про один файл

Какая разница, если оно в докер уже обёрнуто?

а кто маме докер поставит?

А зачем маме докер? Просто развернул на vps и подключайся к комнате и общайся сколько угодно

ну если мама отвечает за vps, то, наверное, она умеет докером пользоваться

Наличие шагов с участием терминала в принципе барьер для большинства. А тот, кто поднимать будет уже нашел, оплатил, подключился к VPS. Прочитать и сделать по инструкции под руководством LLM настройщик явно сможет осилить.

запустить docker … не сложнее, чем скопировать бинарник, написать для него unit и т.п.

Для задачи видеосвязь для трех бабушек он избыточен как карьерный самосвал для поездки за хлебом. И 200-рублевый VPS от такого набора сервисов скорее всего ляжет

То есть поставить jitsi, не используя и не когнфигурируя то, что не нужно, это самосвал. А писать свой костыль, который делает то же, что и jitsi в мин конфигурации, тратя больше когнитивных и временных ресурсов это не самосвал. Понятно.

Ничего там не ляжет, откуда вы это взяли) Вы же сами написали, что речь про трех бабушек. Vps это даже не заметит.

200-рублевый VPS от такого набора сервисов скорее всего ляжет

От чего? Там же не требуется транскодировать видео, а просто трафик перенаправлять справится любой калькулятор

В Jitsi используется не один, а несколько серверов:

  1. Prosody - XMPP-сервер для обеспечения коммуникации между другими компонентами, а-ля центральный шлюз;

  2. Jicofo - сервер контроля медиа сессий (куда кого подключить);

  3. JVB - как раз медиа-сервер.

Минимальные требования для нормальной работы - 2 vCPU, 2Gb RAM (для не более двух параллельных видеосозвонов по 2 человека каждый и максимум в HD разрешении). Хоть в официальной документации и написано "Минимум 1 vCPU, 1Gb RAM" - но это речь про созвон голосом 1 на 1 без видео. И то не более 10 минут проговорите, дальше начнёт тормозить.

Jitsi - это точно не для серверов за 200 рублей. Там сделано всё очень неоптимизированно. Мы работали с Jitsi, и когда из-за проблем с ним стали лезть в его исходники - поверить своим глазам не могли, что ТАКОЙ популярный open source проект может позволить себе настолько забивать на базовые принципы оптимизации, будто его студенты делают по выходным.

У меня тот же вопрос.

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

Но не очень понимаю, зачем перевыпуск сертов запаковывать в сам бинарь. Ну вот у меня сертами занимается отдельный выделенный компонент. Пусть это будет cert-bot, cert-manager, nginx или traefik. Он один общий на все мои приложения, почему и зачем приложение вообще этим занимается, это не его задача, как бы не хотелось завернуть все в один бинарь ( лучше все заворачивать в один композ ). Ну типа, что мне делать, если у меня wildcard сертификат на все сразу? Юзать jitsi.

Первое требование было железным: один бинарник, который можно запустить где угодно. Никаких npm install, никаких pip install, никаких docker-compose. Скачал, запустил — работает. Сервер забанят - перенес - работает снова, ничего перенастраивать не надо.

Как сказать “я не умею и не понимаю что такое докер” не говоря этого

Пусть это будет cert-bot, cert-manager, nginx или traefik.

Вы еще скажите, что у вас статика раздается отдельно от приложения

Конечно не понимаю, управляя датацентром и кучей серверов с виртуализацией и контейнеризацией)

Мне тут про иб-шника рассказывали, который не знал что такое dhcp ¯\_(ツ)_/¯

У меня ещё больше вопросов, если честно (

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

В Jitsi можно настроить авторизацию. Веб-интерфейс будет открыт всем, но попытка создать комнату для созвона выдаст диалог для логина-пароля. Там есть разные режимы авторизации. Можно сделать так, чтобы каждый пользователь обязательно авторизовался, а можно так, чтобы авторизацию проходил кто-то один, а остальные после этого могут заходить напрямую. Во втором случае если посторонний случайно узнает название комнаты, то он тоже сможет подключиться, но, во-первых, названия генерируются рандомом, они длинные и нигде не публикуются, поэтому угадать практически невозможно. Во-вторых, любой подключившийся сразу будет виден всем.

Это, конечно, хорошо, но что делать в случае применения белых списков?

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

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

Ах, знаю, знаю я, кого
Повесить надо на сосне

Роберт Бёрнс, перевод С. Я. Маршака
вроде оба не иноагенты...

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

Вы уверены, что "валить" будет законным к тому времени? Опять же, с чьей стороны? Исходной страны? Принимающей? Для самого себя?

В белые списки наверняка попадут какие-то провайдеры из РФ, а для этой цели нам не надо выносить свой сервис за бугор, так что будет работать, думаю

Боюсь в белых списках будут правительственное, Сбер, рутьюб и ещё немного , остальное будет офф на территории, ибо может помогать неконтролируемому общению.

Даже p2p на территории - угроза суверенитету.

Арендовать vps на Яндексе или VK cloud

не работает

docker и эту проблему решает: не надо compose, надо один раз собрать образ, настроить его, потом только save & load один файл, в котором всё настроено.

Это на случай, когда в один бинарник никак не удается встроить 100500 сервисов.

не надо compose

Так и в compose ничего сложного. Один раз вписал нужные значения в переменные, а дальше docker compose up -d

Это если зависимости не протухли.

Не очень понял данный комментарий. Ведь зависимости и в бинарнике протухнуть могут - примерно так же, как в готовом образе Docker...

Автоматические SSL-сертификаты

А зачем вы LE использовали? По-моему, это тот случай, когда PKI как минимум бесполезна, как максимум вредна. Тут идеальны просто самоподписанные сертификаты с пиннингом (заодно и для аутентификации можно использовать).

Сомневаюсь, что наши старшие смогут поставить свои сертификаты. Целью было облегчить использование для них

Стоит прислушаться к совету выше и параметризовать. Проект актуален не только для наших старших.

Не совсем понятно с 6 и 7 пунктом,

при первом заходе генерируется страница задания логина-пароля или ссылка-авторизатор которая единственно рабочая и потеряв ссылку на сервак ты уже не попадешь?

что делать с утекшими ссылками отправленными родственникам пару лет назад?

они продолжают работать, или после приглашения превращаются в тыкву?

я могу отправить человеко-читаемый, короткий адрес, что бы его впихнули в ярлык на экране телефона и заходя по ярлыку автоматически либо по логину-паролю авторизовывались?

или там будет GUID на 30 символов - который нужно неошибаясь впихнуть в адресную строку?

PS Не критикую, очень актуально, но сам механизм свой-чужой не очень понял...

1) просто пишешь свое имя и входишь - логин и является идентификатором. Попадёшь, введя логин.

2) можно удалить контакт и сделать новую ссылку, ссылки работают пока есть контакт

3) там будет ссылка с guid, а потом аппка сама предложит себя добавить на экран телефона, авторизация будет по jwt после этого, а так ссылка будет всегда действительна

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

а если я укажу на один сервак несколько доменов, зашедшие будут все в одной группе или в разных?

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

Пора писать предложения/etc. на гитхабе и там обсуждать. Это поможет поднять проект.

Это пока не поддерживается, но идея хорошая!

Буквально сегодня думал, не накропать ли статейку про аналогичное решение на flask, но вы меня опередили...

Автообновления всё же напрашиваются тут на мой взгляд

Я реализовал фоновую горутину, которая проверяет срок действия каждый месяц

Такое себе. Если у вас vps, например, ребутится раз в неделю (или приложение перезапускается), то обновление сертификата так и не будет запущено.

Я ещё не смотрел код, а разве нельзя отсчитывать месяц от даты последнего сертификата (а не от даты перезапуска).

Ребята, не бойтесь, там при старте тоже проверяется валидность

Вы реализовали то что самому хотелось сделать!

Однако нужен docker контейнер, чтоб можно было развернуть на домашнем NAS. Гошка идеально залазит в scratch, нужно только не забыть сертификаты скопировать.

Сделаете?

А что вам мешает запускать бинарник через Systemd или Cron? Домашний NAS обычно на линуксе работает.

Ничего, мне не хочется там разворачивать кастомные решения в обход пакетного менеджера.

Речь про синолоджи.

Да как бы на любом сервере, если там не одно это приложение крутится, не хочется что-то ставить в систему кроме докера. Потом мигрировать задолбаешься.

Приложение с лёгким ароматом нафталина 😁 Казалось уже в 2025 от звонков большинство людей коробит, тем более от видео, оттуда же вот эти галочки все при заказе "не звонить для подтверждения". А тут даже самостоятельно внакрутили себе..

Теперь к техническим моментам. Гонять медиа через единственный turn за 200 рублей? Классический московский географический шовинизм)) А что getStats показывает/покажет, если географию разнести?

Казалось большинство умных людей на хабре коробит от обобщений себя на "большинство". Упомянутые вами галочки по умолчанию кстати выключены.
А TURN за 200 рублей вполне справится с семьёй из 5, да хоть из 50 человек, учитывая невероятность случая, когда все 50 звонят одновременно.

А TURN за 200 рублей вполне справится с семьёй из 5, да хоть из 50 человек

Справится то справится, вопрос на сколько? Если конкретно, то я про latency, если виртуалка в Москве, а звонок Владивосток-Владивосток. Параметр то измеряемый.

Казалось большинство умных людей на хабре коробит от обобщений себя на "большинство".

Так я к умным себя не отношу, но для умного большинства оставлю картинку 😁

Так я к умным себя не отношу, но для умного большинства оставлю картинку 😁

Разве опрос на картинке не касается коммуникации с бизнесами? А в статье обсуждается вопрос коммуницирования с семьей.

A 2021 PEW survey found that 48% of U.S. adults prefer to communicate with family and friends via text messages or messaging apps, while only 32% prefer voice calls. This trend is even more pronounced among younger generations, with 68% of Millennials and 79% of Gen Z preferring text-based communication over voice calls.

Тренд есть тренд, если не хочется, чтоб тебя отвлекали звонком, разницы нет от кого звонок )

Не знаю, как там зумеры, но я голосом говорю всё-таки быстрее, чем печатаю.

Это вас может и коробит, а для старшего поколения, которое не печатает вслепую, видеозвонок - самый простой и естественный способ общения с внуками) Проект делался для конкретной ЦА, а не для большинства из вашего пузыря

Galene не рассматривали? Умеет групповой звонок из коробки

Есть вопрос по "не будет заблокирован"

Если начнут блокировать по IP, а не по домену (что уже происходит), то переезд на новый VPS поможет, но не сильно. Придется постоянно играть в догонялки

А если дойдет до белых списков, то любой self-hosted сервис превратится в тыкву

Интересно, поможет переезд в yggdrasil в случае багов по белым ip?

Mirotalk работает только через квн

Mirotalk - селф-хостед решение. И работает там, где вы его развернете.

А чем плох личный Asterisk на VPS ? Единственное, сейчас приличных SIP-клиентов не найти. Более-менее один удалось настроить, но в фоне не работает и пуши не понимает. Но если запустить руками то вполне себе норм.

Подскажите, пожалуйста, а почему Вы отказались от готового решения nextcloud? Сервер на VDS и приложение nextcloud talk родственникам через Google Play с Вашей ссылкой для авторизации — вот и личная связь. Или я что-то упускаю?

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

А предложенная альтернатива не поделка? Не легаси? И вообще без обновления - поэтому и не упадет?

Ваше аргументы так себе..

NC кастомизируется - можете выбрать установку только nextcloud talk без остальных компонент. И давно уже устновка в один клик из докера.

А уж про функционал и говорить не стоит.

Мир не стоит на месте.

Сделать что-то лучше NC несложно, так-то.

Буквально на днях размышлял на тему семейного безопасного чата.

Пришел к тому что из за белых списков он становится бессмысленным.

А ещё есть мысль что если такими часами пользователи начнут активно пользоваться то у каждой "семьи" будет свой сервер) и почему бы эти сервера не обьеденить? Добровольной форме. В виде создания какого-то пространства в приложении.

Let's Encrypt вроде сократили серты с 90 до 45 дней.

Вчера получал, пока 90

пока еще нет, только приняли решение о датах, в которые сроки валидности сертификатов будут укорачиваться

А я наоборот порадовался, когда эта лажа с видеозвонками схлопнулась. У меня даже бабушек эта лажа бесила. Но все равно находились козлы, которые пытались по видео звонить. Неговоря уже о понаеавших в каждом вагоне метро/мцк, не затыкающихся всю дорогу

Хотелось бы ad-hoc решение, чтобы вся инфра поднималась в нужное время (когда запланирован звонок) и потом убивалась, дабы сервер не простаивал просто так

И вообще в идеале чтобы было p2p без сторонних серверов

Все круто! Спасибо, что делитесь. Нет ли проблемы рассинхрона видео и аудио потоков?

Нет, проблемы нет, все окей

вот попробуй github.com/svanichkin/say, может себе на заметку возьмешь...
никаких vps не требуется если заюзать что то правильное

Чесгря не осилил целиком, но не суть.
Я поднял для своей семьи Jabber/XMPP на своём серваке (в РФ, с российским IP).
На сервере Prosody+coturn.
У клиентов Conversations из F-Droid.
Текст, картинки, голосовые и видео-сообщения, аудио- и видео-звонки, пересылка файлов, история сообщений на сервере и т.д.
Зачем велосипед изобретать?
Вот групповые звонки на нём не пробовал. Наверное, для этого надо пресловутый Jitsi, который тут все советуют, но мне пока не актуально.

ЗЫ: ещё пробовал с Matrix играться (Conduit + Element), но не увидел преимуществ перед Jabber.

Супер решение! Просто, надежно и проверено десятилетиями. Conversations, кстати, тоже вылизана и проверена десятилетиями. Тут, наверное опять скажут что это легаси, без материал и электрона.

Почувствуй себя археологом: интересно просто, сколько из прочитавших это сообщение хоть раз пользовались Jabber? Я сам в последний раз использовал в 2005 или 2006 году.

Ну джаббер 20 лет назад и сейчас это две большие разницы. Сейчас он по функционалу эквивалент WA/TG.

Была похожая проблема/задача.
Использовал Jitsi.

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

У меня это крутится на самом дешевом VPS от бегета за 200 рублей, с 1 гигом оперативки

А подскажите по пушам? если это все pwa пуши прилетают из браузера (chrome сафари)?
в частности на мобильных устройствах, как это выглядит просто шторка или на весь экран аля вам звонят кнопка принять звонок и сбросить?

Обычный пуш. При тапе открывается звонок, сбросить варианта нет, либо проигнорировать, либо тапнуть

а можно пример плиз

Тоже выступаю за то, чтобы каждому иметь подобный селфхостед сетап, и сам пользуюсь похожим, однако должен предупредить - при белых списках это работать не будет.

Не знаю как оно в столицах и городах-миллионниках, но в моём плебейском регионе государство уже какое-то время назад включило на мобильных сетях режим хуже чем в Туркменистане, и доступ даже к российским ресурсам не работает - нет доступа ни к популярным российским VPS провайдерам (если вы хостите ПО в каком-нибудь Селектеле), ни к блокам адресов ISP (если у вас белый адрес от провайдера), ни, что забавно, даже к большей части, собственно, самого белого списка - банки не работают, большинство российских сервисов тоже, из того что работает получилось найти только яндекс и макс. Разумеется, всё селфхостед также недоступно.

Я думаю, что это вопрос нескольких месяцев, максимум полугода, когда чебурнет подобного уровня начнут включать на проводных провайдерах и по всей стране, так что я вот сам подумываю о том, что надо бы скорее пилить мод для макса - использовать его чисто как транспорт и накрутить свой слой end-to-end шифрования сообщений и звонков. На более далёкую перспективу это выглядит более надёжным решением

мод для макса - использовать его чисто как транспорт и накрутить свой слой end-to-end шифрования сообщений и звонков

2 чая господину за находчивость!

Но я бы опасался использовать такой сторонний мод: макс же используется в том числе для авторизацию в госуслугах. Здоровая паранойя будет подсказывать: один звонок и ты в кредитах, второй звонок и ты без хаты.

По счастливой случайности я оказался резидентом Евросоюза

Приветствую!

Будет ли работать за реврес прокси не на корневом контекстном пути, а на каком-нибудь /site-stat ? Причина интереса: со временем может возникнуть потребность прятаться от active probing и на корневой путь повесить что-нибудь неприглядное.

Да, эту функцию я добавил

а что мешает это на прокси реализовать?

Sign up to leave a comment.

Articles