서버 설치 · 11 min read · Nov 17, 2025

쿠마 설치 방법 - 우분투 20.04에서 자가 호스팅 가능한 가동 시간 로봇 대안

Uptime-Kuma는 Nodejs로 작성된 “Uptime Robot”와 같은 오픈 소스 모니터링 도구입니다. 이는 멋지고 아름다운 대시보드를 가진 자가 호스팅 모니터링 도구로, 여러 알림 방법을 지원합니다. Uptime-Kuma는 HTTP(s), TCP 및 Ping 프로토콜을 통해 호스트 또는 서버의 가동 시간을 모니터링합니다. 이러한 프로토콜을 통해 호스트에 접근할 수 없는 경우, 가동 중인 호스트는 Webhooks, Telegram, Discord, Gotify, Slack, Pushover, Email (SMTP) 등을 통해 알림을 보냅니다.

이 가이드에서는 우분투 서버에 Uptime-Kuma를 설치하고 Apache 웹 서버를 리버스 프록시로 사용하여 무료 Let’s Encrypt SSL 인증서를 앞에 두는 방법을 배웁니다. 설치 중에 nvm(노드 버전 관리자)을 통한 nodejs 설치에 대해서도 배우게 됩니다.

전제 조건

  • 우분투 서버 20.04.
  • 루트 권한이 있는 사용자. 이 사용자는 새 패키지를 설치하고 시스템 설정을 수정하는 데 사용됩니다.

새 사용자 추가

먼저, 우분투 시스템에 새 사용자를 추가합니다. 보안상의 이유로, Uptime-Kuma 애플리케이션은 비루트 사용자로 실행됩니다.

  1. 아래 명령어를 실행하여 새 사용자를 추가합니다. 이 예제에서는 사용자 이름 “ johndoe “를 사용합니다. 사용자 이름을 자신의 것으로 변경해야 합니다.
useradd -m -s /bin/bash johndoe

알아야 할 옵션:

  • -m = 사용자 이름에 대한 홈 디렉토리를 자동으로 생성하며, 이는 ‘/home’ 디렉토리 아래에서 사용할 수 있습니다.
  • -s = 사용자의 셸 경로를 정의하며, 대부분의 리눅스는 /bin/bash 셸을 사용합니다.
  1. 그 후, 아래 명령어를 실행하여 사용자 “johndoe”의 비밀번호를 설정합니다.
passwd johndoe

이제 새 강력한 비밀번호를 입력하고 반복한 다음 “ Enter “를 눌러 확인합니다.

  1. 다음으로, 아래 명령어를 사용하여 사용자 “johndoe”를 “ sudo “ 그룹에 추가합니다.
usermod -aG sudo johndoe

사용자를 “ sudo “ 그룹에 추가하면 사용자가 “sudo su” 명령을 실행하고 루트 권한을 얻을 수 있습니다.

NVM (노드 버전 관리자) 설치

NVM 또는 노드 버전 관리자는 하나의 시스템에서 여러 nodejs 버전을 설치하기 위한 명령줄 도구입니다. 이 도구는 애플리케이션에 특정 nodejs 버전을 설치할 수 있게 해주며, 개발 및 배포 환경을 유연하게 만듭니다.

이 단계에서는 비루트 사용자 “johndoe” 아래에 nvm을 설치합니다.

  1. 루트 셸에서 아래 명령어를 사용하여 사용자 “johndoe”로 로그인합니다.
su - johndoe
  1. nvm 설치 스크립트를 다운로드하고 실행합니다.
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash

Nodejs 버전 관리자 또는 NVM 설치

  1. 성공적으로 설치한 후, 아래 명령어를 사용하여 bash 환경을 다시 로드합니다.
source ~/.bashrc
  1. 이제 아래 명령어를 실행하여 “ nvm “ 설치를 확인합니다.
command -v nvm

설치가 성공하면 “ nvm “이라는 결과를 볼 수 있습니다. 그렇지 않으면 아무것도 보이지 않거나 빈 결과가 표시됩니다.

이제 아래와 같이 nvm 명령을 실행합니다.

nvm --help

그리고 nvm 명령의 매뉴얼 도움말 페이지를 볼 수 있습니다.

Node Version Manager (v0.38.0)  
  
Note:  refers to any version-like string nvm understands. This includes:  
  - full or partial version numbers, starting with an optional "v" (0.10, v0.1.2, v1)  
  - default (built-in) aliases: node, stable, unstable, iojs, system  
  - custom aliases you define with `nvm alias foo`  
  
  Any options that produce colorized output should respect the `--no-colors` option.  
  
Usage:  
  nvm --help                             Show this message  
    --no-colors                           Suppress colored output  
  
.....  
  
Note:  
  to remove, delete, or uninstall nvm - just remove the `$NVM_DIR` folder (usually `~/.nvm`)

Nodejs LTS 버전 설치

Uptime-Kuma 애플리케이션을 설치하려면 nodejs >= 14, git, 및 pm2를 설치해야 합니다. 이 시점에서 nvm 명령을 사용하여 nodejs LTS 최신 버전을 설치합니다.

  1. 아래 nvm 명령을 실행하여 nodejs LTS 최신 버전을 설치합니다.
nvm install --lts

설치가 성공하면 아래와 유사한 출력을 볼 수 있습니다.

NVM으로 Nodejs 설치 중

설치한 첫 번째 nodejs 버전이 개발 환경의 기본 버전이 됩니다.

  1. 이제 아래 명령어를 실행하여 nodejs 설치를 확인합니다.
node --version  
npm --version

설치가 성공하면 아래와 유사한 출력을 볼 수 있습니다.

# nodejs 버전  
v14.17.4  
  
# npm 버전  
6.14.14

Uptime-Kuma 다운로드 및 설치

이 시점에서 Uptime-Kuma 애플리케이션을 설치할 준비가 되었습니다.

  1. 아래 git 명령을 사용하여 uptime-Kuma 소스 코드를 클론합니다.
git clone https://github.com/louislam/uptime-kuma.git
  1. 그 후, 작업 디렉토리를 “ uptime-kuma/ “로 변경하고 npm 명령을 실행하여 uptime-kuma에 필요한 모든 패키지를 설치합니다.
cd uptime-kuma/  
npm run setup

그리고 아래와 유사한 출력을 볼 수 있습니다.

Uptime-Kuma를 위한 패키지 설치 중

pm2로 Uptime-Kuma 설정하기

pm2란 무엇인가요? 이는 nodejs 프로세스 관리자로, nodejs 애플리케이션을 영원히 유지 관리하는 데 도움을 줍니다. pm2는 nodejs 애플리케이션 배포를 쉽게 해주는 몇 가지 내장 기능을 가지고 있으며, 애플리케이션 상태, 로그를 모니터링하고 애플리케이션을 위한 서비스 파일을 설정할 수 있습니다.

  1. 아래 npm 명령을 사용하여 pm2 패키지를 설치합니다.
npm install pm2
  1. 설치가 완료되면 아래 pm2 명령을 실행하여 uptime-kuma 애플리케이션을 시작합니다.
pm2 start npm --name uptime-kuma -- run start-server -- --port=3001 --hostname=127.0.0.1

그리고 아래와 같은 출력 메시지를 볼 수 있습니다.

pm2 프로세스 관리자로 Uptime-Kuma 시작하기

사진에서 볼 수 있듯이, 애플리케이션 이름 “ uptime-kuma “가 “ online “ 상태로 실행되고 있습니다.

  1. pm2에서 애플리케이션 상태를 확인하려면 아래 명령어를 실행합니다.

nodejs 애플리케이션 상태 확인.

pm2 status

nodejs 애플리케이션 로그 확인.

pm2 logs

pm2에서 애플리케이션 로그 확인

실시간 nodejs 애플리케이션 모니터링.

pm2 monit

pm2에서 실시간 애플리케이션 모니터링

  1. 다음으로, 아래 pm2 명령을 실행하여 uptime-kuma 애플리케이션의 서비스 파일을 생성합니다.
pm2 startup

그 후, 출력된 명령어를 순서대로 실행해야 합니다.

sudo env PATH=$PATH:/home/johndoe/.nvm/versions/node/v14.17.4/bin /home/johndoe/.nvm/versions/node/v14.17.4/lib/node_modules/pm2/bin/pm2 startup systemd -u johndoe --hp /home/johndoe

반드시 “ sudo “ 명령을 사용하고, 루트 권한을 얻기 위해 사용자 비밀번호를 입력해야 합니다.

명령이 완료되면 다음과 같은 출력을 볼 수 있습니다.

pm2가 Uptime-Kuma를 위한 systemd 서비스 파일 생성

스크린샷에서 볼 수 있듯이, pm2는 사용자 기반의 systemd 서비스를 생성하며, 이 예제에서는 “ pm2-johndoe.service “입니다.

이제 uptime-kuma 애플리케이션 상태를 생성하고 저장하기 위해 아래 명령어를 실행합니다. 이 명령은 uptime-kuma 애플리케이션이 시스템 부팅 후에도 항상 백그라운드에서 실행되도록 하는 데 중요합니다.

pm2 save
  1. 서비스 ‘ pm2-johndoe’를 확인하려면 아래 명령어를 실행합니다.
sudo systemctl is-enabled pm2-johndoe

출력으로 enabled를 보게 되며, 이는 uptime-kuma 애플리케이션이 시스템 부팅 후 자동으로 실행됨을 의미합니다.

추가로, 시스템을 재부팅하고 다시 서버에 로그인한 후 uptime-kuma 서비스를 확인할 수 있습니다.

sudo systemctl status pm2-johndoe

아래와 유사한 출력을 보게 될 것입니다.

? pm2-johndoe.service - PM2 프로세스 관리자  
     Loaded: loaded (/etc/systemd/system/pm2-johndoe.service; enabled; vendor preset: enabled)  
     Active: active (running) since Tue 2021-08-10 01:52:37 UTC; 3min 57s ago  
       Docs: https://pm2.keymetrics.io/  
   Main PID: 745 (PM2 v5.1.0: God)  
      Tasks: 34 (limit: 2343)  
     Memory: 120.4M  
     CGroup: /system.slice/pm2-johndoe.service  
             ??745 PM2 v5.1.0: God Daemon (/home/johndoe/.pm2)  
             ??772 npm  
             ??873 sh -c node server/server.js "--port=3001" "--hostname=127.0.0.1"  
             ??874 node server/server.js --port=3001 --hostname=127.0.0.1  
  
Aug 10 01:52:36 ubuntu64 pm2[633]: [PM2] Spawning PM2 daemon with pm2_home=/home/johndoe/.pm2  
Aug 10 01:52:37 ubuntu64 pm2[633]: [PM2] PM2 Successfully daemonized  
Aug 10 01:52:37 ubuntu64 pm2[633]: [PM2] Resurrecting  
Aug 10 01:52:37 ubuntu64 pm2[633]: [PM2] Restoring processes located in /home/johndoe/.pm2/dump.pm2  
Aug 10 01:52:37 ubuntu64 pm2[633]: [PM2] Process /home/johndoe/.nvm/versions/node/v14.17.4/bin/npm restored

pm2-johndoe.service “가 시스템 부팅 시 실행되고 있습니다.

Apache를 리버스 프록시로 설정하기

이 가이드에서는 uptime-Kuma 애플리케이션을 위한 리버스 프록시로 Apache 웹 서버를 설치하고 구성합니다.

  1. 아래 명령어를 실행하여 apache 웹 서버 패키지를 설치합니다.
sudo apt install apache2

“y”를 입력하고 “ Enter “를 눌러 apache 웹 서버를 설치합니다.

  1. 그 후, 아래 명령어를 사용하여 일부 apache 모듈을 활성화합니다.
sudo a2enmod ssl proxy proxy_ajp proxy_wstunnel proxy_http rewrite deflate headers proxy_balancer proxy_connect proxy_html
  1. 다음으로, 아래 nano 편집기 명령을 사용하여 새 가상 호스트 구성 ‘ uptime-kuma.conf ‘를 생성합니다.
sudo nano /etc/apache2/sites-available/uptime-kuma.conf

터미널 셸에 다음 구성을 붙여넣고 도메인 이름 “ uptime.example.net “을 “ domain.com “과 같은 자신의 도메인으로 변경합니다.

  
  ServerName uptime.example.net  
  
  ProxyPass / http://localhost:3001/  
  RewriteEngine on  
  RewriteCond %{HTTP:Upgrade} websocket [NC]  
  RewriteCond %{HTTP:Connection} upgrade [NC]  
  RewriteRule ^/?(.*) "ws://localhost:3001/$1" [P,L]  

Ctrl+x “를 누르고 “ Y “를 입력하여 구성을 저장합니다.

  1. 이제 아래 명령어를 사용하여 apache 가상 호스트 구성 “uptime-kuma”를 활성화합니다.
sudo a2ensite uptime-kuma

그 후, 아래 명령어를 실행하여 apache 구성을 확인하고 오류가 없는지 확인합니다.

sudo apachectl configtest
  1. 이제 아래 명령어를 사용하여 apache 서비스를 재시작하여 새 구성을 적용합니다.
sudo systemctl restart apache2

Uptime-Kuma를 위한 리버스 프록시로 Apache 설정

SSL Letsencrypt로 Uptime-kuma 보안 설정

Uptime-Kuma 접근을 보안하기 위해, Apache 웹 서버에 대해 Letsencrypt의 SSL을 설정합니다.

  1. 먼저, 아래 명령어를 실행하여 certbot 도구를 설치합니다.
sudo apt install python3-certbot-apache

“y”를 입력하고 “ Enter “를 눌러 설치를 시작합니다.

  1. 설치 후, 아래 certbot 명령을 사용하여 SSL Let’s encrypt를 생성합니다.
sudo certbot --apache yourdomain.com

이메일 주소를 입력하여 Letsencrypt에 등록하고 “ Enter “를 눌러 계속합니다. Letsencrypt는 SSL 인증서가 만료될 때마다 이메일을 보냅니다.

Saving debug log to /var/log/letsencrypt/letsencrypt.log  
Plugins selected: Authenticator apache, Installer apache  
Enter email address (used for urgent renewal and security notices) (Enter 'c' to  
cancel): [email protected]

Letsencrypt TOS(서비스 약관)에 대해 “ A “를 입력하여 동의하고 “ Enter “를 눌러 계속합니다.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  
Please read the Terms of Service at  
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must  
agree in order to register with the ACME server at  
https://acme-v02.api.letsencrypt.org/directory  
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  
(A)gree/(C)ancel: A

EFF(전자 프론티어 재단)와 이메일 공유에 대해 “ Y “는 예, “ N “은 아니오를 입력할 수 있습니다. 이 예제에서는 EFF와 이메일 주소를 공유하지 않습니다.

Would you be willing to share your email address with the Electronic Frontier  
Foundation, a founding partner of the Let's Encrypt project and the non-profit  
organization that develops Certbot? We'd like to send you email about our work  
encrypting the web, EFF news, campaigns, and ways to support digital freedom.  
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  
(Y)es/(N)o: N

이제 certbot 도구가 Uptime-Kuma 도메인 이름에 대한 SSL Letsencrypt를 생성합니다. 또한 apache 가상 호스트 구성에 대한 추가 구성을 추가합니다.

HTTP에서 HTTPS로의 자동 리디렉션을 설정하라는 메시지가 표시됩니다. “2”를 입력하여 apache HTTP에서 HTTPS로의 자동 리디렉션을 설정하고 “ Enter “를 누릅니다.

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.  
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  
1: No redirect - Make no further changes to the webserver configuration.  
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for  
new sites, or if you're confident your site works on HTTPS. You can undo this  
change by editing your web server's configuration.  
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2

배포 과정이 성공적으로 완료되면 아래와 유사한 출력을 볼 수 있습니다.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  
Congratulations! You have successfully enabled https://uptime.example.net  
  
You should test your configuration at:  
https://www.ssllabs.com/ssltest/analyze.html?d=uptime.example.net  
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  
IMPORTANT NOTES:  
 - Congratulations! Your certificate and chain have been saved at:  
   /etc/letsencrypt/live/uptime.example.net/fullchain.pem  
   Your key file has been saved at:  
   /etc/letsencrypt/live/uptime.example.net/privkey.pem  
   Your cert will expire on 2021-10-10. To obtain a new or tweaked  
   version of this certificate in the future, simply run certbot again  
   with the "certonly" option. To non-interactively renew *all* of  
   your certificates, run "certbot renew"  
 - Your account credentials have been saved in your Certbot  
   configuration directory at /etc/letsencrypt. You should make a  
   secure backup of this folder now. This configuration directory will  
   also contain certificates and private keys obtained by Certbot so  
   making regular backups of this folder is ideal.  
 - If you like Certbot, please consider supporting our work by:  
  
   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate  
   Donating to EFF:                     https://eff.org/donate-le  
  
 - We were unable to subscribe you the EFF mailing list because your  
   e-mail address appears to be invalid. You can try again later by  
   visiting https://act.eff.org.

Uptime-Kuma 설치 확인

  1. 웹 브라우저를 열고 주소 표시줄에 Uptime-Kuma URL 설치를 입력합니다.

https://uptime.example.net/

HTTPS 보안 연결로 리디렉션됩니다.

  1. 첫 페이지에서 Uptime-kuma의 새 관리자 사용자를 생성합니다. 관리자 사용자 이름과 비밀번호를 입력한 후 “ Create “ 버튼을 클릭합니다.

Uptime-kuma 관리자 사용자 생성

  1. 그 후, 새 사용자 이름과 비밀번호로 로그인하고 “ Login “ 버튼을 클릭합니다.

uptime-kuma 로그인 페이지

이제 uptime-kuma 대시보드를 볼 수 있습니다.

  1. 모니터에 새 호스트를 추가하려면 “ Add New Monitor “ 버튼을 클릭합니다.

Uptime-kuma 대시보드 모니터 추가

  1. 이 예제에서는 웹사이트를 모니터링할 것이므로 “ Monitor Type “을 “ HTTP(s) “로 선택하고 웹사이트의 URL 주소를 입력한 후, 알림 지원을 위해 “ Setup Notification “을 클릭하고 페이지 하단의 “ Save “ 버튼을 클릭합니다.

Uptime-kuma에 호스트 추가

  1. uptime-Kuma 대시보드로 리디렉션되며 대시보드 페이지에서 호스트를 볼 수 있습니다.

Uptime-kuma 대시보드

아래는 닫힌 포트가 있는 새 유형 “ TCP/IP “를 추가한 후의 또 다른 예시이며, 결과는 “ ENCONNREFUSED “ 또는 연결 오류입니다. 이는 포트가 거부되었거나 닫혔기 때문입니다.

Uptime-kuma 대시보드 모니터링

결론

축하합니다! Apache 웹 서버를 리버스 프록시로 사용하여 Uptime-Kuma를 성공적으로 설치하고 Uptime-Kuma 배포를 SSL Letsencrypt로 보안했습니다. 다음 단계로, 호스트를 추가하고 다운 사고에 대한 알림을 활성화할 수 있습니다.

Share: X/Twitter LinkedIn

새 게시물을 받은 편지함에서 받기

스팸은 없습니다. 언제든지 구독 해지 가능합니다.