If you are interested in running this application as a service on a Linux server here is a basic guide covering how to do that. This process works for RHEL 7 based Linux installations. It will likely work very similiarly on other systemctl enabled installations.
Create a user for BGPalerter
adduser bgpalerter
If this is a new installation:
-
download the BGPalerter binary in the home of the newly created user:
sudo su bgpalerter cd /home/bgpalerter wget https://github.com/nttgin/BGPalerter/releases/latest/download/bgpalerter-linux-x64 chmod +x bgpalerter-linux-x64
-
execute it and proceed with the auto-configuration, at the end of which all the needed files will be created:
./bgpalerter-linux-x64
If this is an existing installation:
-
simply move the files of your existing installation into this directory and assign the correct permissions
mv /your/old/bgpalerter /home/bgpalerter chown -R bgpalerter:bgpalerter /home/bgpalerter chmod -x /home/bgpalerter/bgpalerter-linux-x64
Next you need to create the systemd service file.
sudo vi /etc/systemd/system/bgpalerter.service
The contents of this file should be as follows:
[Unit]
Description=BGPalerter
After=network.target
[Service]
Type=simple
Restart=on-failure
RestartSec=30s
User=bgpalerter
WorkingDirectory=/home/bgpalerter
ExecStart=/home/bgpalerter/bgpalerter-linux-x64
[Install]
WantedBy=multi-user.target
Reload systemd to register the new configuration.
systemctl daemon-reload
Enable BGPalerter to start at boot and then start the service.
systemctl enable bgpalerter
systemctl start bgpalerter
You can enable automatic updates by following the instructions below.
Enter as bgpalerter user in its home directory:
sudo su bgpalerter
cd /home/bgpalerter
Create a file upgrade.sh
with the following content:
#!/usr/bin/env bash
# Change the directories if needed
DIR=/home/bgpalerter
LOGS=$DIR/logs
# If log file does not exist, create it
if [ ! -f $LOGS/upgrade.log ]; then
touch $LOGS/upgrade.log
chown bgpalerter:bgpalerter $LOGS/upgrade.log
fi
# Delete log file if larger than 5MB
find $LOGS -type f -name "upgrade.log" -size +5M -delete
exec 1>> $LOGS/upgrade.log 2>&1
cd $DIR
# Download the latest version and save it to a temp file
wget --no-verbose -O bgpalerter-linux-x64.tmp https://github.com/nttgin/BGPalerter/releases/latest/download/bgpalerter-linux-x64
# Set permissions to execute the file
chmod +x bgpalerter-linux-x64.tmp
# Set variables to compare versions
if [ -f bgpalerter-linux-x64 ]; then
# If a file exists already
v1=$(./bgpalerter-linux-x64 -v)
v2=$(./bgpalerter-linux-x64.tmp -v)
else
v1=$"0"
v2=$(./bgpalerter-linux-x64.tmp -v)
fi
# If there is no old version
if [ "$v1" == "0" ];then
#Remove the file
rm bgpalerter-linux-x64.tmp
echo "This script upgrades BGPalerter; however, $DIR/bgpalerter-linux-x64 cannot be found. Please, install it first https://github.com/nttgin/BGPalerter/blob/main/docs/linux-service.md"
exit 1
# The versions are different
elif [ "$v1" != "$v2" ];then
# Remove the old version
rm bgpalerter-linux-x64
# Rename the temp file
mv bgpalerter-linux-x64.tmp bgpalerter-linux-x64
# Kill the process
# We use kill because "systemctl restart bgpalerter" works only
# if you run this script as root. Systemctl will restart the process.
kill -9 $(cat $DIR/bgpalerter.pid) || true
echo "A new version of BGPalerter has been installed"
else
# If the versions are the same, delete the temp file
rm bgpalerter-linux-x64.tmp
echo "BGPalerter is up to date"
fi
The upgrade.sh
file needs to be executable
chmod +x upgrade.sh
Now we need to configure a cron job to periodically execute upgrade.sh
.
As the bgpalerter
user, do
crontab -e
and append the following line to perform the check weekly
0 0 * * 0 /home/bgpalerter/upgrade.sh