Skip to content

Complete Music Server with MPD, Web UI (port 5003), and Admin API (port 5004). One-command installer for Ubuntu/Debian/Arch Linux. Network mount management, audio configuration, system monitoring.

License

Notifications You must be signed in to change notification settings

coacharnold1/Maestro-Server

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

300 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🎡 Maestro MPD Server

The Ultimate Self-Hosted Music Server with an easy to use Web Interface

Version License MPD Python Platform

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


Maestro Player Interface

πŸ“Ή Video Walkthrough

Maestro Server Complete Walkthrough

▢️ Watch the Complete Visual Tour on YouTube

Silent walkthrough demonstrating the web interface, admin panel, and all major features


🎯 Why Maestro?

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

✨ Features

🎧 Modern Web Interface (Port 5003)

Click to expand full feature list

Music Playback & Control

  • 🎡 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

Library Browsing

  • πŸ“€ 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

Queue Management

  • πŸ“ Current playlist view
  • βž• Add albums/tracks to queue
  • πŸ—‘οΈ Clear playlist
  • 🎯 Play from queue position

Advanced Features

  • οΏ½ 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

βš™οΈ Powerful Admin Interface (Port 5004)

Click to expand admin features

System Monitoring

  • πŸ“Š 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

Library Management

  • πŸ“‚ 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 Configuration

  • 🎚️ 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)

System Administration

  • οΏ½ 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

CD Ripping & Automation

  • πŸ“€ 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/

πŸš€ Quick Start

One-Command Installation & Update

Install:

git clone https://github.com/coacharnold1/Maestro-Server.git
cd Maestro-Server
./install-maestro.sh

Italian users / Utenti italiani:

./install-maestro-it.sh  # Installer in italiano

Update:

cd ~/Maestro-Server
./update-maestro.sh

Installation: The installer will:

  1. βœ… Detect existing MPD or install new
  2. βœ… Configure music directories
  3. βœ… Set up Web UI (port 5003) and Admin API (port 5004)
  4. βœ… Create systemd services
  5. βœ… Configure permissions and audio settings

⏱️ Installation time: ~5 minutes

Post-Installation

Access your new music server:

  • 🌐 Web Player: http://YOUR_IP:5003
  • βš™οΈ Admin Panel: http://YOUR_IP:5004
  • 🎡 MPD Port: YOUR_IP:6600

πŸ“Έ Screenshots

Main Player Interface

Maestro Main Player Beautiful player interface with album art, queue management, and playback controls

Theme Variety

Multiple Themes Choose from 8 beautiful themes to match your style

Library Browsing

Browse Albums Grid view of your album collection with cover art

Browse Interface Intuitive browsing with multiple view options

Recently Added Keep track of newly added albums to your library

Playback Features

Playlist Management Manage your current playlist with drag-and-drop

Random and Radio Random playback and user-created custom genre stations

Search Powerful search across your entire music library

Last.fm Charts View your Last.fm listening charts and statistics

Settings & Configuration

Settings Page Comprehensive settings for customization and Last.fm integration

Admin Dashboard

Admin Dashboard Powerful admin interface with system monitoring and library management

System Administration System administration panel for updates, service management, and system control

Audio Tweaks Advanced audio configuration - select hardware devices, configure bit-perfect playback, and optimize audio settings

System Logs Real-time system logs viewer for troubleshooting and monitoring

CD Ripping & Automation

CD Ripper Automatic CD ripping interface with MusicBrainz metadata lookup, album art, and track listing

CD Ripper Settings Configure ripping format (FLAC/MP3/WAV/OGG), quality settings, output location, and automatic ripping behavior

Mobile Responsive

Mobile Interface 1 Mobile Interface 2 Mobile Main Player Mobile Interface 4 Fully responsive design that works beautifully on mobile devices

🎯 Use Cases

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

πŸ› οΈ System Requirements

Minimum Requirements

  • 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)

Recommended Hardware

  • Raspberry Pi 4 (4GB RAM) - Perfect balance
  • Intel NUC - More power for large libraries
  • Dedicated Linux server - Ultimate performance

Tested Platforms

  • βœ… Ubuntu Server 22.04 LTS
  • βœ… Debian 12 (Bookworm)
  • βœ… Raspberry Pi OS (64-bit)
  • βœ… Arch Linux

πŸ“¦ What Gets Installed

~/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

πŸ”§ Configuration

Quick Configuration

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

Advanced Configuration

Click for advanced config options

Custom Music Directory

Edit during installation or modify /etc/mpd.conf:

music_directory "/your/custom/path"

Network Binding

Restrict to localhost only:

sudo systemctl edit maestro-web
# Add: Environment="FLASK_RUN_HOST=127.0.0.1"

Custom Ports

# 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"

🌟 Key Features Deep Dive

πŸ“€ Automatic CD Ripping

Insert a CD and Maestro automatically:

  1. Detects disc via udev rule
  2. Queries FreeDB for metadata
  3. Rips to FLAC (configurable format)
  4. Organizes into Artist/Album structure
  5. Updates MPD library
  6. Shows in "Recent Albums"

Configure via: Admin β†’ CD Ripper Settings

🎡 Last.fm Integration

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

πŸ“Š Letter Jump Navigation

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

πŸ’Ώ Multi-Disc Album Support

Smart handling of box sets and multi-disc albums:

  • Automatic disc detection
  • Organized disc structure in UI
  • Proper track ordering
  • Maintains metadata integrity

πŸ“š Documentation

🎬 Getting Started Guide

1. Install Maestro

git clone https://github.com/coacharnold1/Maestro-Server.git
cd Maestro-Server
./install-maestro.sh

2. Add Your Music

Option A: Local Files

cp -r /path/to/your/music/* /media/music/
sudo systemctl restart mpd

Option B: Network Share

  1. Open http://YOUR_IP:5004
  2. Go to Library Management
  3. Click Add Mount
  4. Enter NFS/SMB details
  5. Click Mount and Update MPD Library

3. Configure Audio (Optional)

  1. Open http://YOUR_IP:5004
  2. Go to Audio Tweaks
  3. Select your audio device
  4. Configure bit-perfect playback
  5. Save and restart MPD

4. Start Listening!

  1. Open http://YOUR_IP:5003
  2. Browse your library
  3. Add songs to queue
  4. Press play! 🎡

πŸ” Security

Sudo Configuration

Maestro configures limited passwordless sudo in /etc/sudoers.d/maestro for:

  • System updates
  • Service management
  • Mount operations
  • Audio device access

Network Security

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.

πŸ› Troubleshooting

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.py
MPD connection failed
# Check MPD status
sudo systemctl status mpd

# Test connection
mpc status

# Verify port
sudo netstat -tlnp | grep 6600
No 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 correct
Network mount failed
# Test mount manually
sudo mount -t nfs server:/path /media/music/test

# Check connectivity
ping server_ip

# Verify NFS tools
which mount.nfs

πŸ”„ Updating

Check for Updates

The Admin β†’ System Admin page shows:

  • Current Maestro version (git commit)
  • Latest available version from GitHub
  • Number of commits behind
  • SSH instructions for manual update

Run Update Script

Keep Maestro up to date:

cd ~/Maestro-Server
./update-maestro.sh

The 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 do git pull origin main before running ./update-maestro.sh. This is a one-time requirement for the LMS integration feature.

πŸ”Œ Related Projects

MPD Framebuffer Display

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.sh

Use Cases:

  • Mini music player with album art display
  • Kiosk mode music station
  • Desktop album art visualizer
  • Multi-room audio with visual feedback

🀝 Contributing

Contributions are welcome! Please:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

πŸ“œ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ™ Credits

Built with love and these amazing technologies:

πŸ’¬ Community & Support

⭐ Show Your Support

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

⬆ Back to Top

About

Complete Music Server with MPD, Web UI (port 5003), and Admin API (port 5004). One-command installer for Ubuntu/Debian/Arch Linux. Network mount management, audio configuration, system monitoring.

Resources

License

Stars

Watchers

Forks

Packages

No packages published