MAATRIX / Блог / Cachet на Ubuntu 24.04: пошаговая установка

Cachet на Ubuntu 24.04: пошаговая установка

MAATRIX

Когда сервис падает, пользователи первым делом идут не в тикет-систему, а на страницу статуса — узнать, знаете ли вы о проблеме и когда её починят. Cachet — открытая PHP-платформа для таких страниц: компоненты сервиса, инциденты с таймлайном, метрики аптайма и подписка на уведомления. Ниже — пошаговая установка Cachet на чистый VPS с Ubuntu 24.04, от подготовки PHP до боевого nginx с SSL.

Обсудить статью, задать вопрос или начать новую тему

Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.

Перейти в сообщество →

Что понадобится и на что обратить внимание заранее

Cachet — проект, который давно не получает крупных обновлений: последняя стабильная ветка — 2.4, и она построена на Laravel 5.5. Это значит, что на новых версиях PHP возможны сюрпризы, а сама установка требует чуть более аккуратного подбора версий, чем у современных приложений. Прежде чем начинать, честно зафиксируйте это для себя: если вам нужна активно поддерживаемая status-page с постоянными обновлениями, стоит присматриваться и к альтернативам. Но если задача — быстро поднять рабочую страницу статуса под свой инфраструктурный ландшафт и не трогать её месяцами, Cachet отлично для этого подходит и продолжает работать стабильно.

Что нужно на сервере:

  • Ubuntu 24.04 LTS, минимум 1 vCPU / 1 ГБ RAM (Cachet лёгкий, для небольшой команды хватает даже минимальной конфигурации);
  • PHP 8.1 (официально заявленная Cachet 2.4 верхняя граница совместимости — в репозитории Ubuntu 24.04 по умолчанию идёт PHP 8.3, поэтому его ставим отдельно через PPA);
  • MySQL 8 (подойдёт и MariaDB, но ниже разбираем вариант с MySQL, как в пошаговой установке MySQL на Ubuntu 24.04);
  • Composer 2 для установки PHP-зависимостей;
  • nginx как веб-сервер и обратный прокси;
  • доменное имя, направленное на IP сервера, для нормального SSL.

Если сомневаетесь в выборе площадки — арендовать VPS под такую задачу можно с оплатой из России картой или криптой, без привязки к иностранным платёжным системам.

Подготовка системы и установка PHP 8.1

Обновите пакеты и поставьте базовые утилиты:

sudo apt update && sudo apt upgrade -y
sudo apt install -y software-properties-common curl unzip git

Добавьте PPA ondrej/php — он даёт доступ к более старым и более новым версиям PHP, чем есть в штатном репозитории Ubuntu 24.04:

sudo add-apt-repository ppa:ondrej/php -y
sudo apt update

Поставьте PHP 8.1 с расширениями, которые нужны Cachet:

sudo apt install -y php8.1-fpm php8.1-cli php8.1-mysql php8.1-mbstring \
  php8.1-xml php8.1-bcmath php8.1-curl php8.1-gd php8.1-zip php8.1-redis

Проверьте, что нужный интерпретатор действительно установлен и не конфликтует с системным PHP 8.3 (оба могут стоять параллельно — это нормально для ondrej/php):

php8.1 -v
sudo systemctl enable --now php8.1-fpm

Дальше во всех командах явно используем php8.1, чтобы случайно не задействовать системный PHP 8.3.

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.

Арендовать сервер

Установка Composer и MySQL

Composer ставим глобально:

curl -sS https://getcomposer.org/installer | php8.1
sudo mv composer.phar /usr/local/bin/composer
composer --version

MySQL можно поставить по общей схеме из статьи про установку MySQL на Ubuntu 24.04. Кратко:

sudo apt install -y mysql-server
sudo mysql_secure_installation

Создайте базу и пользователя для Cachet:

CREATE DATABASE cachet CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'cachet'@'localhost' IDENTIFIED BY 'сложный-пароль';
GRANT ALL PRIVILEGES ON cachet.* TO 'cachet'@'localhost';
FLUSH PRIVILEGES;

Пароль сразу генерируйте длинным и случайным — он пойдёт в .env, и его не нужно будет запоминать вручную.

Скачивание и первичная настройка Cachet

Берите релиз с готовыми собранными фронтенд-ассетами — это избавляет от установки Node.js и сборки через npm/gulp, которая на 2.4 капризна с современным Node:

cd /var/www
sudo git clone -b 2.4 https://github.com/CachetHQ/Cachet.git cachet
cd cachet
sudo chown -R $USER:$USER /var/www/cachet

Установите зависимости без dev-пакетов и с оптимизированным автозагрузчиком:

composer install --no-dev -o

Если composer ругается на версию PHP или на устаревшие пакеты — это ожидаемо для проекта без активной разработки; в большинстве случаев --ignore-platform-reqs решает проблему, но применяйте его осознанно и только если понимаете, какое именно требование обходите.

Скопируйте файл окружения и сгенерируйте ключ приложения:

cp .env.example .env
php8.1 artisan key:generate

Откройте .env и заполните ключевые параметры:

APP_URL=https://status.вашдомен.ru
APP_ENV=production
APP_DEBUG=false

DB_DRIVER=mysql
DB_HOST=localhost
DB_DATABASE=cachet
DB_USERNAME=cachet
DB_PASSWORD=сложный-пароль

CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=sync

MAIL_DRIVER=smtp
MAIL_HOST=smtp.вашпровайдер.ru
MAIL_PORT=587
MAIL_USERNAME=
MAIL_PASSWORD=
MAIL_ENCRYPTION=tls

QUEUE_DRIVER=sync — самый простой рабочий вариант для небольшой установки: письма и уведомления отправляются синхронно, без отдельного воркера. Если позже нагрузка вырастет, можно переключиться на redis и поднять воркер через supervisor — ниже покажу как.

Установка приложения: миграции и первый администратор

Запустите встроенный установщик Cachet — он прогонит миграции и в интерактивном режиме спросит имя сайта, домен, e-mail и пароль администратора:

php8.1 artisan app:install

Если команда недоступна в вашей сборке (в некоторых коммитах ветки 2.4 её переименовывали), выполните шаги вручную:

php8.1 artisan migrate --force
php8.1 artisan db:seed --class=SettingsTableSeeder
php8.1 artisan cachet:test

cachet:test полезно запустить в любом случае — команда проверяет окружение (права на запись, соединение с БД, конфигурацию) и укажет на нехватку прав до того, как вы упрётесь в белый экран в браузере.

Дайте веб-серверу права на директории, куда Cachet пишет кэш, логи и загруженные файлы:

sudo chown -R www-data:www-data /var/www/cachet
sudo find /var/www/cachet/storage -type d -exec chmod 775 {} \;
sudo find /var/www/cachet/bootstrap/cache -type d -exec chmod 775 {} \;

Nginx как веб-сервер и обратный прокси

Cachet отдаётся из папки public/ — это принципиально: если направить nginx в корень репозитория, файл .env окажется доступен снаружи. Создайте конфиг:

server {
    listen 80;
    server_name status.вашдомен.ru;
    root /var/www/cachet/public;
    index index.php;

    access_log /var/log/nginx/cachet.access.log;
    error_log  /var/log/nginx/cachet.error.log;

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

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.1-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }

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

Подключите сайт и перезапустите nginx:

sudo ln -s /etc/nginx/sites-available/cachet /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx

Если раньше не настраивали nginx как обратный прокси на Ubuntu 24.04 или хотите разобраться в директивах глубже — есть отдельная пошаговая инструкция по nginx-прокси. Откройте порты в файрволе — если ещё не настраивали ufw, шаги описаны в статье про настройку UFW на Ubuntu 24.04:

sudo ufw allow OpenSSH
sudo ufw allow 'Nginx Full'
sudo ufw enable

SSL, планировщик и запуск через supervisor

Без HTTPS публичная status-страница смотрится странно, да и часть браузеров будет предупреждать посетителей. Ставьте сертификат Let's Encrypt через certbot — подробный разбор шагов есть в статье про установку Let's Encrypt SSL на VPS:

sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d status.вашдомен.ru

Cachet использует планировщик Laravel для фоновых задач: пересчёт агрегированных метрик, чистка старых логов. Добавьте одну строку в cron:

sudo crontab -e -u www-data
* * * * * cd /var/www/cachet && php8.1 artisan schedule:run >> /dev/null 2>&1

Эта строка запускается каждую минуту, но реальные задачи внутри Laravel-планировщика срабатывают по своему расписанию — накладных расходов на пустых прогонах минимум.

Если позже перейдёте на QUEUE_DRIVER=redis для асинхронной отправки уведомлений, воркер стоит держать под supervisor, а не в screen/tmux — иначе он умрёт при первом рестарте сервера:

[program:cachet-worker]
process_name=%(program_name)s
command=php8.1 /var/www/cachet/artisan queue:work --sleep=3 --tries=3
directory=/var/www/cachet
autostart=true
autorestart=true
user=www-data
numprocs=1
redirect_stderr=true
stdout_logfile=/var/log/cachet-worker.log

Файл кладите в /etc/supervisor/conf.d/cachet-worker.conf, затем:

sudo apt install -y supervisor
sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start cachet-worker

Для базовой установки на небольшую команду это, как правило, избыточно — sync-режим без воркера покрывает потребность полностью.

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.

Арендовать сервер

Нужны сами нейросети для контента?

Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.

Частые вопросы

Можно ли поставить Cachet на PHP 8.3 без плясок с PPA?

Формально попытаться можно, но Laravel 5.5, на котором держится Cachet 2.4, официально не рассчитан на PHP 8.2+, и вы рискуете получить непредсказуемые ошибки в рантайме, которые сложно диагностировать из-за отсутствия активной поддержки проекта. PHP 8.1 — самый проверенный вариант на конец августа 2026.

Что делать, если нужны актуальные обновления безопасности PHP-фреймворка?

Учитывайте, что Cachet 2.4 давно не обновляется вместе с экосистемой Laravel, и держите сервер за отдельным доменом/поддоменом, ограниченным файрволом, без размещения на нём других критичных сервисов.

Обязателен ли Redis?

Нет. Для небольшой команды хватает CACHE_DRIVER=file и QUEUE_DRIVER=sync — Redis имеет смысл только при заметном потоке уведомлений или нескольких независимых воркерах.

Как обновить Cachet до новой версии, если она выйдет?

Сделайте бэкап базы и .env, затем git fetch && git checkout <тег>, composer install --no-dev -o, php8.1 artisan migrate --force. Перед этим обязательно прочитайте changelog — из-за редких релизов между версиями может накопиться несколько миграций сразу.

Что если после установки страница отдаёт 500 ошибку?

В первую очередь смотрите storage/logs/laravel.log — там обычно точная причина: не хватает прав на storage/, не сгенерирован APP_KEY, либо неверные реквизиты подключения к БД в .env.

Обсудить статью, задать вопрос или начать новую тему

Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.

Перейти в сообщество →