Установка и запуск MeshCentral Server на Linux
Опубликовано:
Используемые термины: MeshCentral, Linux, Ubuntu, Rocky.
Инструкция представляет из себя краткую справку по быстрому развертыванию сервера MeshCentral. Она подойдет как для Linux Debian / Ubuntu, так и Rocky Linux.
Подготовка системы
Установка nodejs
Установка и запуск MeshCentral
Автозапуск с помощью менеджера pm2
Настройка NGINX прокси
Дополнительные материалы
Предварительная настройка
Подготовим нашу систему к корректной работе приложения.
1. Установка пакетов
Для установки приложения нам понадобится curl для загрузки скрипта установки nodejs. В зависимости от типа Linux наши действия будут немного отличаться.
а) Для Linux Deb (Debian / Ubuntu):
apt update
apt install curl
б) Для Linux RPM (Rocky / Oracle / CentOS):
dnf install curl
2. Настройка брандмауэра
По инструкции мы настроим веб-сервис, для подключения к которому нужно открыть порты 80 и 443.
а) для систем на базе deb-пакетов (Debian / Ubuntu):
iptables -I INPUT 1 -p tcp --dport 80 -j ACCEPT
iptables -I INPUT 1 -p tcp --dport 443 -j ACCEPT
apt install iptables-persistent
netfilter-persistent save
б) для систем на базе RPM-пакетов (Rocky / Oracle / CentOS):
firewall-cmd --permanent --add-port={80,443}/tcp
firewall-cmd --reload
в) для систем на базе deb-пакетов (замена iptables):
ufw allow 80/tcp
ufw allow 443/tcp
Установка nodejs
MeshCentral написан на javascript и для запуска использует платформу nodejs. Ее нам нужно установить. Для удобства работы зададим переменную:
export NODE_VER=20
* мы будем устанавливать nodejs версии 20.
В зависимости от типа Linux, набор команд для установки nodejs будут отличаться.
а) Для Linux Deb (Debian / Ubuntu):
curl -sL https://deb.nodesource.com/setup_${NODE_VER}.x | sudo bash -
apt install nodejs
б) Для Linux RPM (Rocky / Oracle / CentOS):
curl -sL https://rpm.nodesource.com/setup_${NODE_VER}.x | sudo bash -
dnf install nodejs
Установка и запуск MeshCentral
Создадим каталог приложения и перейдем в него:
mkdir /opt/meshcentral
cd /opt/meshcentral
Приложение можно установить с помощью пакетного менеджера npm. Выполним:
npm install meshcentral
Теперь можно запустить сервис командой:
node node_modules/meshcentral
Приложение выполнит начальную настройку и запуститься. В итоге, мы увидим:
Server has no users, next new account will be site administrator.
MeshCentral HTTPS server running on port 443.
Открываем браузер и переходим по адресу https://<IP-адрес сервера> — откроется форма для ввода логина и пароля. Также будет доступна ссылка для создания первого пользователя с правами администратора. Переходим по ней и заполняем все необходимые поля. Фиксируем логин и пароль, которые мы задали.
В консоли сервера прерываем работу приложения с помощью Ctrl + C.
Запуск приложения в качестве сервиса
На предыдущих этапах запустили приложение, но когда прервется сессия пользователя, под которым мы запустили команду, сервис перестанет отвечать за запросы.
Настроим автозапуск приложения с помощью pm2. Для этого установим его:
npm install -g pm2
Создадим пользователя meshcentral:
useradd meshcentral -m -s /bin/bash
Зададим его в качестве владельца для рабочего каталога приложения:
chown -R meshcentral:meshcentral /opt/meshcentral
Зайдем под созданным пользователем:
su - meshcentral
Переходим в каталог приложения:
$ cd /opt/meshcentral
Открываем конфигурационный файл meshcentral:
$ vi meshcentral-data/config.json
Находим настройку _port: 443 и меняем порт на port: 3000:
"_port": 443,
"port": 3000,
Если у вас на сервере данный порт занят, необходимо назначить другой. Посмотреть список занятых портов можно командой:
ss -tunlp | grep :3000
Запустим приложение в менеджере pm2:
$ pm2 start --name MeshCentral 'node node_modules/meshcentral'
* в контексте pm2 оно будет называться MeshCentral. Для запуска будет использоваться команда node node_modules/meshcentral.
Сохраняем конфигурацию в pm2:
$ pm2 save
Смотрим команду для настройки автозапуска конфигурации pm2:
$ pm2 startup
Мы должны увидеть команду, которую нужно запустить от суперпользователя. В выводе будет что-то такое:
...
sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u meshcentral --hp /home/meshcentral
Копируем строку и выходим из оболочки пользователя meshcentral:
$ exit
Вводим скопированную команду:
env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u meshcentral --hp /home/meshcentral
Убедимся, что приложение запущено и отвечает на веб-запрос. Выполним команду:
curl -k https://127.0.0.1:3000
Мы должны получить html-вывод.
Настройка NGINX прокси
На предыдущем шаге мы запустили приложения в качестве pm2 процесса. Оно будет запускаться автоматически и слушать на порту 3000. Для удобного контроля http-трафика развернем nginx и настроим его в качестве обратного прокси для MeshCentral.
Выполняем установку веб-сервера. Процесс различается для разных систем.
а) Для Linux Deb (Debian / Ubuntu):
apt install nginx
cd /etc/nginx/sites-enabled
б) Для Linux RPM (Rocky / Oracle / CentOS):
dnf install nginx
systemctl enable --now nginx
setsebool -P httpd_can_network_connect 1
cd /etc/nginx/conf.d
Обратите внимание, что помимо установки nginx в системах RPM мы также должны разрешить его автозапуск и добавить правило SELinux.
Удаляем конфигурацию по умолчанию, если есть:
rm -f default
Создаем конфигурационный файл:
vi meshcentral.conf
server {
listen 80;
server_name mesh.dmosk.ru;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name mesh.dmosk.ru;
ssl_certificate /etc/nginx/ssl/cert.pem;
ssl_certificate_key /etc/nginx/ssl/cert.key;
root /opt/meshcentral;
access_log off;
client_max_body_size 128m;
gzip on;
gzip_disable "msie6";
gzip_min_length 1000;
gzip_vary on;
gzip_proxied expired no-cache no-store private auth;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript;
location / {
proxy_pass https://127.0.0.1:3000;
proxy_redirect off;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
}
}
В нашем примере будет использоваться самоподписанный сертификат. В продуктивной среде лучше использовать купленный или полученный от Let's Encrypt.
Создаем каталог для хранения сертификатов и сгенерируем пару:
mkdir /etc/nginx/ssl
openssl req -new -x509 -days 1461 -nodes -out /etc/nginx/ssl/cert.pem -keyout /etc/nginx/ssl/cert.key -subj "/C=RU/ST=SPb/L=SPb/O=Global Security/OU=IT Department/CN=mesh.dmosk.ru" -addext "subjectAltName = DNS:mesh"
* вы можете заменить значения из примера на свои, но в рамках самоподписанного сертификата и тестирования это не обязательно.
Проверяем корректность конфигурации и перечитываем ее:
nginx -t && nginx -s reload
Готово, можно пробовать заходить на веб-панель по адресу https://<IP-адрес сервера>. Браузер должен выдать ошибку сертификата — игнорируем.
Читайте также
Дополнительные инструкции, которые могут дополнить текущий материал:
1. Установка NodeJS и работа с ним на Rocky Linux.