laravel-filament-proxmox-lxclisted
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