Getting Started
You’ve ordered a managed Uptime Kuma from server.camp — congratulations! Uptime Kuma monitors your websites, APIs, and servers around the clock and notifies you immediately when something goes down. This guide is written for freelancers, small and medium-sized businesses, and nonprofits that don’t want to hear from their customers or members that the website is down.
When your online shop, customer portal, or nonprofit website goes offline, every minute counts. Without monitoring, you find out only when a customer calls or a member writes — and by then, hours may have passed.
Uptime Kuma checks your services every minute and sends you a notification the moment something isn’t reachable — before anyone else notices.
Common use cases:
- Company website — is it publicly accessible?
- Online shop — does the homepage load? Is checkout reachable?
- Customer portal or SaaS app — around-the-clock monitoring with alerts on outages
- Email server — is the SMTP or IMAP service reachable?
- Internal systems — ERP, phone system, VPN endpoint, NAS
- SSL certificates — get notified before a certificate expires
- Cron jobs and backups — confirm that automated processes are running reliably
- Status page for customers or members — a public overview of current system status
- Database servers — query PostgreSQL, MySQL, MariaDB, MongoDB, Redis directly
- APIs — check JSON responses and evaluate their content
Uptime Kuma works with three central elements:
- Monitor — a monitoring rule (e.g. “Check URL X every 60 seconds”)
- Notification — where should alerts go when something fails? (Email, Mattermost, Telegram, SMS, etc.)
- Status page — a public or internal overview showing whether your services are running
Each monitor can be linked to multiple notifications. Set up notifications once and attach them to as many monitors as you like.
Single-user systemUptime Kuma currently supports only one user. All monitors, notifications, and status pages are visible to that user. There’s no user management or roles — everyone with dashboard access sees and can edit all monitors. Share dashboard access deliberately and enable two-factor authentication.
- Set up notifications — at minimum email, ideally a second channel too
- Create your first monitor — e.g. your own website
- Add more monitors — email server, APIs, internal systems
- Assign tags — group monitors by customer, system, or priority
- Set up a status page — for customers or internal transparency
- Plan maintenance windows — for scheduled maintenance
Consider notification dependenciesFor alerts to actually reach you during an outage, your notification methods shouldn’t depend on the systems being monitored. If you’re monitoring your email server with Uptime Kuma, don’t use that same email server as the notification channel — you won’t receive alerts if it goes down. A second channel like an external mail server, ntfy.sh, Telegram, or Mattermost is a good complement.
Uptime Kuma supports a wide range of monitor types. Here are the most important ones with practical examples:
| Type | What it checks | Typical use |
|---|---|---|
| HTTP(S) | URL reachability, HTTP status code (e.g. 200 OK) | Websites, web apps, APIs |
| HTTP(S) Keyword | URL reachable + a specific word must appear (or not appear) on the page | Detect error pages, check login pages |
| HTTP(S) JSON Query | URL reachable + a specific value in a JSON response | API health checks, microservices |
| TCP Port | Whether a specific port is open and reachable | Mail server (25/587), SSH (22), databases (5432/3306) |
| Ping (ICMP) | Whether a server responds at the network level | Servers, routers, network devices, NAS |
| DNS | Whether a DNS query returns the expected result | Check DNS servers, monitor DNS propagation |
| Push (Heartbeat) | Waits for regular “heartbeats” from an external system | Cron jobs, backup scripts, batch processes |
| Type | What it checks | Typical use |
|---|---|---|
| PostgreSQL | Database connection + optional SQL query | Monitor PostgreSQL servers |
| MySQL / MariaDB | Database connection + optional SQL query | Monitor MySQL/MariaDB servers |
| MongoDB | Connection to a MongoDB instance | Monitor MongoDB servers |
| Redis | Connection to a Redis server | Monitor Redis cache or queue |
| Microsoft SQL Server | Connection to a MSSQL server | Monitor MSSQL databases |
Use IP allowlistingIt makes sense to restrict database access to the IP addresses of legitimate clients. This ensures that potential attackers can’t connect. Find the IP addresses used by server.camp in the documentation or ask our support team.
| Type | What it checks | Typical use |
|---|---|---|
| Docker Container | Whether a specific Docker container is running | Your own container infrastructure — use locally only |
| MQTT | Connection to an MQTT broker | IoT devices, smart home systems |
| gRPC(S) | gRPC service reachable + keyword in the response | Microservice architectures |
| Kafka Producer | Connection to a Kafka cluster | Event streaming infrastructure |
| Game server (GameDig) | Whether a game server is reachable | Minecraft, TeamSpeak, CS2, and many more |
Which monitor type for which purpose?For most SMBs, HTTP(S), TCP Port, Ping, and Push are enough. HTTP(S) for websites and APIs, TCP for mail servers and databases, Ping for servers and network devices, Push for cron jobs. Database monitors are worth it if you have direct database access and want to confirm they’re not just reachable but also functional.
- Click “Add monitor” in Uptime Kuma
- Choose a type (start with HTTP(S))
- Enter a name (e.g. “Company website”)
- Enter the URL (e.g.
https://example.org) - Set the check interval — every 60 seconds is a good default
- Configure retries — 2–3 is recommended to avoid false alarms from a single timeout
- Link notifications (must be set up first)
- Optionally: assign tags (e.g. “Production”, “Client A”)
- Save
Uptime Kuma starts monitoring immediately. A green dot in the sidebar means everything is OK.
For HTTP(S) monitors, additional options are available:
- Accepted status codes — default is 200–299. Expand the range for redirects (301/302).
- Maximum redirects — how many redirects Uptime Kuma should follow
- HTTP method — GET (default), POST, PUT, HEAD
- HTTP headers and body — for APIs that require authentication
- Certificate expiry notification — warning X days before SSL expiry (e.g. 30 days)
- Upside-down mode — reverses the logic: alert when the service is reachable (useful for services that should be offline)
Under Settings → Notifications, configure where alerts should go. Uptime Kuma supports over 90 notification services. The most important:
- Type: Email (SMTP)
- Enter your email provider’s SMTP server (address, port, username, password)
- Configure sender and recipient address
- Test with “Test” to confirm the email arrives
If you use Mattermost at server.camp:
- Type: Mattermost
- In Mattermost: Integrations → Incoming webhooks → Create new webhook
- Paste the webhook URL into Uptime Kuma
- Optionally: configure the channel and display name
If you use ntfy.sh for push notifications:
- Type: ntfy
- Enter the server URL, e.g.
https://ntfy.sh(or your self-hosted instance) - Set a topic — a freely chosen name, e.g.
uptime-kuma-alerts - Optionally: configure priority and tags
Use ntfy.sh for freentfy.sh works for free, even without an account. Make your topic name unique and hard to guess so you don’t receive others’ notifications — e.g.uptime-kuma-yourname-51586451or25168168-yourname-alerts. A free push channel with no mix-ups.
Fast, reliable, and free — ideal as a second notification channel:
- Type: Telegram
- Create a bot: message @BotFather in Telegram →
/newbot→ copy the token - Get your chat ID: message the bot, then use the Telegram API to retrieve the chat ID
- Example:
https://api.telegram.org/bot<YOUR_TOKEN>/getUpdates - The chat ID is in the response, e.g.
"chat":{"id":123456789,"first_name":"Max","type":"private"}} - Here:
123456789
- Example:
- Enter the token and chat ID in Uptime Kuma
| Service | Advantage | Especially suited for |
|---|---|---|
| Slack | Direct integration into Slack channels | Teams using Slack as their main messenger |
| Microsoft Teams | Integration via webhook | Organizations in a Microsoft 365 environment |
| Discord | Webhook integration | Nonprofits and communities with a Discord server |
| PagerDuty / OpsGenie | Professional on-call management with escalation | Larger teams with an on-call schedule |
| Gotify | Self-hosted push notifications | Privacy-sensitive environments |
| Pushover | Reliable push notifications (one-time ~€5) | Freelancers and small teams |
| Apprise | Meta-service: forwards to many channels at once | When you want to reach many different channels |
Set up at least two channelsAlways set up at least two notification channels — e.g. email and Mattermost (or Telegram). If the email server itself has a problem, the second channel still reaches you. That’s exactly what monitoring is for: working even when something goes wrong.
Enable default notificationMark a notification as “Default notification” and it’s automatically linked to every new monitor. Saves time and prevents accidentally setting up a monitor without any notification.
A simple HTTP check only verifies that a page responds. Sometimes a page responds with status code 200 (OK) but shows an error — e.g. “Database connection failed” or “Maintenance mode”.
A keyword monitor lets you check whether a specific text is present or absent on a page:
- Must be present: alert if e.g. your company name or “Welcome” doesn’t appear on the page
- Must not be present: alert if “Error”, “Fatal”, “Maintenance”, or “Downtime” appears
Practical examples:
| Monitor | Keyword | Mode | Detects |
|---|---|---|---|
| Homepage | “server.camp GbR” | Must be present | Blank page, wrong content, hacked site |
| Online shop | “Shopping cart” | Must be present | Shop engine not loaded |
| API health endpoint | “healthy” | Must be present | API error despite HTTP 200 |
| Any page | “Error” | Must not be present | Error messages on the page |
For APIs that return JSON, use the HTTP(S) JSON Query monitor type to check specific values in the response.
Example: Your API responds to /api/health with:
{ "status": "ok", "database": "connected", "version": "2.1.0" }
- JSON Path:
$.status - Expected value:
ok
Uptime Kuma alerts if the value of status is not ok — even if the API responds technically.
JSON query for microservicesIf you run multiple microservices, set up a JSON query monitor on each service’s health endpoint. This tells you not just whether the service is reachable, but whether it’s working internally (database connection, external dependencies, etc.).
An expired SSL certificate marks your site as “insecure” for all visitors — a serious problem for customer trust and SEO.
Uptime Kuma can warn you automatically when a certificate expires in X days:
- Set up an HTTP(S) monitor for the relevant domain
- In monitor settings, enable “Certificate expiry notification”
- Enter the warning threshold (recommended: 30 days)
Uptime Kuma checks the entire certificate including the certificate chain (CA certificates). This also catches problems with intermediate certificates.
Many organizations run automated processes: backups, database cleanups, invoice sending, data imports. When a cron job silently stops running, it often goes unnoticed for weeks.
A push monitor (heartbeat) reverses the principle: instead of Uptime Kuma querying a service, the service checks in with Uptime Kuma. If the check-in doesn’t arrive → alert.
- Add monitor → type: Push
- Enter the expected interval (e.g. 1440 minutes = once daily)
- Uptime Kuma shows a push URL
- Add a
curlcall to this URL at the end of your cron job:
# At the end of your backup script:
curl -s https://your-uptimekuma.srv.camp/api/push/abc123?status=up&msg=OK
| Process | Expected interval | Meaning if missed |
|---|---|---|
| Daily backup | 1440 min (24h) | Backup is no longer running |
| Hourly data import | 90 min | Import process is hung |
| Weekly report | 10,080 min (7 days) | Report generation failed |
| Monthly database cleanup | 43,200 min (30 days) | Cleanup didn’t run |
Monitor every automated processSet up a push monitor for every cron job, every backup script, and every automated process. The effort is minimal (onecurlline at the end of the script), but the benefit is enormous: you’ll know immediately when a process stops running — instead of weeks later when the damage is already done.
As the number of monitors grows, tags help keep things organized. Tags are colored labels you can assign to monitors.
Useful tagging strategies:
| Tag | Color (suggestion) | Use |
|---|---|---|
Production |
Red | Production systems, highest priority |
Staging |
Yellow | Test systems |
Internal |
Blue | Internal systems, VPN, ERP |
Client: Company A |
Green | Monitors belonging to a specific client |
Type: Website |
Grey | Filter by system type |
Type: Mail |
Grey | Filter by system type |
Tags appear in the monitor overview and on status pages. Filter by tag to quickly see all monitors for a specific client or system type.
Uptime Kuma can create multiple status pages showing whether your services are up. This is especially useful when customers or members want to know if the website, shop, or customer portal is working right now.
Under Status pages → New:
- Enter a title and description
- Set the slug (determines the URL, e.g.
/status/customers) - Upload a logo (optional)
- Create groups — each group bundles related monitors (e.g. “Website”, “Email”, “API”)
- Assign monitors to groups
- Save and publish
Uptime Kuma supports unlimited status pages. This is especially useful when you want to serve different audiences with different information:
| Status page | Audience | Shows |
|---|---|---|
/status |
General / Customers | Website, shop, email — external services only |
/status/intern |
Internal team | All systems including internal services, VPN, ERP |
/status/client-a |
Specific client | Only the monitors relevant to Client A |
/status/nonprofit |
Nonprofit members | Nonprofit website, cloud storage, email |
Transparency builds trustMany organizations shy away from a public status page — but the opposite is true: customers appreciate transparency. A status page signals a professional approach to your infrastructure. And during an outage, customers can check for themselves instead of contacting support — taking pressure off your team.
- Logo and favicon — maintain your corporate design
- Description text — Markdown supported, e.g. for contact info or links
- Custom footer — legal notice, support contact
- Custom domain — status page accessible at
status.example.org(Business and Corporate plans)
For scheduled maintenance (e.g. server updates, migrations), set up maintenance windows:
Under Maintenance → New:
- Enter a title (e.g. “Server update February 2026”)
- Define the time range (start and end time)
- Choose a schedule:
- One-time — for a planned maintenance event
- Recurring — e.g. every Sunday 02:00–04:00 for automatic updates
- Select the affected monitors
- Save
During the maintenance window:
- No alerts are triggered for affected monitors
- The status page shows the maintenance status
- Uptime calculations are not negatively affected
Set up recurring maintenance windowsIf you apply automatic updates regularly (e.g. Sunday nights), set up a recurring maintenance window. This avoids false alarms during the update phase and keeps your uptime statistics clean.
The Uptime Kuma dashboard shows at a glance:
- Current status of each monitor (green = OK, red = down, yellow = pending, grey = maintenance)
- Response time as a time-series chart — ideal for spotting performance issues before they cause an outage
- Uptime percentage across different time ranges (24h, 7 days, 30 days, 1 year)
- Certificate expiry — days until the SSL certificate expires
- Heartbeat bar — color-coded history of recent checks
The response time chart shows not just whether a service is reachable, but also how fast it responds. A slowing service is often an early indicator of upcoming issues:
- Rising response times → server under load, database problems, network bottleneck
- Erratic fluctuations → unstable connection or intermittent problems
- Sudden spike → current load, e.g. from a marketing campaign
Check response times regularlyDon’t just look at up/down status — also watch response times. If a website normally responds in 200ms and suddenly takes 2 seconds, something is wrong — even if it’s technically still reachable.
Your monitoring dashboard contains sensitive information about your infrastructure. Secure access with two-factor authentication:
Under Settings → Security → Two-factor authentication:
- Enable 2FA
- Scan the QR code with a TOTP app (Aegis, Google Authenticator, etc.)
- Store backup tokens safely
| Challenge | Solution with Uptime Kuma |
|---|---|
| Customer reports a website outage — embarrassing | HTTP(S) monitor for every client website |
| SSL certificate expired, customers see “insecure” | Set certificate expiry warning to 30 days |
| Backup script stopped running, noticed weeks later | Push monitor for every backup script |
| Customer asks “Is my system online?” | Individual status page per client |
| No overview across many client projects | Tags per client, filter in the overview |
Recommended monitors for freelancers:
- HTTP(S) monitor for every client website
- TCP monitor for every client mail server
- Push monitor for every backup script
- SSL certificate warning for all domains
Tip: Create a dedicated status page for each client with their logo. It signals professionalism and gives the client transparency about their systems at any time — a real differentiator.
| Challenge | Solution with Uptime Kuma |
|---|---|
| Online shop goes down, revenue lost | HTTP(S) monitor + keyword check for “shopping cart” |
| Mail server outage, nobody notices | TCP monitor on port 587 (SMTP) and 993 (IMAP) |
| Night jobs (backups, imports) fail silently | Push monitors for every automated process |
| Customers ask during an outage, team doesn’t know | Notification to Mattermost channel → team is informed immediately |
| SLA proof for customers | Export uptime percentages over 30/90/365 days |
| Maintenance triggers false alarms | Set up maintenance windows (one-time or recurring) |
| Performance degrades gradually | Watch the response time chart, recognize trends early |
Recommended monitors for SMBs:
- HTTP(S) + keyword for website and shop
- TCP for mail server, VPN endpoint, database
- Ping for servers, routers, NAS
- JSON query for APIs and health endpoints
- Push for backups, cron jobs, batch processes
- Database monitors (PostgreSQL/MySQL) where direct access is available
Tip: Set up a Mattermost channel “#monitoring” and connect it as a notification channel. The entire team sees issues immediately — reaction time drops dramatically.
| Challenge | Solution with Uptime Kuma |
|---|---|
| Nonprofit website goes down unnoticed | HTTP(S) monitor with 60-second interval |
| Event registration system is offline | HTTP(S) monitor + keyword “registration” |
| Cloud storage not reachable | HTTP(S) monitor on the login page |
| SSL certificate expired, browsers warn members | Certificate warning 30 days before expiry |
| Members ask “Is the website down?” | Public status page with nonprofit logo |
| Mail server outage, nonprofit mail isn’t delivered | TCP monitor on SMTP and IMAP ports |
Recommended monitors for nonprofits:
- HTTP(S) for nonprofit website and registration portals
- TCP for the nonprofit mail server
- SSL certificate warning for the nonprofit domain
- Optional: push monitor for member database backup
Tip: Share the status page with the board — during an outage, everyone can immediately see what’s happening without back-and-forth questions. Notifications via Telegram or email go to the 2–3 people who can take technical action.
Connect Uptime Kuma with Mattermost for real-time alerts in your team chat. When something goes down, the whole team sees the message immediately — with the monitor name, status, and duration.
Via REST API or webhooks, Uptime Kuma alerts can automatically create tickets in Zammad. Every outage is automatically captured as a ticket, assigned, and tracked — ideal for teams with structured incident management.
Via webhooks, Uptime Kuma can send events to Node-RED. There you can build complex automations — e.g. “When the shop monitor switches to ‘Down’ → send SMS to the CEO AND create a ticket in Zammad AND post a message in Mattermost.”
If you need help setting up monitors, notification channels, or status pages, reach out any time at support@server.camp.
Find answers to common questions on our product page.