Requirements

SoundChex is deliberately light: one PHP application, one SQLite file, and FFmpeg. No database server, no containers required, no cloud dependency.

Server

ComponentVersionWhy
PHP8.4+The server itself. 8.3 satisfies the dependency constraints, but everything is tested on 8.4.
ComposercurrentPHP dependencies.
Node22+Building the front end (npm run build).
FFmpegon the PATHTranscoding, 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

OSStatus
macOSFully supported — built and run continuously, including managed background services.
LinuxRuns anywhere PHP does. The Services admin page is macOS-only; use systemd for the workers. See Install on Linux.
Windows 10/11Supported 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.