A Subsonic API proxy server that transparently integrates multiple music streaming providers as sources. When a song is not available in your local Navidrome library, it is automatically fetched from your configured provider, downloaded, and served to your Subsonic-compatible client. The downloaded song is then added to your library, making it available locally for future listens.
The name was randomly generated by GitHub when creating the repository. We found it amusing and somewhat fitting for a music application. After all, "fiesta" evokes a party atmosphere, which goes well with music streaming. So we kept it!
- Multi-Provider Architecture: Pluggable music service system supporting multiple streaming providers
- Transparent Proxy: Acts as a middleware between Subsonic clients and your Navidrome server
- Seamless Integration: Automatically searches and streams music from your configured provider when not available locally
- Automatic Downloads: Songs are downloaded on-the-fly and cached for future use
- External Playlist Support: Search, discover, and download playlists with automatic M3U generation
- Hi-Res Audio Support: Up to 24-bit/192kHz FLAC quality
- Full Metadata Embedding: Complete ID3 tags and embedded cover art
- Organized Library: Downloads saved in clean
Artist/Album/Trackfolder structure
| Provider | Credentials Required | Max Quality | Playlist Support |
|---|---|---|---|
| SquidWTF | No | FLAC 24-bit | No |
| Qobuz | Yes | FLAC 24-bit/192kHz | Yes |
| Deezer | Yes | FLAC 16-bit | Yes |
| Yandex Music | Yes | FLAC 16-bit | Yes |
See the Supported Music Providers wiki page for detailed information.
| Platform | Clients |
|---|---|
| Desktop | Aonsoku, Feishin, Supersonic, Subplayer, Aurial |
| Android | Navic, Tempus, Substreamer, Yuzic |
| iOS | Navic, Narjo, BeatsX, Yuzic |
See the Compatible Clients wiki page for details and incompatible clients.
- A running Navidrome server (or other Subsonic-compatible server)
- Docker and Docker Compose (recommended) or .NET 9.0 SDK
# Clone the repository
git clone https://github.com/V1ck3s/octo-fiesta.git
cd octo-fiesta
# Configure
cp .env.example .env
nano .env # Edit with your settings
# Start
docker-compose up -dThe proxy will be available at http://localhost:5274. Point your Subsonic client to this URL instead of your Navidrome server.
See the Installation wiki page for detailed instructions including manual installation.
See the Configuration wiki page for all available settings.
- Getting Deezer Credentials (ARL Token)
- Getting Qobuz Credentials (User ID & Token)
- SquidWTF: No credentials needed!
- Yandex: credentials may be obtained by authorizing official Yandex Music OAuth client here. After authorization OAuth token will appear in the address bar in
#access_token=fragment
┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐
│ Subsonic │────▶│ Octo-Fiesta │────▶│ Navidrome │
│ Client │◀────│ (Proxy) │◀────│ Server │
│ (Aonsoku) │ │ │ │ │
└─────────────────┘ └────────┬─────────┘ └─────────────────┘
│
▼
┌─────────────────┐
│ Music Providers │
│ - Deezer │
│ - Qobuz │
│ - SquidWTF │
└─────────────────┘
- Playlist Search: Streaming provider playlists appear in global search but may not show in the Playlists tab due to client-side filtering.
- Playlist Display: Due to Subsonic API limitations, playlists appear at the end of the album list with a music note icon. See Playlists for details.
- Token Expiration: Provider authentication tokens expire and need periodic refresh.
Full documentation is available in the Wiki:
- Installation
- Configuration
- Compatible Clients
- Supported Music Providers
- Playlists
- API Endpoints
- Development & Contributing
Need help? Please check the Wiki before opening an issue.
Contributions are welcome! See the Development & Contributing guide.
# Build
dotnet build
# Run tests
dotnet testGPL-3.0
- Navidrome - The excellent self-hosted music server
- Deezer - Music streaming service
- Qobuz - Hi-Res music streaming service
- SquidWTF - Third-party music API service
- Yandex Music - Music streaming service
- Subsonic API - The API specification