Install prerequisites
yum install -y epel-release
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
yum install -y policycoreutils-python cronie fping git httpd ImageMagick jwhois mariadb mariadb-server mtr MySQL-python net-snmp net-snmp-utils nmap php71w php71w-cli php71w-common php71w-curl php71w-gd php71w-mcrypt php71w-mysql php71w-process php71w-snmp php71w-xml php71w-zip python-memcached rrdtool
Setup LibreNMS user
useradd librenms -d /opt/librenms -M -r
usermod -a -G librenms apache
Install LibreNMS
cd /opt
git clone https://github.com/librenms/librenms.git librenms
Configure MySQL
Start MySQL
systemctl start mariadb
mysql -u root
Create the Database and database user. Change password to a different password
CREATE DATABASE librenms CHARACTER SET utf8 COLLATE utf8_unicode_ci;
CREATE USER 'librenms'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON librenms.* TO 'librenms'@'localhost';
FLUSH PRIVILEGES;
exit
Disable MySQL strict mode
vi /etc/my.cnf
Add the following in the [mysqld] section
innodb_file_per_table=1
sql-mode=""
lower_case_table_names=0
Enable and restart mariadb i.e.(MySQL)
systemctl enable mariadb
systemctl restart mariadb
Configure PHP. Set Timezone
You can go here to figure out which time zone you need.
vi /etc/php.ini
Find the [Date] Section and change the timezone
Example:
date.timezone = America/New_York
Configure Apache
vi /etc/httpd/conf.d/librenms.conf
Add the following, change the server name.
<VirtualHost *:80>
DocumentRoot /opt/librenms/html/
ServerName librenms.example.com
AllowEncodedSlashes NoDecode
<Directory "/opt/librenms/html/">
Require all granted
AllowOverride All
Options FollowSymLinks MultiViews
</Directory>
</VirtualHost>
Enable and restart apache
systemctl enable httpd
systemctl restart httpd
Allow fping
cd /opt/librenms
vi http_fping.tt
Add the following
module http_fping 1.0;
require {
type httpd_t;
class capability net_raw;
class rawip_socket { getopt create setopt write read };
}
#============= httpd_t ==============
allow httpd_t self:capability net_raw;
allow httpd_t self:rawip_socket { getopt create setopt write read };
Configure SELinux
You can disable SELinux completely in the /etc/selinux/config file or run these commands to make LibreNMS and SELinux play together.
semanage fcontext -a -t httpd_sys_content_t '/opt/librenms/logs(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/opt/librenms/logs(/.*)?'
restorecon -RFvv /opt/librenms/logs/
semanage fcontext -a -t httpd_sys_content_t '/opt/librenms/rrd(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/opt/librenms/rrd(/.*)?'
restorecon -RFvv /opt/librenms/rrd/
setsebool -P httpd_can_sendmail=1
checkmodule -M -m -o http_fping.mod http_fping.tt
semodule_package -o http_fping.pp -m http_fping.mod
semodule -i http_fping.pp
Configure Firewall
firewall-cmd --zone public --add-service http
firewall-cmd --permanent --zone public --add-service http
firewall-cmd --zone public --add-service https
firewall-cmd --permanent --zone public --add-service https
Configure snmpd
cp /opt/librenms/snmpd.conf.example /etc/snmp/snmpd.conf
Edit the snmpd file and change RANDOMSTRINGGOESHERE to your community string
vi /etc/snmp/snmpd.conf
Enable and restart snmpd
curl -o /usr/bin/distro https://raw.githubusercontent.com/librenms/librenms-agent/master/snmp/distro
chmod +x /usr/bin/distro
systemctl enable snmpd
systemctl restart snmpd
Setup Cron Job and Cycle logs
cp /opt/librenms/librenms.nonroot.cron /etc/cron.d/librenms
cp /opt/librenms/misc/librenms.logrotate /etc/logrotate.d/librenms
Set Permisions
chown -R librenms:librenms /opt/librenms
setfacl -d -m g::rwx /opt/librenms/rrd /opt/librenms/logs
setfacl -R -m g::rwx /opt/librenms/rrd /opt/librenms/logs
Finish Install
Finish the install by
http://your-server-ip/install.php