Как установить статистику в Ubuntu 22.04
На этой странице
- Предпосылки
- Шаг 1. Настройка брандмауэра
- Шаг 2. Установите Docker
- Шаг 3. Установите Nginx
- Шаг 4. Установите SSL
- Шаг 5. Настройка файла Docker Compose
- Шаг 6. Настройка NGinx
- Шаг 7. Запустите статистику
- Шаг 8. Настройка статистики
- Шаг 9. Обновление статистики
- Заключение
Statping — это монитор времени безотказной работы с открытым исходным кодом, который отслеживает веб-сайты и приложения, размещенные на нескольких серверах. Он может создать красивую страницу состояния, получая данные в реальном времени из различных источников. Он может работать с несколькими системами баз данных, включая SQLite, MySQL и Postgres. В нашем руководстве мы будем использовать ответвление Statping, называемое Statping-ng, поскольку исходное приложение больше не разрабатывается.
В этом руководстве вы узнаете, как установить Statping на сервер Ubuntu 22.04, используя Docker и сервер Nginx в качестве прокси.
Предпосылки
-
A server running Ubuntu 22.04.
-
A non-root user with sudo privileges.
-
The uncomplicated Firewall(UFW) is enabled and running.
-
A Fully Qualified domain name (FQDN) pointing to the server like,
status.example.com
. -
Everything is updated.
$ 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 — Установите Докер
Добавьте официальный GPG-ключ Dockers.
$ 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
Обновите систему, чтобы включить репозиторий Dockers.
$ 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.
Импортировать ключ подписи Nginxs.
$ 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
Установите Нгинкс.
$ 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
Установите Сертбот.
$ 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 -d status.example.com
Приведенная выше команда загрузит сертификат в каталог /etc/letsencrypt/live/status.example.com
на вашем сервере.
Создайте групповой сертификат Диффи-Хеллмана.
$ 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.
$ mkdir ~/statping
Перейдите в каталог.
$ cd ~/statping
Создайте и откройте файл компоновки докеров для редактирования.
$ 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. Большую часть файла 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; # 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
.
$ 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. Настройте статистику
Теперь, когда ваш контейнер запущен, запустите URL-адрес https://status.example.com
в своем браузере, и вы увидите пустую страницу состояния. Если вы опустите переменную SAMPLE_DATA
в файле компоновки docker, вы увидите полную страницу с предопределенными различными службами.
Щелкните ссылку «Панель инструментов» внизу, чтобы открыть экран входа в систему.
Введите admin
как имя пользователя по умолчанию, так и пароль. Убедитесь, что вы также вводите имя пользователя, даже если оно выглядит так, как будто оно уже заполнено. Нажмите кнопку «Войти», чтобы получить доступ к панели статистики.
Чтобы добавить новую услугу, нажмите кнопку «Создать» и заполните необходимые значения.
Нажмите кнопку «Создать сервис» внизу, чтобы закончить. Чтобы настроить электронную почту и другие уведомления, посетите страницу настроек. Вы также можете дать странице статистики новое имя.
Шаг 9 - Обновить статистику
Обновление Statping — это простой шаг. Перейдите в каталог создания Statpings Docker.
$ cd ~/statping
Затем остановите и удалите существующий контейнер. Однако ваши данные будут сохранены.
$ docker compose down --remove-orphans
Получите последнюю версию образа докера Statping.
$ docker compose pull
Запустите контейнеры снова.
$ docker compose up -d
Ваша установка Statping обновлена и запущена снова.
Заключение
На этом урок, в котором вы узнали, как установить Statping на сервер Ubuntu 22.04, завершен. Если у вас есть какие-либо вопросы, задайте их в комментариях ниже.