bolt Valebyte VPS від $4/міс — NVMe, запуск за 60 секунд.

Отримати VPS arrow_forward
eco Початковий Туторіал

Розгортання Cachet на VPS

calendar_month Aug 12, 2026 schedule 24 хв. читання visibility 25 переглядів
Развёртывание Cachet на VPS для создания публичной страницы статуса сервисов
info

Потрібен сервер для цього гайду? Ми пропонуємо виділені сервери та VPS у 50+ країнах з миттєвим налаштуванням.

Потрібен сервер для цього гайду?

Розгорніть VPS або виділений сервер за хвилини.

Розгортання Cachet на VPS для створення публічної сторінки статусу сервісів

TL;DR

У цьому докладному посібнику ми крок за кроком налаштуємо Cachet — потужне та гнучке рішення для створення публічної сторінки статусу ваших сервісів. Ви навчитеся встановлювати та конфігурувати Cachet на VPS під керуванням Ubuntu 24.04 LTS, використовуючи Nginx, PHP 8.4 та MySQL 8.0, а також забезпечувати безпеку за допомогою HTTPS та організовувати систему резервного копіювання. В результаті ви отримаєте повністю функціональну сторінку статусу, яка допоможе ефективно інформувати користувачів про доступність ваших сервісів, планові роботи та інциденти.

  • Налаштування Ubuntu 24.04 LTS, включно з SSH, фаєрволом та базовими утилітами.
  • Покрокова установка всіх необхідних компонентів: Nginx, PHP 8.4, MySQL 8.0 та Composer.
  • Детальна конфігурація Cachet, включно з базою даних, змінними оточення та веб-сервером Nginx.
  • Увімкнення HTTPS за допомогою Caddy для забезпечення безпечного з'єднання.
  • Створення системи резервного копіювання для захисту даних та конфігів Cachet.
  • Вирішення типових проблем та відповіді на поширені запитання.

Що ми налаштовуємо і навіщо

Схема: Що ми налаштовуємо і навіщо
Схема: Що ми налаштовуємо і навіщо

У сучасному світі стабільність та доступність онлайн-сервісів мають критичне значення. Будь то SaaS-платформа, ігровий сервер чи особистий проєкт, користувачі очікують безперебійної роботи. Однак інциденти, планові роботи або непередбачені збої неминучі. У таких ситуаціях вкрай важливо мати ефективний спосіб інформування вашої аудиторії. Саме для цього і призначений Cachet.

Cachet — це елегантне та потужне open-source рішення для створення публічної сторінки статусу (status page). Воно дозволяє вам прозоро повідомляти про стан ваших сервісів, публікувати сповіщення про планові роботи, реєструвати інциденти та показувати історію їх усунення. Використовуючи Cachet, ви підвищуєте довіру користувачів, знижуєте навантаження на службу підтримки під час збоїв та демонструєте професійний підхід до управління інфраструктурою.

У підсумку, по завершенні цього посібника, ви отримаєте повністю функціональну, безпечну та підтримувану сторінку статусу, розміщену на вашому власному VPS. Ви зможете створювати компоненти (наприклад, "Веб-сервер", "База даних", "API"), пов'язувати їх з метриками, публікувати інциденти з оновленнями в реальному часі та інформувати підписників через різні канали.

Існують різні підходи до створення сторінок статусу. Деякі віддають перевагу використанню хмарних керованих сервісів, таких як Statuspage.io (Atlassian), Instatus, Better Uptime або Atlassian Opsgenie. Ці рішення пропонують зручність, готові інтеграції та мінімальні витрати на налаштування, але часто супроводжуються щомісячними платежами, обмеженнями на кількість компонентів або підписників, а також меншим контролем над даними та кастомізацією. Для багатьох проєктів, особливо на ранніх стадіях або з обмеженим бюджетом, ці витрати можуть бути значними.

Альтернативний підхід — self-hosted рішення на власному VPS. Це дає вам повний контроль над інфраструктурою, даними та можливостями кастомізації. Ви платите лише за VPS, що часто виявляється значно дешевше в довгостроковій перспективі, особливо якщо у вас вже є сервер. Це також забезпечує більшу конфіденційність, оскільки всі дані зберігаються на вашій машині. Cachet є одним з найкращих open-source рішень для self-hosting, пропонуючи багатий функціонал та активну спільноту. Саме цей шлях ми й оберемо в цьому посібнику, розгорнувши Cachet на VPS.

Який VPS-конфіг потрібен для цього завдання

Схема: Який VPS-конфіг потрібен для цього завдання
Схема: Який VPS-конфіг потрібен для цього завдання

Вибір відповідного VPS для Cachet залежить від очікуваного навантаження, кількості компонентів, інцидентів та числа підписників. Cachet не є ресурсоємним застосунком для більшості сценаріїв, але важливо забезпечити стабільну роботу веб-сервера, PHP-FPM та бази даних.

Мінімальні вимоги для Cachet (актуально для 2026 року):

  • Процесор (CPU): 1-2 vCPU. Для Cachet достатньо одного ядра сучасного процесора (наприклад, Intel Xeon E-series або AMD EPYC). Якщо ви плануєте запускати інші сервіси на тому ж VPS або очікуєте дуже високий трафік, можна розглянути 2 vCPU.
  • Оперативна пам'ять (RAM): 2 GB. Цього обсягу буде достатньо для операційної системи (Ubuntu 24.04 LTS), веб-сервера Nginx, PHP-FPM, MySQL 8.0 та самого застосунку Cachet. При активному використанні або великій кількості відвідувачів сторінки статусу, 4 GB RAM забезпечать більш комфортну роботу.
  • Диск (Storage): 40 GB SSD. Основний простір займе операційна система (близько 10-15 GB), файли Cachet (кілька сотень мегабайт) та база даних. SSD-накопичувач критичний для хорошої продуктивності бази даних. Для довгострокової перспективи та зберігання резервних копій рекомендується 60-80 GB. NVMe SSD буде ідеальним вибором для максимальної продуктивності.
  • Мережа (Network): 100 Mbps - 1 Gbps. Для сторінки статусу, яка в основному віддає статичний контент та невеликі обсяги даних з БД, 100 Mbps зазвичай достатньо. Однак, сучасні VPS часто пропонують 1 Gbps порти, що є кращим для загальної продуктивності та масштабованості.
  • Операційна система: Ubuntu Server 24.04 LTS (або інша сучасна LTS-версія Debian-based дистрибутива).

Конкретний VPS-план для завдання:

Для типової установки Cachet, здатної обслуговувати кілька тисяч відвідувачів на день та відстежувати до 20-30 компонентів, підійде VPS з такими характеристиками: 2 vCPU, 4 GB RAM, 80 GB NVMe SSD, 1 Gbps порт. Такої конфігурації вистачить із запасом для стабільної роботи Cachet та потенційного розширення функціоналу.

Можна розглянути VPS із зазначеними характеристиками або аналогічні пропозиції від інших провайдерів.

Коли потрібен dedicated сервер, а не VPS:

Dedicated сервери зазвичай потрібні для набагато масштабніших завдань, ніж просто сторінка статусу Cachet. Розгляньте dedicated сервер, якщо:

  • Ви плануєте розміщувати Cachet разом з десятками інших високонавантажених сервісів на одній машині.
  • Потрібна дуже висока продуктивність введення/виведення (I/O) або специфічне апаратне забезпечення, недоступне на VPS.
  • У вас тисячі або десятки тисяч активних підписників, і ви очікуєте дуже високий трафік на сторінку статусу під час великих інцидентів.
  • Вам потрібні суворі вимоги до відповідності нормативним актам, які вимагають фізичної ізоляції обладнання.
  • Ви хочете повний контроль над апаратним забезпеченням, включно з вибором конкретних моделей CPU, RAM, RAID-контролерів та мережевих карт.

Для більшості користувачів, які розгортають Cachet, VPS буде більш ніж достатнім та економічно вигідним рішенням.

Локація: на що впливає

Вибір локації VPS має значення з кількох причин:

  • Затримка (Latency): Розміщуйте сервер якомога ближче до вашої основної аудиторії або до серверів, статус яких ви відстежуєте. Менша затримка означає швидший доступ до сторінки статусу для ваших користувачів.
  • Законодавство про дані: Залежно від юрисдикції вашої компанії та ваших користувачів, можуть бути вимоги до зберігання даних у певній країні чи регіоні (наприклад, GDPR у Європі). Переконайтеся, що обрана локація відповідає цим вимогам.
  • Ціна: Вартість VPS може незначно відрізнятися в різних регіонах.
  • Геополітичні ризики: У деяких випадках вибір локації може бути продиктований прагненням уникнути певних геополітичних ризиків.

Зазвичай рекомендується вибирати локацію, яка знаходиться в тому ж географічному регіоні, що й ваша основна аудиторія. Наприклад, якщо ваші користувачі в Європі, вибирайте сервер у Німеччині, Нідерландах або Фінляндії.

Підготовка сервера

Схема: Підготовка сервера
Схема: Підготовка сервера

Перед тим як приступити до встановлення Cachet, необхідно виконати базову підготовку вашого свіжого VPS. Ми будемо використовувати Ubuntu Server 24.04 LTS, оскільки це актуальна та стабільна версія операційної системи, що підтримується до 2029 року.

1. Підключення по SSH та створення користувача

Після отримання даних для доступу до VPS (IP-адреса, root-пароль), підключіться до нього через SSH. Рекомендується не використовувати користувача root для повсякденної роботи. Створіть нового користувача з правами sudo та налаштуйте автентифікацію за SSH-ключами.


ssh root@ВАШ_IP_АДРЕС # Підключаємося як root
adduser ім'я_користувача # Створюємо нового користувача
usermod -aG sudo ім'я_користувача # Додаємо користувача до групи sudo

Тепер скопіюйте ваш публічний SSH-ключ на сервер для нового користувача. Якщо у вас немає SSH-ключа, створіть його на локальній машині за допомогою ssh-keygen.


# На локальній машині:
ssh-copy-id ім'я_користувача@ВАШ_IP_АДРЕС

Після цього вийдіть із сесії root та увійдіть під новим користувачем:


exit
ssh ім'я_користувача@ВАШ_IP_АДРЕС

2. Відключення автентифікації за паролем для root та SSH-пароля (опціонально, але рекомендується)

Для підвищення безпеки рекомендується відключити вхід за паролем для root і, можливо, для всіх користувачів, дозволяючи лише автентифікацію за SSH-ключами. Відредагуйте файл /etc/ssh/sshd_config.


sudo nano /etc/ssh/sshd_config

Знайдіть та змініть наступні рядки:


# PermitRootLogin yes # Закоментуйте або встановіть no
PermitRootLogin no
PasswordAuthentication no # Відключаємо вхід за паролем для всіх користувачів
ChallengeResponseAuthentication no

Перезапустіть SSH-сервіс:


sudo systemctl restart sshd

ВАЖЛИВО: Переконайтеся, що ви можете увійти під новим користувачем за SSH-ключем, перш ніж відключати PasswordAuthentication. В іншому випадку ви втратите доступ до сервера.

3. Оновлення системи та встановлення базових утиліт

Завжди починайте з оновлення пакетного менеджера та встановлених пакетів.


sudo apt update # Оновлюємо список доступних пакетів
sudo apt upgrade -y # Встановлюємо оновлення для всіх пакетів
sudo apt install -y curl wget git unzip htop # Встановлюємо корисні утиліти

4. Налаштування фаєрволу (UFW)

Uncomplicated Firewall (UFW) — це простий у використанні інтерфейс для netfilter. Налаштуйте його для дозволу лише необхідних підключень: SSH (порт 22), HTTP (порт 80) та HTTPS (порт 443).


sudo ufw allow OpenSSH # Дозволяємо SSH-підключення
sudo ufw allow http # Дозволяємо HTTP (порт 80)
sudo ufw allow https # Дозволяємо HTTPS (порт 443)
sudo ufw enable # Вмикаємо фаєрвол (підтвердіть 'y')
sudo ufw status # Перевіряємо статус фаєрволу

5. Встановлення Fail2Ban

Fail2Ban сканує логи сервера (наприклад, логи SSH) на предмет підозрілої активності (численні невдалі спроби входу) та тимчасово блокує IP-адреси зловмисників. Це значно підвищує безпеку вашого сервера.


sudo apt install -y fail2ban # Встановлюємо Fail2Ban
sudo systemctl enable fail2ban # Вмикаємо автозапуск при завантаженні
sudo systemctl start fail2ban # Запускаємо сервіс
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local # Створюємо локальну копію для налаштувань
sudo nano /etc/fail2ban/jail.local # Редагуємо конфігурацію

У файлі jail.local переконайтеся, що секція [sshd] активна (enabled = true). Ви також можете налаштувати bantime (час блокування) та findtime (період для виявлення спроб) на свій розсуд.


# Приклад налаштування в jail.local:
[DEFAULT]
bantime = 1h # Блокувати на 1 годину
findtime = 10m # Сканувати за 10 хвилин
maxretry = 5 # Блокувати після 5 невдалих спроб

[sshd]
enabled = true
port = ssh
logpath = %(sshd_log)s
backend = %(sshd_backend)s

Після змін перезапустіть Fail2Ban:


sudo systemctl restart fail2ban
sudo fail2ban-client status # Перевіряємо статус
sudo fail2ban-client status sshd # Перевіряємо статус для SSH

Тепер ваш сервер готовий до встановлення основного програмного забезпечення.

Встановлення ПЗ — покроково

Схема: Встановлення ПЗ — покроково
Схема: Встановлення ПЗ — покроково

Cachet побудований на фреймворку Laravel, тому нам знадобляться веб-сервер (Nginx), інтерпретатор PHP з необхідними розширеннями, менеджер залежностей Composer та база даних (MySQL). Ми будемо використовувати актуальні версії ПЗ на 2026 рік.

1. Встановлення Nginx 1.28.x

Nginx виступатиме в ролі веб-сервера, що обслуговує запити до Cachet.


sudo apt install -y nginx # Встановлюємо Nginx
sudo systemctl enable nginx # Вмикаємо автозапуск Nginx
sudo systemctl start nginx # Запускаємо Nginx
sudo systemctl status nginx # Перевіряємо статус Nginx

Після встановлення Nginx має бути доступний за IP-адресою вашого VPS (ви побачите сторінку-заглушку Nginx).

2. Встановлення PHP 8.4 та необхідних розширень

Cachet вимагає PHP 8.1 або вище. Ми встановимо PHP 8.4, який буде актуальним у 2026 році, разом із PHP-FPM (FastCGI Process Manager) та всіма необхідними розширеннями.


sudo apt install -y software-properties-common # Встановлюємо утиліти для роботи з репозиторіями
sudo add-apt-repository ppa:ondrej/php -y # Додаємо репозиторій Ondrej PPA для актуальних версій PHP
sudo apt update # Оновлюємо список пакетів після додавання PPA
sudo apt install -y php8.4 php8.4-fpm php8.4-mysql php8.4-gd php8.4-mbstring php8.4-xml php8.4-bcmath php8.4-curl php8.4-zip php8.4-tokenizer php8.4-json # Встановлюємо PHP 8.4 та всі потрібні розширення
sudo systemctl enable php8.4-fpm # Вмикаємо автозапуск PHP-FPM
sudo systemctl start php8.4-fpm # Запускаємо PHP-FPM
sudo systemctl status php8.4-fpm # Перевіряємо статус PHP-FPM

Репозиторій Ondrej PPA забезпечує доступ до найсвіжіших версій PHP на Ubuntu.

3. Встановлення MySQL Server 8.0.x

Cachet використовує базу даних для зберігання всієї інформації про компоненти, інциденти, підписників та налаштування. Ми встановимо MySQL 8.0.


sudo apt install -y mysql-server # Встановлюємо MySQL Server
sudo systemctl enable mysql # Вмикаємо автозапуск MySQL
sudo systemctl start mysql # Запускаємо MySQL
sudo systemctl status mysql # Перевіряємо статус MySQL

Після встановлення рекомендується запустити скрипт безпеки MySQL для встановлення пароля root, видалення анонімних користувачів та тестової бази даних.


sudo mysql_secure_installation # Запускаємо скрипт безпеки MySQL

Дотримуйтесь інструкцій на екрані: встановіть надійний пароль для користувача root, видаліть анонімних користувачів, забороніть віддалений вхід root та видаліть тестову базу даних.

4. Створення бази даних та користувача для Cachet

Підключіться до MySQL від імені root та створіть нову базу даних та користувача для Cachet з відповідними правами.


sudo mysql -u root -p # Підключаємося до MySQL від root (введіть пароль, встановлений раніше)

Всередині MySQL-консолі виконайте наступні команди, замінивши cachet_db, cachet_user та ВАШ_ПАРОЛЬ_ДЛЯ_БД на свої значення:


CREATE DATABASE cachet_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; # Створюємо базу даних
CREATE USER 'cachet_user'@'localhost' IDENTIFIED BY 'ВАШ_ПАРОЛЬ_ДЛЯ_БД'; # Створюємо користувача
GRANT ALL PRIVILEGES ON cachet_db. TO 'cachet_user'@'localhost'; # Видаємо права на базу даних
FLUSH PRIVILEGES; # Оновлюємо привілеї
EXIT; # Виходимо з MySQL-консолі

ВАЖЛИВО: Використовуйте складний та унікальний пароль для бази даних.

5. Встановлення Composer 2.7.x

Composer — це менеджер залежностей для PHP, який Cachet використовує для встановлення своїх бібліотек.


curl -sS https://getcomposer.org/installer -o composer-setup.php # Завантажуємо скрипт встановлення Composer
sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer # Встановлюємо Composer глобально
rm composer-setup.php # Видаляємо скрипт встановлення
composer --version # Перевіряємо встановлену версію (має бути 2.7.x або вище)

6. Завантаження та встановлення Cachet

Ми завантажимо останню стабільну версію Cachet з офіційного GitHub-репозиторію.


cd /var/www/ # Переходимо в директорію для веб-сайтів
sudo git clone https://github.com/CachetHQ/Cachet.git cachet # Клонуємо репозиторій Cachet
cd cachet # Переходимо в директорію Cachet
sudo git checkout v2.4.0 # Перемикаємося на останню стабільну версію (актуально на 2026, можливо v2.5.x)
sudo cp .env.example .env # Створюємо файл .env з прикладу
sudo chown -R www-data:www-data /var/www/cachet # Встановлюємо власника директорії
sudo chmod -R 775 /var/www/cachet/storage # Встановлюємо права на директорію storage
sudo chmod -R 775 /var/www/cachet/bootstrap/cache # Встановлюємо права на директорію bootstrap/cache

Тепер встановлюємо всі PHP-залежності за допомогою Composer.


sudo composer install --no-dev -o # Встановлюємо залежності, оптимізуємо автозавантажувач

Генеруємо ключ застосунку Laravel (для шифрування сесій та інших даних).


sudo php artisan key:generate # Генеруємо ключ застосунку

Запускаємо міграції бази даних для створення необхідних таблиць.


sudo php artisan migrate --force # Запускаємо міграції бази даних

При першому запуску міграції Cachet може запропонувати створити користувача. Якщо ви хочете створити адміністратора одразу, використовуйте php artisan app:install. В іншому випадку ви зможете зареєструватися через веб-інтерфейс після налаштування Nginx.

Конфігурація

Схема: Конфігурація
Схема: Конфігурація

Після встановлення всіх компонентів необхідно правильно їх налаштувати, щоб Cachet міг працювати коректно та безпечно.

1. Налаштування файлу .env

Файл .env містить усі змінні оточення для програми Laravel, включаючи налаштування бази даних, URL програми та інші важливі параметри. Відредагуйте його, щоб Cachet міг підключитися до вашої бази даних та правильно формувати посилання.


sudo nano /var/www/cachet/.env

Знайдіть та змініть наступні рядки, використовуючи дані, які ви створили раніше:


APP_NAME="Cachet"
APP_ENV=production
APP_KEY=ВАШ_СГЕНЕРИРОВАННЫЙ_КЛЮЧ # Вже згенеровано командою key:generate
APP_DEBUG=false # У production завжди false
APP_URL=https://status.yourdomain.com # Вкажіть ваш домен з HTTPS

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=cachet_db # Ім'я вашої бази даних
DB_USERNAME=cachet_user # Ім'я користувача бази даних
DB_PASSWORD=ВАШ_ПАРОЛЬ_ДЛЯ_БД # Пароль користувача бази даних

CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=database # Використовуємо базу даних для черг

Збережіть зміни (Ctrl+O, Enter, Ctrl+X).

2. Налаштування Nginx для Cachet

Створимо новий конфігураційний файл Nginx для вашого домену. Замініть status.yourdomain.com на ваш реальний домен.


sudo nano /etc/nginx/sites-available/status.yourdomain.com.conf

Вставте наступний блок конфігурації:


server {
    listen 80;
    listen [::]:80;
    server_name status.yourdomain.com; # Ваш домен

    root /var/www/cachet/public; # Шлях до директорії public Cachet

    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-XSS-Protection "1; mode=block";
    add_header X-Content-Type-Options "nosniff";

    index index.php index.html index.htm;

    charset utf-8;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }

    error_page 404 /index.php;

    location ~ \.php$ {
        fastcgi_pass unix:/run/php/php8.4-fpm.sock; # Вказуємо сокет PHP-FPM
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ /\.(?!well-known). {
        deny all;
    }
}

Збережіть файл, потім створіть символічне посилання на нього в sites-enabled та перевірте конфігурацію Nginx.


sudo ln -s /etc/nginx/sites-available/status.yourdomain.com.conf /etc/nginx/sites-enabled/ # Створюємо симлінк
sudo nginx -t # Перевіряємо синтаксис конфігурації Nginx
sudo systemctl reload nginx # Перезавантажуємо Nginx для застосування змін

3. Налаштування HTTPS за допомогою Caddy

Використання HTTPS є обов'язковим для будь-якої публічної сторінки. Caddy — це сучасний веб-сервер, який автоматично керує сертифікатами Let's Encrypt, що робить його ідеальним для швидкого налаштування HTTPS. Якщо ви віддаєте перевагу Nginx + Certbot, ви можете пропустити цей крок і перейти до наступного.

3.1. Встановлення Caddy:


sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https # Встановлюємо необхідні пакети
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg # Додаємо GPG ключ
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list # Додаємо репозиторій Caddy
sudo apt update # Оновлюємо список пакетів
sudo apt install -y caddy # Встановлюємо Caddy
sudo systemctl stop nginx # Зупиняємо Nginx, оскільки Caddy використовуватиме 80 та 443 порти
sudo systemctl disable nginx # Вимикаємо автозапуск Nginx

3.2. Налаштування Caddyfile:


sudo nano /etc/caddy/Caddyfile

Видаліть існуючий вміст і вставте наступне, замінивши status.yourdomain.com на ваш домен:


status.yourdomain.com {
    root * /var/www/cachet/public
    file_server

    php_fastcgi unix//run/php/php8.4-fpm.sock

    # Обробка помилок для Laravel
    handle_errors {
        rewrite * /index.php
    }

    # Вмикаємо автоматичний HTTPS
    tls {
        dns cloudflare {env.CLOUDFLARE_API_TOKEN} # Приклад для Cloudflare DNS, якщо ваш домен там.
                                                 # Якщо ви використовуєте звичайні A/AAAA записи, просто залиште 'tls'
    }

    log {
        output file /var/log/caddy/cachet_access.log
        format json
    }

    # Додаткові заголовки безпеки
    header {
        X-Frame-Options "SAMEORIGIN"
        X-XSS-Protection "1; mode=block"
        X-Content-Type-Options "nosniff"
        Referrer-Policy "strict-origin-when-cross-origin"
    }
}

Якщо ви використовуєте Cloudflare для DNS, вам потрібно буде створити токен API Cloudflare та додати його до змінних оточення Caddy (наприклад, через systemd override або /etc/environment) або використовувати tls internal для самопідписаних сертифікатів (не рекомендується для публічних сервісів). Для більшості користувачів достатньо просто tls, і Caddy сам отримає сертифікат через HTTP-01 виклик.


sudo systemctl restart caddy # Перезапускаємо Caddy
sudo systemctl status caddy # Перевіряємо статус Caddy

4. Налаштування HTTPS за допомогою Certbot (для Nginx)

Якщо ви вирішили використовувати Nginx, то для HTTPS вам знадобиться Certbot від Let's Encrypt.


sudo snap install core # Переконайтеся, що snap встановлено
sudo snap refresh core # Оновлюємо snap
sudo snap install --classic certbot # Встановлюємо Certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot # Створюємо симлінк
sudo certbot --nginx -d status.yourdomain.com # Запускаємо Certbot для Nginx

Certbot автоматично налаштує Nginx для HTTPS та створить завдання cron для автоматичного поновлення сертифікатів. Дотримуйтесь інструкцій на екрані.

5. Налаштування Cron-завдань для Cachet

Cachet вимагає cron-завдання для виконання фонових задач, таких як надсилання сповіщень та оновлення метрик.


sudo crontab -e -u www-data # Відкриваємо crontab для користувача www-data (або того, під ким працює PHP-FPM)

Додайте наступний рядок в кінець файлу:


* * * * * php /var/www/cachet/artisan schedule:run >> /dev/null 2>&1

Ця команда запускатиме планувальник Laravel щохвилини.

6. Перевірка працездатності

Тепер ваш Cachet має бути доступний за адресою https://status.yourdomain.com. Відкрийте його в браузері та завершіть встановлення, створивши обліковий запис адміністратора.

Перевірте, що всі сервіси запущені:


sudo systemctl status php8.4-fpm # Перевіряємо PHP-FPM
sudo systemctl status mysql # Перевіряємо MySQL
sudo systemctl status nginx # Перевіряємо Nginx (якщо використовуєте його)
sudo systemctl status caddy # Перевіряємо Caddy (якщо використовуєте його)

Використовуйте curl для перевірки доступності сторінки:


curl -I https://status.yourdomain.com # Перевіряємо заголовки HTTP

Ви повинні побачити статус HTTP/2 200 OK та заголовки, що вказують на успішне завантаження сторінки.

Резервне копіювання та обслуговування

Схема: Резервне копіювання та обслуговування
Схема: Резервне копіювання та обслуговування

Резервне копіювання — це критично важлива частина будь-якої інфраструктури. Втрата даних може мати катастрофічні наслідки. Для Cachet необхідно регулярно створювати резервні копії бази даних та файлів програми.

1. Що резервувати

  • База даних: Це найважливіше. Містить усі компоненти, інциденти, метрики, підписників та налаштування Cachet.
  • Файли програми:
    • .env: Файл конфігурації Cachet з конфіденційними даними (ключі, паролі БД).
    • storage/: Директорія, де Cachet зберігає різні файли, такі як логи, кеш, сесії та завантажені файли (якщо є).
    • public/uploads/: Якщо ви дозволяєте завантаження зображень або інших файлів.
  • Конфігурації веб-сервера: Файли конфігурації Nginx (/etc/nginx/sites-available/status.yourdomain.com.conf) або Caddy (/etc/caddy/Caddyfile).

2. Простий скрипт авторезервування

Створимо простий скрипт, який виконуватиме дамп бази даних та архівуватиме важливі файли.


sudo mkdir -p /opt/backups/cachet # Створюємо директорію для резервних копій
sudo chown ім'я_користувача:ім'я_користувача /opt/backups/cachet # Надаємо права вашому користувачеві
nano /opt/backups/cachet/backup_cachet.sh

Вставте наступний скрипт, замінивши змінні на свої значення:


#!/bin/bash

# Налаштування бази даних
DB_NAME="cachet_db"
DB_USER="cachet_user"
DB_PASS="ВАШ_ПАРОЛЬ_ДЛЯ_БД"

# Шляхи
BACKUP_DIR="/opt/backups/cachet"
CACHET_APP_DIR="/var/www/cachet"
NGINX_CONF_DIR="/etc/nginx/sites-available" # Або /etc/caddy для Caddy

DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_FILE="${BACKUP_DIR}/cachet_backup_${DATE}.tar.gz"
DB_DUMP_FILE="${BACKUP_DIR}/cachet_db_dump_${DATE}.sql"

# 1. Дамп бази даних
echo "Створення дампу бази даних..."
mysqldump -u "${DB_USER}" -p"${DB_PASS}" "${DB_NAME}" > "${DB_DUMP_FILE}"
if [ $? -eq 0 ]; then
    echo "Дамп бази даних успішно створено."
else
    echo "Помилка створення дампу бази даних!"
    exit 1
fi

# 2. Архівування файлів Cachet та конфігурацій
echo "Архівування файлів Cachet та конфігурацій..."
tar -czf "${BACKUP_FILE}" \
    "${CACHET_APP_DIR}/.env" \
    "${CACHET_APP_DIR}/storage" \
    "${CACHET_APP_DIR}/public/uploads" \
    "${NGINX_CONF_DIR}/status.yourdomain.com.conf" \ # Або /etc/caddy/Caddyfile
    "${DB_DUMP_FILE}"
if [ $? -eq 0 ]; then
    echo "Файли успішно заархівовано."
else
    echo "Помилка архівування файлів!"
    exit 1
fi

# 3. Видалення старих резервних копій (наприклад, старших за 7 днів)
echo "Очищення старих резервних копій..."
find "${BACKUP_DIR}" -type f -name "cachet_backup_*.tar.gz" -mtime +7 -delete
find "${BACKUP_DIR}" -type f -name "cachet_db_dump_*.sql" -mtime +7 -delete
echo "Процес резервного копіювання завершено."

Зробіть скрипт виконуваним:


sudo chmod +x /opt/backups/cachet/backup_cachet.sh

3. Налаштування Cron для автоматичного запуску резервного копіювання

Додайте скрипт до cron для щоденного запуску. Наприклад, о 03:00 ночі.


sudo crontab -e # Відкриваємо crontab для вашого користувача

Додайте наступний рядок:


0 3 * * * /opt/backups/cachet/backup_cachet.sh >> /var/log/cachet_backup.log 2>&1

Ця команда запускатиме скрипт щодня о 03:00 та записуватиме вивід у файл логу.

4. Куди зберігати резервні копії

Зберігання резервних копій на тому ж сервері, що й основний сервіс, вкрай ризиковано. Якщо сервер вийде з ладу (відмова диска, пожежа в ЦОД), ви втратите і сервіс, і резервні копії. Рекомендується використовувати віддалене сховище:

  • Хмарне сховище, сумісне з S3: Amazon S3, DigitalOcean Spaces, Backblaze B2. Це надійний та відносно недорогий спосіб зберігання. Використовуйте утиліти типу s3cmd, rclone або awscli для завантаження резервних копій.
  • Окремий VPS: Ви можете налаштувати другий, невеликий VPS та використовувати rsync або scp для копіювання резервних копій на нього. Це забезпечує географічний розподіл.
  • Локальне сховище із синхронізацією: Якщо у вас є NAS або інший сервер у вашій локальній мережі, ви можете синхронізувати резервні копії туди.

Для більшої надійності розгляньте використання інструментів для інкрементальних та дедуплікованих резервних копій, таких як Restic або BorgBackup. Вони можуть ефективно зберігати безліч версій резервних копій, заощаджуючи місце та забезпечуючи швидке відновлення.

5. Оновлення: rolling vs maintenance window

Підтримка ПЗ в актуальному стані критично важлива для безпеки та стабільності. Розрізняють два основні підходи до оновлень:

  • Rolling updates (безперервні оновлення): Застосовуються до кластерів серверів, де оновлення відбувається по черзі, без загального простою сервісу. Для одного VPS це не застосовується.
  • Maintenance Window (вікно обслуговування): Запланований період часу, коли сервіс може бути недоступний або працювати з обмеженнями для проведення оновлень. Це найбільш реалістичний підхід для Cachet на одному VPS.

Рекомендації щодо оновлення:

  • Оновлення ОС та пакетів: Регулярно (раз на місяць або квартал) запускайте sudo apt update && sudo apt upgrade -y. Плануйте це на час найменшого навантаження.
  • Оновлення Cachet: Відстежуйте релізи Cachet на GitHub. Для оновлення зазвичай потрібно:
    1. Перевести Cachet у режим обслуговування (php artisan down).
    2. Зробити резервну копію.
    3. Виконати git pull або завантажити нову версію.
    4. Запустити composer install --no-dev -o.
    5. Виконати міграції бази даних (php artisan migrate --force).
    6. Очистити кеш (php artisan cache:clear && php artisan config:clear).
    7. Вивести Cachet з режиму обслуговування (php artisan up).
  • Моніторинг: Після будь-яких оновлень ретельно перевірте працездатність Cachet та всіх його функцій.

Завжди повідомляйте своїм користувачам про планові роботи через саму сторінку статусу (якщо вона ще працює) або іншими каналами зв'язку.

Вирішення проблем + FAQ

У процесі встановлення та експлуатації Cachet можуть виникнути різні проблеми. Тут ми розглянемо типові сценарії та запропонуємо рішення, а також відповімо на поширені запитання.

1. Cachet видає помилку 500 Internal Server Error

Що перевірити: Це найпоширеніша помилка. Вона вказує на проблему на стороні сервера або PHP.

  1. Логи PHP-FPM: Перевірте логи PHP-FPM на наявність помилок. Зазвичай вони знаходяться в /var/log/php8.4-fpm.log або /var/log/nginx/error.log (якщо Nginx не може зв'язатися з PHP-FPM).
  2. Логи Laravel: Cachet як застосунок Laravel записує помилки в /var/www/cachet/storage/logs/laravel.log. Це найбільш інформативне джерело.
  3. Права доступу: Переконайтеся, що користувач www-data (або користувач, під яким працює PHP-FPM) має права на читання/запис у директоріях /var/www/cachet/storage та /var/www/cachet/bootstrap/cache.
  4. .env файл: Перевірте правильність налаштувань бази даних та APP_KEY у файлі /var/www/cachet/.env.
  5. Розширення PHP: Переконайтеся, що всі необхідні PHP-розширення встановлені та увімкнені.
Як виправити: Виправте помилки, знайдені в логах. Часто це неправильні права доступу (sudo chown -R www-data:www-data /var/www/cachet && sudo chmod -R 775 /var/www/cachet/storage /var/www/cachet/bootstrap/cache), невірні дані для підключення до БД або відсутні PHP-розширення (sudo apt install -y php8.4-extension_name).

2. Сторінка не завантажується, Nginx/Caddy видає 403 Forbidden

Що перевірити: Це означає, що веб-серверу відмовлено в доступі до файлів.

  1. Права доступу до кореневої директорії: Переконайтеся, що директорія /var/www/cachet/public та її вміст належать www-data і мають правильні права.
  2. Конфігурація Nginx/Caddy: Перевірте, що root у вашому server-блоці Nginx або Caddyfile вказує на /var/www/cachet/public.
  3. SELinux/AppArmor: На деяких системах ці модулі безпеки можуть блокувати доступ. На Ubuntu за замовчуванням використовується AppArmor. Перевірте логи (sudo journalctl -xe) на повідомлення про блокування. Зазвичай для Nginx або Caddy не потрібні додаткові налаштування AppArmor.
Як виправити: Встановіть правильні права: sudo chown -R www-data:www-data /var/www/cachet та sudo chmod -R 755 /var/www/cachet/public. Перевірте синтаксис конфігурації Nginx (sudo nginx -t) або Caddy (sudo caddy validate) та перезавантажте сервіс.

3. Проблеми з підключенням до бази даних

Що перевірити: Якщо Cachet не може підключитися до MySQL.

  1. Статус MySQL: Переконайтеся, що MySQL запущено: sudo systemctl status mysql.
  2. Налаштування .env: Перевірте DB_HOST, DB_PORT, DB_DATABASE, DB_USERNAME, DB_PASSWORD у файлі .env.
  3. Користувач і права: Переконайтеся, що користувач бази даних cachet_user існує і має права на базу даних cachet_db. Спробуйте підключитися до MySQL від імені цього користувача з командного рядка: mysql -u cachet_user -p cachet_db.
  4. Фаєрвол: Переконайтеся, що MySQL не блокується фаєрволом (за замовчуванням MySQL слухає тільки localhost, що правильно).
Як виправити: Виправте помилки в .env. Якщо користувач або база даних не створені, створіть їх, як описано в розділі встановлення. Перезапустіть PHP-FPM після зміни .env: sudo systemctl restart php8.4-fpm.

4. Cachet не надсилає сповіщення

Що перевірити: Якщо підписники не отримують email або інші сповіщення.

  1. Налаштування пошти в .env: Перевірте секцію MAIL_DRIVER, MAIL_HOST, MAIL_PORT, MAIL_USERNAME, MAIL_PASSWORD, MAIL_ENCRYPTION, MAIL_FROM_ADDRESS, MAIL_FROM_NAME в .env.
  2. Cron-завдання: Переконайтеся, що cron-завдання для планувальника Laravel (php artisan schedule:run) налаштоване та виконується щохвилини. Перевірте логи cron.
  3. Черги: Cachet використовує черги для надсилання сповіщень. Переконайтеся, що QUEUE_DRIVER=database в .env і таблиця jobs у базі даних створена (php artisan migrate).
  4. Логи Laravel: Перевірте laravel.log на помилки, пов'язані з надсиланням пошти.
Як виправити: Скоригуйте налаштування пошти. Переконайтеся, що ваш поштовий сервер доступний з VPS. Перевірте, що cron-завдання виконується від правильного користувача (www-data) і має доступ до виконуваного файлу PHP та скрипту artisan.

5. Який VPS-конфіг мінімально підійде?

Для мінімальної установки Cachet, здатної обслуговувати невеликий проєкт або тестове середовище, достатньо VPS з 1 vCPU, 2 GB RAM, 40 GB SSD. Цієї конфігурації вистачить для роботи операційної системи, веб-сервера (Nginx або Caddy), PHP-FPM та MySQL. Однак, для більш стабільної роботи та можливості масштабування в майбутньому, рекомендується використовувати 2 vCPU, 4 GB RAM, 80 GB NVMe SSD, як описано в секції "Який VPS-конфіг потрібен для цього завдання".

6. Що обрати — VPS чи dedicated для цього завдання?

Для розгортання публічної сторінки статусу Cachet у переважній більшості випадків VPS є оптимальним вибором. Він пропонує достатню продуктивність, гнучкість та економічність. Dedicated сервери надлишкові для Cachet, якщо тільки ви не плануєте розміщувати на ньому безліч інших високонавантажених сервісів, не маєте суворих вимог до фізичної ізоляції або не очікуєте надзвичайно високого трафіку (десятки тисяч одночасних користувачів під час глобальних збоїв). Більшість проєктів успішно використовують Cachet на VPS середньої конфігурації.

7. Як оновити Cachet до нової версії?

Процес оновлення Cachet включає кілька кроків. По-перше, завжди робіть повний бекап бази даних та файлів застосунку. Потім переведіть Cachet у режим обслуговування за допомогою команди php artisan down. Після цього перейдіть до директорії Cachet (/var/www/cachet), отримайте останню версію коду (наприклад, git pull або завантажте новий архів). Оновіть залежності Composer командою composer install --no-dev -o. Виконайте міграції бази даних командою php artisan migrate --force, а також очистіть кеш: php artisan cache:clear && php artisan config:clear. Нарешті, виведіть Cachet з режиму обслуговування командою php artisan up та перевірте працездатність.

8. Як налаштувати метрики та графіки в Cachet?

Cachet дозволяє додавати метрики для відстеження різних параметрів сервісів, таких як час відгуку, використання CPU або пам'яті. Для цього після входу в панель адміністратора перейдіть до розділу "Метрики" (Metrics) та створіть нову метрику. Ви можете вручну вводити дані або використовувати API Cachet для автоматичного надсилання даних з ваших систем моніторингу (наприклад, Prometheus, Zabbix, Grafana). Cachet надає API-токен у налаштуваннях, який можна використовувати для POST-запитів з даними метрик. Наприклад, можна написати невеликий скрипт, який буде парсити дані з вашої системи моніторингу та надсилати їх до Cachet за розкладом.

Висновки та наступні кроки

Схема: Висновки та наступні кроки
Схема: Висновки та наступні кроки

Вітаємо! Ви успішно розгорнули та налаштували Cachet на вашому VPS, створивши надійну та професійну публічну сторінку статусу для ваших сервісів. Тепер ви можете ефективно комунікувати з вашою аудиторією, підвищуючи прозорість та довіру у випадку інцидентів або планових робіт. Ви отримали повний контроль над вашою сторінкою статусу, її даними та можливостями кастомізації.

Подальші кроки для оптимізації та розширення функціоналу вашої сторінки статусу включають:

  • Інтеграція з системами моніторингу: Використовуйте API Cachet для автоматичної публікації інцидентів та оновлення метрик з ваших існуючих систем моніторингу, таких як Prometheus, Zabbix або Grafana. Це дозволить автоматизувати процес інформування та скоротити час реакції.
  • Налаштування сповіщень: Налаштуйте різні канали сповіщень (Slack, Telegram, Webhooks) для вашої команди, щоб отримувати оперативні оповіщення про нові інциденти або зміни статусу.
  • Кастомізація зовнішнього вигляду: Вивчіть можливості кастомізації теми Cachet, щоб сторінка статусу відповідала брендингу вашого проєкту. Ви можете змінити кольори, шрифти та додати свій логотип.
  • Регулярний аудит та обслуговування: Підтримуйте ваш VPS та Cachet в актуальному стані, регулярно застосовуючи оновлення безпеки та проводячи резервне копіювання. Це забезпечить довгострокову стабільність та безпеку вашої сторінки статусу.

Чи був цей гайд корисним?

Ваш відгук допомагає нам покращувати гайди.

Share this post:

Надішліть гайд тому, кому він може стати в пригоді.

Telegram VKVK WhatsApp Facebook LinkedIn XX

розгортання Cachet на VPS для створення публічної сторінки статусу серві
support_agent
Valebyte Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.