Iris
Discover, explore and manage your music library across multiple sources with this beautiful web-based interface. Iris is a Mopidy frontend extension.
Top Related Projects
Linux/FreeBSD DAAP (iTunes) and MPD audio server with support for AirPlay 1 and 2 speakers (multiroom), Apple Remote (and compatibles), Chromecast, Spotify and internet radio.
๐งโ๏ธ Modern Music Server and Streamer compatible with Subsonic/Airsonic
Looks and smells like Sonarr but made for music.
:satellite: :cloud: :notes:Airsonic, a Free and Open Source community driven media server (fork of Subsonic and Libresonic)
Quick Overview
Iris is an open-source, self-hosted music server and streaming platform. It provides a web-based interface for managing and playing your music collection, integrating with various music sources and services like Spotify, LastFM, and local music libraries.
Pros
- Customizable and feature-rich web interface for music playback and management
- Integration with multiple music sources, including Spotify and local libraries
- Self-hosted solution, giving users full control over their music data
- Active development and community support
Cons
- Requires technical knowledge for setup and maintenance
- May have performance issues with large music libraries
- Limited mobile app support compared to commercial alternatives
- Some features require additional configuration or external services
Getting Started
-
Install dependencies:
sudo apt-get install nginx php-fpm php-mysql mariadb-server
-
Clone the Iris repository:
git clone https://github.com/jaedb/Iris.git cd Iris
-
Install Node.js dependencies and build the application:
npm install npm run build
-
Configure your web server (e.g., Nginx) to serve the Iris application.
-
Access Iris through your web browser and follow the setup wizard to configure your music sources and preferences.
Competitor Comparisons
Linux/FreeBSD DAAP (iTunes) and MPD audio server with support for AirPlay 1 and 2 speakers (multiroom), Apple Remote (and compatibles), Chromecast, Spotify and internet radio.
Pros of OwnTone
- More mature and established project with a longer development history
- Supports a wider range of audio formats and streaming protocols
- Better integration with various music services and smart home ecosystems
Cons of OwnTone
- Less focus on modern web technologies and user interface design
- Potentially more complex setup and configuration process
- Limited customization options for the web interface
Code Comparison
OwnTone (C language):
int mpd_command_playid(struct mpd_command *command, struct evbuffer *evbuf)
{
int id;
int ret;
id = safe_atoi(command->arg1);
ret = player_playid(id);
return mpd_send_ok(evbuf);
}
Iris (JavaScript):
playTrack(uri, {
spotify_token,
provider,
from_uri,
}) {
return (dispatch) => {
dispatch({ type: 'PLAY_TRACK', uri });
// ... more code ...
};
}
Summary
OwnTone is a more established and feature-rich music server with broader compatibility, while Iris focuses on providing a modern web-based interface for Mopidy. OwnTone may be better suited for users seeking a comprehensive music server solution, whereas Iris might appeal to those prioritizing a sleek, customizable web interface for their existing Mopidy setup.
๐งโ๏ธ Modern Music Server and Streamer compatible with Subsonic/Airsonic
Pros of Navidrome
- Built with Go, offering better performance and lower resource usage
- Supports a wider range of audio formats, including FLAC and OGG
- Provides a built-in web UI, eliminating the need for separate frontend setup
Cons of Navidrome
- Less customizable interface compared to Iris
- Fewer integrations with third-party services like Spotify and Last.fm
- Limited playlist management features
Code Comparison
Iris (JavaScript):
export default function getTrackIcon(track){
if (track.type == 'spotify'){
return 'spotify'
} else if (track.type == 'local'){
return 'music_note'
} else {
return 'audiotrack'
}
}
Navidrome (Go):
func (s *selection) GetIcon() string {
switch {
case s.client != nil:
return "computer"
case s.album != nil:
return "album"
case s.artist != nil:
return "person"
default:
return "music_note"
}
}
Both projects aim to provide music streaming solutions, but they differ in their approach and feature set. Iris focuses on a highly customizable interface with broader third-party integrations, while Navidrome prioritizes performance and native audio format support. The code comparison shows how each project handles icon selection for different types of content, reflecting their distinct architectures and programming languages.
Looks and smells like Sonarr but made for music.
Pros of Lidarr
- Specialized for music collection management and automated downloading
- Integrates with various indexers and download clients
- Offers detailed music metadata and album artwork
Cons of Lidarr
- Limited to music management, lacks multi-media support
- More complex setup and configuration process
- Requires additional tools for playback functionality
Code Comparison
Iris (JavaScript):
export default function getTrackIcon(track){
if (track.playing) return 'play_circle_filled';
if (track.enabled) return 'play_circle_outline';
return 'remove_circle_outline';
}
Lidarr (C#):
public static string GetRelativePath(string rootPath, string path)
{
if (string.IsNullOrEmpty(rootPath)) return path;
return path.StartsWith(rootPath) ? path.Substring(rootPath.Length).TrimStart('\\', '/') : path;
}
Summary
Iris is a versatile music player and manager with a focus on user interface and multi-source integration. It supports various streaming services and local files, offering a unified playback experience.
Lidarr, on the other hand, is specifically designed for music collection management and automated downloading. It excels in organizing and acquiring music but lacks built-in playback features.
While Iris provides a more all-in-one solution for music enthusiasts, Lidarr is better suited for users who prioritize maintaining and expanding their music libraries through automation.
:satellite: :cloud: :notes:Airsonic, a Free and Open Source community driven media server (fork of Subsonic and Libresonic)
Pros of Airsonic
- More mature and established project with a larger community
- Supports a wider range of audio formats and streaming protocols
- Offers advanced features like podcast support and internet radio
Cons of Airsonic
- Less modern user interface compared to Iris
- Slower development pace and less frequent updates
- Higher resource usage, especially for large music libraries
Code Comparison
Iris (React-based frontend):
const App = () => (
<MopidyProvider>
<Router>
<Layout>
<Switch>
<Route exact path="/" component={Home} />
<Route path="/library" component={Library} />
</Switch>
</Layout>
</Router>
</MopidyProvider>
);
Airsonic (Java-based backend):
@RestController
@RequestMapping("/rest/api")
public class MediaRetrievalController {
@GetMapping("/stream")
public void stream(@RequestParam("id") String id, HttpServletResponse response) {
// Streaming logic
}
}
Summary
Airsonic is a more feature-rich and established music streaming server, while Iris focuses on providing a modern, responsive web interface for Mopidy. Airsonic offers broader format support and additional features, but Iris excels in user experience and frontend design. The choice between them depends on specific requirements and preferences for self-hosted music streaming solutions.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
Iris
Iris is an extension for the Mopidy music server. With support for Spotify, LastFM, Genius, Snapcast and many other extensions, Iris brings all your music into one user-friendly and unified web-based interface that works beautifully, no matter your device.
Built and maintained by James Barnsley.
.. image:: https://static.pepy.tech/personalized-badge/mopidy-iris?period=total&units=international_system&left_color=grey&right_color=green&left_text=Downloads :target: https://pepy.tech/project/mopidy-iris .. image:: https://img.shields.io/pypi/v/mopidy-iris.svg?style=flat-square :target: https://pypi.org/project/Mopidy-Iris/ .. image:: https://img.shields.io/badge/donate-paypal-blue.svg?style=flat-square :target: https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=james%40barnsley%2enz&lc=NZ&item_name=James%20Barnsley¤cy_code=USD&bn=PP%2dDonationsBF%3abtn_donate_LG%2egif%3aNonHosted
Features
- Full web-based interface controls for Mopidy
- Improved support for local libraries (powered by Mopidy-Local)
- Browse and manage your playlists and tracks
- Discover new, popular and related music (powered by Spotify)
- Multiple language support.
Want to provide a translation? <https://github.com/jaedb/Iris/wiki/Contributing#translations>
_ - Streaming controls with the ability to play audio from your browser (requires Snapcast)
Integrations
Spotify <https://developer.spotify.com/web-api/>
_LastFM <https://www.last.fm/api>
_ for rich music metadata and artworkGenius <https://docs.genius.com/>
_ for lyricsSnapcast <https://github.com/badaix/snapcast/>
_ to stream audio to multiple devices
.. image:: https://raw.githubusercontent.com/jaedb/Iris/master/screenshot.jpg
Requirements
- Mopidy
- Mopidy-Spotify (recommended, not required)
- Mopidy-Local (recommended, not required)
Getting started
Installation <https://github.com/jaedb/Iris/wiki/Getting-started#installing>
_Debugging <https://github.com/jaedb/Iris/wiki/Advanced#debugging>
_Issues and requests <https://github.com/jaedb/Iris/wiki/Support#before-you-log-an-issue>
_Changelog <https://github.com/jaedb/Iris/releases>
_
Top Related Projects
Linux/FreeBSD DAAP (iTunes) and MPD audio server with support for AirPlay 1 and 2 speakers (multiroom), Apple Remote (and compatibles), Chromecast, Spotify and internet radio.
๐งโ๏ธ Modern Music Server and Streamer compatible with Subsonic/Airsonic
Looks and smells like Sonarr but made for music.
:satellite: :cloud: :notes:Airsonic, a Free and Open Source community driven media server (fork of Subsonic and Libresonic)
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot