Установка LibreNMS
Установка LibreNMS.
Содержание
1 Необходимые пакеты
- Установка осуществляется на Rockylinux
- Установите сервер (см. Rocky Linux. Установка сервера).
- Установите необходимое программное обеспечение:
1dnf -y install epel-release 2dnf module reset php 3dnf install bash-completion cronie fping git httpd ImageMagick mariadb-server mtr net-snmp net-snmp-utils nmap php-fpm php-cli php-common php-curl php-gd php-gmp php-json php-mbstring php-process php-snmp php-xml php-zip php-mysqlnd python3 python3-PyMySQL python3-redis python3-memcached python3-pip python3-systemd rrdtool unzip gcc python3-develcase
2 Добавить пользователя
- Добавить пользователя
librenms
:1useradd librenms -d /opt/librenms -M -r -s "$(which bash)"
3 Скачать LibreNMS
- Скачаем LibreNMS:
4 Установить разрешения
- Установим разрешения:
5 Установить PHP-зависимости
- Установим PHP-зависимости:
- Если какие-либо проблемы с сетью, можно установить composer вручную:
6 Укажите часовой пояс
- Установите системный часовой пояс (например,
Etc/UTC
):1timedatectl set-timezone Etc/UTC
- Настройте часовой пояс для php.
- Установка в файле
/etc/php.ini
:
7 Настроить MariaDB
- Настройки в файле
/etc/my.cnf.d/mariadb-server.cnf
: - Запустите
mariadb
:1systemctl enable --now mariadb
- Установите настройки безопасности:
1mariadb-secure-installation
- Подключитесь к mariadb:
1mysql -u root
- Создайте пользователя и таблицу.
- В коде замените
password
на пароль. - Пароль потребуется занести в файл конфигурации
/opt/librenms/.env
(в web-интерфейсе).
- В коде замените
8 Настроить php-fpm
- Настроим php-fpm:
1cp /etc/php-fpm.d/www.conf /etc/php-fpm.d/librenms.conf
- Отредактируйте
/etc/php-fpm.d/librenms.conf
. - Измените
[www]
на[librenms]
. - Изменить
user
иgroup
наlibrenms
. - Измените
listen
:1listen = /run/php-fpm-librenms.sock
9 HTTP-сервер
9.1 Nginx
9.1.1 Установка
- Установим nginx.
- Выберем нужный модуль:
9.1.2 Конфигурация
- Создайте librenms.conf:
1touch /etc/nginx/conf.d/librenms.conf
- Добавьте следующую конфигурацию, отредактируйте
server_name
по мере необходимости:1server { 2 listen 80; 3 server_name librenms.example.com; 4 root /opt/librenms/html; 5 index index.php; 6 7 charset utf-8; 8 gzip on; 9 gzip_types text/css application/javascript text/javascript application/x-javascript image/svg+xml text/plain text/xsd text/xsl text/xml image/x-icon; 10 location / { 11 try_files $uri $uri/ /index.php?$query_string; 12 } 13 location ~ [^/]\.php(/|$) { 14 fastcgi_pass unix:/run/php-fpm-librenms.sock; 15 fastcgi_split_path_info ^(.+\.php)(/.+)$; 16 include fastcgi.conf; 17 } 18 location ~ /\.(?!well-known).* { 19 deny all; 20 } 21}
9.1.3 Конфигурация SSL
Будем использовать сертификат Lets’ Encrypt.
Создайте librenms.conf:
1touch /etc/nginx/conf.d/librenms.conf
Добавьте следующую конфигурацию, отредактируйте
server_name
по мере необходимости:1server { 2 listen 443 ssl http2; 3 listen [::]:443 ssl http2; 4 server_name example.com; 5 ssl_certificate /etc/letsencrypt/live/yourwebsite.com/fullchain.pem; 6 ssl_certificate_key /etc/letsencrypt/live/yourwebsite.com/privkey.pem; 7 include /etc/letsencrypt/options-ssl-nginx.conf; 8 ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; 9 root /opt/librenms/html; 10 index index.php; 11 access_log /opt/librenms/logs/access_log; 12 error_log /opt/librenms/logs/error_log; 13 14 charset utf-8; 15 gzip on; 16 gzip_types text/css application/javascript text/javascript application/x-javascript image/svg+xml text/plain text/xsd text/xsl text/xml image/x-icon; 17 18 proxy_read_timeout 300; 19 proxy_connect_timeout 300; 20 proxy_send_timeout 300; 21 22 location / { 23 try_files $uri $uri/ /index.php?$query_string; 24 } 25 location /api/v0 { 26 try_files $uri $uri/ /api_v0.php?$query_string; 27 } 28 location ~.php { 29 include fastcgi.conf; 30 fastcgi_split_path_info ^(.+.php)(/.+)$; 31 fastcgi_pass unix:/run/php-fpm/librenms.sock; 32 } 33 location ~ /.ht { 34 deny all; 35 } 36} 37 38server { 39 listen 80; 40 listen [::]:80; 41 server_name example.com; 42 return 301 https://$server_name$request_uri; 43}
9.1.4 Запуск http-сервера
- Запустим nginx:
9.2 Apache
- Можно использовать Apache.
9.2.1 Конфигурация
- Создайте librenms.conf:
1touch /etc/httpd/conf.d/librenms.conf
- Добавьте следующую конфигурацию, отредактируйте
ServerName
по мере необходимости:1<VirtualHost *:80> 2 DocumentRoot /opt/librenms/html/ 3 ServerName librenms.example.com 4 5 AllowEncodedSlashes NoDecode 6 <Directory "/opt/librenms/html/"> 7 Require all granted 8 AllowOverride All 9 Options FollowSymLinks MultiViews 10 </Directory> 11 12 # Enable http authorization headers 13 <IfModule setenvif_module> 14 SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=$1 15 </IfModule> 16 17 <FilesMatch ".+\.php$"> 18 SetHandler "proxy:unix:/run/php-fpm-librenms.sock|fcgi://localhost" 19 </FilesMatch> 20</VirtualHost>
- Отключите сайт по умолчанию:
1rm -f /etc/httpd/conf.d/welcome.conf
- Запустите сервер:
9.3 SELinux
- Настройте политики SELinux:
9.4 Брандмауэр
- Настроим брандмауэр:
10 Настройка SELinux
- Установим необходимые пакеты:
1dnf -y install policycoreutils-python-utils
- Настройте контексты, необходимые LibreNMS:
1semanage fcontext -a -t httpd_sys_content_t '/opt/librenms/html(/.*)?' 2semanage fcontext -a -t httpd_sys_rw_content_t '/opt/librenms/(rrd|storage)(/.*)?' 3semanage fcontext -a -t httpd_log_t "/opt/librenms/logs(/.*)?" 4semanage fcontext -a -t bin_t '/opt/librenms/librenms-service.py' 5restorecon -RFvv /opt/librenms 6setsebool -P httpd_can_sendmail=1 7setsebool -P httpd_execmem 1 8setsebool -P httpd_can_network_connect 1 9setsebool -P domain_can_mmap_files 1 10setsebool -P httpd_setrlimit 1 11chcon -t httpd_sys_rw_content_t /opt/librenms/.env
11 Настройка fping
- Установите
CAP_NET_RAW
для fping:1setcap cap_net_raw+ep /usr/sbin/fping
- Настройка SElinux для fping.
- Перейдите в каталог
/tmp
. - Создайте файл
http_fping.tt
: - Скомпилируйте и загрузите модуль:
- Перейдите в каталог
12 Настройка межсетевого экрана
- Разрешим доступ:
13 Настройте команду lnms
- Сделайте ссылку в каталог, входящий в путь:
1ln -s /opt/librenms/lnms /usr/local/bin/lnms
- Включите автодополнение bash:
1cp /opt/librenms/misc/lnms-completion.bash /etc/bash_completion.d/
14 Настроить snmpd
- Скопируйте файл конфигурации:
1cp /opt/librenms/snmpd.conf.example /etc/snmp/snmpd.conf
- Замените в
/etc/snmp/snmpd.conf
строкуRANDOMSTRINGGOESHERE
на своё сообщество. - Загрузите агент определения дистрибутива:
- Запустите демон snmp:
1systemctl enable --now snmpd
15 Настройте cron
- Установите cron-файл:
1cp /opt/librenms/librenms.nonroot.cron /etc/cron.d/librenms
16 Настройте logrotate
- LibreNMS хранит журналы в
/opt/librenms/logs
. - Чтобы удалять старые журналы, вы можете использовать предоставленный файл конфигурации
logrotate
:1cp /opt/librenms/misc/librenms.logrotate /etc/logrotate.d/librenms
17 Веб-установщик
- Перейдите к веб-установщику и следуйте инструкциям на экране.
- Веб-установщик может предложить вам вручную создать
config.php
, скопировав содержимое, отображаемое на экране, в файл. - После этого не забудьте установить права доступа к
config.php
:1chown librenms:librenms /opt/librenms/config.php