We've been using Pingdom for many years now, but it's (a) very expensive and (b) not particularly customisable (we want to show performance just from London), so looked at deploying Uptime Kuma.
There's a few changes we had to make to the source code to make it work for us, so thought it was worthing noting these below. We now have Uptime Kuma running on a $7 Digital Ocean droplet, so significantly cheaper than Pingdom.
fallocate --length 4GiB /swapfile
chown root:root /swapfile
chmod 0600 /swapfile
mkswap /swapfile
swapon /swapfile
echo '
/swapfile swap swap defaults 0 0
' >> /etc/fstab
dnf module install nodejs:22
git clone https://github.com/louislam/uptime-kuma.git
cd uptime-kuma
npm run setup
npm install pm2 -g && pm2 install pm2-logrotate
pm2 start server/server.js
pm2 save && pm2 startup
vi /etc/selinux/config
SELINUX=disabled
You can't use their admin panel to create a data structure that thesmsworks will accept, so you have to hack their webhook code...
vi /service/notification-providers/webhook.js
/*let data = {
heartbeat: heartbeatJSON,
monitor: monitorJSON,
msg,
};*/
let data = {
sender: 'Email Alert',
destination: '44xxxx',
'content': msg,
};
vi server/server.js
const port = 80;
vi server/notification-providers/smtp.js
const config = {
host: notification.smtpHost,
port: notification.smtpPort,
secure: false,
ignoreTLS: true,
requireTLS: false,
tls: {
rejectUnauthorized: !notification.smtpIgnoreTLSError || false,
}
};
vi src/components/PingChart.vue
chartPeriodOptions: {
0: this.$t("recent"),
3: "3h",
6: "6h",
24: "24h",
168: "1w",
744: "1m",
},