Для работы 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 install openjdk-17-jdk-headless
Установка фронт-прокси сервера
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-enabledln -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
Обратите внимание, что расположение файлов (лог, pid и т.п.) зависит от версии дистрибутива ОС. Например, Ubuntu создаёт pid-файлы в var/run/mosquitto/mosquitto.pid
и /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
Внимание! Для mosquitto версии 2 и выше добавьте в него также строку:
allow_anonymous true
Файлы 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
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=qowStandardOutput=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=300mnetams.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#rate for Scheduled com.netams.core.health.HealthCheckService#checkDevicesHealth
scheduled.health.check.devices.period=15000
#enable initialization tasks on startup
netams.initial.runInitialTasks=true
Запустите:
systemctl start qos-server
systemctl status qos-server
Проверьте лог-файл /home/qow/qos.log
Попробуйте открыть веб-интерфейс сервера по http://имясервера/ или https://имясервера/
Логин и пароль по умолчанию: admin