mirror of
https://github.com/LPJon/cwpfixes.git
synced 2026-09-11 06:33:03 -05:00
Changed NVM support to use whatever is /usr/bin/node whether the RPM package or the symbolic link to the desired node version. This makes the node version is dependent on the symbolic link or the RPM package location. When NVM is used though this script, it will use the RPM or create a symbolic link to the set version of Node.JS.
209 lines
6.8 KiB
Bash
209 lines
6.8 KiB
Bash
#!/bin/bash
|
|
# Netdata installer for cwp
|
|
|
|
# To uninstall netdata please use this command, it will require some confirmation
|
|
# /usr/local/src/netdata/packaging/installer/netdata-uninstaller.sh --yes
|
|
|
|
# ToDo:
|
|
# Automatic activate on boot
|
|
|
|
# NEW CODE------------
|
|
# Use NVM for node.js installation management. Options are "y" or "n" DEFAULT = n
|
|
usenvm=n
|
|
# Version of Node.js to install. DEFAULT = 16.18.1
|
|
nodeversion=16.18.1
|
|
telemetryoptout="--disable-telemetry"
|
|
nodejs=
|
|
|
|
function getsystemnodeversion {
|
|
if [ -e "/usr/bin/node" ]; then
|
|
/usr/bin/node -v
|
|
fi
|
|
}
|
|
function checkfornodejsrpm {
|
|
yum list installed nodejs | grep nodejs
|
|
}
|
|
function installnodeJS {
|
|
if [ "$usenvm" == "n" ]; then
|
|
if [ -e "$HOME/.nvm" ]; then
|
|
if [ -z "$(checkfornodejsrpm)" ]; then
|
|
rm -f /usr/bin/node
|
|
fi
|
|
nodejs="nodejs"
|
|
fi
|
|
elif [ "$usenvm" == "y" ]; then
|
|
if [ ! -z "$(checkfornodejsrpm)" ]; then
|
|
yum -y remove nodejs
|
|
fi
|
|
if [ -e "$HOME/.nvm" ];then
|
|
export NVM_DIR="$HOME/.nvm"
|
|
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
|
|
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
|
|
nvm install $nodeversion
|
|
if [ "$(getsystemnodeversion)" != "v$nodeversion" ]; then
|
|
ln -sf /root/.nvm/versions/node/v"$nodeversion"/bin/node /usr/bin/node
|
|
fi
|
|
nvm use system
|
|
fi
|
|
if [ ! -e "$HOME/.nvm" ]; then
|
|
yum -y install curl
|
|
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
|
|
export NVM_DIR="$HOME/.nvm"
|
|
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
|
|
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
|
|
nvm use "$nodeversion"
|
|
ln -sf /root/.nvm/versions/node/v"$nodeversion"/bin/node /usr/bin/node
|
|
nvm use system
|
|
fi
|
|
fi
|
|
}
|
|
function installnodeJSDependencies {
|
|
yum -y install json-c-devel libatomic libyaml-devel lz4-devel systemd-devel
|
|
}
|
|
# ---------------------
|
|
# Check centos version
|
|
centosversion=$(rpm -qa \*-release | grep -Ei "oracle|redhat|centos|cloudlinux" | cut -d"-" -f3 | cut -d"." -f 1 | head -n 1)
|
|
if [[ "$centosversion" -eq "8" ]];then
|
|
yum -y install 'dnf-command(config-manager)'
|
|
yum -y install http://repo.okay.com.mx/centos/8/x86_64/release/okay-release-1-3.el8.noarch.rpm
|
|
yum -y install curl gcc make autoconf autoconf-archive autogen automake --enablerepo=epel --enablerepo=powertools
|
|
yum -y install MySQL-python python python-yaml python-psycopg2 nodejs lm_sensors --enablerepo=epel --enablerepo=powertools
|
|
yum -y install nmap-ncat git zlib-devel libuuid-devel --enablerepo=epel --enablerepo=powertools
|
|
yum -y install libmnl-devel libuv-devel --enablerepo=epel --enablerepo=powertools
|
|
yum -y install json-c-devel libatomic libyaml-devel lz4-devel systemd-devel
|
|
yum -y install lz4-devel lz4 json-c-devel libuv-devel libuv --nobest --enablerepo=epel --enablerepo=powertools
|
|
yum -y install http://mirror.centos.org/centos/8/PowerTools/x86_64/os/Packages/Judy-devel-1.0.5-18.module_el8.1.0+217+4d875839.x86_64.rpm
|
|
|
|
# new centos 8 stream
|
|
cd /usr/local/src
|
|
wget https://github.com/libuv/libuv/archive/refs/tags/v1.41.0.zip
|
|
unzip v1.41.0.zip
|
|
cd libuv-1.41.0
|
|
## important to run 2 times:
|
|
sh autogen.sh
|
|
sh autogen.sh
|
|
./configure
|
|
make
|
|
make install
|
|
else
|
|
# NEW CODE BELOW
|
|
installnodeJS
|
|
yum -y install curl gcc make autoconf autoconf-archive autogen automake --enablerepo=epel
|
|
yum -y install MySQL-python python python-yaml python-psycopg2 $nodejs lm_sensors --enablerepo=epel
|
|
yum -y install nmap-ncat git zlib-devel libuuid-devel --enablerepo=epel
|
|
yum -y install libmnl-devel libuv-devel --enablerepo=epel
|
|
installnodeJSDependencies
|
|
fi
|
|
|
|
git clone https://github.com/firehol/netdata.git --depth=1 /usr/local/src/netdata
|
|
|
|
if [ -e "/usr/local/src/netdata" ];then
|
|
cd /usr/local/src/netdata
|
|
./netdata-installer.sh $telemetryoptout --disable-cloud --dont-wait
|
|
fi
|
|
|
|
# Apache
|
|
APACHECHK=`grep -i "^Listen" /usr/local/apache/conf/httpd.conf|grep 8181`
|
|
|
|
if [ ! -z "APACHECHK" ];then
|
|
sed -i "s@http://localhost/@http://localhost:8181/@g" /usr/lib/netdata/conf.d/python.d/apache.conf
|
|
sed -i "s@http://127.0.0.1/@http://127.0.0.1:8181/@g" /usr/lib/netdata/conf.d/python.d/apache.conf
|
|
else
|
|
sed -i "s@http://localhost:8181/@http://localhost/@g" /usr/lib/netdata/conf.d/python.d/apache.conf
|
|
sed -i "s@http://127.0.0.1:8181/@http://127.0.0.1/@g" /usr/lib/netdata/conf.d/python.d/apache.conf
|
|
fi
|
|
|
|
# Nginx
|
|
if [ ! -e "/etc/nginx/conf.d/netdata.conf" ];then
|
|
cat > /etc/nginx/conf.d/netdata.conf <<EOF
|
|
server {
|
|
listen 127.0.0.1:80;
|
|
server_name 127.0.0.1;
|
|
|
|
location /stub_status {
|
|
stub_status;
|
|
allow 127.0.0.1;
|
|
deny all;
|
|
}
|
|
}
|
|
EOF
|
|
fi
|
|
service nginx reload
|
|
|
|
# Varnish
|
|
gpasswd -a netdata varnish
|
|
|
|
# MySQL
|
|
mysql -e "create user 'netdata'@'localhost';"
|
|
mysql -e "grant usage on *.* to 'netdata'@'localhost';"
|
|
mysql -e "flush privileges;"
|
|
|
|
# LFD Alerts FIX
|
|
LFDGREP=`grep "user:netdata" /etc/csf/csf.pignore`
|
|
if [ -z "$LFDGREP" ];then
|
|
echo "user:netdata" >> /etc/csf/csf.pignore
|
|
service lfd restart
|
|
fi
|
|
|
|
|
|
# Create netdata socket run folder
|
|
if [ ! -e "/run/netdata" ];then
|
|
mkdir -p /run/netdata
|
|
chown netdata.netdata /run/netdata
|
|
fi
|
|
|
|
CHKNETDATA=`grep netdata /usr/local/cwpsrv/conf/cwp_services.conf`
|
|
sed -i "s/# bind to = \*/bind to = unix:\/run\/netdata\/netdata.sock/g" /etc/netdata/netdata.conf
|
|
|
|
if [ -z "$CHKNETDATA" ];then
|
|
cat >> /usr/local/cwpsrv/conf/cwp_services.conf <<EOF
|
|
location /netdata {
|
|
return 301 /netdata/;
|
|
}
|
|
|
|
location ~ /netdata/(?<ndpath>.*) {
|
|
auth_pam "Secure Zone | root login required";
|
|
auth_pam_service_name "cwpadmin-auth";
|
|
|
|
proxy_redirect off;
|
|
proxy_set_header Host \$host;
|
|
|
|
proxy_set_header X-Forwarded-Host \$host;
|
|
proxy_set_header X-Forwarded-Server \$host;
|
|
proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
|
|
proxy_http_version 1.1;
|
|
proxy_pass_request_headers on;
|
|
proxy_set_header Connection "keep-alive";
|
|
proxy_store off;
|
|
proxy_pass http://unix:/run/netdata/netdata.sock:/\$ndpath\$is_args\$args;
|
|
|
|
gzip on;
|
|
gzip_proxied any;
|
|
gzip_types *;
|
|
}
|
|
EOF
|
|
fi
|
|
|
|
if [ ! -e "/etc/pam.d/cwpadmin-auth" ];then
|
|
cat > "/etc/pam.d/cwpadmin-auth" <<EOF
|
|
#%PAM-1.0
|
|
auth required pam_succeed_if.so user ingroup root
|
|
auth include password-auth
|
|
auth required pam_shells.so
|
|
auth required pam_nologin.so
|
|
|
|
account include password-auth
|
|
password include password-auth
|
|
|
|
session required pam_loginuid.so
|
|
session include password-auth
|
|
EOF
|
|
fi
|
|
|
|
# restart netdata
|
|
# New Code Below
|
|
echo "d /var/run/netdata 0755 root root" > /usr/lib/tmpfiles.d/netdata.conf
|
|
service netdata restart
|
|
service cwpsrv reload
|
|
sleep 3
|