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

Предварительные требования
- Сервер с 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 (замените на ваш домен).

Нажмите на кнопку «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.
Отладка и типичные проблемы
Проблема: приложение не стартует в systemd.
- Проверьте логи:
journalctl -u letschat -f. - Убедитесь, что WorkingDirectory корректен и права доступа верны.
- Проверьте логи:
Проблема: сайт недоступен извне, но локально доступен на 127.0.0.1:5000.
- Проверьте конфигурацию Nginx и что proxy_pass указывает на 127.0.0.1:5000.
- Убедитесь, что firewall не блокирует 80/443.
Проблема: ошибки подключения к MongoDB.
- Проверьте, что mongod запущен и слушает (systemctl status mongod).
- Проверьте настройки
settings.ymlприложения на корректную строку подключения MongoDB.
Проблема: 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)
- Подготовить сервер: обновить пакеты, настроить часы и резервное копирование.
- Установить Node.js → Установить MongoDB → Проверить запуск mongod.
- Клонировать репозиторий Let’s Chat → npm install → скопировать settings.yml.
- Создать systemd‑юнит под непривилегированным пользователем → запустить службу.
- Установить Nginx → создать конфигурацию → настроить TLS.
- Тестировать регистрацию, вход и обмен сообщениями.
Тесты приёмки
- Проверка 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.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента