Сервер чата под linux

Содержание
  1. ИТ База знаний
  2. Полезно
  3. Навигация
  4. Серверные решения
  5. Телефония
  6. Корпоративные сети
  7. Установка корпоративного чата Rocket.Chat на Linux
  8. Шаг 1. Установка Snap в Linux
  9. Шаг 2: Установка Rocket.Chat в Linux
  10. Шаг 3: Настройка обратного прокси для Rocket.Chat
  11. Обратный прокси Nginx для Rocket.Chat
  12. Обратный прокси Apache для Rocket.Chat
  13. Шаг 4: Установка клиентов Rocket.Chat
  14. Ручная установка Rocket.Chat
  15. Установка Node.js
  16. Установка MongoDB
  17. Создание нового системного пользователя
  18. Установка Rocket.Chat
  19. Создание модуль Systemd
  20. Итоги
  21. Клиент-сервер под linux на c++ общение клиентов «все со всеми» с использованием потоков
  22. Муки выбора корпоративного мессенджера: бесплатно, свой сервер, не iChat
  23. Начало
  24. Так почему бы просто не использовать Skype/Whatsapp/Telegram/Viber/ICQ?
  25. Требования к чату от организации
  26. Требования к чату от меня
  27. По стопам айчата
  28. Эти ваши хипстерские слэки
  29. Но хотелось бы нашего
  30. Вкратце плюшки и минушки рокет чата
  31. Какие прикольные фишки я нашел для себя в новых чатах
  32. В заключение

ИТ База знаний

Курс по Asterisk

Полезно

— Узнать IP — адрес компьютера в интернете

— Онлайн генератор устойчивых паролей

— Онлайн калькулятор подсетей

— Калькулятор инсталляции IP — АТС Asterisk

— Руководство администратора FreePBX на русском языке

— Руководство администратора Cisco UCM/CME на русском языке

— Руководство администратора по Linux/Unix

Серверные решения

Телефония

FreePBX и Asterisk

Настройка программных телефонов

Корпоративные сети

Протоколы и стандарты

Установка корпоративного чата Rocket.Chat на Linux

10 минут чтения

Rocket.Chat — это бесплатный масштабируемый open source корпоративный чат, разработанный с помощью Meteor. Rocket.Chat можно считать аналогом Slack, который можно развернуть на своем сервере, и подключаться к нему с клиентов на Linux, Windows, macOS, Android и iOS.

Онлайн курс по Linux

Мы собрали концентрат самых востребованных знаний, которые позволят тебе начать карьеру администратора Linux, расширить текущие знания и сделать уверенный шаг к DevOps

  • Чат в реальном времени
  • Аудиоконференции
  • Видеоконференции
  • Каналы
  • Гостевой вход
  • Трансляция экрана
  • Передача файлов
  • Полнофункциональный API

Для обеспечения безопасности используется:

  • Групповая синхронизация LDAP
  • Двухфакторная аутентификация 2FA
  • Сквозное шифрование
  • Единый вход SSO
  • Несколько поставщиков Oauth аутентификации

Рассказываем как установить и настроить сервер и клиент Rocket.Chat в Linux.

Шаг 1. Установка Snap в Linux

Для простоты мы будем использовать систему управления пакетами Snaps. Первым делом надо установить пакет snapd c помощью диспетчера пакетов.

Далее необходимо включить модуль systemd , который управляет основным сокетом мгновенной связи. Эта команда запустит сокет и позволит ему запускаться при загрузке системы.

Шаг 2: Установка Rocket.Chat в Linux

Для установки rocketchat-server выполните:

Когда установка через snap будет завершена, rocket.chat сервер начнет работать и прослушивать порт 3000 . Далее откройте веб-браузер и введите следующий адрес, чтобы настроить rocket.chat через GUI.

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

Далее надо указать информацию об организации: тип организации, название, отрасль, размер, страна и сайт.

Затем нужно указать информацию о сервере — имя сайта, язык, тип сервера, и включение или отключение двухфакторной аутентификации 2FA.

На следующей странице нужно зарегистрировать сервер. Здесь есть две опции. Первая — использовать предварительно настроенные шлюзы и прокси, предоставленные Rocket.Chat Вторая — сохранить автономность и создать учетные записи у поставщиков услуг, обновить предварительно настроенные параметры, а также перекомпилировать мобильные приложения с вашими частными сертификатами.

Настройка завершена, и ваше рабочее пространство готово, теперь надо нажать Go to your workspace (Перейти в рабочее пространство)

Вот так оно выглядит.

Шаг 3: Настройка обратного прокси для Rocket.Chat

Обратный прокси-сервер, например nginx или Apache, позволяет настроить приложение Rocket.Chat для доступа через домен или поддомен. Rocket.Chat является сервером приложений среднего уровня, который не поддерживает SSL/TLS. Обратный прокси-сервер позволит настраивать сертификаты SSL/TLS для включения HTTPS.

Обратный прокси Nginx для Rocket.Chat

Сначала установите Nginx.

Далее запустите службу Nginx, включите ее автоматический запуск при загрузке системы и проверьте ее статус

Затем создайте block файл виртуального сервера для приложения Rocket.Chat, например, в каталоге /etc/nginx/conf.d/ .

Далее вставьте конфигурацию в этот файл, заменив домен на свой и сохраните.

Наконец проверьте синтаксис и перезапустите службу Nginx.

Обратный прокси Apache для Rocket.Chat

Установите пакет Apache2

Далее запустите и включите службу apache и проверьте, запущена ли она и работает.

Затем создайте файл виртуального хоста для приложения Rocket.Chat, например, в каталоге /etc/apache2/sites-available/ или /etc/httpd/conf.d/ .

Далее вставьте конфигурацию в этот файл, заменив домен на свой и сохраните.

В Ubuntu и Debian включите необходимые модули apache2 и перезапустите службу.

В CentOS/RHEL и Fedora перезапустите службу apache .

Теперь откройте браузер и введите ваш настроенный адрес и приложение Rocket.Chat станет доступно через ваш домен, настроенный на прокси-сервере.

Шаг 4: Установка клиентов Rocket.Chat

Клиентские приложения можно скачать с официального сайта Rocket.Chat. Чтобы установить десктопное приложение в Linux, вы загрузите пакет deb (x64) или rpm (x64) в зависимости от вашего дистрибутива Linux.

Затем установите пакет с помощью диспетчера пакетов dpkg или rpm

Ручная установка Rocket.Chat

Если вы не хотите устанавливать Rocket.Chat через Snaps, вы можете сделать это вручную.

Установка Node.js

Сначала обновите список системных пакетов:

Читайте также:  Драйвер адб для windows 10

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

Мы будем использовать n , пакет npm, который позволяет интерактивно управлять версиями Node.js. Выполните команды ниже, чтобы установить n и Node.js:

Установка MongoDB

MongoDB — это документно-ориентированная база данных NoSQL, которая используется Rocket.Chat для хранения данных.

Импортируйте открытый ключ MongoDB и включите официальный репозиторий MongoDB:

После включения репозитория apt обновите список пакетов и установите MongoDB, набрав:

Затем включите и запустите службу MongoDB:

Создание нового системного пользователя

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

Добавьте пользователя www-data в новую группу пользователей и измените права доступа к каталогу /opt/rocket , чтобы Nginx мог получить доступ к установке Rocket.Chat:

Установка Rocket.Chat

Переключитесь на пользователя rocket

Загрузите последнюю стабильную версию Rocket.Chat с помощью curl :

После завершения загрузки извлеките архив и переименуйте каталог в Rocket.Chat:

Перейдите в каталог Rocket.Chat/programs/server и установите все необходимые пакеты npm:

Чтобы протестировать нашу установку перед созданием модуля systemd и настройкой обратного прокси с Nginx или Apache, мы установим необходимые переменные среды и запустим сервер Rocket.Chat

Вернитесь в каталог Rocket.Chat и запустите сервер Rocket.Chat, введя следующие команды:

Если ошибок нет, вы должны увидеть следующий вывод:

Остановите сервер Rocket.Chat с помощью Ctrl+C и вернитесь к своему пользователю sudo, набрав exit .

Создание модуль Systemd

Чтобы запустить Rocket.Chat как службу, нужно создать файл модуля rocketchat.service в каталоге /etc/systemd/system/ .

Вставьте следующий код:

Сообщите systemd, что мы создали новый файл модуля, и запустите службу Rocket.Chat, выполнив:

Проверьте статус сервиса:

Вывод должен быть таким:

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

Готово, мы установили Rocket.Chat вручную, теперь можно переходить к настройке обратного прокси и инициализации системы, которые были описаны начиная с шага 3.

Итоги

В этом руководстве вы узнали, как установить Rocket.Chat в Linux и как настроить Nginx и Apache в качестве обратного прокси.

Чтобы узнать больше о Rocket.Chat посетите страницу документации.

Мини — курс по виртуализации

Знакомство с VMware vSphere 7 и технологией виртуализации в авторском мини — курсе от Михаила Якобсена

Источник

Клиент-сервер под linux на c++ общение клиентов «все со всеми» с использованием потоков

Начну с того, что была предложена работа на должность программиста с\с++. Задание это название темы.

Полез в интернет, кругом все напичкано чатами и общением по типу клиент-сервер, но увы кода с подобным заданием я так и не нашел. Был примитив типа ЭХО клиент-сервера, который я и решил взять за основу:
Это у нас клиент:

это код сервера:

После всего этого в клиенте нужно отправить сообщение серверу используя функции send или write а на стороне сервера принять сообщение и переотправить его обратно клиенту используя функции read и send.

Вообще есть разные функции отправки и приема, к примеру send и recv вместе с сообщением шлют еще и флаг подтверждения, а функции read и write не требуют подтверждения, то есть сообщение может потерять байты при отправке и это не будет зафиксировано.

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

Для общения между несколькими сокетами необходимо использовать функцию select, которая выбирает сокет из списка и отсылает ему сообщение, и так далее, пока не закончатся все записанные сокеты

После этого в массив сокетов будет записано правильное значение подключаемого сокета а далее остается лишь перебирать их при рассылке сообщений:

Запишем все это в функцию и создадим отдельный поток:

Что касаемо клиента, то необходимо создать два разных потока для чтения и записи в сокет:

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

Источник

Муки выбора корпоративного мессенджера: бесплатно, свой сервер, не iChat

Всем привет, меня зовут Дмитрий, я работаю разработчиком в небольшой софтверной компании в России уже 5 лет. Я бы хотел рассказать про то, как «исторически сложилось» с чатом в нашей компании, поделиться своими муками выбора достойного наследника и найденными решениями.

Начало

Когда я в первый день пришёл на работу, мне показали моё рабочее место, дали компьютер, зарегистрировали в Жире и Гитлабе, и показали главное средство общения сотрудников между собой — iChat. Можно подумать, это что-то про Apple, но всё было немного ужасней.

На моё охудивлённое лицо коллеги пояснили, что так исторически сложилось (какая-нить ссылка), и в общем-то все понимают, что это немного странно, но менять никто ничего не планирует. Ведь у айЧата (полностью он называется Intranet Chat — Википедия) столько плюсов:

  • стоит на нашем сервере и не шуршит
  • всё бесплатно (Автор программы выпустил последнюю версию в 2002 году, бесплатно)
  • «обладает эстетичным и несложным интерфейсом» (спасибо за цитату, Википедия)
  • есть все необходимые функции — личные чаты и «доска объявлений»
Читайте также:  Все версии ccleaner для windows

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

  • нет истории — перезагрузи комп, и если тебе вчера твой коллега Вася отправил чей-то е-мэйл, отправляйся читать логи в текстовом файле
  • нельзя передавать файлы — добро пожаловать корпоративный ftp-обменник, общие папки на диске, или личные облачка (я лично при надобности гоняю свой аккаунт OneDrive)
  • невозможно нормально сидеть в чате из внешки (нормально написать коллегам выйдет только подключившись по VPN или RDP)
  • нельзя написать тому, кто сейчас офлайн — если коллега сегодня работает из дома, или ушел пораньше, или сейчас нерабочее время — запомни своё послание до лучших времён
  • вдогоночку, клиент есть только под Windows времен 98-й версии — никаких вам айфонов и онлайна 24 часа в сутки
  • естественно, нет нормальной подсветки чего-либо: кода, ссылок (ладно, подсветка есть, но нажимать на них нельзя), гипертекста

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

Так почему бы просто не использовать Skype/Whatsapp/Telegram/Viber/ICQ?

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

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

Тогда я спросил нашего начальника отдела, нельзя ли взять программу поновей и всё-таки от Apple более технически продвинутую, чтобы все не страдали фигнёй и могли спокойно чатиться в одном месте. «Нет такой программы», — последовал ответ. Как нет, подумал я, и сказал, что точно есть, не может не быть. «Тогда найди, а там посмотрим». Ок, сейчас же цифровой век, всё гуглится, несложно же найти что-то вменяемое, подумал я. Я немного ошибался.

Требования к чату от организации

Требования к чату от меня

По стопам айчата

Сначала я пытался найти что-то похожее на айчат, маленькое, локальное, бесплатное, под винду, без премудростей. Российские предложения в этом сегменте рынка представляют собой зачастую что-то невероятное: бедный набор функциональности, замерший где-то на середине 2000-х, сочетается с топорным юзер-интерфейсом а-ля «мой первый проект на Delphi» и конской ценой, которой могут только мечтать маркетологи из JetBrains и Adobe. Часто в комплекте идёт полное или частичное отсутствие поддержки.

Один из лучших вариантов, который мне удалось найти — чат «Commfort». Название меня заинтриговало, а на деле всё оказалось не так уж и комфортно.

Стоимость комфорта для моей организации из примерно 30-40 человек: 16 тысяч рублей.

Продукт имеет привлекательные функции, но отпугивает своим интерфейсом и не внушает уверенности в его качестве. Да и по цене мы с ним не пролазим.

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

Эти ваши хипстерские слэки

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

Ну слэк значит слэк, не может же быть столько хайпа из ничего. Беглый осмотр пациента показал наличие новых примочек, каких-то каналов с хэштегами и непривычный интерфейс. И желание быть на острие технологий было конечно сильно, но у интерфейса нашего заморского друга совсем нет переводов на другие языки, да и на свой сервер сможет его себе поставить разве что эппл (который, как известно, может всё, но не всё хочет). Что ж, немного фэйл.

О, а ещё есть хипчат. Это как слэк, только хипчат. И тоже нет перевода, и тоже не поставить к себе. Зато для хипстеров. И для роботов.

Читайте также:  Flex windows как использовать

(голосом робота-хипстера) Что-то новое — это же так здорово!

Но хотелось бы нашего

Уже успев порядком расстроиться от безысходности, через пару недель я почти случайно наткнулся на Zulip — OpenSource-конкурент слэка (а может и не конкурент, кто их там разберет), очень похожий на то, что мне нужно. Он бесплатен, и установить его на свой сервер может любой желающий, даже если этот желающий — компания из 50 человек.

Хотя очень быстро стало понятно, что этот вариант не подходит по причине усложненности (есть, секции, в секциях есть темы, и только в темах живут чаты, в которые можно что-то написать) и, как бы это сказать без англицизмов… ладно, куда уж без них, User Experience в нём в общем печален. И да, только на английском языке.


Примерно так выглядит пациент с непонятным именем

Но ведь это уже ближе, и действительно может быть есть что-то подходящее в мире OpenSource! Ещё немного погонял строку поиска, и нашел Mattermost и Rocket chat. Последний в итоге и получил приз зрительских симпатий имени меня, и вошел в наш дом новым членом экосистемы ПО. А всё почему, потому что переводы, переводы есть у него!


Вот как-то так это всё выглядит

Вкратце плюшки и минушки рокет чата

Сначала конечно плюсы:

  • Есть перевод на русский язык. Да он не полный, но почти, а в случае чего можно что-то доперевести нужные вещи на свой язык. Переводы хостятся на портале lingohub.com, специально для этого сделанном. Автор этого поста к своей чести (и скромности) перевел 60% из того, что ещё переведено не было, и не собирается останавливаться.
  • Можно поставить на свой сервер под Linux одной строчкой (реально, одной, и он работает).
  • Клиенты есть подо все платформы, кроме Windows Phone 🙁 бедная, бедная WP! (Я сам бывший владелец Lumia)
  • Есть веб-версия, можно по-быстрому зайти с любого девайса и, допустим, перекинуть файл логов с компьютера клиента, отправить стектрейс или просто написать коллеге
  • Отдельно можно настроить все уведомления: из каких чатов тебе показывать уведомления, а из каких нет; отдельные настройки уведомлений для мобильных и десктопных устройств
  • Есть файловый сервер, можно кидать файлы
  • Бесплатен
  • Активно разрабатывается, пилятся новые фичи, баги исправляются

Теперь минусы:

  • Баги. Куда же без них родимых. Они есть. Местами при нажатии куда-то не происходит ничего, местами наоборот происходит что-то, чего совсем не ждешь. Но надо сказать, что их не много, и в целом ситуация примерно как у Ксяоми: дешево и с багами, но в целом пойдёт.
  • Десктопный клиент на электроне, что само по себе может и не минус, но всё-таки не совсем классно.
  • Мобильный клиент — это практически копия десктопного, подключенная через WebView (наверное). На смартфоне работает не шустро и не отзывчиво.
  • В интерфейсе нигде нет списка всех пользователей. Вот не знаю как вы, а я в корпоративном чате хочу видеть список всех своих коллег. Потому что имена части коллег я не знаю, а о существовании некоторых и не догадываюсь.
  • Ммм, что там ещё. Да, нет статуса «В отпуске». Вот ушёл я в отпуск, поставил статус «в отпуске» и всё в шоколаде.

Кому интересно, рокет чат есть на бесплатном демо-серваке с полным доступом вот тут.

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

Аватары — позволяют новичкам или просто интровертам лучше ориентироваться, кто есть кто.

Интеграции — позволяют кидать в чат гифки показывать уведомления о событиях от GitLab-сервера, о новых статьях от корпоративного блога, и ещё черт знает что от черт знает чего.

В заключение

В общем, на текущий момент мы обкатываем рокет чат у нас в нескольких отделах, к нему подключились все, кто желал.

Теперь я ломаю голову о другом — как же сделать так, чтобы все сотрудники забыли про старый добрый айчат и пользовались новым, хипсторским Рокет Чатом. А ещё временами подумываю, а правильный ли всё-таки выбор я сделал.

P. S. Если вы прочитали эту статью, и у вас в голове возникла мысль dafuq did I just read «зачем же автор написал эту замечательную статью», сразу отвечу:

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

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

В третьих, автору просто хотелось пожаловаться на то, какой плохой этот мир, на недостижимость идеалов и тщетность бытия, но Хабр Гиктаймс — не жалобная книга, так что про это тсссссссс…

Источник

Оцените статью