From e109ac9286de434c714e0e34fdd194376e9885bf Mon Sep 17 00:00:00 2001 From: MickLesk Date: Sat, 25 Apr 2026 22:56:01 +0200 Subject: [PATCH] feat: update Nagios installation and configuration scripts for improved paths and dependencies --- ct/nagios.sh | 76 +++++++++++++++++++++++++++++++++------ install/nagios-install.sh | 59 ++++++++++++++++++++++++++---- json/nagios.json | 6 ++-- 3 files changed, 121 insertions(+), 20 deletions(-) diff --git a/ct/nagios.sh b/ct/nagios.sh index 0e2bd594..c7ee2714 100644 --- a/ct/nagios.sh +++ b/ct/nagios.sh @@ -24,22 +24,76 @@ function update_script() { check_container_storage check_container_resources - if [[ ! -f /etc/nagios4/nagios.cfg ]]; then + if [[ ! -f /usr/local/nagios/etc/nagios.cfg ]]; then msg_error "No ${APP} Installation Found!" exit fi - msg_info "Updating Nagios Packages" - $STD apt update - $STD apt install -y --only-upgrade nagios4 nagios-plugins-contrib apache2 - msg_ok "Updated Nagios Packages" + local core_update=0 + local plugins_update=0 - msg_info "Restarting Services" - systemctl restart nagios4 - systemctl restart apache2 - msg_ok "Restarted Services" + if check_for_gh_release "nagios" "NagiosEnterprises/nagioscore"; then + core_update=1 + fi - msg_ok "Updated successfully!" + if check_for_gh_release "nagios-plugins" "nagios-plugins/nagios-plugins"; then + plugins_update=1 + fi + + if [[ "$core_update" == "1" || "$plugins_update" == "1" ]]; then + msg_info "Stopping Services" + systemctl stop nagios + systemctl stop apache2 + msg_ok "Stopped Services" + + msg_info "Backing up Configuration" + cp -a /usr/local/nagios/etc /opt/nagios-etc-backup + msg_ok "Backed up Configuration" + + if [[ "$core_update" == "1" ]]; then + CLEAN_INSTALL=1 fetch_and_deploy_gh_release "nagios" "NagiosEnterprises/nagioscore" "tarball" + + msg_info "Building Nagios Core" + cd /opt/nagios + $STD ./configure --with-httpd-conf=/etc/apache2/sites-enabled + $STD make all + $STD make install-groups-users + usermod -a -G nagios www-data + $STD make install + $STD make install-daemoninit + $STD make install-commandmode + $STD make install-config + $STD make install-webconf + a2enmod rewrite >/dev/null 2>&1 + a2enmod cgi >/dev/null 2>&1 + msg_ok "Built Nagios Core" + fi + + if [[ "$plugins_update" == "1" ]]; then + CLEAN_INSTALL=1 fetch_and_deploy_gh_release "nagios-plugins" "nagios-plugins/nagios-plugins" "tarball" + + msg_info "Building Nagios Plugins" + cd /opt/nagios-plugins + $STD ./tools/setup + $STD ./configure + $STD make + $STD make install + msg_ok "Built Nagios Plugins" + fi + + msg_info "Restoring Configuration" + rm -rf /usr/local/nagios/etc + cp -a /opt/nagios-etc-backup /usr/local/nagios/etc + rm -rf /opt/nagios-etc-backup + msg_ok "Restored Configuration" + + msg_info "Starting Services" + systemctl start apache2 + systemctl start nagios + msg_ok "Started Services" + + msg_ok "Updated successfully!" + fi exit } @@ -50,4 +104,4 @@ description msg_ok "Completed Successfully!\n" echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" echo -e "${INFO}${YW} Access it using the following URL:${CL}" -echo -e "${TAB}${GATEWAY}${BGN}http://${IP}/nagios4${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}/nagios${CL}" diff --git a/install/nagios-install.sh b/install/nagios-install.sh index 93b6d09a..72898f7c 100644 --- a/install/nagios-install.sh +++ b/install/nagios-install.sh @@ -15,20 +15,67 @@ update_os msg_info "Installing Dependencies" $STD apt install -y \ + autoconf \ + automake \ + gcc \ + libc6 \ + libgd-dev \ + libmcrypt-dev \ + libnet-snmp-perl \ + libssl-dev \ + make \ + openssl \ + php \ + apache2 \ apache2-utils \ - nagios4 \ - nagios-plugins-contrib + build-essential \ + bc \ + dc \ + gawk \ + gettext \ + snmp \ + unzip \ + wget msg_ok "Installed Dependencies" +fetch_and_deploy_gh_release "nagios" "NagiosEnterprises/nagioscore" "tarball" + +msg_info "Building Nagios Core" +cd /opt/nagios +$STD ./configure --with-httpd-conf=/etc/apache2/sites-enabled +$STD make all +$STD make install-groups-users +usermod -a -G nagios www-data +$STD make install +$STD make install-daemoninit +$STD make install-commandmode +$STD make install-config +$STD make install-webconf +a2enmod rewrite >/dev/null 2>&1 +a2enmod cgi >/dev/null 2>&1 +msg_ok "Built Nagios Core" + +fetch_and_deploy_gh_release "nagios-plugins" "nagios-plugins/nagios-plugins" "tarball" + +msg_info "Building Nagios Plugins" +cd /opt/nagios-plugins +$STD ./tools/setup +$STD ./configure +$STD make +$STD make install +msg_ok "Built Nagios Plugins" + msg_info "Configuring Web Authentication" -htpasswd -bc /etc/nagios4/htpasswd.users nagiosadmin nagiosadmin -chown root:www-data /etc/nagios4/htpasswd.users -chmod 640 /etc/nagios4/htpasswd.users +htpasswd -bc /usr/local/nagios/etc/htpasswd.users nagiosadmin nagiosadmin +chown root:www-data /usr/local/nagios/etc/htpasswd.users +chmod 640 /usr/local/nagios/etc/htpasswd.users msg_ok "Configured Web Authentication" msg_info "Starting Services" -systemctl enable -q --now nagios4 systemctl enable -q --now apache2 +systemctl enable -q --now nagios +systemctl restart apache2 +systemctl restart nagios msg_ok "Started Services" motd_ssh diff --git a/json/nagios.json b/json/nagios.json index 79efd673..771f7491 100644 --- a/json/nagios.json +++ b/json/nagios.json @@ -17,7 +17,7 @@ { "type": "default", "script": "ct/nagios.sh", - "config_path": "/etc/nagios4/nagios.cfg", + "config_path": "/usr/local/nagios/etc/nagios.cfg", "resources": { "cpu": 2, "ram": 2048, @@ -33,11 +33,11 @@ }, "notes": [ { - "text": "After first login, change the default web password in /etc/nagios4/htpasswd.users.", + "text": "After first login, change the default web password in /usr/local/nagios/etc/htpasswd.users.", "type": "warning" }, { - "text": "Web UI path is /nagios4 on port 80.", + "text": "Web UI path is /nagios on port 80.", "type": "info" } ]