Uptime Kuma 설치 가이드 – 내 서버 장애를 즉시 알림 받는 법
내 블로그가 죽었는데 나만 몰랐던 경험, 있으신가요?
개인 블로그나 홈서버를 운영하다 보면 한 번쯤은 이런 일을 겪게 됩니다. 친구한테 “너 블로그 안 열리던데?”라는 메시지를 받고서야 서버가 다운된 걸 알게 되는 거죠. NAS에 워드프레스를 올려놓고, Cloudflare Tunnel로 외부에 공개하고, 열심히 글도 쓰고 있었는데 정작 서버가 멈춰 있었다면 그동안의 검색 유입과 방문자를 고스란히 놓친 셈입니다.
기업에서는 Datadog, PagerDuty 같은 유료 모니터링 서비스를 사용하지만, 개인 운영자에게는 비용 부담이 큽니다. 이때 딱 맞는 오픈소스 도구가 바로 Uptime Kuma입니다. 예쁜 대시보드에 다양한 알림 채널을 지원하고, Docker 한 줄이면 설치가 끝납니다. 이 글에서는 Uptime Kuma를 설치하고, 실제로 블로그·API·서버를 모니터링하며, 텔레그램으로 장애 알림까지 받는 전 과정을 단계별로 안내합니다.
Uptime Kuma가 뭔가요?
Uptime Kuma는 오픈소스 서버 모니터링 도구입니다. 한마디로 “내 서비스가 살아 있는지 주기적으로 확인해서, 죽으면 알려주는 프로그램”이에요. 2021년 Louis Lam이라는 개발자가 만들었고, GitHub에서 6만 개 이상의 스타를 받을 만큼 커뮤니티에서 사랑받고 있습니다.
왜 Uptime Kuma를 추천하나요?
- 완전 무료, 오픈소스 – 상용 모니터링 서비스는 월 수만 원이 넘지만, Uptime Kuma는 영구 무료입니다.
- 직관적인 웹 UI – 설정부터 대시보드까지 웹 브라우저에서 클릭 몇 번이면 끝납니다. CLI 지식이 없어도 괜찮아요.
- 다양한 모니터링 방식 – HTTP(S) 상태 확인, TCP 포트 체크, DNS 조회, Docker 컨테이너 상태, Steam 게임 서버, MQTT 등 20가지 이상의 프로토콜을 지원합니다.
- 풍부한 알림 채널 – 텔레그램, 디스코드, 슬랙, 이메일, 카카오톡(웹훅 경유), Pushover, Gotify 등 90개 이상의 알림 서비스를 기본 지원합니다.
- 상태 페이지(Status Page) – 외부에 공개할 수 있는 서비스 상태 페이지를 자체적으로 제공합니다. 별도 도구 없이 “현재 서비스 정상 가동 중”같은 페이지를 만들 수 있어요.
- 가벼운 리소스 – SQLite 기반으로 동작하기 때문에 별도 데이터베이스 서버가 필요 없고, RAM 100~200MB 수준으로 NAS나 라즈베리파이에서도 거뜬히 돌아갑니다.
다른 모니터링 도구와의 차이
비슷한 역할을 하는 도구들이 몇 가지 있습니다. 간단히 비교해 볼게요.
UptimeRobot(무료 플랜)은 클라우드 기반이라 설치가 필요 없지만, 무료 플랜은 모니터 50개, 확인 주기 5분으로 제한됩니다. 데이터가 외부 서버에 저장되는 것도 신경 쓰이는 부분이에요. Grafana + Prometheus 조합은 기업급 모니터링의 표준이지만, 초기 설정이 복잡하고 학습 곡선이 가파릅니다. 개인 블로그 모니터링에는 과한 구성이에요. Healthchecks.io는 크론잡 같은 예약 작업의 실행 여부를 감시하는 도구라, 웹사이트 가동 모니터링과는 용도가 다릅니다.
Uptime Kuma는 “개인 운영자가 셀프호스팅으로 간편하게 쓸 수 있는 올인원 모니터링 도구”라는 위치에서 독보적입니다.

Docker로 Uptime Kuma 설치하기
설치는 정말 간단합니다. Docker가 설치되어 있다면 명령어 한 줄이면 끝이에요. Synology NAS, 리눅스 서버, WSL2 환경 어디서든 동일하게 동작합니다.
사전 준비
- Docker 및 Docker Compose가 설치된 환경 (NAS, 리눅스 서버, 윈도우 WSL2 등)
- 웹 브라우저 (설정과 대시보드 확인용)
- 알림을 받을 메신저 계정 (텔레그램 권장)
방법 1: Docker CLI로 바로 실행
터미널을 열고 아래 명령어를 입력하세요.
docker run -d \
--name uptime-kuma \
--restart=always \
-p 3001:3001 \
-v uptime-kuma-data:/app/data \
louislam/uptime-kuma:1
각 옵션을 설명하면 이렇습니다.
- -d – 백그라운드에서 실행합니다.
- –restart=always – 서버가 재부팅되어도 자동으로 다시 시작됩니다.
- -p 3001:3001 – 호스트의 3001 포트를 컨테이너의 3001 포트에 연결합니다.
- -v uptime-kuma-data:/app/data – 모니터링 데이터를 Docker 볼륨에 저장해서 컨테이너를 삭제해도 데이터가 유지됩니다.
- louislam/uptime-kuma:1 – 최신 안정 버전(1.x)을 사용합니다.
방법 2: Docker Compose로 관리하기 (권장)
여러 컨테이너를 함께 관리하거나 설정을 파일로 남기고 싶다면 Docker Compose가 편합니다. 아래 내용으로 docker-compose.yml 파일을 만드세요.
version: "3.8"
services:
uptime-kuma:
image: louislam/uptime-kuma:1
container_name: uptime-kuma
restart: always
ports:
- "3001:3001"
volumes:
- uptime-kuma-data:/app/data
volumes:
uptime-kuma-data:
파일을 저장한 뒤 같은 디렉토리에서 아래 명령어를 실행합니다.
docker compose up -d
실행이 완료되면 웹 브라우저에서 http://서버IP:3001로 접속하세요. 처음 접속하면 관리자 계정을 생성하는 화면이 나옵니다. 사용자 이름과 비밀번호를 설정하면 바로 대시보드로 진입할 수 있습니다.
Synology NAS에서 설치하는 경우
Synology NAS의 Container Manager(구 Docker 패키지)를 사용한다면 GUI로도 설치할 수 있습니다.
- 레지스트리에서
louislam/uptime-kuma를 검색하고1태그를 선택해 이미지를 다운로드합니다. - 컨테이너 생성 시 포트 설정에서 로컬 포트 3001을 컨테이너 포트 3001에 매핑합니다.
- 볼륨 탭에서
/app/data에 NAS의 원하는 폴더(예:/docker/uptime-kuma)를 마운트합니다. - 자동 재시작을 활성화하고 컨테이너를 실행하세요.
이후 http://NAS-IP:3001로 접속하면 동일하게 사용할 수 있습니다.
모니터 설정하기 – 내 서비스 감시 시작
설치가 끝났으니 이제 실제로 모니터링할 대상을 등록해 봅시다. Uptime Kuma에서는 감시 대상 하나하나를 “모니터(Monitor)”라고 부릅니다.
웹사이트(블로그) 모니터링
대시보드 왼쪽 상단의 “Add New Monitor” 버튼을 클릭하세요. 가장 기본적인 HTTP(S) 모니터링 설정은 이렇습니다.
- Monitor Type: HTTP(s)
- Friendly Name: 내 블로그 (알아보기 쉬운 이름)
- URL: https://blog.example.com
- Heartbeat Interval: 60 (60초마다 확인)
- Retries: 3 (3번 연속 실패 시 다운으로 판단)
- Accepted Status Codes: 200-299 (정상 응답 코드 범위)
Heartbeat Interval은 모니터링 주기입니다. 60초(1분)로 설정하면 매 분마다 해당 URL에 요청을 보내서 응답을 확인합니다. 개인 블로그라면 60~120초가 적당합니다. 너무 짧게 설정하면 서버에 불필요한 부하를 줄 수 있어요.
Retries는 일시적인 네트워크 지연으로 인한 오탐을 방지합니다. 1번 실패했다고 바로 알림을 보내면 불필요한 알림이 너무 많아지거든요. 3회 연속 실패 시에만 다운으로 판정하는 것을 권장합니다.
키워드 모니터링 – 페이지 내용까지 확인
단순히 HTTP 200 응답만 오는지 확인하는 것으로는 부족할 수 있습니다. 예를 들어 워드프레스가 데이터베이스 연결에 실패하면 “Error establishing a database connection”이라는 에러 페이지를 200 응답으로 반환하는 경우가 있거든요.
이럴 때는 키워드 모니터링을 활용하세요. 모니터 설정에서 Monitor Type을 “HTTP(s) – Keyword”로 바꾸고, 페이지에 반드시 포함되어야 하는 텍스트를 지정합니다. 예를 들어 블로그 제목이나 푸터에 항상 들어가는 고유 문구를 키워드로 설정하면, 페이지가 정상적으로 렌더링되는지까지 확인할 수 있습니다.
다양한 모니터 유형 활용
Uptime Kuma는 HTTP 외에도 다양한 방식의 모니터링을 지원합니다. 상황에 맞게 골라 쓰세요.
TCP 포트 모니터는 특정 포트가 열려 있는지 확인합니다. SSH(22번 포트), 데이터베이스(3306, 5432번 포트) 등 웹이 아닌 서비스의 가동 상태를 체크할 때 유용합니다.
Ping 모니터는 서버 자체가 네트워크에 살아 있는지 확인합니다. 웹 서비스는 죽었더라도 서버 OS는 살아 있는지 구분할 수 있어요.
DNS 모니터는 도메인의 DNS 레코드가 정상적으로 조회되는지 확인합니다. DNS 설정이 잘못 바뀌었을 때 빠르게 감지할 수 있습니다.
Docker 컨테이너 모니터는 특정 Docker 컨테이너가 실행 중인지 직접 확인합니다. 이 기능을 쓰려면 Docker 소켓을 Uptime Kuma 컨테이너에 마운트해야 하는데, 보안상 주의가 필요하므로 내부 네트워크에서만 사용하는 것을 권장합니다.

실전 모니터 구성 예시
개인 서버를 운영하는 분이라면 아래와 같은 조합을 추천합니다.
- 블로그 메인 페이지 – HTTP(s) Keyword, 60초 주기
- 블로그 관리자 페이지(wp-admin) – HTTP(s), 300초 주기
- NAS 관리 포털 – HTTP(s), 120초 주기
- SSH 접속 – TCP Port (22), 120초 주기
- 외부 DNS 확인 – DNS, 300초 주기
- Cloudflare Tunnel 경유 서비스 – HTTP(s), 60초 주기
이렇게 구성하면 네트워크 레벨부터 애플리케이션 레벨까지 계층적으로 문제를 파악할 수 있습니다. 예를 들어 Ping은 성공하는데 HTTP가 실패하면 “서버는 살아 있지만 웹 서비스에 문제가 있다”고 판단할 수 있죠.
텔레그램 알림 설정 – 장애를 즉시 알림 받기
모니터링의 핵심은 “문제가 생겼을 때 빠르게 알 수 있느냐”입니다. 아무리 대시보드가 예뻐도 24시간 화면을 쳐다보고 있을 수는 없으니까요. Uptime Kuma의 알림 기능을 설정해서 장애 발생 시 텔레그램으로 즉시 알림을 받아봅시다.
텔레그램 봇 준비
텔레그램 알림을 받으려면 봇(Bot)과 채팅방 ID가 필요합니다. 이미 텔레그램 봇을 만들어 본 적이 있다면 기존 봇을 그대로 쓸 수 있어요. 처음이라면 아래 과정을 따라 하세요.
- 텔레그램에서 @BotFather를 검색해서 대화를 시작합니다.
/newbot명령어를 보내고, 봇 이름과 사용자명을 입력합니다.- BotFather가 알려주는 API Token을 메모해 둡니다.
- 생성된 봇에게 아무 메시지나 보낸 뒤,
https://api.telegram.org/bot{토큰}/getUpdates에 접속하면 chat id를 확인할 수 있습니다.
Uptime Kuma에서 알림 채널 추가
대시보드 상단 메뉴에서 Settings → Notifications로 이동하거나, 모니터 편집 화면 하단의 “Setup Notification”을 클릭합니다.
- Notification Type: Telegram
- Bot Token: BotFather에서 받은 토큰
- Chat ID: 위에서 확인한 숫자
- Friendly Name: 텔레그램 알림 (알아보기 쉬운 이름)
설정을 완료하면 하단의 “Test” 버튼을 눌러 테스트 메시지가 오는지 꼭 확인하세요. “Notification Sent Successfully”가 뜨고 텔레그램에 메시지가 도착하면 성공입니다.
알림이 오는 시점
알림은 크게 두 가지 상황에서 발생합니다.
다운 알림(Down): 설정한 Retries 횟수만큼 연속 실패했을 때 전송됩니다. “[블로그] 서비스가 다운되었습니다”와 같은 메시지가 옵니다.
복구 알림(Up): 다운 상태에서 다시 정상으로 돌아왔을 때 전송됩니다. “[블로그] 서비스가 복구되었습니다 (다운타임: 5분 23초)”처럼 얼마나 오래 다운되었는지도 알려줍니다.
이 두 가지 알림만으로도 충분하지만, 원한다면 특정 모니터에만 알림을 연결하거나, 알림 메시지 템플릿을 커스터마이징할 수도 있습니다.
디스코드·슬랙 등 다른 채널 추가
텔레그램 외에도 디스코드 웹훅, 슬랙 웹훅, 이메일(SMTP) 등을 동시에 설정할 수 있습니다. 여러 채널을 등록해 두면 하나의 장애에 대해 여러 경로로 알림을 받을 수 있어서, 특정 메신저를 못 보는 상황에서도 놓치지 않을 수 있습니다.
개인적으로는 텔레그램 + 이메일 조합을 추천합니다. 텔레그램은 즉시 확인용, 이메일은 기록 보관용으로 활용하면 좋습니다.
상태 페이지 만들기 – 서비스 현황 한눈에 공개
Uptime Kuma의 숨은 보석 같은 기능이 바로 상태 페이지(Status Page)입니다. 대기업들이 status.example.com으로 운영하는 그 페이지를 직접 만들 수 있어요.

상태 페이지 생성
대시보드 상단 메뉴에서 “Status Pages”를 클릭하고 “New Status Page”를 선택합니다.
- Name: 내 서비스 상태 (페이지 제목)
- Slug: status (URL 경로, 예: http://서버:3001/status/status)
생성된 상태 페이지에서 “Add Group”으로 그룹을 만들고, 그 안에 기존에 등록한 모니터들을 추가합니다. 예를 들어 “웹 서비스” 그룹에 블로그 모니터를, “인프라” 그룹에 NAS와 SSH 모니터를 넣는 식입니다.
상태 페이지 활용 팁
공개 범위 설정: 상태 페이지는 기본적으로 로그인 없이 누구나 볼 수 있습니다. 내부용으로만 쓰고 싶다면 Uptime Kuma 앞에 인증 프록시를 두거나, 방화벽으로 접근을 제한하세요.
커스텀 도메인 연결: Nginx나 Caddy 같은 리버스 프록시를 사용하면 status.mydomain.com 같은 도메인으로 상태 페이지를 제공할 수 있습니다.
사고 공지(Incident): 계획된 점검이나 장애 상황을 상태 페이지에 공지로 남길 수 있습니다. 방문자에게 “현재 점검 중이며 30분 후 복구 예정”같은 안내를 보여줄 수 있어요.
실전 운영 팁과 고급 설정
기본 설정만으로도 충분히 유용하지만, 조금 더 편리하게 쓸 수 있는 팁들을 소개합니다.
인증서 만료 알림
HTTPS 모니터를 등록하면 Uptime Kuma가 자동으로 SSL 인증서 만료일도 추적합니다. 기본적으로 인증서 만료 30일 전에 알림을 보내주는데, 이 기간은 모니터 설정의 “Certificate Expiry Notification”에서 조정할 수 있습니다.
Let’s Encrypt 같은 자동 갱신 인증서를 사용하더라도, 갱신이 실패하는 경우가 간혹 있으니 이 알림은 꼭 켜두세요. 인증서가 만료되면 브라우저에서 경고 페이지를 표시하기 때문에 방문자가 크게 줄어듭니다.
모니터 그룹과 태그 활용
모니터가 많아지면 관리가 복잡해집니다. Uptime Kuma의 태그(Tag) 기능을 활용해서 모니터를 분류하세요.
- 환경별 태그: production, staging, development
- 서비스별 태그: blog, nas, api, database
- 중요도별 태그: critical, warning, info
태그별로 필터링해서 볼 수 있기 때문에, 모니터가 10개, 20개로 늘어나도 한눈에 파악할 수 있습니다.
응답 시간 모니터링
Uptime Kuma는 가동 여부뿐 아니라 응답 시간(Response Time)도 기록합니다. 대시보드에서 각 모니터의 응답 시간 그래프를 확인할 수 있어요.
평소 200ms 정도 걸리던 블로그가 갑자기 2000ms 이상으로 느려졌다면, 서버 부하가 높아졌거나 네트워크에 문제가 생긴 신호입니다. 아직 완전히 다운되지는 않았지만, 조만간 문제가 생길 수 있다는 조기 경고인 셈이죠.
현재 Uptime Kuma에는 “응답 시간이 특정 값을 초과하면 알림”하는 기능이 기본으로 없지만, 대시보드에서 추세를 주기적으로 확인하는 것만으로도 큰 도움이 됩니다.
백업과 복원
Uptime Kuma의 모든 데이터는 /app/data 디렉토리의 SQLite 파일에 저장됩니다. 이 디렉토리만 백업하면 모니터 설정, 알림 설정, 히스토리 데이터를 모두 보존할 수 있습니다.
# 수동 백업 예시
docker cp uptime-kuma:/app/data ./uptime-kuma-backup-$(date +%Y%m%d)
또한 Settings → Backup에서 JSON 형식으로 설정을 내보내고 가져올 수 있습니다. 서버를 이전하거나 재설치할 때 유용합니다.
리버스 프록시 뒤에서 운영하기
Uptime Kuma를 외부에서 접속하려면 리버스 프록시 설정이 필요합니다. Nginx를 사용하는 경우 아래와 같이 설정합니다.
server {
listen 443 ssl;
server_name monitor.mydomain.com;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
location / {
proxy_pass http://127.0.0.1:3001;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
여기서 중요한 부분은 WebSocket 관련 헤더(Upgrade, Connection)입니다. Uptime Kuma는 실시간 대시보드 업데이트에 WebSocket을 사용하기 때문에, 이 헤더가 빠지면 대시보드가 실시간으로 갱신되지 않습니다.
Caddy를 사용한다면 훨씬 간단합니다.
monitor.mydomain.com {
reverse_proxy 127.0.0.1:3001
}
Caddy는 WebSocket 프록시와 SSL 인증서 발급을 자동으로 처리해 주기 때문에 추가 설정이 필요 없어요.
2FA(이중 인증) 활성화
Uptime Kuma 대시보드가 외부에 노출되어 있다면 보안을 위해 2FA(이중 인증)를 반드시 활성화하세요. Settings → Security에서 TOTP 기반 2FA를 설정할 수 있습니다. Google Authenticator, Authy, 1Password 등의 인증 앱을 사용하면 됩니다.

Uptime Kuma와 함께 쓰면 좋은 조합
Uptime Kuma 하나만으로도 훌륭하지만, 다른 도구와 조합하면 더 강력한 모니터링 체계를 구축할 수 있습니다.
Uptime Kuma + Cloudflare Tunnel
집 서버에 Cloudflare Tunnel을 사용하고 있다면, Uptime Kuma도 터널을 통해 외부에서 접속할 수 있도록 설정할 수 있습니다. 이렇게 하면 포트포워딩 없이도 어디서든 모니터링 대시보드를 확인할 수 있어요.
Uptime Kuma + n8n 자동화
n8n의 웹훅 노드와 연동하면 장애 알림을 받았을 때 자동으로 후속 작업을 실행할 수 있습니다. 예를 들어 “블로그 다운 알림 → Docker 컨테이너 자동 재시작 → 복구 확인 → 결과 보고”같은 자동 복구 워크플로우를 만들 수 있죠.
Uptime Kuma + Tailscale VPN
Tailscale을 사용 중이라면 Uptime Kuma를 Tailscale 네트워크에서만 접속 가능하도록 설정할 수 있습니다. 외부에 노출하지 않으면서도 외출 중에 스마트폰으로 대시보드를 확인할 수 있어 보안과 편의를 모두 잡을 수 있습니다.
마무리 – 모니터링은 서비스 운영의 기본 체력
개인 블로그나 홈서버를 운영하면서 모니터링까지 신경 쓰는 분은 생각보다 많지 않습니다. 하지만 모니터링은 운동으로 치면 기초 체력 같은 것입니다. 평소에는 티가 안 나지만, 문제가 생겼을 때 빛을 발합니다.
Uptime Kuma를 설치하는 데는 5분도 안 걸립니다. 모니터 몇 개와 텔레그램 알림을 설정해 두면, 그 뒤로는 자동으로 24시간 감시가 이루어집니다. 서버가 죽으면 바로 알림이 오고, 복구되면 또 알림이 옵니다. 더 이상 “언제부터 안 됐는지 모르겠는데…”라고 말할 일이 없어지는 거죠.
특히 봄에는 날씨 변화가 크고, 가정용 NAS나 서버의 경우 온도 상승이나 전력 문제로 예상치 못한 다운타임이 발생하기도 합니다. 지금이 모니터링 체계를 갖추기 딱 좋은 시기입니다.
오늘 소개한 내용을 정리하면 이렇습니다.
- Uptime Kuma: 무료 오픈소스 서버 모니터링 도구, Docker로 간편 설치
- 다양한 모니터 유형: HTTP, TCP, Ping, DNS, Docker 컨테이너 등
- 풍부한 알림 채널: 텔레그램, 디스코드, 슬랙, 이메일 등 90개 이상
- 상태 페이지: 외부에 서비스 가동 현황을 공개할 수 있는 기능
- SSL 인증서 만료 알림: HTTPS 인증서 갱신 실패를 미리 감지
서버 운영의 첫걸음이 설치라면, 두 번째 걸음은 모니터링입니다. Uptime Kuma와 함께 안심하고 서비스를 운영해 보세요.
이미지는 Leonardo AI 로 생성되었습니다.
이미지는 Claude AI 로 생성되었습니다.


