Для работы WNAM QoW на ваших собственных вычислительных мощностях (on-premises, не в облаке) вам необходимо подготовить соответствующую инфраструктуру. Понадобится виртуальная или физическая машина с ОС Linux.

Рекомендуемые аппаратные характеристики сервера в зависимости от ожидаемой нагрузки:

Тип инсталляцииCPURAMHDDКомментарий
Минимальная (до 3 сенсоров и до 20 точек доступа)2850
Стандартная (до 10 сенсоров и до 100 точек доступа)41650+50Второй дисковый раздел: типа SSD, файловая система xfs

 

Большая (до 100 сенсоров и до 1000 точек доступа)

2850Сервер Proxy+MQTT
41650Сервер приложения QoW
416100Сервер базы данных, диск типа SSD, файловая система xfs

Для системных нужд достаточно диска стандартной производительности (типа SATA).

Выбор операционной системы

Рекомендуется использовать тот дистрибутив Линукса, с которым у вас больше опыта. WNAM QoW может работать на любом дистрибутиве, при наличии в его составе необходимых пакетов. Мы рекомендуем использовать Debian последнего поколения (релиз 13).

Работа под Windows также возможна при условии самостоятельной настройки вами необходимых системных пакетов (брокера MQTT, nginx, mongodb, авто-запуска приложения qow).

WNAM QoW требует следующих системных компонентов:

  • HTTP прокси-сервера nginx для работы веб-интерфейса
  • виртуальной машины Java версии 17 и выше для работы приложения сервера
  • базы данных MongoDB версии 4.4 или выше
  • Брокера MQTT, mosquitto

Вы можете установить все эти компоненты на одном сервере, а можете установить и на разных, в том числе в кластерной конфигурации. Минимальные настройки приведены далее.

Установка Java

Необходимо установить Java JRE из штатного пакета вашего дистрибутива, это предпочтительнее.

apt update && apt install openjdk-17-jdk-headless

Установка фронт-прокси сервера 

apt install nginx

Отредактируйте конфигурационный файл /etc/nginx/sites-available/qow:

server {
	listen 80;
	access_log /var/log/nginx/access.log;
	location / { 
		proxy_pass http://127.0.0.1:8080/;
		proxy_http_version 1.1;
		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 Host $host;
		proxy_set_header X-Forwarded-Proto $scheme; 
		proxy_read_timeout 120;
		proxy_connect_timeout 120;
	}
} 

Если вы имеете SSL сертификат (купленный, или от Let's Encrypt) и хотите использовать сервер WNAM QoW так, чтобы он был доступен вам по протоколу HTTPS, а также использовать Websocket подключение для сенсоров, используйте следующую конфигурацию:

server {
	listen 80 default_server;
	return 301 https://$server_name$request_uri;
	server_name имя_вашего_сервера;
}
server {
	listen 443 ssl default_server;
	ssl_certificate /etc/letsencrypt/live/имя_вашего_сервера/fullchain.pem;
	ssl_certificate_key /etc/letsencrypt/live/имя_вашего_сервера/privkey.pem;
	ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
	ssl_prefer_server_ciphers on;
	ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
	ssl_ecdh_curve secp384r1;
	ssl_session_cache shared:SSL:10m;
	ssl_session_tickets off;
	ssl_stapling on;
	ssl_stapling_verify on;
	resolver 8.8.8.8 8.8.4.4 valid=300s;
	resolver_timeout 5s;
	add_header Strict-Transport-Security "max-age=63072000; includeSubdomains";
	add_header X-Frame-Options SAMEORIGIN;
	add_header X-Content-Type-Options nosniff;
	ssl_dhparam /etc/ssl/certs/dhparam.pem;
	root /var/www/html;
	index index.html;
	server_name имя_вашего_сервера;
	location / { 
		proxy_pass http://127.0.0.1:8080/;
 		proxy_http_version 1.1;
		proxy_set_header Upgrade $http_upgrade;
		proxy_set_header Connection "upgrade"; 
	    proxy_set_header Host $host;
        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 $scheme;
		proxy_read_timeout 120;
		proxy_connect_timeout 120;
	}
	location /mqtt {
		proxy_pass http://127.0.0.1:8884;
		proxy_http_version 1.1;
		proxy_set_header Upgrade $http_upgrade;
		proxy_set_header Connection "upgrade";
		proxy_set_header Host $host;
		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 $scheme;
		proxy_read_timeout 86400s;
		proxy_send_timeout 86400s;
	}
}

Не забудьте сгенерировать файл dhparams:

openssl dhparam -out /etc/ssl/certs/dhparam.pem 4096

Затем создайте символическую ссылку для включения конфига nginx:

ln -s /etc/nginx/sites-available/qow /etc/nginx/sites-enabled/qow

Обязательно удалите стандартный конфиг nginx:

rm /etc/nginx/sites-enabled/default

Проверьте правильность конфигурационного файла nginx и обновите конфигурацию

nginx -t
nginx -s reload

Установка брокера MQTT

apt install mosquitto mosquitto-clients

Отредактируйте конфигурационный файл /etc/mosquitto/mosquitto.conf:

persistence true
persistence_location /mosquitto/data/
persistent_client_expiration 1h
max_queued_messages 50
queue_qos0_messages false

log_dest file /var/log/mosquitto/mosquitto.log

include_dir /etc/mosquitto/conf.d

Создайте файл конфига /etc/mosquitto/conf.d/qow.conf:

listener 1883
allow_anonymous true

listener 8883
allow_anonymous true
cafile /etc/mosquitto/ca_certificates/qow-ca.crt
certfile /etc/mosquitto/certs/qow-server.crt
keyfile /etc/mosquitto/certs/qow-server.key
tls_version tlsv1.2

listener 8884
allow_anonymous true
protocol websockets

Файлы qow-ca.crt, qow-server.crt и qow-server.key вы можете запросить на support@netams.com

Перезапустите службу mosquitto и проверьте логи после запуска:

systemctl restart mosquitto
tail -f /var/log/mosquitto/mosquitto.log

Установка MongoDB

Внимание! Работа с MongoDB версий 3.х и 5.х не поддерживается!

Вы можете воcпользоваться инструкцией с сайта производителя: https://docs.mongodb.com/v4.4/administration/install-on-linux/

wget -qO - https://www.mongodb.org/static/pgp/server-4.4.asc | apt-key add -
echo "deb http://repo.mongodb.org/apt/debian buster/mongodb-org/4.4 main" | tee /etc/apt/sources.list.d/mongodb-org-4.4.list
apt-get update 
apt-get install -y mongodb-org
systemctl unmask mongod
systemctl enable mongod
systemctl start mongod

Создания служебного пользователя и установка приложения QoW:

useradd -m -U -s /bin/false qow
mkdir  /home/qow/logs
mv qos-server.jar /home/qow
chmod +x /home/qow/qos-server.jar
chown qow:qow /home/qow/qos-server.jar /home/qow/logs

В файл /etc/systemd/system/qos-server.service поместите конфигурацию авто-запуска:

[Unit]
Description=WNAM QoS Server Service

[Service]
WorkingDirectory=/home/qow
ExecStart=/usr/bin/java -jar -Dspring.profiles.active=qos -Dspring.config.location=/home/qow/application.properties /home/qow/qos-server.jar
SuccessExitStatus=143
Restart=on-failure
RestartSec=10
User=qow
Group=qow

StandardOutput=file://home/qow/logs/console.log

[Install]
WantedBy=multi-user.target

Включите авто-запуск:

systemctl enable qos-server

В файл /home/qow/application.properties поместите следующие настройки:

netams.serverUri=https://имя_вашего_сервера

spring.mail.host=имя_вашего_почтового_сервера
spring.mail.port=25
netams.mail.from=admin@имя_вашего_сервера

netams.licenseKey=ваш_лицензионный_ключ

Для запуска сервера достаточно прописать лицензионный ключ, но если у нас настроен HTTPS, то пропишите дополнительные поля.

Запустите сервис:

systemctl start qos-server
systemctl status qos-server

Проверьте лог-файл после запуска:

tail -f /home/qow/qos.log

Попробуйте открыть веб-интерфейс сервера по http://имясервера/ или https://имясервера/

Логин и пароль по умолчанию: admin

  • No labels