mirror of
https://github.com/coollabsio/coolify.git
synced 2026-06-13 19:09:50 +00:00
3.5 KiB
3.5 KiB
name, description, license, metadata
| name | description | license | metadata | ||
|---|---|---|---|---|---|
| configuring-horizon | Use this skill whenever the user mentions Horizon by name in a Laravel context. Covers the full Horizon lifecycle: installing Horizon (horizon:install, Sail setup), configuring config/horizon.php (supervisor blocks, queue assignments, balancing strategies, minProcesses/maxProcesses), fixing the dashboard (authorization via Gate::define viewHorizon, blank metrics, horizon:snapshot scheduling), and troubleshooting production issues (worker crashes, timeout chain ordering, LongWaitDetected notifications, waits config). Also covers job tagging and silencing. Do not use for generic Laravel queues without Horizon, SQS or database drivers, standalone Redis setup, Linux supervisord, Telescope, or job batching. | MIT |
|
Horizon Configuration
Documentation
Use search-docs for detailed Horizon patterns and documentation covering configuration, supervisors, balancing, dashboard authorization, tags, notifications, metrics, and deployment.
For deeper guidance on specific topics, read the relevant reference file before implementing:
references/supervisors.mdcovers supervisor blocks, balancing strategies, multi-queue setups, and auto-scalingreferences/notifications.mdcovers LongWaitDetected alerts, notification routing, and thewaitsconfigreferences/tags.mdcovers job tagging, dashboard filtering, and silencing noisy jobsreferences/metrics.mdcovers the blank metrics dashboard, snapshot scheduling, and retention config
Basic Usage
Installation
php artisan horizon:install
Supervisor Configuration
Define supervisors in config/horizon.php. The environments array merges into defaults and does not replace the whole supervisor block:
'defaults' => [
'supervisor-1' => [
'connection' => 'redis',
'queue' => ['default'],
'balance' => 'auto',
'minProcesses' => 1,
'maxProcesses' => 10,
'tries' => 3,
],
],
'environments' => [
'production' => [
'supervisor-1' => ['maxProcesses' => 20, 'balanceCooldown' => 3],
],
'local' => [
'supervisor-1' => ['maxProcesses' => 2],
],
],
Dashboard Authorization
Restrict access in App\Providers\HorizonServiceProvider:
protected function gate(): void
{
Gate::define('viewHorizon', function (User $user) {
return $user->is_admin;
});
}
Verification
- Run
php artisan horizonand visit/horizon - Confirm dashboard access is restricted as expected
- Check that metrics populate after scheduling
horizon:snapshot
Common Pitfalls
- Horizon only works with the Redis queue driver. Other drivers such as database and SQS are not supported.
- Redis Cluster is not supported. Horizon requires a standalone Redis connection.
- Always check
config/horizon.phpbefore making changes to understand the current supervisor and environment configuration. - The
environmentsarray overrides only the keys you specify. It merges intodefaultsand does not replace it. - The timeout chain must be ordered: job
timeoutless than supervisortimeoutless thanretry_after. The wrong order can cause jobs to be retried before Horizon finishes timing them out. - The metrics dashboard stays blank until
horizon:snapshotis scheduled. Runningphp artisan horizonalone does not populate metrics. - Always use
search-docsfor the latest Horizon documentation rather than relying on this skill alone.