All apps · 0 apps
Octo-Fiesta
Docker app from grtgbln's Repository
Overview
Readme
View on GitHubOcto-Fiesta
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.
Why "Octo-Fiesta"?
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!
Features
- 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
- Synced Lyrics: Time-synced lyrics for external tracks via LRCLIB (OpenSubsonic
getLyricsBySongId), shown on the very first listen and saved as.lrcsidecars for downloaded files - Organized Library: Downloads saved in clean
Artist/Album/Trackfolder structure
Supported Music Providers
| 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.
Compatible Clients
| Platform | Clients |
|---|---|
| Desktop | Aonsoku, Feishin, Supersonic, Subplayer, Aurial |
| Android | Navic, Tempus, Substreamer, Yuzic, Wavio |
| iOS | Navic, Narjo, BeatsX, Yuzic |
See the Compatible Clients wiki page for details and incompatible clients.
Quick Start
Requirements
- A running Navidrome server (or other Subsonic-compatible server)
- Docker and Docker Compose (recommended) or .NET 9.0 SDK
Docker Installation
# 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 -d
The 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.
Configuration
See the Configuration wiki page for all available settings.
Getting Credentials
- 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
Architecture
┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐
│ Subsonic │────▶│ Octo-Fiesta │────▶│ Navidrome │
│ Client │◀────│ (Proxy) │◀────│ Server │
│ (Aonsoku) │ │ │ │ │
└─────────────────┘ └────────┬─────────┘ └─────────────────┘
│
▼
┌─────────────────┐
│ Music Providers │
│ - Deezer │
│ - Qobuz │
│ - SquidWTF │
└─────────────────┘
Limitations
- 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.
Documentation
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.
Contributing
Contributions are welcome! See the Development & Contributing guide.
# Build
dotnet build
# Run tests
dotnet test
License
GPL-3.0
Acknowledgments
- 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
Install Octo-Fiesta on Unraid in a few clicks.
Find Octo-Fiesta in Community Apps on your Unraid server, review the template, and click Install. Unraid handles the Docker app or plugin setup from the published template.
Requirements
Requires a Deezer account and a separate Subsonic-compatible server.
Related apps
Explore more like this
Explore allDetails
ghcr.io/v1ck3s/octo-fiesta:latestRuntime arguments
- Web UI
http://[IP]:[PORT:8080]/- Network
bridge- Privileged
- false
Template configuration
Container Port: 8080
- Target
- 8080
- Default
- 5274
- Value
- 5274
The Subsonic-compatible music service to use (e.g. Deezer, Qobuz, SquidWTF)
- Target
- Subsonic__MusicService
- Default
- SquidWTF
- Value
- SquidWTF
The URL of your Subsonic server
- Target
- Subsonic__Url
- Default
- http://IP_ADDRESS:4533
- Value
- http://IP_ADDRESS:4533
Admin username to perform actions on Navidrome server that require admin permissions
- Target
- SUBSONIC_ADMIN_USERNAME
Admin password to perform actions on Navidrome server that require admin permissions
- Target
- SUBSONIC_ADMIN_PASSWORD
Determines whether to download individual tracks or entire albums when a track is requested.
- Target
- Subsonic__DownloadMode
- Default
- Track|Album
Filter songs based on explicit content.
- Target
- Subsonic__ExplicitFilter
- Default
- All|ExplicitOnly|CleanOnly
Re-download tracks when higher quality is available
- Target
- Subsonic__AutoUpgradeQuality
- Default
- false|true
Folder template for organizing downloaded files.
- Target
- Subsonic__FolderTemplate
- Default
- {artist}/{album}/{track} - {title}}
- Value
- {artist}/{album}/{track} - {title}}
Your Deezer ARL token for accessing Deezer content
- Target
- Deezer__Arl
Fallback Deezer ARL token if the primary one fails
- Target
- Deezer__ArlFallback
Preferred audio quality for Deezer downloads. Remove to default to highest.
- Target
- Deezer__Quality
- Default
- FLAC|MP3_320|MP3_128
Your Qobuz user authentication token for accessing Qobuz content
- Target
- Qobuz__UserAuthToken
Your Qobuz user ID
- Target
- Qobuz__UserId
Preferred audio quality for Qobuz downloads (e.g. FLAC, FLAC_24_HIGH, FLAC_24_LOW, FLAC_16, MP3_320)
- Target
- Qobuz__Quality
The backend source to use for SquidWTF downloads
- Target
- SquidWTF__Source
- Default
- Qobuz|Tidal|AmazonMusic
Preferred audio quality for SquidWTF downloads. Qobuz: 27 (FLAC 24-bit), 7 (FLAC 16-bit), 6 (MP3 320), 5 (MP3 128). Tidal: HI_RES_LOSSLESS, LOSSLESS. AmazonMusic: FLAC_24 (24-bit), FLAC_16 (16-bit), AAC (256kbps), OPUS, ATMOS
- Target
- SquidWTF__Quality
Number of seconds to wait for a response from the SquidWTF instance before timing out.
- Target
- SquidWTF__InstanceTimeoutSeconds
- Default
- 5
- Value
- 5
OAuth token for API access.
- Target
- Yandex__OAuthToken
Preferred audio quality for Yandex downloads.
- Target
- Yandex__Quality
- Default
- FLAC|AAC_64|MP3_192|AAC_192|AAC_256|MP3_320
Language for the API responses. Curated playlists and some album titles will be translated into that language.
- Target
- Yandex__Language
- Default
- ru
- Value
- ru
Allow show tracks in search results, playlists and albums that are marked unavailable for listening
- Target
- IncludeUnavilable
- Default
- false|true
When enabled, allows searching and downloading playlists. Starring a playlist triggers automatic download of all tracks and creates an M3U file
- Target
- Subsonic__EnableExternalPlaylists
- Default
- true|false
Path to store downloaded files
- Target
- /app/downloads
- Default
- /mnt/user/appdata/octo_fiesta/downloads
- Value
- /mnt/user/appdata/octo_fiesta/downloads
M3U playlist files will be created in {DOWNLOAD_PATH}/{PLAYLISTS_DIRECTORY}/
- Target
- Subsonic__PlaylistsDirectory
- Default
- playlists
- Value
- playlists
Internal path to downloaded files. Not recommended to change.
- Target
- Library__DownloadPath
- Default
- /app/downloads
- Value
- /app/downloads
Set the ASP.NET Core environment. Not recommended to change.
- Target
- ASPNETCORE_ENVIRONMENT
- Default
- Production
- Value
- Production
Set the storage mode for downloaded files.
- Target
- Subsonic__StorageMode
- Default
- Permanent|Temporary
- Value
- Permanent
Duration in hours to cache files if using Temporary storage mode.
- Target
- Subsonic__CacheDurationHours
- Default
- 1
- Value
- 1
Internal port. Not recommended to change.
- Target
- INTERNAL_PORT
- Default
- 8080
- Value
- 8080