Cachet на Ubuntu 24.04: пошаговая установка
Когда сервис падает, пользователи первым делом идут не в тикет-систему, а на страницу статуса — узнать, знаете ли вы о проблеме и когда её починят. 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 ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →