Skip to content

test26 — Приложение (test)

Общее

Параметр Значение
Тип CX23 (2 vCPU, 3.7 GB RAM, 40 GB SSD)
ОС Ubuntu 24.04.4 LTS (Noble Numbat)
Ядро 6.8.0-107-generic
Public IP 46.224.173.242
Private IP 10.26.0.6
Timezone Asia/Jerusalem
Проект infra26
SSH ssh digi.i26.test26 (порт 1022)
Ansible playbook project/test26.yml

Архитектура

test26 совмещает роли: - Load balancer — HAProxy с TLS-терминацией (аналогично lb26), но только для тестовых сайтов - App server — все тестовые WordPress-сайты в Docker на том же хосте

Трафик: Internet → HAProxy (:443) → nginx-контейнер (10.26.0.6:200NN) → PHP-FPM-контейнер (:9000)

Сервисы

Системные

Сервис Порт Описание
HAProxy 3.0 0.0.0.0:80/443, 10.26.0.6:8405 TLS-терминация и роутинг по хостам
Nginx 127.0.0.1:8080 Только ACME-challenge
node_exporter 10.26.0.6:9100 Prometheus-метрики хоста
bareos-filedaemon 10.26.0.6:9102 Клиент резервного копирования
gitlab-runner CI/CD runner
glpi-agent Инвентаризация

Общие Docker-сервисы

Контейнер Образ Описание
redis redis:7.4.8 Общий кэш (внутренний, порт 6379)
postgres postgres:16 PostgreSQL (внутренний, порт 5432)
autoheal willfarrell/autoheal Авто-перезапуск unhealthy контейнеров

Тестовые сайты

Каждый сайт разворачивается плейбуком test26-NN-*.yml через роли compose_php_fpm + compose_php_cli + haproxy_config.

Домен Nginx-порт (HAProxy → контейнер) CLI SSH (снаружи) Плейбук
10 dev.mitgavrim.digiproduct.co.il 10.26.0.6:20010 0.0.0.0:10010 test26-10-dev-mitgavrim.yml
11 stage.mitgavrim.digiproduct.co.il 10.26.0.6:20011 0.0.0.0:10011 test26-11-stage-mitgavrim.yml
12 makeitdigital.digiproduct.co.il 10.26.0.6:20012 0.0.0.0:10012 test26-12-makeitdigital.yml
13 conector.nonomimi.digiproduct.co.il 10.26.0.6:20013 0.0.0.0:10013 test26-13-conector.nonomimi.digiproduct.co.il.yml
14 conector.stage.nonomimi.digiproduct.co.il 10.26.0.6:20014 0.0.0.0:10014 test26-14-conector.stage.nonomimi.digiproduct.co.il.yml
15 nonomimi2.digiproduct.co.il 10.26.0.6:20015 0.0.0.0:10015 test26-15-nonomimi2.digiproduct.co.il.yml
16 littleriverguesthouse.digiproduct.co.il 10.26.0.6:20016 0.0.0.0:10016 test26-16-littleriverguesthouse.digiproduct.co.il.yml

Docker-контейнеры на сайт

Контейнер Образ Назначение
ngx_NN-<sitename> nginx:1.29.5-trixie Web-сервер, проксирует в PHP-FPM
fpm_NN-<sitename> wordpress:php8.4-fpm PHP 8.4 + WordPress
cli_NN-<sitename> registry.digiproduct.co.il/infra/compose/php84:8.4.14-cli PHP CLI с SSH (WP-CLI, деплой)

Для conector.nonomimi.digiproduct.co.il (#13) дополнительно: - schedule_13-… — обработчик расписания (Laravel/кастомный) - queue_13-… — обработчик очереди

Файлы сайтов: /docker/volumes/NN-<sitename>/

CLI SSH-доступ к контейнерам

Порты 0.0.0.0:100NN:22 открыты наружу — используются GitLab CI/CD для деплоя:

ssh -p 10010 [email protected]   # cli контейнер сайта #10

HAProxy — маршрутизация

Входящий трафик (порт 80)
  ├── /.well-known/acme-challenge/ → nginx (127.0.0.1:8080)
  └── всё остальное → redirect 301 https://

Входящий трафик (порт 443, TLS)
  ├── dev.mitgavrim.digiproduct.co.il              → 10.26.0.6:20010 (send-proxy)
  ├── stage.mitgavrim.digiproduct.co.il            → 10.26.0.6:20011 (send-proxy)
  ├── makeitdigital.digiproduct.co.il              → 10.26.0.6:20012 (send-proxy)
  ├── conector.nonomimi.digiproduct.co.il          → 10.26.0.6:20013 (send-proxy)
  ├── conector.stage.nonomimi.digiproduct.co.il    → 10.26.0.6:20014 (send-proxy)
  ├── nonomimi2.digiproduct.co.il                  → 10.26.0.6:20015 (send-proxy)
  └── littleriverguesthouse.digiproduct.co.il      → 10.26.0.6:20016 (send-proxy)
  • www.* → redirect 301 на голый домен
  • Балансировка: leastconn, health-check каждые 2 с
  • Cloudflare real-IP из CF-Connecting-IP
  • Заблокирован IP 5.29.19.3 и user-agent MJ12bot

SSL-сертификаты

Домен Статус
dev.mitgavrim.digiproduct.co.il активен
stage.mitgavrim.digiproduct.co.il активен
makeitdigital.digiproduct.co.il активен
conector.nonomimi.digiproduct.co.il активен
conector.stage.nonomimi.digiproduct.co.il активен
nonomimi2.digiproduct.co.il активен
littleriverguesthouse.digiproduct.co.il активен

Cron: 0 3 * * *certbot-helper.sh >> /var/log/certbot-combine.log 2>&1

Мониторинг

Компонент Порт Scraped by
node_exporter 10.26.0.6:9100 116.203.108.152, 46.224.166.151 (mon26)
HAProxy Prometheus 10.26.0.6:8405 mon26
glpi-agent роль haproxy, env production-infra26

Резервное копирование (Bareos)

Параметр Значение
Клиент bareos-filedaemon на 10.26.0.6:9102
Директор bkp26 (10.26.0.8), FQDN bkp26-local.digiproduct.co.il
Хранилище Hetzner Object Storage fsn1.your-objectstorage.com
Бакет digibkpinfra26
Расписание WeeklyCycle
Удержание 90 дней
Макс. томов (incremental) 100
Spool dir /var/lib/bareos/spool/test26

Бэкапы сайтов (/docker/volumes/NN-<sitename>/) управляются отдельными заданиями через роль bareos_bkp_wp_s3 в плейбуках test26-NN-*.yml.

Файрвол

UFW отключён. Файрвол управляется через iptables (/etc/iptables/rules.v4).
Открытые порты: 80/tcp, 443/tcp, 1022/tcp (SSH), 10010–10016/tcp (CLI SSH контейнеров).

Ansible-роли

Плейбук project/test26.yml:

Роль Статус Назначение
infra26 закомментирована (уже применена) базовая настройка: swap 4GB, Docker, MySQL client, timezone
compose_autoheal закомментирована (уже применена) авто-перезапуск контейнеров
node_exporter закомментирована (уже применена) Prometheus-экспортер хоста
glpi_agent закомментирована (уже применена) инвентаризация
systemd_haproxy закомментирована (уже применена) HAProxy + Nginx + certbot
systemd_bareos_client закомментирована (уже применена) bareos-filedaemon
bareos_bkp_system_s3 закомментирована (уже применена) бэкап системы в S3
systemd_gitlab_runner активна регистрация GitLab CI/CD runner

Заметки

  • SSH нестандартный порт: 1022
  • Диск 69% занят (25 GB / 38 GB) — много overlay-слоёв от 7 сайтов × ~3 контейнера
  • RAM ~2.3 GB из 3.7 GB; при добавлении новых сайтов нужен апгрейд типа сервера
  • infra26_install_mysql_common_client: true — MySQL CLI установлен на уровне ОС (для удобства)
  • Журнал systemd ограничен 300 MB (@daily journalctl --vacuum-size=300M)