Chat server linux с

Содержание
  1. Сервера для организации общения по сети (чаты, ICQ и т.п.)
  2. Bahamut
  3. BitlBee
  4. ejabberd
  5. IRCD-Hybrid
  6. ircd-RU
  7. jabberd
  8. Kamailio
  9. MUSCLE
  10. ONLYOFFICE
  11. Openfire
  12. OpenSIPS
  13. Клиент-сервер под linux на c++ общение клиентов «все со всеми» с использованием потоков
  14. ИТ База знаний
  15. Полезно
  16. Навигация
  17. Серверные решения
  18. Телефония
  19. Корпоративные сети
  20. Установка корпоративного чата Rocket.Chat на Linux
  21. Шаг 1. Установка Snap в Linux
  22. Шаг 2: Установка Rocket.Chat в Linux
  23. Шаг 3: Настройка обратного прокси для Rocket.Chat
  24. Обратный прокси Nginx для Rocket.Chat
  25. Обратный прокси Apache для Rocket.Chat
  26. Шаг 4: Установка клиентов Rocket.Chat
  27. Ручная установка Rocket.Chat
  28. Установка Node.js
  29. Установка MongoDB
  30. Создание нового системного пользователя
  31. Установка Rocket.Chat
  32. Создание модуль Systemd
  33. Итоги
  34. Установка и настройка сервера Rocket.Chat на Ubuntu
  35. Установка компонентов
  36. Установка необходимых пакетов
  37. Установка MongoDB
  38. Установка и настройка Rocket.Chat
  39. Установка
  40. Настройка
  41. Установка и настройка клиента
  42. Создание нового пользователя
  43. Настройка языка
  44. Выбор языка в клиенте
  45. Настройка языка по умолчанию
  46. Настройка SSL (Let’s Encrypt)
  47. Установка NGINX и получение сертификата
  48. Настройка NGINX для Rocket.Chat
  49. Установка как snap пакета

Сервера для организации общения по сети (чаты, ICQ и т.п.)

Bahamut

Популярный IRC сервер. Используется на серверах DALnet. Основан на DreamForge и IRCD-Hybrid.

BitlBee

BitlBee — кроссплатформенный IRC‐сервер с открытым исходным кодом, выступающий в роли шлюза для мгновенного обмена сообщениями с другими типами сетей. Приложение является свободным программным обеспечением и распространяется под лицензией GNU General Public License.

ejabberd

ejabberd — это свободный (GNU GPL), распределённый и устойчивый к отказам XMPP-сервер, написанный в основном на Erlang.

IRCD-Hybrid

Старейший и наиболее известный ircd. Именно этот демон используется на большинстве серверов сети EFnet. Hybrid отличается стабильностью работы и гибкостью настройки. Поддерживает IPV6, сжатие трафика и OpenSSL (только для серверов).

ircd-RU

Bahamut с добавленной в него поддержкой кириллицы и других кодировок в названиях ников и каналов. Активно используется в сети WeNet.

jabberd

jabberd (jabber daemon) — это исторически самая первая реализация Jabber-сервера. На первых порах, когда технология делала первые шаги, это был единственный сервер.

Kamailio

Kamailio — Высокопроизводительный SIP-сервер с открытым исходным кодом, форк проекта OpenSER.

MUSCLE

MUSCLE (Multi User Server Client Linking Environment) — это сервер для организации обмена сообщениями и сетевой API.

ONLYOFFICE

ONLYOFFICE™ — это универсальный облачный офис для организации совместной работы. Он позволяет управлять документами, проектами, командой и взаимоотношениями с клиентами в едином пространстве.

Openfire

Openfire — мощный jabber-сервер, написанный на Java. Отличается широкой функциональностью, поддержкой современных стандартов (таких как MUC, Jingle, STUN, PEP), поддержкой кластеризации в платной версии, поддержкой плагинов. Может использовать как встроенную базу данных, так и внешнюю, такую как MySQL, PostgreSQL, Firebird и т.п.

OpenSIPS

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

Источник

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

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

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

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

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

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

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

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

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

Читайте также:  Как сделать темную тему mac os high sierra

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

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

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

Источник

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

Курс по 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 станет доступно через ваш домен, настроенный на прокси-сервере.

Читайте также:  File printing in linux

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

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

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

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

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

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

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

Установите 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 и технологией виртуализации в авторском мини — курсе от Михаила Якобсена

Источник

Установка и настройка сервера Rocket.Chat на Ubuntu

В данной инструкции мы рассмотрим установку и настройку сервиса Rocket.Chat на своем собственном сервере с Ubuntu.

Установка компонентов

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

Установка необходимых пакетов

curl -sL https://deb.nodesource.com/setup_12.x | sudo bash —

apt-get install curl build-essential graphicsmagick nodejs

  • curl — служебная программа для взаимодействия с сервисами по различным протоколам с синтаксисом URL. Нам понадобиться для скачивания файлов.
  • build-essential — пакет, необходимый для сборки других пакетов.
  • graphicsmagick — набор программ для чтения и редактирования файлов различных графических форматов.
  • nodejs — программная платформа, которая делает код javascript в язык общего назначения.

Устанавливаем inherits и node версии 12.14.0:

npm install -g inherits n && sudo n 12.14.0

Установка MongoDB

Конфигурируем репозиторий для MongoDB:

deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.0 multiverse

Импортируем ключ из репозитория для проверки пакетов от подделки:

apt-key adv —keyserver hkp://keyserver.ubuntu.com:80 —recv 9DA31620334BD75D9DCB49F368818C72E52529D4

Обновляем список пакетов:

И устанавливаем mongodb-org:

apt-get install mongodb-org

Вносим изменения в конфигурационный файл:

sed -i «s/^# engine:/ engine: mmapv1/» /etc/mongod.conf

sed -i «s/^#replication:/replication:\n replSetName: rs01/» /etc/mongod.conf

Разрешаем автозапуск mongodb и стартуем его:

systemctl enable mongod

systemctl start mongod

Инициализируем базу данных:

mongo —eval «printjson(rs.initiate())»

Установка и настройка Rocket.Chat

Установка

Для установки скачиваем пакет:

curl -L https://releases.rocket.chat/latest/download -o /tmp/rocket.chat.tgz

* обязательно сохраняем архив в каталог /tmp.

Распаковываем скачанный пакет:

tar zxf /tmp/rocket.chat.tgz -C /tmp

Переходим в распакованный каталог:

Читайте также:  Windows forms label размер

Выполним установку rocket.chat:

. и переносим его в каталог /opt:

mv /tmp/bundle /opt/Rocket.Chat

Настройка

Создаем пользователя для rocketchat:

useradd -M rocketchat

usermod -L rocketchat

* где первая команда создаст пользователя rocketchat без домашнего каталога; вторая — блокирует пароль пользователя.

Задаем владельца для каталога с rocketchat:

chown -R rocketchat:rocketchat /opt/Rocket.Chat

Создаем файл для нового юнита в systemd:

[Unit]
Description=The Rocket.Chat server
After=network.target remote-fs.target nss-lookup.target nginx.target mongod.target

[Service]
ExecStart=/usr/local/bin/node /opt/Rocket.Chat/main.js
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=rocketchat
User=rocketchat
Environment=MONGO_URL=mongodb://localhost:27017/rocketchat?replicaSet=rs01 MONGO_OPLOG_URL=mongodb://localhost:27017/local?replicaSet=rs01 ROOT_URL=http://localhost:3000/ PORT=3000

* в данном примере сервис будет запущен на порту 3000.

Применяем изменения в systemd:

Разрешаем сервис для rocketchat и запускаем сервер для чата:

systemctl enable rocketchat

systemctl start rocketchat

Ждем около 20 секунд — запуск выполняется не сразу.

Если используется брандмауэр, открываем порт:

iptables -A INPUT -p tcp —dport 3000 -j ACCEPT

. и сохраняем настройки:

apt-get install iptables-persistent

Установка и настройка клиента

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

* клиент может быть установлен на Windows, Mac OS, Linux. В данном примере скачиваем для Windows.

Устанавливаем и запускаем программу — откроется окно для подключения. Вводим IP-адрес и порт нашего сервера:

. система проверит подключение к серверу и предложит подключиться к серверу.

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

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

Переходим к администрированию сервера. Кликаем по иконки меню (с тремя точками) и выбираем Administration:

Переходим в раздел Users:

Кликаем по «плюсику» для создания нового пользователя:

Заполняем поля и кликаем по Save.

Настройка языка

Выбор языка в клиенте

Открываем клиентскую программу — кликаем по значку пользователя — выбираем My Account:

Кликаем по Preferences:

Выбираем язык и сохраняем настройки:

Настройка языка по умолчанию

Переходим к администрированию сервера. Кликаем по иконки меню (с тремя точками) и выбираем Administration:

Выбираем пункт меню General:

Выбираем язык по умолчанию:

. и сохраняем настройки.

Настройка SSL (Let’s Encrypt)

Настройка подключения по шифрованному каналу выполняется с помощью веб-прокси. Рассмотрим процесс его установки и настройки, а также получение бесплатного сертификата у Let’s Encrypt.

Установка NGINX и получение сертификата

В качестве веб-сервера удобнее всего использовать NGINX. Установим его командой:

apt-get install nginx

Сразу разрешим автозапуск nginx:

systemctl enable nginx

Если мы не планируем использовать сертификат от Let’s Encrypt, то переходим к настройке nginx для Rocket.Chat.

Игаче, создадим конфигурационный файл с настройками для домена:

server <
listen 80;
server_name rocket.dmosk.ru;
root /usr/share/nginx/html;
>

* в данном примере мы создали виртуальный домен для rocket.dmosk.ru, который слушает запросы только по http. Это нужно, чтобы получить сертификат.

systemctl restart nginx

Если мы используем брандмауэр, создаем правила:

iptables -A INPUT -p tcp —dport 80 -j ACCEPT

iptables -A INPUT -p tcp —dport 443 -j ACCEPT

apt-get install certbot

Получаем сертификат командой:

certbot certonly —webroot —agree-tos —email postmaster@dmosk.ru —webroot-path /usr/share/nginx/html/ -d rocket.dmosk.ru

* данной командой мы создаем запрос на получение сертификата для узла rocket.dmosk.ru, который вы должны заменить своим. Подробнее, процесс описан в инструкции Получение бесплатного SSL сертификата Let’s Encrypt.

Если все сделано правильно, мы увидим:

IMPORTANT NOTES:
— Congratulations! Your certificate and chain have been saved at:
.

Создаем задание для автоматического обновления сертификата:

И добавляем строку:

0 0 * * 1,4 /usr/bin/certbot renew && systemctl reload nginx

Настройка NGINX для Rocket.Chat

Открываем наш конфигурационный файл для nginx:

server <
listen 443;
server_name rocket.dmosk.ru;

ssl on;
ssl_certificate /etc/letsencrypt/live/rocket.dmosk.ru/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/rocket.dmosk.ru/privkey.pem;
ssl_protocols TLSv1.2;

location / <
proxy_pass http://127.0.0.1:3000/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection «upgrade»;
proxy_set_header Host $http_host;

proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forward-Proto http;
proxy_set_header X-Nginx-Proxy true;

* в данном примере мы добавляем настройку для прослушивания 443 порта; в качестве сертификата мы используем /etc/letsencrypt/live/rocket.dmosk.ru/fullchain.pem, которые вы должны заменить своими. Все запросы перенаправляются на локальный сервер порт 3000 (Rocket.Chat).

systemctl restart nginx

Пробуем подключиться к серверу по адресу https: .

Установка как snap пакета

Rocket.Chat поддерживает установку через пакеты snap. Ставим сам snap:

apt-get install snapd

snap install rocketchat-server

Сервер установлен и запрещен, статус можно посмотреть командой:

systemctl status snap.rocketchat-server.rocketchat-server

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

Источник

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