Установка и запуск MeshCentral Server на Linux

Обновлено и опубликовано Опубликовано:

Используемые термины: MeshCentral, Linux, Ubuntu, Rocky.

Инструкция представляет из себя краткую справку по быстрому развертыванию сервера MeshCentral. Она подойдет как для Linux Debian / Ubuntu, так и Rocky Linux.

Предварительная настройка

Подготовим нашу систему к корректной работе приложения.

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.

2. Настройка NGINX + NodeJS на Ubuntu Server.

3. Получение бесплатного SSL сертификата Let's Encrypt.

# Linux # Серверы # Управление
Дмитрий Моск — частный мастер
Была ли полезна вам эта инструкция?

Да            Нет

Дмитрий Моск
— IT-специалист.
Настройка серверов, услуги DevOps.

Нужна бесплатная консультация?

Мини-инструкции

Как установить и настроить SambaDC (Active Directory) на Linux Ubuntu

Как установить систему для удаленного управления устройствами MeshCentral на Linux

Настройка Dovecot Solr для ускорения поиска по почте

Установка и настройка Signaling Server (High-performance backend) для Nextcloud Talk на Ubuntu Server

Как установить и настроить сервис S3 на базе Minio на Linux

Организация сервиса календаря и адресной книги Baikal на Linux Debian

Установка и запуск Aptly API, а также примеры работы с ним

Другие инструкции

Все статьи

Нужна помощь? Пишите:






Реклама