Know before your clients do when their website goes down
A bakery's website can be "up" all weekend while its Order online button has vanished. Uptime Kuma catches that, warns you before certificates and domains run out, and gives each client a status page. It's free, and it's a simple monthly service to sell.
- SSL certificate and domain expiry warnings, plus a public status page for each client
- A certificate radar script that finds prospects whose sites are about to show a security warning
- The server set-up for paying clients: Docker, Uptime Kuma and HTTPS on your own subdomain with Caddy
- A price ladder for direct clients and for web designers who resell it
- Git and Node.js 20.4 or newer. Level 0 covers both: Install anything from GitHub
- About 250MB of free disk space
- Somewhere to receive alerts: Telegram, Discord or an email account
- For paying clients later: an always-on computer or a small rented server (step 8)
Install Uptime Kuma
A free, open-source website monitor that runs on your own machine. No account and no monthly fee.
By step 4 you'll watch it catch a website that still loads but has lost its order button. First, install it. The official route without Docker is three commands. Open PowerShell (Terminal on a Mac or Linux) in the folder where you keep projects and run:
Terminalgit clone https://github.com/louislam/uptime-kuma.git cd uptime-kuma npm run setupnpm run setupswitches to the latest stable release (rather than the main branch, which is a 3.0 beta), installs what it needs and downloads the web interface. It takes about a minute:OutputHEAD is now at c98982ac Update to 2.5.5 ... added 650 packages in 56s ... Downloading dist ... Extracting dist... DoneA message about a detached HEAD and lots of yellow
npm warn deprecatedlines are normal. They're notes, not errors. The whole folder comes to about 220MB.Now start it.
--host=127.0.0.1keeps it private to your PC while you learn:Terminalnode server/server.js --host=127.0.0.1OutputWelcome to Uptime Kuma Your Node.js version: 26.7.0 ... [SERVER] INFO: Uptime Kuma Version: 2.5.5 ... [SERVER] INFO: Loading modules ... ... [SETUP-DATABASE] INFO: Listening on: http://127.0.0.1:7113This capture used port 7113 (set with
--port=7113). Yours will say 3001, the default.CarefulBe patient. It can take a minute or two to start, almost all of it onLoading modules. Don't close the window: closing it stops the monitoring.Open localhost:3001 ↗. The first visit asks two things:
- Which database? Choose SQLite (one file, nothing else to install), then Next.
- Create your admin account: a username and a strong password. This account only exists on your PC.
If it breaks'npm.ps1 cannot be loaded because running scripts is disabled on this system' + 3 more
'npm.ps1 cannot be loaded because running scripts is disabled on this system'
npm.cmd run setup instead. It's the same command without PowerShell's script wrapper.'git' or 'node' is not recognised
winget install --id Git.Git -e and winget install --id OpenJS.NodeJS.LTS -e, then close PowerShell and open a new window. On a Mac, brew install git node. On Linux, use your package manager or the installers on nodejs.org ↗. Check node --version says 20.4 or newer.The page won't load
Listening on. Give it two minutes.Windows asks whether to allow Node.js on your network
--host=127.0.0.1 on the end, which keeps it on your PC only.