OpenSourcePicks

Open source alternatives to popular software, with live GitHub data

GitHub stats refreshed every day

Ampache

Long-running PHP music and video streaming server that speaks almost every client protocol

Open source alternative to

Visit AmpacheGitHubDocumentation

Main features

  • Web interface with HTML5 player
  • Native Ampache API and a Subsonic/OpenSubsonic backend
  • Opt-in Jellyfin-compatible API in Ampache 8
  • DAAP and UPnP/DLNA
  • Real folder browsing, multi-disc albums, box sets and multi-artist tags
  • Remote catalogs from other Ampache or Subsonic servers, Beets or SoundCloud
  • Video, scheduled podcast sync and live radio streams
  • Localplay remote control and democratic voting playback
  • Transcoding with FFmpeg
  • Optional LDAP authentication

What Ampache does

Ampache is a web application for streaming your own music, and video, from anywhere. The project has been open source since 2001, which makes it one of the oldest self-hosted music servers still in active development. It presents a collection that is already organized: the README stresses that Ampache is not a media organizer and depends on correct tags or file names.

Its strength is reach. Besides its own web interface with an HTML5 player and a documented native API, Ampache offers a full Subsonic and OpenSubsonic backend, DAAP, UPnP/DLNA, and in Ampache 8 an opt-in Jellyfin-compatible API. In practice that means apps such as DSub, Symfonium, Sonixd, Finamp, iTunes over DAAP and DLNA televisions can all read the same library.

Catalogs and playback

A catalog in Ampache does not have to be a local folder. Remote catalogs can pull in another Ampache server, a Subsonic server, a Beets library or SoundCloud. Unlike tag-only servers, Ampache supports real folder browsing, and it understands multi-disc albums, box sets and multiple artists per track.

Video sits in the same catalog as music. Podcasts sync on a schedule and internet radio streams play alongside local files. Two features suit shared spaces: Localplay lets the web interface control playback on another player, and democratic playback lets people in a room vote on what plays next. The AudioMuse plugin adds similarity-based discovery and dynamic smart playlists.

Self-hosting Ampache

Ampache needs a classic PHP stack: a web server with URL rewriting (Apache gets the most testing; nginx, lighttpd and IIS also work), PHP with a list of extensions, and MySQL 8 or MariaDB 10 or later. The documentation warns that streaming, the Subsonic API and the REST API all fail without rewrite rules. FFmpeg and codec libraries are needed for transcoding, and cron is used to refresh catalogs.

You can install from the official Docker image, from release archives that include all dependencies, or from a Git checkout, which also requires Composer and Node.js to build front-end assets. Version requirements move quickly: Ampache 8 and recent 7.x releases require PHP 8.5 or later. At the time of review the README recommends the release7 branch as the stable line, while develop carries the in-progress Ampache 8.

Upgrades are done by replacing the application files and keeping the configuration; Ampache applies database updates itself.

Hosted version

The project does not offer a hosted service.

Limitations

The PHP, web server and database stack takes more upkeep than single-binary servers, and the strict PHP version requirements can force a server upgrade before an Ampache upgrade. Results depend on the quality of your tags. The interface favors function over polish compared with newer projects.

Who it suits

Ampache suits people who want one server to feed many kinds of clients at once (Subsonic apps on phones, a DLNA television, a DAAP player and a browser), or who need remote catalogs and Localplay. If you want the smallest possible server, Navidrome or gonic are lighter. Ampache is one of several ways to replace Spotify for music you own.

License details

AGPL-3.0-or-later. Bundled third-party modules carry their own licenses.

Technical details

Self-hosting needs

  • MySQL or MariaDB
  • Web server with URL rewriting
  • FFmpeg (for transcoding)

Built with

  • PHP
  • JavaScript

Reviewed by the OpenSourcePicks editors from the project's repository and documentation. Something out of date? Tell us.