콘텐츠로 이동

Uptime Kuma

Slack, Discord, Telegram을 포함한 90개 이상의 알림 서비스를 지원하는 HTTP, TCP, DNS, Docker 기반의 자체 호스팅 가동 시간 모니터링 도구입니다.

# 영구 저장소를 포함하여 Uptime Kuma 실행
docker run -d \
  --restart=always \
  -p 3001:3001 \
  -v uptime-kuma:/app/data \
  --name uptime-kuma \
  louislam/uptime-kuma:2

# http://localhost:3001에서 접근
# 로컬호스트에만 바인드 (외부 접근 없음)
docker run -d \
  --restart=always \
  -p 127.0.0.1:3001:3001 \
  -v uptime-kuma:/app/data \
  --name uptime-kuma \
  louislam/uptime-kuma:2
# 공식 Compose 파일 다운로드
mkdir uptime-kuma && cd uptime-kuma
curl -o compose.yaml \
  https://raw.githubusercontent.com/louislam/uptime-kuma/master/compose.yaml

# 서비스 시작
docker compose up -d

# http://localhost:3001에서 접근
# 컨테이너 상태 모니터링용 Docker 소켓 마운트
docker run -d \
  --restart=always \
  -p 3001:3001 \
  -v uptime-kuma:/app/data \
  -v /var/run/docker.sock:/var/run/docker.sock:ro \
  --name uptime-kuma \
  louislam/uptime-kuma:2
# 요구 사항: Node.js 20.4+, Git

# 클론 및 설정
git clone https://github.com/louislam/uptime-kuma.git
cd uptime-kuma
npm run setup

# 직접 시작
node server/server.js

# 또는 백그라운드 작동을 위해 PM2 사용
npm install -g pm2
pm2 start server/server.js --name uptime-kuma
명령어설명
docker run -d -p 3001:3001 louislam/uptime-kuma:2Uptime Kuma 컨테이너 시작
docker compose up -dDocker Compose로 시작
docker compose down모든 서비스 중지
docker compose logs -f컨테이너 로그 추적
docker restart uptime-kuma컨테이너 재시작
docker stop uptime-kuma컨테이너 중지
docker start uptime-kuma중지된 컨테이너 시작
node server/server.jsDocker 없이 시작
pm2 start server/server.js --name uptime-kumaPM2로 시작
pm2 restart uptime-kumaPM2로 재시작
pm2 stop uptime-kumaPM2로 중지
pm2 logs uptime-kumaPM2 로그 보기
# 최신 이미지 풀
docker pull louislam/uptime-kuma:2

# 현재 컨테이너 중지 및 제거
docker stop uptime-kuma
docker rm uptime-kuma

# 새 이미지로 재생성 (데이터는 볼륨에 유지)
docker run -d \
  --restart=always \
  -p 3001:3001 \
  -v uptime-kuma:/app/data \
  --name uptime-kuma \
  louislam/uptime-kuma:2
# 풀 및 재생성
docker compose pull
docker compose up -d
cd uptime-kuma
git fetch --all
git checkout 2.1.3 --force
npm install --production
npm run download-dist
pm2 restart uptime-kuma
유형설명
HTTP(S)웹사이트 가용성 및 응답 시간 모니터링
HTTP(S) Keyword응답 본문의 특정 텍스트 확인
HTTP(S) JSON QueryJSON 응답 값 검증
TCP PortTCP 포트 개방 및 응답 여부 확인
Ping호스트 가용성을 위한 ICMP ping
DNSDNS 레코드 해석 모니터링
Docker Container컨테이너 상태 모니터링
Steam Game Server게임 서버 가용성 확인
MQTTMQTT 브로커 연결성 모니터링
gRPCgRPC 서비스 상태 모니터링
RadiusRADIUS 인증 서버 확인
GameDig게임 서버 모니터링 (여러 프로토콜)
Push하트비트 엔드포인트를 통한 수동 모니터링
Group모니터의 논리적 그룹화
서비스설명
Slack채널 웹훅 및 봇 알림
Discord웹훅 기반 채널 알림
Telegram봇 API 알림
Microsoft Teams수신 웹훅 알림
Mattermost자체 호스팅 채팅 통합
Rocket.Chat웹훅 알림
Google Chat공간 웹훅 알림
Matrix분산형 채팅 알림
서비스설명
Pushover모바일 푸시 알림
Gotify자체 호스팅 푸시 서버
ntfyHTTP 기반 pub/sub 알림
Pushbullet크로스 디바이스 푸시 알림
Signal안전한 메시징 알림
LINELINE Notify 통합
서비스설명
PagerDuty사건 알림 및 온콜
Opsgenie알림 관리 및 에스컬레이션
Squadcast사건 관리
Splunk On-CallVictorOps 알림 라우팅
Better Stack가동 시간 및 사건 관리
서비스설명
SMTP Email사용자 정의 이메일 알림
Webhook사용자 정의 HTTP 엔드포인트 호출
Home Assistant스마트 홈 자동화 트리거
Apprise범용 알림 게이트웨이
변수설명기본값
UPTIME_KUMA_PORT서버 포트3001
UPTIME_KUMA_HOST바인드 주소::
DATA_DIR데이터 저장소 디렉토리./data
TZ타임존UTC
UMASK파일 권한 마스크0000
NODE_EXTRA_CA_CERTS사용자 정의 CA 인증서 경로
SSL_CERTSSL 인증서 경로
SSL_KEYSSL 개인 키 경로
기능설명
Multiple Pages다양한 서비스를 위한 별도 상태 페이지 생성
Custom Domains상태 페이지를 사용자 정의 도메인에 매핑
Custom CSS사용자 정의 CSS로 상태 페이지 스타일 지정
Incident Posts상태 페이지에 표시되는 사건 보고서 생성
Maintenance유지보수 창 예약
Monitor Groups상태 페이지의 그룹으로 모니터 구성
# Python API 클라이언트 설치
pip install uptime-kuma-api
작업설명
Add monitor프로그래밍 방식으로 모니터 생성
Edit monitor모니터 설정 업데이트
Delete monitor모니터 제거
Pause/Resume모니터 상태 전환
Get status현재 모니터 상태 조회
Add notification알림 공급자 설정
Get uptime가동 시간 통계 조회
# compose.yaml
services:
  uptime-kuma:
    image: louislam/uptime-kuma:2
    container_name: uptime-kuma
    restart: always
    ports:
      - "3001:3001"
    volumes:
      - ./data:/app/data
      # 선택 사항: Docker 컨테이너 모니터링
      # - /var/run/docker.sock:/var/run/docker.sock:ro
    environment:
      - TZ=UTC
기능설명
2FA로그인용 이중 인증
Reverse ProxyNginx, Caddy 또는 Traefik 뒤에 배포
SSL/TLS내장 SSL 또는 리버스 프록시 종료
Login Rate Limiting브루트포스 공격 방지
API Keys토큰 기반 API 접근
server {
    listen 443 ssl;
    server_name status.example.com;

    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;
    }
}
명령어설명
docker cp uptime-kuma:/app/data ./backup데이터 디렉토리 백업
docker cp ./backup/. uptime-kuma:/app/data백업에서 복원
docker volume inspect uptime-kuma볼륨 마운트 지점 찾기
문제솔루션
UI 접근 불가포트 바인딩 확인: docker port uptime-kuma
NFS 볼륨 오류네트워크 파일 시스템이 아닌 로컬 디렉토리 사용
WebSocket 오류WebSocket 업그레이드용 리버스 프록시 설정
컨테이너 시작 안 됨로그 확인: docker logs uptime-kuma
데이터 유지 손실-v uptime-kuma:/app/data 볼륨 사용 확인
Docker 모니터링 실패docker.sock 마운트: -v /var/run/docker.sock:/var/run/docker.sock:ro
플랫폼상태
Linux (x64, ARM)지원됨
Windows 10+ (x64)지원됨
macOS지원됨
Docker Desktop지원됨
KubernetesDocker 이미지를 통함
FreeBSD/OpenBSD지원되지 않음
Replit/Heroku지원되지 않음
  • 데이터 지속성을 위해 NFS가 아닌 Docker 볼륨 사용 (바인드 마운트 아님)
  • 프로덕션 사용을 위해 SSL 종료를 통해 리버스 프록시 뒤에 배포하세요
  • 첫 로그인 직후 관리자 계정에 2FA를 활성화하세요
  • 외부 서비스의 모니터링 간격을 60초 이상으로 설정하세요
  • 방화벽 뒤의 서비스를 위해 Push 모니터 유형을 사용하세요
  • 중복성을 위해 최소 2개의 알림 채널을 설정하세요
  • 내부 및 외부 대상을 위한 별도 상태 페이지를 생성하세요
  • 데이터 디렉토리를 정기적으로 백업하세요 — 모든 설정이 포함됨
  • 운영 센터와 일치하도록 TZ 환경 변수를 통해 타임존을 설정하세요