Beryl is a self-hosted music library manager built with Laravel. Organize, browse, and stream your music collection from anywhere without relying on cloud services.
- Self-hosted: Full control over your music library
- Automatic scanning: Discover and organize music files
- Smart metadata: Fetch and manage tags from multiple sources
- Stream anywhere: Browser-based player with real-time sync
- Mobile-ready: Responsive design for all devices
- Docker ready: One-command setup
- Docker installed
- A folder with your music files
- Create a
docker-compose.ymlfile:
version: '3.8'
services:
beryl:
image: mydnic/beryl:latest
restart: unless-stopped
container_name: beryl
ports:
- "4387:80"
volumes:
- /path/to/your/music:/music # Change this to your music folder
- /path/to/your/data:/var/database # SQLite DB persistence
environment:
- SPOTIFY_CLIENT_ID= #optional
- SPOTIFY_CLIENT_SECRET= #optional
- LASTFM_API_KEY= #optional
- LASTFM_SECRET_KEY= #optional-
Update the paths in
docker-compose.ymlto point to your music folder. -
Start:
docker compose up -d- Open http://localhost:4387 and scan your library.
Tip: Data persists in your mounted volumes. Change port 4387 in docker-compose.yml if needed.
MP3, FLAC, M4A, WAV, OGG, AAC, WMA, AIFF, ALAC
Optional environment variables in docker-compose.yml:
SPOTIFY_CLIENT_ID&SPOTIFY_CLIENT_SECRET: Spotify metadata (optional)LASTFM_API_KEY&LASTFM_SECRET_KEY: Last.fm scrobbling (optional)
Scan: Log in → Music section → Click "Scan Library" (runs in background)
Play: Browse and stream your music from the web interface
Fix metadata: For each track, pick from ranked matches across MusicBrainz, Deezer, Spotify, and Last.fm. Use the filter to narrow results by artist, title, or album.
If you encounter any issues or have questions, please open an issue on the GitHub repository.
Beryl is open-source software licensed under the MIT license.
