2026/06/19(金)さくらのレンタルサーバーにCachetを設置したログ
ステータス管理画面のCachetをさくらのレンタルサーバーに設置したときのログ。
開発版の3.xを利用しているが、軽く叩いた感じはとりあえず使える気がする。
確認環境
確認時点でのさくらのレンタルサーバーではSQLiteでの動作は出来なかった。これはPHP拡張がJSONをサポートしていないからと思われる。
| Env | Ver |
|---|---|
| Cachet 3.x | 2b0fc68988309647bdc0ba8e0b40862a3b8ddef4 |
| cachethq/core | 87be2387c06264c672dad94c87d00408bf34536d |
| PHP | 8.3.31 |
| MySQL | 8.0 |
Cachetには正確なバージョン番号がなさそうなのでコミットハッシュを書いている。最新のハッシュのコードが入っていることを確認済。
またCachet 3.xの中身は事実上からっぽで、vendor/配下にあるcachethq/coreが本体なので、そちらのバージョンも併記している。
手順
以下のコマンドはすべてzshで実行しているため、さくら標準のcshでは動かない箇所があるかもしれない。
composerがなかったのでcomposerを入れた。ここから先は
~/bin/にPATHが通っていることを前提で進めるphp -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" php -r "if (hash_file('sha384', 'composer-setup.php') === 'c8b085408188070d5f52bcfe4ecfbee5f727afa458b2573b8eaaf77b3419b0bf2768dc67c86944da1544f06fa544fd47') { echo 'Installer verified'.PHP_EOL; } else { echo 'Installer corrupt'.PHP_EOL; unlink('composer-setup.php'); exit(1); }" php composer-setup.php php -r "unlink('composer-setup.php');" mkdir ~/bin mv composer.phar ~/bin/composerCacheの取得と設置
git clone -b 3.x https://github.com/cachethq/cachet.git cd cachet composer install --no-dev -o # composerでエラーが出てupdateしろといわれたためupdate、これでインストールまでしてくれる composer update # 本体のアップデート composer update cachethq/core # 環境変数の編集 cp .env.example .env.envの編集
デフォルトでAPP_DEBUGがtrueなのでfalseにした方が良い。まだ開発版のためかTIMEZONEを設定してもトップ画面には反映されない。管理画面の一部では反映される。APP_DEBUG=false APP_TIMEZONE="Asia/Tokyo" APP_URL=https://status.example.com DB_CONNECTION=mysql DB_HOST=DBホスト DB_PORT=3306 DB_DATABASE=データベース名 DB_USERNAME=データベース名 DB_PASSWORD=パスワードCachetのセットアップ
php artisan key:generate php artisan vendor:publish --tag=cachet php artisan migrate # envを閲覧不能にする cat <<'EOF' | tee .htaccess <Files .env> deny from all </Files> EOF # 403になることを確認 curl https://status.example.com/.env php artisan cachet:make:user- crontの設定。ステータスページ表示する機能しかないのにやる意味があるのかは謎。
* * * * * php /home/<username>/www/path/to/artisan schedule:run >> /dev/null 2>&1 - さくらのコンパネからドメインを開き、Web公開フォルダーを
path/to/cachet/publicにする。
備考
Cachet v3.x is currently in development and not yet released. The following instructions are intended for development purposes only and are subject to change.
現時点では上記のようにあり、開発版なのでバグはあると思われる。
トラブルシューティング
Illuminate\Database\QueryExceptionが出る
SQLiteを使っていて次のようなエラーが出る場合、MySQLに変えると直る。恐らくさくらのレンサバに入ってるSQLite拡張がjson_eachをサポートしてないのが原因。
!Illuminate\Database\QueryException
Internal Server Error
SQLSTATE[HY000]: General error: 1 no such table: json_each (Connection: sqlite, SQL: select *
from "webhook_subscriptions" where ("send_all_events" = 1 or exists (select 1 from
json_each("selected_events") where "json_each"."value" is component_updated)))
Expand vendor frames
app/Http/Middleware/TrustProxies.php :32
あとがき
ステータスページを作る以上の機能が中区、外形監視はしてくれなかった
外形監視をして、その結果をステータスに表示してくれるツールだと思っていたら、ステータスの設定を行う機能と、それを表示する機能しかなかった。
つまり手動でメンテナンス中とか出したり、外形監視からAPIを蹴って何か表示するのには使えるが、このツールにはそれ以上の機能はないようだ。
これはダッシュボードを作る画面とAPIを提供してくれるツールということだ。
親切だったユーザー作成ウィザード
install.phpにアクセスして設定を書き換えるみたいな、一瞬ではあるものの脆弱な瞬間がないのは便利だと思った。
簡単なものなら自作できそう
Cachetは画面操作によってステータスを変えたり、履歴を出したりできるが、curlを投げて落ちてたら画面に表示くらいならパパっと作れそうだなと思った。
とはいえ、画面のリッチさや、APIからも操作できることなどを考えると、そんなのを作るのも大変なので、Cachetのようなツールを使った方が楽なのは間違いない。
ほぼ自分しか使ってないサーバーのためにこんなリッチなものが必要なのか…?
まぁあった方が豪華だし…みたいな…。
保守やオペのコストの方が高いので結局使わずじまいになる可能性も無きにしも非ずではある。



