Transform your music collection into a powerful streaming server with beautiful web UI, automatic CD ripping, Last.fm integration, and comprehensive system management.
Features β’ Quick Start β’ πΉ Video Tour β’ Screenshots β’ Documentation
Silent walkthrough demonstrating the web interface, admin panel, and all major features
Maestro is not just another MPD web interface - it's a complete music server ecosystem designed for audiophiles, self-hosters, and music enthusiasts who demand:
β¨ Elite-grade features - Bandcamp streaming, internet radio, CD ripping, Last.fm scrobbling
π¨ Beautiful UI - 8 gorgeous themes, album art collage view, mobile-responsive
π§ Full system control - NFS/SMB mounts, audio configuration, OS updates, real-time monitoring
π Zero-hassle setup - One-command installation, automatic MPD detection, smart defaults
π΅ Audiophile-ready - Bit-perfect playback up to DSD512/384kHz, all formats supported
π‘ Multi-room audio - Stream to Squeezebox/LMS players throughout your home
π Smart features - Search autocomplete, client-side filtering, interactive album discovery
Click to expand full feature list
- π΅ Full MPD control (play, pause, stop, next, previous)
- π Volume control with visual feedback
- π Real-time playback progress
- π Shuffle and repeat modes
- π» HTTP audio streaming
- β±οΈ Track time display and seek
- π Album browsing with album art and interactive collage view
- π€ Artist browsing with smart letter jump navigation (shows when >50 artists)
- πΌ Genre filtering with letter jump navigation
- π Recent albums page (tracks newly added/ripped music)
- π Smart search with instant autocomplete suggestions
- πΏ Multi-disc detection with proper disc organization
- πΌοΈ Album art collage - Click album art to see 3x3 grid of artist's albums
- π² Random album selection - Discover 8 random albums from your collection
- β‘ Client-side filtering - Lightning fast search with keyboard navigation
- π Current playlist view
- β Add albums/tracks to queue
- ποΈ Clear playlist
- π― Play from queue position
- οΏ½ Internet Radio - Stream from 22 countries via Radio Browser API with station logos
- π΅ Bandcamp Integration - Stream Bandcamp purchases directly in Maestro
- π‘ Multi-room Audio - Stream to Squeezebox/LMS players for whole-home audio
- π Playback charts - Track your listening stats with Last.fm
- π¨ 8 beautiful themes - Dark, Light, High Contrast, Desert, Terminal, Sunset, Forest, Midnight
- π± Mobile-responsive design with touch-optimized controls
- π΅ Last.fm integration - Scrobbling with on-screen toast notifications
- π Smart toasts - Real-time feedback for all actions
- π― Auto-fill playlists - Radio mode with genre-based smart selection from 30 similar artists
Click to expand admin features
- π Real-time stats: CPU, RAM, disk usage, network traffic
- π Live graphs updating every 2 seconds
- πΎ Disk space monitoring with mount point details
- π‘οΈ System health at a glance
- π NFS/SMB mount management
- Add network shares through web UI
- Mount/unmount operations
- Mount status monitoring
- π MPD library structure view with mount indicators
- π Smart library updates with verification
- π Optimized file counting for network shares
- ποΈ Audio device selection with hardware scanning
- ποΈ Bit-perfect playback configuration
- π Buffer size optimization (2048-16384)
- π΅ Resampling quality settings
- πΌ DSD playback mode configuration
- π§ System audio optimizations (CPU governor, swappiness)
- οΏ½ Maestro update checker - see available updates and commits behind
- οΏ½π¦ OS package updates with real-time progress
- π Service management (MPD, Web UI, Admin)
- π₯οΈ System reboot with countdown
- π System logs viewer
- π Secure sudo configuration
- π Automatic CD detection via udev rules
- π΅ Automatic ripping to FLAC with FreeDB metadata
- π Configurable rip settings (format, quality, behavior)
- π Rip status monitoring
- ποΈ Organized output to /media/music/ripped/
Install:
git clone https://github.com/coacharnold1/Maestro-Server.git
cd Maestro-Server
./install-maestro.shItalian users / Utenti italiani:
./install-maestro-it.sh # Installer in italianoUpdate:
cd ~/Maestro-Server
./update-maestro.shInstallation: The installer will:
- β Detect existing MPD or install new
- β Configure music directories
- β Set up Web UI (port 5003) and Admin API (port 5004)
- β Create systemd services
- β Configure permissions and audio settings
β±οΈ Installation time: ~5 minutes
Access your new music server:
- π Web Player:
http://YOUR_IP:5003 - βοΈ Admin Panel:
http://YOUR_IP:5004 - π΅ MPD Port:
YOUR_IP:6600
Beautiful player interface with album art, queue management, and playback controls
Choose from 8 beautiful themes to match your style
Grid view of your album collection with cover art
Intuitive browsing with multiple view options
Keep track of newly added albums to your library
Manage your current playlist with drag-and-drop
Random playback and user-created custom genre stations
Powerful search across your entire music library
View your Last.fm listening charts and statistics
Comprehensive settings for customization and Last.fm integration
Powerful admin interface with system monitoring and library management
System administration panel for updates, service management, and system control
Advanced audio configuration - select hardware devices, configure bit-perfect playback, and optimize audio settings
Real-time system logs viewer for troubleshooting and monitoring
Automatic CD ripping interface with MusicBrainz metadata lookup, album art, and track listing
Configure ripping format (FLAC/MP3/WAV/OGG), quality settings, output location, and automatic ripping behavior
Fully responsive design that works beautifully on mobile devices
Perfect for:
- π Home music servers - Central music hub for whole house audio
- π§ Audiophiles - Bit-perfect playback with DSD support
- πΏ CD collectors - Automatic ripping with metadata lookup
- π₯οΈ Raspberry Pi - Lightweight, efficient music server
- π Remote access - Stream your collection from anywhere
- π Large libraries - Handles 100,000+ tracks with ease
- π΅ Multi-room - MPD's network architecture for zone control
- OS: Ubuntu 20.04+, Debian 11+, or Arch Linux
- RAM: 1GB (2GB+ recommended)
- Storage: 1GB + your music library
- Network: Ethernet or WiFi
- Audio: Any ALSA-compatible device (optional for headless)
- Raspberry Pi 4 (4GB RAM) - Perfect balance
- Intel NUC - More power for large libraries
- Dedicated Linux server - Ultimate performance
- β Ubuntu Server 22.04 LTS
- β Debian 12 (Bookworm)
- β Raspberry Pi OS (64-bit)
- β Arch Linux
~/maestro/
βββ web/ # Web UI (Port 5003)
β βββ venv/ # Python virtual environment
β βββ app.py # Flask web server
β βββ templates/ # HTML templates
β βββ static/ # CSS, JS, images
βββ admin/ # Admin API (Port 5004)
β βββ venv/ # Python virtual environment
β βββ admin_api.py # Flask admin server
β βββ templates/ # Admin HTML
βββ scripts/ # Automation scripts
β βββ cd-inserted.sh # CD auto-rip handler
βββ logs/ # Application logs
/etc/systemd/system/
βββ maestro-web.service # Web UI service
βββ maestro-admin.service # Admin API service
/etc/udev/rules.d/
βββ 99-maestro-cd.rules # CD detection rules
/media/music/ # Music library (configurable)
βββ ripped/ # Auto-ripped CDs
All settings accessible through web interfaces - no config file editing needed!
Web UI Settings (http://YOUR_IP:5003/settings):
- Choose from 8 themes
- Configure Last.fm integration
- Set scrobbling preferences
Admin Settings (http://YOUR_IP:5004):
- Add NFS/SMB network shares
- Configure audio hardware
- Optimize playback settings
- Manage system updates
Click for advanced config options
Edit during installation or modify /etc/mpd.conf:
music_directory "/your/custom/path"Restrict to localhost only:
sudo systemctl edit maestro-web
# Add: Environment="FLASK_RUN_HOST=127.0.0.1"# Web UI (default 5003)
sudo systemctl edit maestro-web
# Add: Environment="FLASK_RUN_PORT=8080"
# Admin API (default 5004)
sudo systemctl edit maestro-admin
# Add: Environment="FLASK_RUN_PORT=8081"Insert a CD and Maestro automatically:
- Detects disc via udev rule
- Queries FreeDB for metadata
- Rips to FLAC (configurable format)
- Organizes into Artist/Album structure
- Updates MPD library
- Shows in "Recent Albums"
Configure via: Admin β CD Ripper Settings
Full scrobbling support with visual feedback:
- "Now Playing" updates on track start
- Scrobbles after 50% playback or 4 minutes
- On-screen toast notifications (optional)
- Detailed setup wizard in Settings
Browse large libraries efficiently:
- Automatically appears for artists/genres with >50 entries
- Click letter to jump instantly
- Visual highlight of current position
- Mobile-optimized buttons
Smart handling of box sets and multi-disc albums:
- Automatic disc detection
- Organized disc structure in UI
- Proper track ordering
- Maintains metadata integrity
- FEATURES.md - Comprehensive feature documentation
- ADMIN_INTEGRATION.md - Admin API integration guide
- CD_RIPPING_INTEGRATION.md - CD ripper setup guide
- Admin README - Admin API endpoints
- MPD Documentation - Official MPD docs
git clone https://github.com/coacharnold1/Maestro-Server.git
cd Maestro-Server
./install-maestro.shOption A: Local Files
cp -r /path/to/your/music/* /media/music/
sudo systemctl restart mpdOption B: Network Share
- Open
http://YOUR_IP:5004 - Go to Library Management
- Click Add Mount
- Enter NFS/SMB details
- Click Mount and Update MPD Library
- Open
http://YOUR_IP:5004 - Go to Audio Tweaks
- Select your audio device
- Configure bit-perfect playback
- Save and restart MPD
- Open
http://YOUR_IP:5003 - Browse your library
- Add songs to queue
- Press play! π΅
Maestro configures limited passwordless sudo in /etc/sudoers.d/maestro for:
- System updates
- Service management
- Mount operations
- Audio device access
Both services bind to 0.0.0.0 by default for easy access. To restrict:
# Restrict to localhost
sudo systemctl edit maestro-web
# Add: Environment="FLASK_RUN_HOST=127.0.0.1"Recommended: Use nginx/apache reverse proxy with authentication for public exposure.
Web UI won't start
# Check status
sudo systemctl status maestro-web
# View logs
journalctl -u maestro-web -n 50
# Test manually
cd ~/maestro/web
source venv/bin/activate
python3 app.pyMPD connection failed
# Check MPD status
sudo systemctl status mpd
# Test connection
mpc status
# Verify port
sudo netstat -tlnp | grep 6600No audio output
# List audio devices
aplay -l
# Test playback
speaker-test -c2 -t wav
# Check MPD audio output
sudo vim /etc/mpd.conf
# Ensure audio_output section is correctNetwork mount failed
# Test mount manually
sudo mount -t nfs server:/path /media/music/test
# Check connectivity
ping server_ip
# Verify NFS tools
which mount.nfsThe Admin β System Admin page shows:
- Current Maestro version (git commit)
- Latest available version from GitHub
- Number of commits behind
- SSH instructions for manual update
Keep Maestro up to date:
cd ~/Maestro-Server
./update-maestro.shThe updater:
- β Pulls latest code from GitHub
- β Preserves your settings
- β Updates dependencies
- β Restarts services
- β Migrates configuration if needed
β οΈ Note for v2.8.0 Update: If updating from v2.7.1 or earlier, the update script needs to update itself first. Run the update script twice, or dogit pull origin mainbefore running./update-maestro.sh. This is a one-time requirement for the LMS integration feature.
Want to display album art on a physical screen connected to your Maestro server?
mpd-framebuffer-display - A companion service that displays real-time album artwork on framebuffer devices (TFT screens, monitors, etc.)
Features:
- πΌοΈ Real-time album art on framebuffer/TTY displays
- π Automatic updates on track changes
- π HTTP API for remote access
- πΊ Perfect for Raspberry Pi with small TFT screens
- π Integrates seamlessly with Maestro MPD Server
Quick Install:
git clone https://github.com/coacharnold1/mpd-framebuffer-display
cd mpd-framebuffer-display
sudo ./install.shUse Cases:
- Mini music player with album art display
- Kiosk mode music station
- Desktop album art visualizer
- Multi-room audio with visual feedback
Contributions are welcome! Please:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
Built with love and these amazing technologies:
- Music Player Daemon (MPD) - The core audio engine
- Flask - Web framework
- python-mpd2 - Python MPD client
- psutil - System monitoring
- abcde - CD ripping
- pylast - Last.fm integration
- π Bug Reports: GitHub Issues
- π‘ Feature Requests: GitHub Discussions
- π§ Contact: [Your Email/Contact]
If you find Maestro useful, please consider:
- β Starring the repository
- π¦ Sharing on social media
- π Writing a blog post about your setup
- π€ Contributing code or documentation
Made with β€οΈ for the music community
