Add Navidrome music streaming server
- Add Navidrome service to docker-compose with Traefik routing - Route music.jeffemmett.com to Navidrome instead of Jellyfin - Update README with Navidrome docs and Subsonic-compatible mobile apps - Add Navidrome environment variables to .env.example 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
a04f5d0111
commit
ed267545d7
|
|
@ -12,6 +12,11 @@ PGID=1000
|
||||||
# Jellyfin
|
# Jellyfin
|
||||||
JELLYFIN_PublishedServerUrl=https://movies.jeffemmett.com
|
JELLYFIN_PublishedServerUrl=https://movies.jeffemmett.com
|
||||||
|
|
||||||
|
# Navidrome
|
||||||
|
ND_SCANSCHEDULE=1h
|
||||||
|
ND_LOGLEVEL=info
|
||||||
|
ND_SESSIONTIMEOUT=24h
|
||||||
|
|
||||||
# Transmission (optional auth)
|
# Transmission (optional auth)
|
||||||
TRANSMISSION_USER=admin
|
TRANSMISSION_USER=admin
|
||||||
TRANSMISSION_PASS=changeme
|
TRANSMISSION_PASS=changeme
|
||||||
|
|
|
||||||
14
README.md
14
README.md
|
|
@ -60,7 +60,8 @@ cp .env.example .env
|
||||||
|
|
||||||
| Service | Port | Description |
|
| Service | Port | Description |
|
||||||
|---------|------|-------------|
|
|---------|------|-------------|
|
||||||
| Jellyfin | 8096 | Media player |
|
| Jellyfin | 8096 | Video streaming (movies & TV) |
|
||||||
|
| Navidrome | 4533 | Music streaming server |
|
||||||
| Sonarr | 8989 | TV show management |
|
| Sonarr | 8989 | TV show management |
|
||||||
| Radarr | 7878 | Movie management |
|
| Radarr | 7878 | Movie management |
|
||||||
| Prowlarr | 9696 | Indexer management |
|
| Prowlarr | 9696 | Indexer management |
|
||||||
|
|
@ -69,8 +70,15 @@ cp .env.example .env
|
||||||
## Access
|
## Access
|
||||||
|
|
||||||
All services accessible via Cloudflare Tunnel:
|
All services accessible via Cloudflare Tunnel:
|
||||||
- **Movies & TV**: https://movies.jeffemmett.com
|
- **Movies & TV**: https://movies.jeffemmett.com (Jellyfin)
|
||||||
- **Music**: https://music.jeffemmett.com
|
- **Music**: https://music.jeffemmett.com (Navidrome)
|
||||||
|
|
||||||
|
### Navidrome Mobile Apps
|
||||||
|
|
||||||
|
Navidrome is Subsonic-compatible. Use any Subsonic client:
|
||||||
|
- **Android**: Ultrasonic, Symfonium, DSub
|
||||||
|
- **iOS**: play:Sub, Amperfy, SubStreamer
|
||||||
|
- **Desktop**: Sonixd, Sublime Music
|
||||||
|
|
||||||
## Folder Structure
|
## Folder Structure
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,14 +16,41 @@ services:
|
||||||
- traefik-public
|
- traefik-public
|
||||||
labels:
|
labels:
|
||||||
- "traefik.enable=true"
|
- "traefik.enable=true"
|
||||||
# Route both movies.jeffemmett.com and music.jeffemmett.com to Jellyfin
|
- "traefik.http.routers.jellyfin.rule=Host(`movies.jeffemmett.com`)"
|
||||||
- "traefik.http.routers.jellyfin.rule=Host(`movies.jeffemmett.com`) || Host(`music.jeffemmett.com`)"
|
|
||||||
- "traefik.http.routers.jellyfin.entrypoints=web"
|
- "traefik.http.routers.jellyfin.entrypoints=web"
|
||||||
- "traefik.http.routers.jellyfin.middlewares=jellyfin-headers"
|
- "traefik.http.routers.jellyfin.middlewares=jellyfin-headers"
|
||||||
- "traefik.http.services.jellyfin.loadbalancer.server.port=8096"
|
- "traefik.http.services.jellyfin.loadbalancer.server.port=8096"
|
||||||
- "traefik.http.middlewares.jellyfin-headers.headers.customRequestHeaders.X-Forwarded-Proto=https"
|
- "traefik.http.middlewares.jellyfin-headers.headers.customRequestHeaders.X-Forwarded-Proto=https"
|
||||||
- "traefik.docker.network=traefik-public"
|
- "traefik.docker.network=traefik-public"
|
||||||
|
|
||||||
|
navidrome:
|
||||||
|
image: deluan/navidrome:latest
|
||||||
|
container_name: navidrome
|
||||||
|
restart: unless-stopped
|
||||||
|
user: 1000:1000
|
||||||
|
environment:
|
||||||
|
- ND_SCANSCHEDULE=1h
|
||||||
|
- ND_LOGLEVEL=info
|
||||||
|
- ND_SESSIONTIMEOUT=24h
|
||||||
|
- ND_BASEURL=
|
||||||
|
- ND_ENABLETRANSCODINGCONFIG=true
|
||||||
|
- ND_TRANSCODINGCACHESIZE=1GB
|
||||||
|
- ND_IMAGECACHESIZE=500MB
|
||||||
|
volumes:
|
||||||
|
- ./config/navidrome:/data
|
||||||
|
- ./media/music:/music:ro
|
||||||
|
networks:
|
||||||
|
- media-network
|
||||||
|
- traefik-public
|
||||||
|
labels:
|
||||||
|
- "traefik.enable=true"
|
||||||
|
- "traefik.http.routers.navidrome.rule=Host(`music.jeffemmett.com`)"
|
||||||
|
- "traefik.http.routers.navidrome.entrypoints=web"
|
||||||
|
- "traefik.http.routers.navidrome.middlewares=navidrome-headers"
|
||||||
|
- "traefik.http.services.navidrome.loadbalancer.server.port=4533"
|
||||||
|
- "traefik.http.middlewares.navidrome-headers.headers.customRequestHeaders.X-Forwarded-Proto=https"
|
||||||
|
- "traefik.docker.network=traefik-public"
|
||||||
|
|
||||||
sonarr:
|
sonarr:
|
||||||
image: linuxserver/sonarr:latest
|
image: linuxserver/sonarr:latest
|
||||||
container_name: sonarr
|
container_name: sonarr
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue