Для работы WNAM QoW на ваших собственных вычислительных мощностях (on-premises, не в облаке) вам необходимо подготовить соответствующую инфраструктуру. Понадобится виртуальная или физическая машина с ОС Linux.
Рекомендуемые аппаратные характеристики сервера в зависимости от ожидаемой нагрузки:
| Тип инсталляции | CPU | RAM | HDD | Комментарий |
|---|---|---|---|---|
| Минимальная (до 3 сенсоров и до 20 точек доступа) | 2 | 8 | 50 | |
| Стандартная (до 10 сенсоров и до 100 точек доступа) | 4 | 16 | 50+50 | Второй дисковый раздел: типа SSD, файловая система xfs |
Большая (до 100 сенсоров и до 1000 точек доступа) | 2 | 8 | 50 | Сервер Proxy+MQTT |
| 4 | 16 | 50 | Сервер приложения QoW | |
| 4 | 16 | 100 | Сервер базы данных, диск типа 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