mirror of
https://github.com/SoPat712/allstarr.git
synced 2026-04-23 10:42:37 -04:00
Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
b737db93be
|
|||
|
953719e796
|
@@ -5,7 +5,7 @@
|
||||
[](https://github.com/SoPat712/allstarr/pkgs/container/allstarr)
|
||||
[](LICENSE)
|
||||
|
||||
A media server proxy that integrates music streaming providers with your local library. Works with **Jellyfin** and **Subsonic-compatible** servers. When a song isn't in your local library, it gets fetched from your configured provider, downloaded, and served to your client. The downloaded song then lives in your library for next time.
|
||||
A media server proxy that integrates music streaming providers with your local library. Works with **Jellyfin** servers. When a song isn't in your local library, it gets fetched from your configured provider, downloaded, and served to your client. The downloaded song then lives in your library for next time.
|
||||
|
||||
## Quick Start
|
||||
|
||||
@@ -39,7 +39,6 @@ The proxy will be available at `http://localhost:5274`.
|
||||
Allstarr includes a web UI for easy configuration and playlist management, accessible at `http://localhost:5275`
|
||||
<img width="1664" height="1101" alt="image" src="https://github.com/user-attachments/assets/9159100b-7e11-449e-8530-517d336d6bd2" />
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
- **Playlist Management**: Link Jellyfin playlists to Spotify playlists with just a few clicks
|
||||
@@ -76,7 +75,6 @@ The web UI updates your `.env` file directly. Changes persist across container r
|
||||
|
||||
There's an environment variable to modify this.
|
||||
|
||||
|
||||
**Recommended workflow**: Use the `sp_dc` cookie method alongside the [Spotify Import Plugin](https://github.com/Viperinius/jellyfin-plugin-spotify-import?tab=readme-ov-file).
|
||||
|
||||
### Nginx Proxy Setup (Optional)
|
||||
@@ -87,20 +85,20 @@ This service only exposes ports internally. You can use nginx to proxy to it, ho
|
||||
server {
|
||||
listen 443 ssl http2;
|
||||
server_name your-domain.com;
|
||||
|
||||
|
||||
ssl_certificate /etc/letsencrypt/live/your-domain.com/fullchain.pem;
|
||||
ssl_certificate_key /etc/letsencrypt/live/your-domain.com/privkey.pem;
|
||||
ssl_protocols TLSv1.2 TLSv1.3;
|
||||
|
||||
|
||||
# Security headers
|
||||
add_header Strict-Transport-Security "max-age=31536000" always;
|
||||
add_header X-Content-Type-Options "nosniff" always;
|
||||
|
||||
|
||||
# Streaming settings
|
||||
proxy_buffering off;
|
||||
proxy_request_buffering off;
|
||||
proxy_read_timeout 600s;
|
||||
|
||||
|
||||
location / {
|
||||
proxy_pass http://allstarr:8080;
|
||||
proxy_set_header Host $host;
|
||||
@@ -119,7 +117,7 @@ This project brings together all the music streaming providers into one unified
|
||||
|
||||
## Features
|
||||
|
||||
- **Dual Backend Support**: Works with Jellyfin and Subsonic-compatible servers (Navidrome, Airsonic, etc.)
|
||||
- **Dual Backend Support**: Works with Jellyfin
|
||||
- **Multi-Provider Architecture**: Pluggable system for streaming providers (Deezer, Qobuz, SquidWTF)
|
||||
- **Transparent Proxy**: Sits between your music clients and media server
|
||||
- **Automatic Search**: Searches streaming providers when songs aren't local
|
||||
@@ -139,17 +137,16 @@ This project brings together all the music streaming providers into one unified
|
||||
## Supported Backends
|
||||
|
||||
### Jellyfin
|
||||
|
||||
[Jellyfin](https://jellyfin.org/) is a free and open-source media server. Allstarr connects via the Jellyfin API using your Jellyfin user login. (I plan to move this to api key if possible)
|
||||
|
||||
**Compatible Jellyfin clients:**
|
||||
|
||||
- [Feishin](https://github.com/jeffvli/feishin) (Mac/Windows/Linux)
|
||||
<img width="1691" height="1128" alt="image" src="https://github.com/user-attachments/assets/c602f71c-c4dd-49a9-b533-1558e24a9f45" />
|
||||
|
||||
<img width="1691" height="1128" alt="image" src="https://github.com/user-attachments/assets/c602f71c-c4dd-49a9-b533-1558e24a9f45" />
|
||||
|
||||
- [Musiver](https://music.aqzscn.cn/en/) (Android/iOS/Windows/Android)
|
||||
<img width="523" height="1025" alt="image" src="https://github.com/user-attachments/assets/135e2721-5fd7-482f-bb06-b0736003cfe7" />
|
||||
|
||||
<img width="523" height="1025" alt="image" src="https://github.com/user-attachments/assets/135e2721-5fd7-482f-bb06-b0736003cfe7" />
|
||||
|
||||
- [Finamp](https://github.com/jmshrv/finamp) (Android/iOS)
|
||||
|
||||
@@ -158,21 +155,25 @@ This project brings together all the music streaming providers into one unified
|
||||
_Working on getting more currently_
|
||||
|
||||
### Subsonic/Navidrome
|
||||
|
||||
[Navidrome](https://www.navidrome.org/) and other Subsonic-compatible servers are supported via the Subsonic API.
|
||||
|
||||
**Compatible Subsonic clients:**
|
||||
|
||||
#### PC
|
||||
|
||||
- [Aonsoku](https://github.com/victoralvesf/aonsoku)
|
||||
- [Feishin](https://github.com/jeffvli/feishin)
|
||||
- [Subplayer](https://github.com/peguerosdc/subplayer)
|
||||
- [Aurial](https://github.com/shrimpza/aurial)
|
||||
|
||||
#### Android
|
||||
|
||||
- [Tempus](https://github.com/eddyizm/tempus)
|
||||
- [Substreamer](https://substreamerapp.com/)
|
||||
|
||||
#### iOS
|
||||
|
||||
- [Narjo](https://www.reddit.com/r/NarjoApp/)
|
||||
- [Arpeggi](https://www.reddit.com/r/arpeggiApp/)
|
||||
|
||||
@@ -204,7 +205,7 @@ Choose your preferred provider via the `MUSIC_SERVICE` environment variable. Add
|
||||
- Spotify Lyrics API provides synchronized lyrics for Spotify tracks
|
||||
- Credentials for at least one music provider (IF NOT USING SQUIDWTF):
|
||||
- **Deezer**: ARL token from browser cookies
|
||||
- **Qobuz**: User ID + User Auth Token from browser localStorage ([see Wiki guide](https://github.com/V1ck3s/octo-fiesta/wiki/Getting-Qobuz-Credentials-(User-ID-&-Token)))
|
||||
- **Qobuz**: User ID + User Auth Token from browser localStorage ([see Wiki guide](<https://github.com/V1ck3s/octo-fiesta/wiki/Getting-Qobuz-Credentials-(User-ID-&-Token)>))
|
||||
- **OR** [.NET 10.0 SDK](https://dotnet.microsoft.com/download/dotnet/10.0) for manual installation (requires separate Redis setup)
|
||||
|
||||
## Configuration
|
||||
@@ -212,6 +213,7 @@ Choose your preferred provider via the `MUSIC_SERVICE` environment variable. Add
|
||||
### Environment Setup
|
||||
|
||||
1. **Create your environment file**
|
||||
|
||||
```bash
|
||||
cp .env.example .env
|
||||
```
|
||||
@@ -219,40 +221,43 @@ Choose your preferred provider via the `MUSIC_SERVICE` environment variable. Add
|
||||
2. **Edit the `.env` file** with your configuration:
|
||||
|
||||
**For Jellyfin backend:**
|
||||
|
||||
```bash
|
||||
# Backend selection
|
||||
BACKEND_TYPE=Jellyfin
|
||||
|
||||
|
||||
# Jellyfin server URL
|
||||
JELLYFIN_URL=http://localhost:8096
|
||||
|
||||
|
||||
# API key (get from Jellyfin Dashboard > API Keys)
|
||||
JELLYFIN_API_KEY=your-api-key-here
|
||||
|
||||
|
||||
# User ID (from Jellyfin Dashboard > Users > click user > check URL)
|
||||
JELLYFIN_USER_ID=your-user-id-here
|
||||
|
||||
|
||||
# Music library ID (optional, auto-detected if not set)
|
||||
JELLYFIN_LIBRARY_ID=
|
||||
```
|
||||
|
||||
**For Subsonic/Navidrome backend:**
|
||||
|
||||
```bash
|
||||
# Backend selection
|
||||
BACKEND_TYPE=Subsonic
|
||||
|
||||
|
||||
# Navidrome/Subsonic server URL
|
||||
SUBSONIC_URL=http://localhost:4533
|
||||
```
|
||||
|
||||
**Common settings (both backends):**
|
||||
|
||||
```bash
|
||||
# Path where downloaded songs will be stored
|
||||
DOWNLOAD_PATH=./downloads
|
||||
|
||||
|
||||
# Music service to use: SquidWTF, Deezer, or Qobuz
|
||||
MUSIC_SERVICE=SquidWTF
|
||||
|
||||
|
||||
# Storage mode: Permanent or Cache
|
||||
STORAGE_MODE=Permanent
|
||||
```
|
||||
@@ -260,7 +265,7 @@ Choose your preferred provider via the `MUSIC_SERVICE` environment variable. Add
|
||||
See the full `.env.example` for all available options including Deezer/Qobuz credentials.
|
||||
|
||||
3. **Configure your client**
|
||||
|
||||
|
||||
Point your music client to `http://localhost:5274` instead of your media server directly.
|
||||
|
||||
> **Tip**: Make sure the `DOWNLOAD_PATH` points to a directory that your media server can scan, so downloaded songs appear in your library.
|
||||
@@ -272,21 +277,24 @@ For detailed configuration options, see [CONFIGURATION.md](CONFIGURATION.md).
|
||||
If you prefer to run Allstarr without Docker:
|
||||
|
||||
1. **Clone the repository**
|
||||
|
||||
```bash
|
||||
git clone https://github.com/SoPat712/allstarr.git
|
||||
cd allstarr
|
||||
```
|
||||
|
||||
2. **Restore dependencies**
|
||||
|
||||
```bash
|
||||
dotnet restore
|
||||
```
|
||||
|
||||
3. **Configure the application**
|
||||
|
||||
|
||||
Edit `allstarr/appsettings.json`:
|
||||
|
||||
|
||||
**For Jellyfin:**
|
||||
|
||||
```json
|
||||
{
|
||||
"Backend": {
|
||||
@@ -303,8 +311,9 @@ If you prefer to run Allstarr without Docker:
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
**For Subsonic/Navidrome:**
|
||||
|
||||
```json
|
||||
{
|
||||
"Backend": {
|
||||
@@ -321,15 +330,16 @@ If you prefer to run Allstarr without Docker:
|
||||
```
|
||||
|
||||
4. **Run the server**
|
||||
|
||||
```bash
|
||||
cd allstarr
|
||||
dotnet run
|
||||
```
|
||||
|
||||
|
||||
The proxy will start on `http://localhost:5274` by default.
|
||||
|
||||
5. **Configure your client**
|
||||
|
||||
|
||||
Point your music client to `http://localhost:5274` instead of your media server directly.
|
||||
|
||||
## Documentation
|
||||
|
||||
@@ -9,5 +9,5 @@ public static class AppVersion
|
||||
/// <summary>
|
||||
/// Current application version.
|
||||
/// </summary>
|
||||
public const string Version = "1.3.0";
|
||||
public const string Version = "1.3.2";
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user