Установка Cachet на FreeBSD 12 с PHP, Nginx, MariaDB и Composer
Что такое Cachet
Cachet — это опен‑сорс система статус‑страниц на PHP. Коротко: она предоставляет API в формате JSON, уведомления подписчикам, отчёты об инцидентах, двухфакторную аутентификацию и метрики. (Термин «статус‑страница»: публичная страница с текущим состоянием сервисов и историей инцидентов.)
Требования
- PHP 7.1 или новее (в примерах используется PHP 7.2)
- HTTP‑сервер с поддержкой PHP (в руководстве — Nginx)
- Composer
- БД: MySQL/MariaDB, PostgreSQL или SQLite (в примере — MariaDB)
- Git
- acme.sh (для Let’s Encrypt, опционально)
- Непривилегированный пользователь с sudo на FreeBSD 12
Быстрые проверки перед началом
Проверьте версию FreeBSD:
uname -ro
# FreeBSD 12.0-RELEASEУстановите часовой пояс:
tzsetupОбновите систему и пакеты:
freebsd-update fetch install
pkg update && pkg upgrade -yУстановите базовые утилиты:
pkg install -y sudo vim unzip wget bashВажно: выполняйте команды от пользователя с sudo. Не работайте под root, если это не требуется.
Шаг 1 — Установка PHP и расширений
Установите PHP и необходимые расширения (пример для PHP 7.2):
sudo pkg install -y php72 php72-ctype php72-curl php72-dom php72-hash php72-iconv php72-gd php72-json php72-mbstring php72-openssl php72-session php72-simplexml php72-xml php72-zip php72-zlib php72-pdo php72-pdo_mysql php72-mysqli php72-pgsql php72-sqlite3 php72-filter php72-ftp php72-tokenizer php72-calendar php72-pecl-APCu php72-opcache php72-pecl-redis php72-phar php72-fileinfoПроверьте версию PHP:
php --version
# PHP 7.2.7 (cli) (built: Jul 25 2019 01:28:53) ( NTS )Включите и запустите PHP‑FPM:
sudo sysrc php_fpm_enable=yes
sudo service php-fpm startШаг 2 — Установка MariaDB и создание базы для Cachet
Установим MariaDB (в примере — mariadb102):
sudo pkg install -y mariadb102-client mariadb102-serverПроверьте версию клиента:
mysql --version
# mysql Ver 15.1 Distrib 10.2.17-MariaDBВключите и запустите сервис:
sudo sysrc mysql_enable="yes"
sudo service mysql-server startЗапустите скрипт для базовой защиты и установки пароля root:
sudo mysql_secure_installationСледуйте подсказкам (рекомендуется отвечать утвердительно на удаление анонимных пользователей, запрет удалённого логина root, удаление тестовой базы и перезагрузку привилегий).
Подключитесь и создайте базу и пользователя для Cachet (замените dbname/username/password):
sudo mysql -u root -p
# введите пароль
CREATE DATABASE dbname;
CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
GRANT ALL ON dbname.* TO 'username'@'localhost';
FLUSH PRIVILEGES;
exitВажно: храните учётные данные безопасно.
Шаг 3 — Установка acme.sh и получение сертификата Let’s Encrypt (опционально)
acme.sh — лёгкий клиент на POSIX shell для получения TLS‑сертификатов. Пример установки:
sudo su - root
git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh
./acme.sh --install --accountemail your@email.example
source ~/.bashrc
cd ~Проверка:
acme.sh --version
# v2.8.0Получение RSA и ECDSA сертификатов (замените example.com на ваш домен):
# RSA 2048
acme.sh --issue --standalone -d example.com --keylength 2048
# ECDSA
acme.sh --issue --standalone -d example.com --keylength ec-256Для тестирования используйте флаг –staging.
Каталоги с сертификатами (пример):
- RSA: /home/username/example.com
- ECDSA: /home/username/example.com_ecc
Создайте целевые папки для централизованного хранения (исправлено для корректного пути):
sudo mkdir -p /etc/letsencrypt/example.com
sudo mkdir -p /etc/letsencrypt/example.com_eccСкопируйте/установите сертификаты туда и настройте команду перезагрузки Nginx (пример):
# RSA
acme.sh --install-cert -d example.com --cert-file /etc/letsencrypt/example.com/cert.pem --key-file /etc/letsencrypt/example.com/private.key --fullchain-file /etc/letsencrypt/example.com/fullchain.pem --reloadcmd "sudo service nginx reload"
# ECDSA
acme.sh --install-cert -d example.com --ecc --cert-file /etc/letsencrypt/example.com_ecc/cert.pem --key-file /etc/letsencrypt/example.com_ecc/private.key --fullchain-file /etc/letsencrypt/example.com_ecc/fullchain.pem --reloadcmd "sudo service nginx reload"acme.sh автоматически будет обновлять сертификаты.
После завершения выйдите из root:
exitШаг 4 — Установка и настройка Nginx для Cachet
Установим Nginx (mainline/devel):
sudo pkg install -y nginx-develПроверьте версию:
nginx -v
# nginx version: nginx/1.17.2Включите и запустите:
sudo sysrc nginx_enable=yes
sudo service nginx startСоздайте файл конфигурации nginx для Cachet:
sudo vim /usr/local/etc/nginx/cachet.confПример содержимого (исправлены пути к сертификатам и имена файлов):
upstream php {
server 127.0.0.1:9000;
}
server {
listen [::]:443 ssl;
listen 443 ssl;
listen [::]:80;
listen 80;
server_name example.com;
root /usr/local/www/cachet/public;
index index.php;
# RSA
ssl_certificate /etc/letsencrypt/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/example.com/private.key;
# ECDSA
ssl_certificate /etc/letsencrypt/example.com_ecc/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/example.com_ecc/private.key;
location / {
try_files $uri /index.php$is_args$args;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_index index.php;
fastcgi_keep_conn on;
}
}Включите этот файл в основной nginx.conf, добавив внутри блока http:
include cachet.conf;Проверка синтаксиса и перезагрузка:
sudo nginx -t
sudo service nginx reloadСовет: локально проверьте доступность порта 443 и правил файрвола.
Шаг 5 — Установка Composer
Установите Composer глобально:
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === 'a5c698ffe4b8e849a443b120cd5ba38043260d5c4023dbf93e1558871f1f07f58274fc6f4c93bcfd858c6bd0775cd8d1') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"
sudo mv composer.phar /usr/local/bin/composerПроверьте версию:
composer --version
# Composer version 1.9.0 2019-02-11 10:52:10Шаг 6 — Установка Cachet
Создайте директорию для приложения:
sudo mkdir -p /usr/local/www/cachetСмените владельца на вашего непользовательского sudo‑пользователя (замените your_user):
sudo chown -R your_user:your_user /usr/local/www/cachetПерейдите в директорию и скачайте исходники Cachet (ветка 2.4 в примере):
cd /usr/local/www/cachet
git clone -b 2.4 --single-branch https://github.com/cachethq/Cachet.git .Скопируйте пример .env и настройте параметры БД и APP_URL:
cp .env.example .env
vim .envУстановите зависимости Composer без dev‑пакетов:
composer install --no-dev -oСгенерируйте ключ приложения:
php artisan key:generateЗапустите установку Cachet (в процессе будут настройки кэша, сессий и электронной почты):
php artisan cachet:installУстановите корректные права для веб‑сервера (в примере — www):
sudo chown -R www:www /usr/local/www/cachetОткройте сайт в браузере и следуйте мастеру настройки.
Шаг 7 — Завершение настройки через веб‑интерфейс
При установке через веб‑интерфейс выберите драйверы кэша и сессий, настройте почту и общие параметры сайта (имя сайта, домен, часовой пояс и язык). Затем создайте администратора.

ALT: Экран выбора драйвера кэша и сессий в мастере установки Cachet

ALT: Настройки общего сайта: имя, домен, часовой пояс, язык

ALT: Форма создания учётной записи администратора Cachet
После успешной настройки вы увидите подтверждение и кнопку «Перейти в панель управления».

ALT: Сообщение об успешной конфигурации Cachet с кнопкой перехода в панель управления
Панель доступна по пути /dashboard:

ALT: Интерфейс панели управления Cachet с навигацией по компонентам и инцидентам
Полезные ссылки
Критерии приёмки
- Сайт по APP_URL открывается и показывает страницу статуса.
- Панель /dashboard доступна и позволяет создать/редактировать инциденты.
- Миграции БД выполнены без ошибок (php artisan migrate завершился успешно).
- Уведомления по почте отправляются (если настроены SMTP/MAIL).
- HTTPS работает и сертификат корректен (если использовался Let’s Encrypt).
Рекомендации по безопасности
- Храните .env вне публичного доступа и с ограниченными правами.
- Регулярно обновляйте FreeBSD и пакеты: freebsd-update && pkg upgrade.
- Отключите root‑вход по SSH и используйте ключи SSH.
- Настройте базовую защиту Nginx (ограничение методов, заголовки HSTS).
- Запустите периодический аудит прав на /usr/local/www/cachet (владелец веб‑сервера только для файлов контента).
Чек‑лист по ролям
DevOps/администратор:
- Установил PHP‑FPM, Nginx, MariaDB, Composer.
- Настроил SSL и перезагрузку Nginx при обновлении certs.
- Настроил бэкапы базы.
Разработчик:
- Прогнал composer install и убедился, что production‑режим (-o –no-dev).
- Проверил работу API /api/v1/status.
Администратор сайта:
- Создал учётную запись администратора в веб‑мастере.
- Настроил уведомления подписчиков.
Трудные случаи и краткие решения (Edge cases)
- PHP‑FPM не запускается: проверьте лог /var/log/*.php-fpm.log и синтаксис php.ini.
- Невозможно подключиться к БД: проверьте правильность DB_HOST, DB_DATABASE, DB_USERNAME, DB_PASSWORD в .env.
- Ошибки прав доступа: убедитесь, что www (или выбранный веб‑пользователь) владеет каталогом и имеет права на запись в storage и bootstrap/cache.
- Composer не устанавливает зависимости: проверьте сетевой доступ и версию PHP, расширения mbstring, openssl, pdo и пр.
- Nginx выдаёт 502 Bad Gateway: проверьте, что php-fpm слушает 127.0.0.1:9000 и fastcgi_pass настроен корректно.
Быстрый план отката (rollback)
- Остановить Nginx: sudo service nginx stop
- Восстановить файлы из бэкапа (код и .env)
- Откат миграций (только если знаете последствия): php artisan migrate:rollback — помните об потере данных
- Запустить nginx и php-fpm
Мини‑методология развертывания (шаги)
- Подготовка ОС, пользователей и бэкапов.
- Установка PHP, расширений, MariaDB.
- Получение TLS (опционально).
- Установка Nginx и конфигурация виртуального хоста.
- Развёртывание Cachet, запуск миграций и установка зависимостей.
- Настройка почты, кэша и создание администратора.
- Мониторинг и резервное копирование.
Мини‑словарь (1‑строчные определения)
- Cachet: открытая платформа для статус‑страниц.
- acme.sh: клиент для получения certs от Let’s Encrypt на чистом shell.
- FPM: FastCGI Process Manager для PHP.
- .env: файл с конфиденциальными настройками приложения.
Decision flowchart (Mermaid)
flowchart TD
A[Начало установки] --> B{Есть домен и DNS?}
B -- Нет --> C[Настройте DNS, укажите A/AAAA]
B -- Да --> D{Хотите HTTPS?}
D -- Да --> E[Установите acme.sh и получите сертификат]
D -- Нет --> F[Продолжить без SSL]
E --> G[Настройка Nginx с SSL]
F --> G
G --> H[Установить MariaDB и создать БД]
H --> I[Установить PHP, Composer, Cachet]
I --> J[Запустить мастер установки в браузере]
J --> K[Готово]Контрольные тесты / Критерии приёмки
- HTTP 200 на APP_URL и /dashboard.
- Успешная авторизация в панели администратора.
- Уведомление подписчика приходит при создании тестового инцидента.
- Команда php artisan schedule:run отрабатывает без ошибок (если настроены задания).
Заключение
Это подробное руководство покрывает установку Cachet на FreeBSD 12 с практическими правками конфигураций и списками проверок. После завершения у вас будет работоспособная статус‑страница с возможностью оповещать пользователей и отслеживать инциденты.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента