Requirements
SoundChex is deliberately light: one PHP application, one SQLite file, and FFmpeg. No database server, no containers required, no cloud dependency.
Server
| Component | Version | Why |
|---|---|---|
| PHP | 8.4+ | The server itself. 8.3 satisfies the dependency constraints, but everything is tested on 8.4. |
| Composer | current | PHP dependencies. |
| Node | 22+ | Building the front end (npm run build). |
| FFmpeg | on the PATH | Transcoding, caption extraction and duration reading all shell out to ffmpeg and ffprobe by name. Files will catalogue but not play without it. |
The database is SQLite — a single file at database/database.sqlite, created by
php artisan migrate. One file to back up, no service to keep running, and a
library of a few thousand items never gets near its limits.
Server operating systems
| OS | Status |
|---|---|
| macOS | Fully supported — built and run continuously, including managed background services. |
| Linux | Runs anywhere PHP does. The Services admin page is macOS-only; use systemd for the workers. See Install on Linux. |
| Windows 10/11 | Supported with known caveats (certificate bundle, symlink permissions). See Install on Windows. |
Hardware
- Any reasonably modern machine. The server is a normal PHP app; cataloguing and browsing are light.
- Video transcoding is the one heavy job. Hardware transcoding is used where available; a machine that can play a film can generally serve one.
- Disk — your media plus a little: artwork, the SQLite database (hundreds of KB to a few MB), and transient transcode output.
Optional
- Metadata API keys — TMDB, AcoustID, Spotify and OpenSubtitles need free keys; MusicBrainz, Open Library, iTunes and file tags work without any. See Metadata & integrations.
- A domain or Tailscale account — only for remote access; nothing is needed for use at home.
- Rust + platform build tools — only if you are building the native apps yourself rather than downloading them.