설치 가이드 · 7 min read · Oct 26, 2025

Ubuntu 22.04에 Statping 설치하는 방법

Statping은 여러 서버에 호스팅된 웹사이트와 애플리케이션을 추적하는 오픈 소스 가동 시간 모니터입니다. 다양한 소스에서 실시간 데이터를 가져와 아름다운 상태 페이지를 생성할 수 있습니다. SQLite, MySQL 및 Postgres를 포함한 여러 데이터베이스 시스템과 함께 작동할 수 있습니다. 본 튜토리얼에서는 원래 애플리케이션이 더 이상 개발되지 않기 때문에 Statping-ng라는 Statping의 포크를 사용할 것입니다.

이 튜토리얼에서는 Docker와 Nginx 서버를 프록시로 사용하여 Ubuntu 22.04 서버에 Statping을 설치하는 방법을 배웁니다.

전제 조건

  • Ubuntu 22.04를 실행하는 서버.
  • sudo 권한이 있는 비루트 사용자.
  • 간단한 방화벽(UFW)이 활성화되어 실행 중입니다.
  • 서버를 가리키는 완전한 도메인 이름(FQDN), 예: status.example.com.
  • 모든 것이 업데이트되었습니다. $ sudo apt update && sudo apt upgrade

1단계 - 방화벽 구성

패키지를 설치하기 전에 첫 번째 단계는 HTTP 및 HTTPS 연결을 허용하도록 방화벽을 구성하는 것입니다.

방화벽의 상태를 확인합니다.

$ sudo ufw status

다음과 같은 내용을 볼 수 있어야 합니다.

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)

HTTP 및 HTTPS 포트를 허용합니다.

$ sudo ufw allow http
$ sudo ufw allow https

확인을 위해 상태를 다시 확인합니다.

$ sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere
443                        ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
80/tcp (v6)                ALLOW       Anywhere (v6)
443 (v6)                   ALLOW       Anywhere (v6)

2단계 - Docker 설치

Docker의 공식 GPG 키를 추가합니다.

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker.gpg

다음 명령을 실행하여 Docker 저장소를 추가합니다.

$ echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Docker의 저장소를 포함하도록 시스템을 업데이트합니다.

$ sudo apt update

Docker와 Docker compose 플러그인을 설치합니다.

$ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin

이 튜토리얼에서는 이전 레거시 바이너리 대신 Docker Compose v2 플러그인을 사용할 것입니다. 따라서 실행 명령이 docker-compose에서 docker compose로 변경되었습니다. 이는 여기에서 반영됩니다.

Docker는 상승된 권한으로 실행되므로 명령을 실행하기 위해 자주 sudo를 사용해야 합니다. 더 나은 옵션은 Linux 사용자 계정을 docker 사용자 그룹에 추가하는 것입니다.

$ sudo usermod -aG docker ${USER}

${USER} 변수는 현재 로그인한 시스템 계정을 가져옵니다. 권한을 부여하려는 사용자로 로그인하지 않은 경우 ${USER}를 사용자 이름으로 바꿉니다.

새 그룹 멤버십을 적용하려면 서버에서 로그아웃한 후 다시 로그인하거나 다음 명령을 사용합니다. 사용자 비밀번호를 입력하라는 메시지가 표시됩니다.

$ su - ${USER}

3단계 - Nginx 설치

Ubuntu 22.04에는 이전 버전의 Nginx가 포함되어 있습니다. 최신 버전을 설치하려면 공식 Nginx 저장소를 다운로드해야 합니다.

Nginx의 서명 키를 가져옵니다.

$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

Nginx의 안정적인 버전 저장소를 추가합니다.

$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg arch=amd64] \
http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list

시스템 저장소를 업데이트합니다.

$ sudo apt update

Nginx를 설치합니다.

$ sudo apt install nginx

설치를 확인합니다.

$ nginx -v
nginx version: nginx/1.22.0

4단계 - SSL 설치

SSL 인증서를 생성하기 위해 Certbot을 설치해야 합니다. Ubuntu의 저장소를 사용하여 Certbot을 설치하거나 Snapd 도구를 사용하여 최신 버전을 가져올 수 있습니다. 우리는 Snapd 버전을 사용할 것입니다.

Ubuntu 22.04에는 기본적으로 Snapd가 설치되어 있습니다. 다음 명령을 실행하여 Snapd 버전이 최신인지 확인합니다.

$ sudo snap install core

Certbot을 설치합니다.

$ sudo snap install --classic certbot

다음 명령을 사용하여 Certbot 명령이 /usr/bin 디렉토리의 심볼릭 링크를 생성하여 실행될 수 있도록 합니다.

$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

다음 명령을 실행하여 SSL 인증서를 생성합니다.

$ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d status.example.com

위 명령은 서버의 /etc/letsencrypt/live/status.example.com 디렉토리에 인증서를 다운로드합니다.

Diffie-Hellman 그룹 인증서를 생성합니다.

$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096

/etc/letsencrypt/renewal/status.example.com.conf 파일을 편집을 위해 엽니다.

$ sudo nano /etc/letsencrypt/renewal/status.example.com.conf

다음 코드를 맨 아래에 붙여넣습니다.

pre_hook = systemctl stop nginx
post_hook = systemctl start nginx

프롬프트가 표시되면 Ctrl + X를 눌러 파일을 저장하고 Y를 입력합니다.

우리는 Certbot의 독립 실행형 옵션을 사용하여 SSL 인증서를 생성했습니다. 인증서를 생성하기 위해 웹 서버를 실행하므로 갱신 중에는 Nginx를 종료해야 합니다. pre_hookpost_hook 명령은 갱신 전후에 실행되어 Nginx 서버를 자동으로 종료하고 다시 시작하므로 수동 개입이 필요하지 않습니다.

SSL 갱신이 잘 작동하는지 확인하려면 프로세스를 드라이 런합니다.

$ sudo certbot renew --dry-run

오류가 없으면 모든 준비가 완료된 것입니다. 인증서는 자동으로 갱신됩니다.

5단계 - Docker Compose 파일 구성

Docker compose 파일을 위한 디렉토리를 생성합니다.

$ mkdir ~/statping

디렉토리로 이동합니다.

$ cd ~/statping

편집을 위해 Docker compose 파일을 생성하고 엽니다.

$ nano docker-compose.yml

다음 코드를 붙여넣습니다.

services:
  statping:
    container_name: statping
    image: adamboutcher/statping-ng
    restart: always
    ports:
      - 8080:8080
    volumes:
      - ./statping_data:/app
    links:
      - postgres
    depends_on:
      - postgres
    environment:
      DB_CONN: postgres
      DB_HOST: postgres
      DB_PORT: 5432
      DB_DATABASE: statping
      DB_USER: root
      DB_PASS: password123
      NAME: 'Howtoforge Statping page'
      DESCRIPTION: 'Statping Demo page'
      USE_ASSETS: 'true'
      SAMPLE_DATA: 'false'
      ALLOW_REPORTS: 'false'
      ADMIN_USER: navjot
      ADMIN_PASSWORD: yourpassword

  postgres:
    container_name: postgres
    image: postgres:14-alpine
    ports:
      - 5432:5432
    volumes:
      - ./pg_data:/var/lib/postgresql/data/pg_data
    environment:
      POSTGRES_PASSWORD: password123
      POSTGRES_DB: statping
      POSTGRES_USER: root
      POSTGRES_PORT: 5432
      PGDATA: /var/lib/postgresql/data/pg_data

프롬프트가 표시되면 Ctrl + X를 눌러 파일을 저장하고 Y를 입력합니다.

우리는 Statping 및 Postgres 도커 이미지를 설정하고 있습니다. 대부분의 도커 파일은 따라하기 쉽습니다. 우리는 앱 데이터와 Postgres 데이터베이스를 저장하기 위해 로컬 디스크 백업을 사용하고 있습니다. 또한 애플리케이션과 데이터베이스를 구성하기 위해 여러 환경 변수를 설정했습니다. 이들을 살펴보겠습니다. 정의할 수 있는 환경 변수의 전체 목록을 보려면 Statping GitHub 저장소의 공식 목록을 확인하십시오.

  • USE_ASSETS 변수는 앱이 assets 폴더의 자산을 사용할 수 있도록 합니다.
  • SAMPLE_DATA 변수는 설치 중 Statping이 구성하는 기본 모니터를 비활성화하기 위해 false로 설정됩니다.
  • ALLOW_REPORTS 변수는 Statping이 보내는 익명 오류 보고서를 비활성화하기 위해 false로 설정됩니다.
  • ADMIN_USERADMIN_PASSWORD 변수는 기본 사용자에 대한 로그인 정보를 설정하는 데 사용됩니다.
  • DB_ 변수는 Postgres 컨테이너에 대해 정의된 변수와 일치해야 하는 데이터베이스 자격 증명을 설정하는 데 사용됩니다.

6단계 - Nginx 구성

편집을 위해 /etc/nginx/nginx.conf 파일을 엽니다.

$ sudo nano /etc/nginx/nginx.conf

include /etc/nginx/conf.d/*.conf; 줄 앞에 다음 줄을 추가합니다.

server_names_hash_bucket_size  64;

프롬프트가 표시되면 Ctrl + X를 눌러 파일을 저장하고 Y를 입력합니다.

편집을 위해 /etc/nginx/conf.d/statusping.conf 파일을 생성하고 엽니다.

$ sudo nano /etc/nginx/conf.d/statusping.conf

다음 코드를 붙여넣습니다. status.example.com을 도메인 이름으로 바꿉니다.

upstream backend {
   server 127.0.0.1:8080;
   keepalive 32;
}

server {
  listen 80 default_server;
  server_name status.example.com;
  return 301 https://$server_name$request_uri;
}

server {
   listen 443 ssl http2;
   server_name status.example.com;

   http2_push_preload on; # Enable HTTP/2 Server Push

   ssl_certificate /etc/letsencrypt/live/status.example.com/fullchain.pem;
   ssl_certificate_key /etc/letsencrypt/live/status.example.com/privkey.pem;
   ssl_trusted_certificate /etc/letsencrypt/live/status.example.com/chain.pem;
   ssl_session_timeout 1d;

   # Enable TLS versions (TLSv1.3 is required upcoming HTTP/3 QUIC).
   ssl_protocols TLSv1.2 TLSv1.3;

   # Enable TLSv1.3's 0-RTT. Use $ssl_early_data when reverse proxying to
   # prevent replay attacks.
   #
   # @see: https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_early_data
   ssl_early_data on;

   ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384';
   ssl_prefer_server_ciphers on;
   ssl_session_cache shared:SSL:50m;
   # OCSP Stapling --- fetch OCSP records from URL in ssl_certificate and cache them
   ssl_stapling on;
   ssl_stapling_verify on;
   ssl_dhparam /etc/ssl/certs/dhparam.pem;

   add_header X-Early-Data $tls1_3_early_data;

   access_log /var/log/nginx/statusping.access.log main;
   error_log  /var/log/nginx/statusping.error.log;

   location / {
       client_max_body_size 50M;
       proxy_set_header Connection "";
       proxy_set_header Host $http_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;
       proxy_set_header X-Frame-Options SAMEORIGIN;
       proxy_set_header X-Client-Verify  SUCCESS;
       proxy_set_header X-Client-DN      $ssl_client_s_dn;
       proxy_set_header X-SSL-Subject    $ssl_client_s_dn;
       proxy_set_header X-SSL-Issuer     $ssl_client_i_dn;
       proxy_buffers 256 16k;
       proxy_buffer_size 16k;
       proxy_read_timeout 1800s;
       proxy_connect_timeout 1800s;
       proxy_http_version 1.1;
       proxy_pass http://backend;
   }
}

# This block is useful for debugging TLS v1.3. Please feel free to remove this
# and use the `$ssl_early_data` variable exposed by NGINX directly should you
# wish to do so.
map $ssl_early_data $tls1_3_early_data {
  "~." $ssl_early_data;
  default "";
}

프롬프트가 표시되면 Ctrl + X를 눌러 파일을 저장하고 Y를 입력합니다.

Nginx 구성을 확인합니다.

$ sudo nginx -t

Nginx 서버를 재시작합니다.

$ sudo systemctl restart nginx

7단계 - Statping 실행

Statping 디렉토리로 이동합니다.

$ cd ~/statping

Docker 컨테이너를 생성하고 실행합니다.

$ docker compose up -d

컨테이너의 상태를 확인합니다.

$ docker compose ps

다음과 같은 출력을 볼 수 있습니다.

NAME                COMMAND                  SERVICE             STATUS              PORTS
postgres            "docker-entrypoint.s…"   postgres            running             0.0.0.0:5432->5432/tcp
statping            "/bin/sh -c 'statpin…"   statping            running (healthy)   0.0.0.0:8080->8080/tcp

보다 자세한 상태를 확인하려면 docker ps 명령을 사용할 수 있습니다. 컨테이너 로그를 확인하려면 docker logs 명령을 사용하십시오.

8단계 - Statping 구성

이제 컨테이너가 실행 중이므로 브라우저에서 URL https://status.example.com을 열면 빈 상태 페이지가 표시됩니다. Docker compose 파일에서 SAMPLE_DATA 변수를 생략하면 사전 정의된 다양한 서비스가 있는 전체 페이지가 표시됩니다.

Statping 상태 페이지

하단의 대시보드 링크를 클릭하여 로그인 화면에 접근합니다.

Statping 로그인 화면

기본 사용자 이름과 비밀번호로 admin을 입력합니다. 미리 채워진 것처럼 보이더라도 사용자 이름을 입력해야 합니다. 로그인 버튼을 클릭하여 Statping 대시보드에 접근합니다.

Statping 대시보드

새 서비스를 추가하려면 생성 버튼을 클릭하고 필수 값을 입력합니다.

Statping 서비스 생성

하단의 서비스 생성 버튼을 클릭하여 완료합니다. 이메일 및 기타 알림을 구성하려면 설정 페이지를 방문하십시오. 통계 페이지에 새 이름을 지정할 수도 있습니다.

Statping 실시간 서비스가 있는 상태 페이지

9단계 - Statping 업데이트

Statping을 업그레이드하는 것은 간단한 단계입니다. Statping의 Docker compose 디렉토리로 이동합니다.

$ cd ~/statping

다음으로 기존 컨테이너를 중지하고 제거합니다. 데이터는 유지됩니다.

$ docker compose down --remove-orphans

Statping 도커 이미지의 최신 버전을 가져옵니다.

$ docker compose pull

컨테이너를 다시 시작합니다.

$ docker compose up -d

Statping 설치가 업데이트되고 다시 시작되었습니다.

결론

이로써 Ubuntu 22.04 서버에 Statping을 설치하는 방법을 배운 튜토리얼이 종료됩니다. 질문이 있으면 아래 댓글에 남겨주세요.

Share: X/Twitter LinkedIn

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

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