Гид по технологиям

Установка Let's Chat с Nginx на Ubuntu 22.04

• 6 min read • DevOps • Обновлено 28 Nov 2025
Let's Chat на Ubuntu 22.04 с Nginx — руководство
Let's Chat на Ubuntu 22.04 с Nginx — руководство

Введение

Let’s Chat — бесплатное, открытое и «постоянное» (persistent) приложение для обмена сообщениями на Node.js и MongoDB. Оно подходит для небольших команд и поддерживает LDAP/Kerberos, REST‑подобный API и XMPP. В этом руководстве описаны шаги по установке и настройке Let’s Chat на Ubuntu 22.04 с Nginx в качестве обратного прокси.

Определение: persistent messaging — сообщения и диалоги сохраняются на сервере и доступны после повторного подключения.

Важно: в примерах сохраняются исходные пути к изображениям и файлы. ALT‑тексты картинок переведены и уточнены.

Скриншот логина Let's Chat

Предварительные требования

  • Сервер с Ubuntu 22.04.
  • Установлён root‑пароль (или доступ по sudo для администратора).
  • Доступ в интернет для загрузки пакетов и репозиториев.

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

Для запуска Let’s Chat требуется Node.js. Мы устанавливаем текущую LTS‑ветку (пример использует setup_18.x).

Установите зависимости APT:

apt install dirmngr gnupg apt-transport-https ca-certificates software-properties-common -y

Добавьте репозиторий NodeSource и установите Node.js:

curl -sL https://deb.nodesource.com/setup_18.x | bash -
apt-get install nodejs -y

Проверьте версию:

node -v

Ожидаемый вывод (пример):

v18.7.0

Установка MongoDB

Let’s Chat хранит данные в MongoDB. В примере используется MongoDB 4.4, репозиторий для Ubuntu Focal. Ниже — шаги для установки необходимых библиотек и самого MongoDB.

Скачайте и установите пакет libssl (если он требуется для совместимости):

wget http://archive.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.1f-1ubuntu2_amd64.deb  
dpkg -i libssl1.1_1.1.1f-1ubuntu2_amd64.deb

Добавьте GPG‑ключ и репозиторий MongoDB:

wget -qO - https://www.mongodb.org/static/pgp/server-4.4.asc | apt-key add -  
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4 multiverse" | tee /etc/apt/sources.list.d/mongodb-org-4.4.list

Обновите кэш пакетов и установите MongoDB:

apt update
apt install -y mongodb-org

Запустите и включите автозапуск сервиса:

systemctl start mongod
systemctl enable mongod

Проверка статуса:

systemctl status mongod

Пример ожидаемого вывода показывает, что сервис активен и слушает порты (лог обрезан в примере).

Загрузка и установка Let’s Chat

Скачайте исходники приложения и установите зависимости npm:

git clone https://github.com/sdelements/lets-chat.git
cd lets-chat
npm install

Скопируйте пример файла конфигурации и запустите приложение локально для теста:

cp settings.yml.sample settings.yml
npm start

Приложение выведет лог запуска и номер релиза. Для остановки — нажмите CTRL+C.

Создание systemd‑сервиса для Let’s Chat

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

Откройте файл:

nano /etc/systemd/system/letschat.service

Вставьте следующее (пример из исходного руководства):

[Unit]
Description=Let's Chat Server
Wants=mongodb.service
After=network.target mongod.service

[Service]
Type=simple
WorkingDirectory=/root/lets-chat
ExecStart=/usr/bin/npm start
User=root
Group=root
Restart=always
RestartSec=9

[Install]
WantedBy=multi-user.target

Сохраните и перезагрузите конфигурацию systemd:

systemctl daemon-reload
systemctl start letschat
systemctl enable letschat

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

systemctl status letschat

Примечание: по умолчанию в примере сервис запускается от root. Для боевой эксплуатации рекомендуется создать отдельного системного пользователя (см. раздел Безопасность).

Проверьте, что приложение слушает на порту 5000 локально:

ss -antpl | grep 5000

Ожидаемый вывод показывает прослушивание 127.0.0.1:5000 пользователем letschat.

Настройка Nginx как обратного прокси

Установите Nginx:

apt install nginx -y

Создайте конфигурацию виртуального хоста:

nano /etc/nginx/conf.d/letschat.conf

Добавьте конфигурацию (замените letschat.example.com на ваш домен):

server {
server_name letschat.example.com;
listen 80;

access_log /var/log/nginx/lets_chat-access.log;
error_log /var/log/nginx/lets_chat-error.log;

location / {
proxy_set_header   X-Real-IP $remote_addr;
proxy_set_header   Host      $host;
proxy_http_version 1.1;
proxy_set_header   Upgrade $http_upgrade;
proxy_set_header   Connection 'upgrade';
proxy_cache_bypass $http_upgrade;
proxy_pass         http://127.0.0.1:5000;
}

}

Проверьте синтаксис и перезапустите Nginx:

nginx -t
systemctl restart nginx
systemctl status nginx

После этого сайт должен быть доступен по HTTP на вашем домене.

Замечание: для безопасной эксплуатации обязательно включите TLS (см. раздел Безопасность).

Доступ к веб‑интерфейсу

Откройте в браузере URL http://letschat.example.com (замените на ваш домен).

Экран входа Let's Chat

Нажмите на кнопку «I need an account» для регистрации.

Страница регистрации пользователя

Заполните имя пользователя, пароль и email, затем нажмите «Register». После успешной регистрации появится подтверждение:

Успешная регистрация

Нажмите «OK» и войдите в систему:

Экран входа пользователя

Вводим имя и пароль, нажимаем «Sign In» — вы попадёте на монитор (чат‑ручель):

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

Безопасность и эксплуатация

Ключевые рекомендации для продакшн‑сервера:

  • Запустите Let’s Chat от отдельного пользователя, не от root. Создайте пользователя letschat:group и измените WorkingDirectory и User/Group в systemd‑юните.
  • Настройте TLS (Let’s Encrypt или коммерческий сертификат) и перенаправляйте HTTP на HTTPS.
  • Ограничьте доступ к MongoDB: слушайте только локально (bindIp: 127.0.0.1) и используйте аутентификацию MongoDB для продакшн‑данных.
  • Разверните firewall (ufw/iptables): откройте 80 и 443, закройте внешние порты MongoDB и Node.js.
  • Регулярно проверяйте обновления Node.js, npm зависимостей и MongoDB.

Пример быстрой настройки TLS с certbot:

apt install certbot python3-certbot-nginx -y
certbot --nginx -d letschat.example.com

После получения сертификата certbot обновит конфигурацию Nginx для HTTPS.

Отладка и типичные проблемы

  1. Проблема: приложение не стартует в systemd.

    • Проверьте логи: journalctl -u letschat -f.
    • Убедитесь, что WorkingDirectory корректен и права доступа верны.
  2. Проблема: сайт недоступен извне, но локально доступен на 127.0.0.1:5000.

    • Проверьте конфигурацию Nginx и что proxy_pass указывает на 127.0.0.1:5000.
    • Убедитесь, что firewall не блокирует 80/443.
  3. Проблема: ошибки подключения к MongoDB.

    • Проверьте, что mongod запущен и слушает (systemctl status mongod).
    • Проверьте настройки settings.yml приложения на корректную строку подключения MongoDB.
  4. Проблема: npm выдаёт DeprecationWarning (предупреждение об устаревших методах).

    • Это предупреждение не блокирует запуск, но стоит обновить зависимости или код, если возможно.

Миграции и совместимость

  • Если ваша Ubuntu или окружение используют более новые версии OpenSSL, а пакет libssl1.1 требуется — внимательно проверьте зависимые пакеты и безопасность.
  • MongoDB 4.4 указан в примерах; при обновлении до более новых версий проверьте совместимость с ORM/драйвером mongoose.

Критерии приёмки

  • Сервис letschat активен и включён: systemctl status letschat показывает Active: active (running).
  • Nginx перенаправляет трафик на локальный порт 5000 и отвечает по HTTPS (если настроен): curl -I https://letschat.example.com возвращает 200/302.
  • Пользователь может зарегистрироваться и авторизоваться, отправить сообщение в чат.
  • MongoDB принимает подключения от приложения и сохраняет документы (проверяем через mongo или mongosh).

Чек‑лист ролей (быстрое применение)

Администратор:

  • Установил Node.js и MongoDB
  • Создал systemd‑юнит и настроил автозапуск
  • Настроил Nginx и TLS
  • Настроил firewall и резервное копирование MongoDB

Разработчик / DevOps:

  • [ ] Проверил логи через journalctl и nginx логи
  • Убедился в корректной работе websocket/Upgrade заголовков
  • Настроил мониторинг (CPU, память, диск)

Обычный пользователь:

  • Успешно зарегистрировался
  • Вошёл в аккаунт и отправил тестовое сообщение

Быстрая методология развёртывания (mini‑playbook)

  1. Подготовить сервер: обновить пакеты, настроить часы и резервное копирование.
  2. Установить Node.js → Установить MongoDB → Проверить запуск mongod.
  3. Клонировать репозиторий Let’s Chat → npm install → скопировать settings.yml.
  4. Создать systemd‑юнит под непривилегированным пользователем → запустить службу.
  5. Установить Nginx → создать конфигурацию → настроить TLS.
  6. Тестировать регистрацию, вход и обмен сообщениями.

Тесты приёмки

  • Проверка HTTP кода 200 при GET / на домене.
  • Проверка успешной регистрации/входа через интерфейс.
  • Проверка, что сообщения сохраняются в базе данных и видны другим пользователям.

Заключение

Поздравляем — вы установили и настроили Let’s Chat на Ubuntu 22.04 с Nginx в роли обратного прокси. Для боевой эксплуатации выполните дополнительные шаги по безопасности: запуск от ненулевого пользователя, включение TLS, настройка аутентификации MongoDB и резервного копирования.

Если у вас есть конкретные вопросы по адаптации к вашей инфраструктуре (LDAP, Kerberos, Docker‑развёртывание), задайте их — я помогу с настройкой.

Часто задаваемые вопросы

Как сменить порт, на котором работает Let’s Chat?

Измените параметр запуска в systemd‑юните или укажите переменные окружения/настройки в settings.yml для изменения порта. После изменения перезапустите службу: systemctl restart letschat.

Как включить TLS/HTTPS для домена?

Самый простой способ — использовать certbot с плагином nginx: certbot --nginx -d your.domain — он получит сертификат и обновит конфигурацию Nginx.

Как запускать Let’s Chat не от root?

Создайте системного пользователя: useradd -r -s /bin/false letschat, установите права на каталог /home/letschat или другой рабочий каталог, обновите User= и Group= в файле /etc/systemd/system/letschat.service и перезапустите daemon.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро