본문 바로가기

OS/업무 팁

Uptime Kuma SSL 인증서 적용하기

 

Self-hosted 서버 모니터링 도구.

 

특징

다양한 모니터링 지원 (http, https, ping, tcp port, dns, docker, steam 게임 서버, postgreSQL, mysql 등등 )

거의 모든 알림 지원 (telegram, teams, slack, pushover, email, sms, google chat, discord 등등 )

 

 

GitHub - louislam/uptime-kuma: A fancy self-hosted monitoring tool

A fancy self-hosted monitoring tool. Contribute to louislam/uptime-kuma development by creating an account on GitHub.

github.com

 

 

Docker 이미지에 Let's Encrypt 인증서 적용하기

docker, docker-compose 등 패키지 설치 후 적절한 위치에 폴더를 생성하고 docker-compose.yml 파일을 생성한다.

호스트에 설치된 인증서를 참조할 것이므로 호스트에 있는 인증서 경로를 읽기 전용 볼륨으로 마운트 한다. 

version: '3.3'

services:
  uptime-kuma:
    image: louislam/uptime-kuma:1
    container_name: uptime-kuma
    volumes:
      - ./data:/app/data
      - /etc/letsencrypt:/etc/letsencrypt:ro
    environment:
      - UPTIME_KUMA_SSL_KEY=/etc/letsencrypt/live/xxx.com/privkey.pem
      - UPTIME_KUMA_SSL_CERT=/etc/letsencrypt/live/xxx.com/cert.pem
    ports:
      - 3001:3001
    restart: always

 

Let's Encrypt 의 경우, 인증서 파일이 archive 하위에 있는 인증서가 live 위치로 심볼릭 링크로 걸려있는데, 심볼릭 링크는 volumes 마운트할 때, 로컬 경로와 마운트 경로를 동일하게 지정해야 인식이 된다. 

예를 들어 인증서 경로를 아래처럼 지정하면 인증서를 불러오지 못한다.

volumes:
      - ./data:/app/data
      - /etc/letsencrypt/live/xxx.com:/crypts:ro
    environment:
      - TZ=Asia/Seoul
      - UPTIME_KUMA_SSL_KEY=/crypts/xxx.com/privkey.pem
      - UPTIME_KUMA_SSL_CERT=/crypts/xxx.com/cert.pem

 

설치형 버전에 SSL 인증서 적용하기

/opt/uptime-kuma/config 하위에 config.env 파일 생성

파일에 아래와 같이 인증서 경로 추가

UPTIME_KUMA_SSL_KEY=/etc/letsencrypt/live/xxx.com/privkey.pem
UPTIME_KUMA_SSL_CERT=/etc/letsencrypt/live/xxx.com/cert.pem

 

설치형 버전 업데이트 방법

업데이트 Tag 확인하기 -> github.com/louislam/uptime-kuma/tags

cd /opt/uptime-kuma
git fetch --all
git checkout 1.21.1 --force
npm install --production
npm run download-dist
pm2 restart uptime-kuma