One server for your music, movies, shows and photos.
Cardinal Media Server is a free, self-hosted media server. It indexes the media you own where it already lives, runs the Cardinal Music, Cinema and Photos apps for everyone in your household, and keeps every account, play and photo on your own hardware.
Features
Runs where you want it
Docker
One official image on Docker Hub, with ready-made Compose files for SQLite or PostgreSQL.
Proxmox VE
Runs as a Proxmox application container, created and configured by a single script. No guest operating system to maintain.
AI agent install
Hand a coding agent the install or update skill, and it sets up the server for you.
SQLite or PostgreSQL
SQLite works out of the box. Switch to PostgreSQL with a few environment variables when the library grows.
Release channels
Pick stable, beta or the latest build from main, each as its own Docker tag.
Your own domain
Put the server behind your own reverse proxy and domain, with no Cardinal account needed.
Your media, where it already lives
Indexed in place
Folders are read where they are. Nothing is imported, copied or moved, and your files are never deleted.
Music
MP3, FLAC, Opus, M4A, WAV and AAC, organised by embedded tags first and folder names second.
Movies and TV
Folder and file names become movies, shows, seasons and episodes, with versions, editions, extras and subtitles. Nothing is looked up online.
Photos
JPEG, PNG and HEIC, with dates, camera details and places read from EXIF and Google Takeout metadata.
Libraries
Group folders into libraries, and filter every app by them.
Background jobs
Thumbnails, waveforms and video probes are prepared in the background, within a concurrency limit you set.
Accounts for the whole household
Unlimited local accounts
Accounts live on the server itself. They need no sign-up and no internet connection.
Roles and capabilities
Seven built-in roles made of fine-grained capabilities, which guard the apps and the API alike.
Invitations
Send an invite link instead of setting up each account by hand.
Guest account
A password-free account for getting started, which can be switched off at any time.
Cardinal Account sign-in
Optionally sign in with a Cardinal Account. Its email address is never shared with the server owner.
Private by default
Usage data is opt-in and anonymous. Without your consent, nothing leaves the server.
A dashboard for everything
Overview
The server, its apps and its active users at a glance.
Setup wizard
A first-run walkthrough for the server name, sign-in, privacy and theme.
Live indexing
Watch every library scan and background job as it runs, and start one by hand.
Users and roles
Create accounts, assign roles, send invitations and manage access tokens.
Cloud services
Switch on Remote Access and Secure Backups from one page.
Themes and shortcuts
Tune colours, glass and spacing, and drive the dashboard from the keyboard.
Built to build on
OpenAPI
More than 130 documented endpoints for browsing, streaming and managing the whole library.
Personal access tokens
Give your own scripts and apps a token. It acts as one account and carries that account's roles, nothing more.
Live events
A server-sent event stream reports indexing progress, finished waveforms and queue changes as they happen.
Streaming
Range requests for audio and video, with audio converted on the fly when a browser needs it.
Developer guides
Guides for connecting, authenticating and streaming, including how to build with a coding agent.
Source-available
The code is published under The Freehold License, so it can be read, audited and modified.
Works with Cardinal Cloud
Optional services that extend a self-hosted stack.
Get help with Cardinal Media Server
Guides for every feature, from first install to everyday use.
Visit the Help Site