← ClaudeAtlas

laravel-filament-proxmox-lxclisted

This skill should be used when deploying a Laravel + Filament v3 app (an admin panel, internal dashboard, or CMDB) as a native systemd service inside an unprivileged Proxmox LXC, instead of Docker — dedicated PHP-FPM pool, Caddy loopback front, Pest testing, Laravel Boost, Laravel Nightwatch APM, and adding a read-only Sanctum token API for an external consumer. Also covers a Filament panel behind Tailscale Serve generating mixed-content http:// asset URLs on an https:// page (including a plain asset() call not honoring URL::forceScheme), Eloquent's belongsToMany pivot-table naming surprising an agent building the schema by hand, php-fpm socket permission errors from a restrictive service-user home directory, Boost's guideline generation silently doing nothing under --no-interaction, Sanctum's abilities/ability middleware aliases not existing on a bootstrap/app.php (no Kernel.php) app, and an unauthenticated api/* request 500ing instead of 401ing when no Accept header is sent. For theming/skinning an already-
jackson2w/claude-code-skills · ★ 1 · API & Backend · score 64
Install: claude install-skill jackson2w/claude-code-skills
# Laravel + Filament v3 as a native systemd service in a Proxmox LXC Use this instead of Docker for a Laravel/Filament admin app (dashboard, internal CMDB, small CRUD tool) in an unprivileged Proxmox LXC — matches the fleet's "native packages, not Docker" precedent (Grafana, n8n, this pattern's Node.js sibling `proxmox-node-systemd-service`). Built and verified end-to-end deploying the Homelab Console app (Laravel 13 + Filament v3.3, VMID 142) — every gotcha below was hit for real, not theoretical. ## Install sequence 1. Base packages: `php8.4-fpm php8.4-cli php8.4-sqlite3 php8.4-mbstring php8.4-xml php8.4-curl php8.4-bcmath php8.4-zip php8.4-gd php8.4-intl composer`. Debian 13 (trixie) ships PHP 8.4 natively — no third-party apt repo needed, unlike NodeSource for Node.js. 2. Caddy from the official apt repo (`dl.cloudsmith.io/public/caddy/stable`) — see the `caddy-cloudflare-wildcard-proxy` skill for the full setup and its **loopback-bind gotcha, which applies here directly**: a Caddyfile site address of `http://127.0.0.1:8000` does *not* restrict the socket bind, only Host-header matching. Use `:8000 { bind 127.0.0.1 ... }` instead. 3. A dedicated non-root service user (`useradd -r -m -d /opt/<app> -s /usr/sbin/nologin <app>`) owning the app directory — same pattern as the Node.js skill. 4. `composer create-project laravel/laravel app` as that user, then `composer require filament/filament:"^3.3" -W` + `php artisan filament:install --panels`. 5. P