Установка · 8 min read · Oct 26, 2025

Как установить Statping на Ubuntu 22.04

Statping — это монитор доступности с открытым исходным кодом, который отслеживает веб-сайты и приложения, размещенные на нескольких серверах. Он может генерировать красивую страницу состояния, получая данные в реальном времени из различных источников. Он может работать с несколькими системами баз данных, включая SQLite, MySQL и Postgres. В нашем учебном пособии мы будем использовать форк Statping, называемый Statping-ng, так как оригинальное приложение больше не разрабатывается.

В этом учебном пособии вы узнаете, как установить Statping на сервер Ubuntu 22.04, используя Docker и сервер Nginx в качестве прокси.

Предварительные требования

  • Сервер с установленной Ubuntu 22.04.
  • Пользователь, не являющийся root, с правами sudo.
  • Простой брандмауэр (UFW) включен и работает.
  • Полностью квалифицированное доменное имя (FQDN), указывающее на сервер, например, status.example.com.
  • Все обновлено. $ sudo apt update && sudo apt upgrade

Шаг 1 - Настройка брандмауэра

Перед установкой любых пакетов первым шагом является настройка брандмауэра для разрешения HTTP и HTTPS соединений.

Проверьте статус брандмауэра.

$ sudo ufw status

Вы должны увидеть что-то вроде следующего.

Статус: активен

Кому                       Действие      Откуда
--                         ------      ----
OpenSSH                    РАЗРЕШИТЬ       Везде
OpenSSH (v6)               РАЗРЕШИТЬ       Везде (v6)

Разрешите порты HTTP и HTTPS.

$ sudo ufw allow http
$ sudo ufw allow https

Проверьте статус снова, чтобы подтвердить.

$ sudo ufw status
Статус: активен

Кому                       Действие      Откуда
--                         ------      ----
OpenSSH                    РАЗРЕШИТЬ       Везде
80/tcp                     РАЗРЕШИТЬ       Везде
443                        РАЗРЕШИТЬ       Везде
OpenSSH (v6)               РАЗРЕШИТЬ       Везде (v6)
80/tcp (v6)                РАЗРЕШИТЬ       Везде (v6)
443 (v6)                   РАЗРЕШИТЬ       Везде (v6)

Шаг 2 - Установка Docker

Добавьте официальный GPG-ключ Docker.

$ 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

Нам нужно установить Certbot для генерации SSL-сертификата. Вы можете либо установить Certbot, используя репозиторий Ubuntu, либо получить последнюю версию с помощью инструмента 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 group.

$ 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, когда будет предложено.

Мы сгенерировали SSL-сертификат, используя автономный вариант Certbot. Он запускает свой веб-сервер для создания сертификата, что означает, что Nginx должен быть выключен во время обновления. Команды pre_hook и post_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, когда будет предложено.

Мы настраиваем образы Docker Statping и Postgres. Большая часть файла Docker проста для понимания. Мы используем локальные резервные копии диска для хранения данных приложения и базы данных Postgres. Мы также настроили несколько переменных окружения для настройки приложения и базы данных. Давайте взглянем на них. Чтобы получить полный список переменных окружения, которые вы можете определить, проверьте официальный список из репозитория Statping на GitHub.

  • Переменная USE_ASSETS позволяет приложению использовать ресурсы из папки assets.
  • Переменная SAMPLE_DATA установлена в false, чтобы отключить стандартные мониторы, которые Statping настраивает во время установки.
  • Переменная ALLOW_REPORTS установлена в false, чтобы отключить анонимные отчеты об ошибках, которые отправляет Statping.
  • Переменные ADMIN_USER и ADMIN_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; # Включить 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;

   # Включить версии TLS (TLSv1.3 требуется для предстоящего HTTP/3 QUIC).
   ssl_protocols TLSv1.2 TLSv1.3;

   # Включить 0-RTT TLSv1.3. Используйте $ssl_early_data при обратном проксировании, чтобы
   # предотвратить атаки повторного воспроизведения.
   #
   # @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-GCM-SHA384';
   ssl_prefer_server_ciphers on;
   ssl_session_cache shared:SSL:50m;
   # OCSP Stapling --- получать OCSP записи из URL в ssl_certificate и кэшировать их
   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;
   }
}

# Этот блок полезен для отладки TLS v1.3. Пожалуйста, не стесняйтесь удалять это
# и использовать переменную `$ssl_early_data`, предоставленную NGINX напрямую, если вы
# хотите это сделать.
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

Вы увидите следующий вывод.

ИМЯ                КОМАНДА                  СЛУЖБА             СТАТУС              ПОРТЫ
postgres            "docker-entrypoint.s…"   postgres            работает             0.0.0.0:5432->5432/tcp
statping            "/bin/sh -c 'statpin…"   statping            работает (здоровый)   0.0.0.0:8080->8080/tcp

Вы также можете использовать команду docker ps, чтобы получить более подробный статус. Чтобы проверить журналы контейнера, используйте команду docker logs <имя контейнера>.

Шаг 8 - Настройка Statping

Теперь, когда ваш контейнер работает, запустите URL https://status.example.com в вашем браузере, и вы увидите пустую страницу состояния. Если вы пропустите переменную SAMPLE_DATA в файле docker compose, вы увидите полную страницу с различными предопределенными службами.

Страница состояния Statping

Нажмите на ссылку Панель управления внизу, чтобы получить доступ к экрану входа.

Экран входа Statping

Введите admin в качестве имени пользователя и пароля по умолчанию. Убедитесь, что вы также вводите имя пользователя, даже если оно выглядит как предзаполненное. Нажмите кнопку Войти, чтобы получить доступ к панели управления Statping.

Панель управления Statping

Чтобы добавить новую службу, нажмите кнопку Создать и заполните необходимые значения.

Создать службу Statping

Нажмите кнопку Создать службу внизу, чтобы завершить. Чтобы настроить электронную почту и другие уведомления, посетите страницу настроек. Вы также можете дать своей странице статистики новое имя.

Страница состояния Statping с живой службой

Шаг 9 - Обновление Statping

Обновление Statping — это простой шаг. Перейдите в директорию Docker Compose Statping.

$ cd ~/statping

Затем остановите и удалите существующий контейнер. Ваши данные будут сохранены.

$ docker compose down --remove-orphans

Загрузите последнюю версию образа Docker Statping.

$ docker compose pull

Запустите контейнеры снова.

$ docker compose up -d

Ваша установка Statping обновлена и снова запущена.

Заключение

На этом заканчивается учебное пособие, в котором вы узнали, как установить Statping на сервер Ubuntu 22.04. Если у вас есть вопросы, оставьте их в комментариях ниже.

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.