Для работы 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 последнего поколения (релизы 10 или 11).

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

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

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

Установка Java 

wget -qO - https://adoptopenjdk.jfrog.io/adoptopenjdk/api/gpg/key/public | apt-key add -
add-apt-repository --yes https://adoptopenjdk.jfrog.io/adoptopenjdk/deb/
apt install adoptopenjdk-8-hotspot

вы также можете установить Java JRE из штатного пакета вашего дистрибутива.

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

apt-get 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_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_read_timeout 120;
proxy_connect_timeout 120;
}

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

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_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;
}
}

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

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

Затем создайте ссылку: 

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

Обязательно удалите /etc/nginx/sites-enabled/default :

rm /etc/nginx/sites-enabled/default

Проверьте правильность конфигурационного файла через: 

nginx -t

Перезапустите сервис:

service nginx restart

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

apt-get install mosquitto mosquitto-clients

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

pid_file /var/run/mosquitto.pid

persistence true
persistence_location /var/lib/mosquitto/

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

include_dir /etc/mosquitto/conf.d


и /etc/mosquitto/conf.d/qow.conf :

port 1883

listener 8883
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

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

Перезапустите службу: systemctl restart mosquitto.service и проверьте лог-файл  /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
mv qos-server.jar /home/qow
chmod +x /home/qow/qos-server.jar
chown qow:qow /home/qow/qos-server.jar

В файл /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 поместите следующие настройки:

spring.application.name=WNAM QoS Server
server.use-forward-headers=true
server.tomcat.protocol-header=x-forwarded-proto
server.tomcat.remote-ip-header=x-forwarded-for
server.tomcat.basedir=.
server.port=8080
server.address=127.0.0.1
server.servlet.session.timeout=300m

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

ya.apiKey=880c9fc2-78c7-46c5-9457-8dbb5eac419d
ya.auth.clientSecret=секрет
ya.auth.clientId=айди
ya.auth.callback=https://имя_вашего_сервера/ya/auth/callback
ya.locator.apiKey=AHqZql8BAAAA09JiAwIA1G7QasD2nDWlgY2PiEEozTaXlIIAAAAAAAAAAAARAi0kd2og83NEZIGkvj0pFHfBkw==

spring.data.mongodb.database=qow

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

netams.mqtt.serverUri=tcp://localhost:1883

netams.mqtt.clientId=qow
netams.remoteToken=snasjdfhasjkdflasdlkasdkjlasdgf
netams.licenseKey=ваш_лицензионный_ключ
netams.deviceType=qos


Запустите:

systemctl start qos-server
systemctl status qos-server

Проверьте лог-файл /home/qow/qos.log

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

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