WNAM требует для своей работы ряд системного программного обеспечения, которое требуется установить на вашем сервере.
1. Система управления базой данных MongoDB и среда Java JDK
Все данные (настройки, страницы портала абонентов, сведения о пользователях Wi-Fi, их сессиях и т.п.) хранятся в No-SQL базе данных MongoDB. Рекомендуется использовать последнюю версию этой БД, 4.4. К сожалению, в штатных репозиториях ОС Debian соответствующих пакетов нет, но их можно поставить, пользуясь официальной инструкцией от производителя https://docs.mongodb.com/manual/tutorial/install-mongodb-on-debian/
Вкратце вам необходимо выполнить следующие команды:
apt-get install gnupg
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 enable mongod
systemctl start mongod
systemctl status mongod
Настраивать mongodb не надо, кроме случая подготовки отказоустойчивого кластера и задачи разграничения доступа для нескольких пользователей/приложений.
Поскольку WNAM практически полностью реализован на Java, вам необходимо установить среду исполнения Java-программ: JDK. Поддерживается работа с версиями Java 8 и 11 в различных исполнениях (OpenJDK, Oracle JDK). Штатный пакет в Debian 10 - openjdk-11-jdk
Установка пакета:
apt-get install openjdk-11-jdk
После установки проверьте версию:
java -version
openjdk version "11.0.11" 2021-04-20
OpenJDK Runtime Environment (build 11.0.11+9-post-Debian-1deb10u1)
OpenJDK 64-Bit Server VM (build 11.0.11+9-post-Debian-1deb10u1, mixed mode, sharing)
Если по каким-то причинам вы используете версию 8 (например, из пакета AdoptOpenJDK, https://linuxize.com/post/install-java-on-debian-10/#installing-openjdk-8) и WNAM версии 1.5 и младше, обратите внимание на проблему с сертификатом сервера лицензирования.
2. FreeRADIUS.
Если вы по какой-то причине производите переустановку WNAM версии 1.3 ... 1.5, в которой используется FreeRADIUS, посмотрите эту инструкцию. Для работы WNAM версии 1.6 FreeRADIUS не требуется.
3. Веб-сервер nginx
WNAM по умолчанию запускается на TCP порту 8080. Вы можете оставить его на этом порту, но рекомендуется использовать проксирующий сервер nginx для обработки запросов на порту 80, для SSL шифрования (порт 443), контроля доступа, и кэширования.
Установка:
apt-get install nginx
Отредактируйте конфигурационный файл /etc/nginx/sites-available/wnam :
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 так, чтобы он был доступен абонентам по протоколу HTTPS, используйте следующую конфигурацию:
server {
listen 80 default_server;
return 301 https://$server_name$request_uri;
server_name wnam.provider.ru;
}server {
listen 443 ssl default_server;
ssl_certificate /etc/letsencrypt/live/wnam.provider.ru/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/wnam.provider.ru/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 wnam.provider.ru;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/wnam wnam
Обязательно удалите /etc/nginx/sites-enabled/default :
rm /etc/nginx/sites-enabled/default
Проверьте правильность конфигурационного файла через:
nginx -t
Перезапустите сервис:
service nginx restart
4. Библиотека генерации миниатюр конструктора страниц портала
WNAM использует внешнюю библиотеку phantomjs при формировании миниатюрного изображения абонентских страниц в "Конструкторе страниц".
Скачайте и установите её:
cd /tmp/wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-linux-x86_64.tar.bz2apt-get install bzip2tar jxvf phantomjs-2.1.1-linux-x86_64.tar.bz2mv phantomjs-2.1.1-linux-x86_64/bin/phantomjs /usr/local/bin/phantomjswget http://www.netams.com/files/wnam/misc/render.jswget http://www.netams.com/files/wnam/misc/render.shmv render.sh render.js /usr/local/bin/chmod +x /usr/local/bin/render.sh
Запуск команды
/usr/local/bin/render.sh
должен завершиться молча и без ошибки
Для изменения размера изображений превью файл /usr/local/bin/render.js можно отредактировать
Внимание! Если вы используете ОС Ubuntu, может оказаться, что страницы предпросмотра (миниатюры) не содержат русских букв. Это вызвано тем, что дистрибутив Ubuntu зачастую сконфигурирован некорректным способом в части поддержки шрифтов. Вероятно вам предстоит выполнить следующие команды:
ln -s /usr/lib/x86_64-linux-gnu/libfontconfig.so.1 /usr/lib/phantomjs/libfontconfig.so.1ln -s /usr/share/fonts/truetype/dejavu/ /usr/lib/x86_64-linux-gnu/fonts
Внимание! Если вы столкнулись со следующей ошибкой (например, на Debian 10):
Auto configuration failed
140687369703040:error:25066067:DSO support routines:DLFCN_LOAD:could not load the shared library:dso_dlfcn.c:185:filename(libssl_conf.so): libssl_conf.so: cannot open shared object file: No such file or directory
140687369703040:error:25070067:DSO support routines:DSO_load:could not load the shared library:dso_lib.c:244:
140687369703040:error:0E07506E:configuration file routines:MODULE_LOAD_DSO:error loading dso:conf_mod.c:285:module=ssl_conf, path=ssl_conf
140687369703040:error:0E076071:configuration file routines:MODULE_RUN:unknown module name:conf_mod.c:222:module=ssl_conf
То решение заключается в добавлении строк
export OPENSSL_CONF=/etc/ssl/
в середину файла /usr/local/bin/render.sh
5. Проверка языка операционной системы
Обязательно убедитесь, что язык системы (locale по умолчанию) соответствует "ru_RU.UTF-8". Проверить это можно командой "locale". Локаль сервера можно изменить командой
dpkg-reconfigure locales