Gå til hovedindhold
50% rabat alle planer, tidsbegrænset. Fra $2.48/mo
10 min left
Udviklerværktøjer og DevOps

Sådan opsætter du Uptime Kuma på en VPS

C Af Chike 10 min læsning
Uptime Kuma VPS setup title card: a server rack on a monitoring dashboard with green status icons for website, database, mail and security checks and one failed check in red

Uptime Kuma er en open source-monitor, du selv hoster, til HTTP(S)-, TCP-, ping-, DNS-, WebSocket- og andre tjek. På en separat VPS bliver den ved med at tjekke, når din produktionsserver falder, i stedet for at forsvinde sammen med den.

Denne Uptime Kuma-opsætning på en VPS udruller v2 med Docker Compose, holder port 3001 på loopback, tilføjer HTTPS via Caddy, sender alarmer til Telegram, Discord og Slack og udgiver en statusside.

Forudsætninger og hvad du får brug for

  • En VPS med mindst 1 vCPU, 1 GB RAM og 10 GB lokal SSD-lagring
  • Ubuntu 24.04 LTS eller en anden aktuel Ubuntu-udgivelse, som Docker understøtter
  • Docker Engine og Docker Compose installeret på din VPS
  • Et domæne eller subdomæne, der peger på din VPS via en A-record (for eksempel status.example.com)
  • SSH-adgang og grundlæggende fortrolighed med kommandolinjen

Hvis Docker endnu ikke er installeret, så følg Dockers Ubuntu-installationsvejledning. Den installerer Docker Engine og det Compose-plugin, vi bruger nedenfor.

Hvorfor overvågnings-VPS'en skal være adskilt fra det, den overvåger

Production in Region A has failed and its website, API and database are down, while Uptime Kuma on a separate VPS in Region B stays online, keeps probing those services and routes alerts to Telegram, Discord and Slack. An external watchdog checks Uptime Kuma itself.

Produktion og overvågning på samme server deler samme fejldomæne. Går den server ned, forsvinder både applikationen og det system, der skal sende alarmen.

To praktiske opsætninger forbedrer det:

  1. Samme udbyder, anden lokation. Placér produktion og overvågning på separate hosts i forskellige lokationer. Det mindsker risikoen ved nedbrud på en enkelt server eller et enkelt datacenter, men beskytter ikke mod enhver netværks- eller control plane-hændelse hos hele udbyderen.
  2. En helt anden udbyder. At hoste monitoren et andet sted beskytter også mod hændelser, der rammer hele udbyderen. Til gengæld får du endnu en konto, endnu en faktura og endnu en driftsflade at styre.

En enkelt Uptime Kuma-instans har stadig ingen vagthund udefra. Tilføj ét eksternt HTTP(S)-tjek af dens offentlige statusside. UptimeRobots gratis plan indeholder i øjeblikket 50 monitorer med fem minutters interval. Det gør ikke Uptime Kuma højtilgængelig, men det fortæller dig, når selve monitoren forsvinder.

Samme regel gælder for offentlige statussider: Det, der fortæller dig om nedbruddet, må ikke dele fejldomæne med det, der bryder ned.

Se Linux-planer

Byg på en Linux VPS med root-adgang, NVMe og AMD EPYC-kraft.

Se Linux-planer

Dimensionering af din VPS

Uptime Kuma har ikke en pålidelig formel fra antal monitorer til RAM, fordi belastningen ændrer sig med monitortype, interval, retry-indstillinger og hvor længe historikken gemmes. Simple HTTP(S)-, TCP-, ping- og DNS-tjek er lettere end Browser Engine-tjek, der kører Chromium.

Til et lille sæt basale tjek kan du starte med 1 vCPU, 1 GB RAM og lokal SSD-lagring. Hold øje med det faktiske forbrug med docker stats uptime-kuma og databasens vækst med du -sh /opt/uptime-kuma/data. Tilføj hukommelse, når forbruget bliver ved med at være højt, når containeren melder om et OOM kill, eller når du tager Browser Engine-tjek i brug.

Det fulde v2-image indeholder Chromium og en indbygget MariaDB; dokumentationen om Docker-tags forklarer forskellen mellem det fulde og det slanke image.

Udrul Uptime Kuma med Docker Compose

Gem denne fil som docker-compose.yml i /opt/uptime-kuma/:

services:
  uptime-kuma:
    image: louislam/uptime-kuma:2
    container_name: uptime-kuma
    restart: unless-stopped
    ports:
      # Bind to localhost only. The reverse proxy will expose it on 443.
      - "127.0.0.1:3001:3001"
    volumes:
      - ./data:/app/data

Tre linjer er værd at fremhæve:

  • image: louislam/uptime-kuma:2 låser hovedversionen. Tagget :2 følger den stabile 2.x-udgivelseslinje. Brug ikke :latest.
  • 127.0.0.1:3001:3001 binder containeren kun til localhost. Det offentlige internet må aldrig nå port 3001 direkte. Det er reverse proxyen, der har TLS-certifikatet og det offentlige værtsnavn.
  • Datavolumenet indeholder databasen, monitorkonfigurationen og historikken. Hold det på lokal lagring, for Uptime Kumas installationsdokumentation advarer om, at filsystemer uden pålidelig POSIX-låsning, herunder mange NFS-opsætninger, kan ødelægge SQLite. Stop stakken, før du tager en kopi på filsystemniveau.

Start den og verificér:

sudo install -d -o "$USER" -g "$USER" /opt/uptime-kuma
cd /opt/uptime-kuma
# Paste the docker-compose.yml file above.
sudo docker compose up -d
sudo docker compose ps

Forventet output fra docker compose ps:

NAME          IMAGE                       STATUS                   PORTS
uptime-kuma   louislam/uptime-kuma:2      Up (healthy)             127.0.0.1:3001->3001/tcp

Når du skal ind på dashboardet første gang, så åbn ikke port 3001 mod internettet, heller ikke kortvarigt. Brug en SSH-tunnel:

ssh -L 3001:127.0.0.1:3001 [email protected]

Åbn http://localhost:3001 i browseren, opret administratorkontoen, vælg en stærk adgangskode, og luk tunnelen. Fra nu af når dashboardet dig over HTTPS gennem din reverse proxy.

Har du ikke brug for manuel Compose, tilbyder vi også Uptime Kuma som ét-kliks-app. Den nuværende app-side angiver v1 og passer derfor ikke til v2-opsætningen i denne guide. Vælg den manuelle Compose-vej, hvis du specifikt har brug for v2.

Reverse proxy og TLS

Public traffic reaches Caddy on the host or an Nginx Proxy Manager container over HTTPS on port 443. Caddy forwards to Uptime Kuma on 127.0.0.1:3001 while the NPM container uses a shared Docker network instead. Public access to port 3001 is blocked, and first-time setup runs through an SSH tunnel to localhost:3001.

Eksponér ikke Uptime Kuma direkte. Sæt en reverse proxy foran til TLS, fornuftig URL-håndtering og ét offentligt indgangspunkt. To veje.

Caddy. Er Caddy ikke installeret endnu, så følg de officielle Ubuntu-pakketrin. Når Caddy kører som en tjeneste på værten, sender Caddyfilen nedenfor trafikken videre til Uptime Kuma på loopback og håndterer udstedelse og fornyelse af certifikatet automatisk.

Pro-tip: Kører der kun Uptime Kuma på overvågnings-VPS'en, så brug Caddy. Caddyfilen fylder tre linjer, og Caddy klarer selv udstedelse og fornyelse af certifikatet. Ingen Certbot og ingen separat fornyelsestimer, du skal passe på klokken 4 om natten.

Gem dette som /etc/caddy/Caddyfile:

status.example.com {
    reverse_proxy 127.0.0.1:3001
}

Genindlæs Caddy:

sudo systemctl reload caddy

Verificér:

curl -I https://status.example.com

Du bør få et vellykket 2xx- eller 3xx-svar med et gyldigt certifikat. Hvis forbindelsen fejler, så bekræft at domænets A- eller AAAA-record peger på denne VPS, at port 80 og 443 kan nås, og at Caddy kan binde sig til begge. Det hører til Caddys krav til automatisk HTTPS.

Nginx Proxy Manager. Kører NPM direkte på værten, så tilføj en Proxy Host for status.example.com, videresend den til 127.0.0.1 på port 3001, anmod om et Let's Encrypt-certifikat, og slå Websockets Support til. Kører NPM i Docker, peger 127.0.0.1 tilbage på selve NPM-containeren. Forbind i stedet NPM og Uptime Kuma til samme Docker-netværk, og videresend så proxy-værten til uptime-kuma på port 3001.

Routing af notifikationer: Telegram, Discord, Slack

Uptime Kuma kan sende den samme monitorhændelse til flere notifikationskanaler. Konfigurér hver udbyder én gang, og hæft derefter en eller flere kanaler på en monitor alt efter, hvem der har brug for alarmen.

Notifikationer konfigureres globalt i Indstillinger > Notifikationer, og tildeles derefter de enkelte monitorer. Hver monitor kan udløse en eller flere kanaler. Den samme alarm kan ryge til Telegram for vagthavende ingeniør, til Slack for teamet og til e-mail som revisionsspor, alt sammen fra én hændelse.

Telegram

  1. Skriv i Telegram til @BotFather og kør /newbot. Vælg et navn og et brugernavn. BotFather svarer med et bot-token. Gem det.
  2. Send en vilkårlig besked til din nye bot. Åbn derefter https://api.telegram.org/bot<YOUR_TOKEN>/getUpdates i en browser. Find feltet chat.id, det er dit chat-id.
  3. I Uptime Kuma: Indstillinger > Notifikationer > Opsæt notifikation > Telegram. Indsæt bot-token og chat-id. Klik på Test. Bekræft, at botten sender testalarmen.
  4. Hvis testbeskeden ikke kommer frem, så tjek at bot-token og chat-id er korrekte, og bekræft at firewallen på din VPS tillader udgående HTTPS til api.telegram.org.

Discord

  1. Åbn den Discord-server, du vil have alarmerne i. Højreklik på den ønskede kanal, og vælg så Rediger kanal > Integrationer > Webhooks > Ny webhook. Giv den et navn (for eksempel "Uptime Kuma"), vælg kanalen, og kopiér webhook-URL'en.
  2. I Uptime Kuma: Indstillinger > Notifikationer > Opsæt notifikation > Discord. Indsæt webhook-URL'en. Du kan eventuelt også angive brugernavn og avatar.
  3. Klik Test. Bekræft, at webhooken sender testalarmen i kanalen.

Slack

  1. Opret i Slack en Incoming Webhook til den kanal, du vil have alarmerne i. Slack returnerer en webhook-URL på formen https://hooks.slack.com/services/T.../B.../....
  2. I Uptime Kuma: Indstillinger > Notifikationer > Opsæt notifikation > Slack. Indsæt webhook-URL'en. Du kan eventuelt også konfigurere ikonet og kanaloverstyringen.
  3. Klik Test.

Når alle test består, redigerer du hver monitor og vælger de notifikationskanaler, den skal bruge. Indstil Max Retries (maks. antal forsøg) og Retry Interval (interval mellem forsøg) sådan, at ét kortvarigt svigt ikke udløser en alarm med det samme.

Den indbyggede statusside (og hvornår du vokser fra den)

Uptime Kuma har offentlige statussider med egne slugs, grupperede monitorer, egne domæner, hændelsesopslag og beskeder om planlagt vedligeholdelse. Du kan også udgive flere statussider fra én instans, til forskellige tjenester eller målgrupper.

Den større begrænsning er kundekommunikation. Besøgende kan i øjeblikket ikke tilmelde sig opdateringer på e-mail direkte fra en statusside, og den offentlige side er fortsat en del af samme Uptime Kuma-applikation som operatørens dashboard. Besøgendes egen tilmelding er stadig registreret som en åben funktionsanmodning.

Har du brug for kundeabonnementer eller et statussystem adskilt fra overvågningsdashboardet, er Kener et alternativ. Vores artikel om den selvhostede overvågningsstak forklarer, hvordan de to værktøjer kan kombineres.

Almindelige problemer

Notifikationer fejler lydløst, når firewallen på din VPS blokerer udgående HTTPS. Symptom: Test-knappen virker for nogle kanaler, men ikke for andre. Løsning: Bekræft at udgående HTTPS-forbindelser er tilladt, og at curl -I https://api.telegram.org lykkes fra din VPS.

Browseren viser "ERR_TOO_MANY_REDIRECTS" efter du har slået proxyen til. Se efter dobbelte HTTP-til-HTTPS-omdirigeringer i Caddy, Nginx Proxy Manager eller et CDN foran. Uptime Kuma skal fortsat levere HTTP på port 3001, mens den offentlige reverse proxy terminerer TLS. Slår du betroede proxy-headers til, er den aktuelle sti Indstillinger > Reverse Proxy > HTTP-headers > Trust Proxy.

Containeren genstarter hvert par minutter. Tjek, om containeren blev afsluttet på grund af manglende hukommelse, og hold derefter øje med det aktuelle forbrug med docker stats uptime-kuma. Blev containeren OOM-dræbt, eller ligger hukommelsen tæt på VPS'ens grænse, så tilføj RAM, skær ned på tunge tjek, eller forlæng deres intervaller.

Statussiden virker på localhost, men ikke via det offentlige værtsnavn. Bekræft, at reverse proxyen videresender rodstien uændret, bevarer Host-headeren og understøtter WebSockets. Uptime Kuma understøtter ikke installation under en undermappe, så brug et dedikeret domæne eller subdomæne frem for en sti som example.com/uptime-kuma.

Opsummering

Uptime Kuma på en separat VPS giver dig kontrol over tjek, alarmrouting og den offentlige statusside, men opdateringer, backups, OS-patching og den eksterne vagthund for selve monitoren er også dit ansvar. Vælg en VPS i en anden lokation end produktionen, udrul v2 med Docker Compose eller brug ét-kliks-appen efter at have tjekket den angivne version, sæt Caddy foran, og kobl de kanaler til, som dit team rent faktisk følger.

Ofte stillede spørgsmål

Hvor meget RAM kræver Uptime Kuma?

Uptime Kuma har ikke en pålidelig formel fra antal monitorer til RAM, fordi forbruget ændrer sig med monitortype, tjekinterval, retry-indstillinger, hvor længe historikken gemmes, og brugen af Browser Engine. Til et lille sæt basale tjek kan du starte med 1 GB RAM og følge det faktiske forbrug med docker stats uptime-kuma. Tilføj hukommelse, hvis forbruget bliver liggende tæt på grænsen, eller containeren bliver OOM-dræbt.

Skal jeg køre Uptime Kuma på samme server som min app?

Nej. Deler overvågningsværktøjet og applikationen server, tager et nedbrud dem begge offline samtidig, og du mister alarmeringen præcis når du har mest brug for den. Kør Uptime Kuma på en separat VPS, helst i et andet datacenter.

Kan Uptime Kuma sende alarmer til Telegram, Discord og Slack?

Ja. Telegram, Discord og Slack er indbyggede notifikationstjenester sammen med e-mail, generiske webhooks, PagerDuty, ntfy, Mattermost og mange flere. Telegram bruger et bot-token og et chat-id, mens Discord og Slack bruger webhook-URL'er. Du kan hæfte flere notifikationskanaler på den samme monitor.

Hvad er forskellen på Uptime Kuma og UptimeRobot?

Uptime Kuma hoster du selv, så du styrer serveren, opdateringerne, backups og alarmroutingen. Den understøtter tjekintervaller helt ned til 20 sekunder. UptimeRobot er hostet SaaS, og den nuværende gratis plan indeholder 50 monitorer med tjek hvert femte minut. Vælg Uptime Kuma, hvis du vil have kontrollen, eller UptimeRobot, hvis du ikke vil drifte overvågningsserveren.

Har Uptime Kuma en offentlig statusside?

Ja. Du kan vælge, hvilke monitorer der er synlige, gruppere dem, udgive flere statussider, koble dem til egne domæner og planlægge vedligeholdelsesbeskeder. Besøgendes egen tilmelding via e-mail er ikke indbygget, så brug et separat kundevendt statusside-værktøj, når kunder skal kunne abonnere på opdateringer.

Del

Mere fra bloggen

Læs videre.

Klar til at udrulle? Fra 2,48 $/md.

Uafhængig cloud siden 2008. AMD EPYC, NVMe, 40 Gbps. 14 dages pengene-tilbage-garanti.