mirror of
https://github.com/BillyOutlast/audiojacker.git
synced 2026-07-01 15:58:18 -04:00
created a complete Docker Compose setup for Audiojacker media stack.
This commit is contained in:
@@ -0,0 +1,94 @@
|
||||
# =============================================================================
|
||||
# Audiojacker Environment Configuration - Example
|
||||
# =============================================================================
|
||||
# Copy this file to .env and fill in your actual values
|
||||
# All sensitive credentials should be kept in .env (add to .gitignore!)
|
||||
# =============================================================================
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# BASE CONFIGURATION
|
||||
# -----------------------------------------------------------------------------
|
||||
# Base path for all media and configuration files
|
||||
BASE_PATH=./audiojacker
|
||||
|
||||
# User/Group IDs for file permissions (run `id -u` and `id -g` to find yours)
|
||||
PUID=1000
|
||||
PGID=1000
|
||||
|
||||
# Timezone (use TZ database name: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones)
|
||||
TZ=America/New_York
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# PROTONVPN CONFIGURATION (for gluetun)
|
||||
# -----------------------------------------------------------------------------
|
||||
# Get your OpenVPN credentials from: https://account.protonvpn.com/settings
|
||||
# Note: These are NOT your ProtonVPN login credentials - they're separate OpenVPN credentials
|
||||
PROTONVPN_USER=your_protonvpn_openvpn_username
|
||||
PROTONVPN_PASSWORD=your_protonvpn_openvpn_password
|
||||
|
||||
# Preferred server countries (comma-separated, e.g., Netherlands,Switzerland,Iceland)
|
||||
PROTONVPN_SERVERS=Netherlands
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# QBITTORRENT CONFIGURATION
|
||||
# -----------------------------------------------------------------------------
|
||||
# Web UI port (default: 8080)
|
||||
QBITTORRENT_PORT=8080
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# LIDARR CONFIGURATION
|
||||
# -----------------------------------------------------------------------------
|
||||
# Web UI port (default: 8686)
|
||||
LIDARR_PORT=8686
|
||||
|
||||
# API key will be auto-generated on first start, or set manually
|
||||
# Find it in Lidarr Settings > General > Security
|
||||
LIDARR_API_KEY=your_lidarr_api_key_here
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# SOULSEEK / SLSKD CONFIGURATION
|
||||
# -----------------------------------------------------------------------------
|
||||
# Your Soulseek account credentials (create at https://www.slsknet.org)
|
||||
SOULSEEK_USER=your_soulseek_username
|
||||
SOULSEEK_PASS=your_soulseek_password
|
||||
|
||||
# slskd Web UI port (default: 5000)
|
||||
SLSKD_PORT=5000
|
||||
|
||||
# slskd admin credentials for Web UI
|
||||
SLSKD_ADMIN_USER=admin
|
||||
SLSKD_ADMIN_PASS=admin
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# SOULARR CONFIGURATION
|
||||
# -----------------------------------------------------------------------------
|
||||
# Web UI port (default: 8400)
|
||||
SOULARR_PORT=8400
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# YUBAL CONFIGURATION
|
||||
# -----------------------------------------------------------------------------
|
||||
# Web UI port (default: 8888)
|
||||
YUBAL_PORT=8888
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# TORBOX CONFIGURATION
|
||||
# -----------------------------------------------------------------------------
|
||||
# Get your API key from: https://torbox.app/settings
|
||||
TORBOX_API_KEY=your_torbox_api_key
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# AUDIOBOOKSHELF CONFIGURATION
|
||||
# -----------------------------------------------------------------------------
|
||||
# Web UI port (default: 13378)
|
||||
AUDIOBOOKSHELF_PORT=13378
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# KOEL CONFIGURATION
|
||||
# -----------------------------------------------------------------------------
|
||||
# Web UI port (default: 8000)
|
||||
KOEL_PORT=8000
|
||||
|
||||
# Admin credentials for Koel
|
||||
KOEL_ADMIN_EMAIL=admin@koel.dev
|
||||
KOEL_ADMIN_PASS=KoelIsCool
|
||||
+24
@@ -0,0 +1,24 @@
|
||||
# Environment files (contain sensitive credentials)
|
||||
.env
|
||||
*.env.local
|
||||
|
||||
# Configuration directories with sensitive data
|
||||
config/
|
||||
|
||||
# IDE and editor files
|
||||
.idea/
|
||||
.vscode/
|
||||
*.swp
|
||||
*.swo
|
||||
*~
|
||||
|
||||
# OS files
|
||||
.DS_Store
|
||||
Thumbs.db
|
||||
|
||||
# Docker volumes (if using local volumes)
|
||||
docker-volumes/
|
||||
|
||||
# Logs
|
||||
*.log
|
||||
logs/
|
||||
@@ -0,0 +1,292 @@
|
||||
# Audiojacker - All-in-One Media Download & Streaming Stack
|
||||
|
||||
A comprehensive Docker Compose setup for automated media downloading and streaming with VPN protection.
|
||||
|
||||
## 🎯 Features
|
||||
|
||||
- **VPN Protection**: All download services route through ProtonVPN via gluetun
|
||||
- **Torrent Downloads**: qBittorrent with Web UI
|
||||
- **Music Management**: Lidarr for automated music collection management
|
||||
- **Soulseek Integration**: slskd client + soularr for Lidarr integration
|
||||
- **YouTube Downloads**: yubal for audio extraction
|
||||
- **Torbox Integration**: Automated debrid downloading
|
||||
- **Audiobook Streaming**: audiobookshelf server
|
||||
- **Music Streaming**: Koel self-hosted music player
|
||||
|
||||
## 📋 Services Overview
|
||||
|
||||
| Service | Purpose | Port | Network |
|
||||
|---------|---------|------|---------|
|
||||
| gluetun | VPN Gateway | - | Bridge |
|
||||
| qBittorrent | Torrent Client | 8080 | Via VPN |
|
||||
| Lidarr | Music Manager | 8686 | Via VPN |
|
||||
| slskd | Soulseek Client | 5000 | Via VPN |
|
||||
| soularr | Lidarr-Soulseek Bridge | 8400 | Via VPN |
|
||||
| yubal | YouTube Downloader | 8888 | Via VPN |
|
||||
| torbox-auto-downloader | Torbox Integration | - | Via VPN |
|
||||
| audiobookshelf | Audiobook Server | 13378 | Direct |
|
||||
| koel | Music Streaming | 8000 | Direct |
|
||||
|
||||
## 🚀 Quick Start
|
||||
|
||||
### 1. Prerequisites
|
||||
|
||||
- Docker and Docker Compose installed
|
||||
- ProtonVPN account (OpenVPN credentials)
|
||||
- Soulseek account (for slskd)
|
||||
- Torbox account (optional, for torbox-auto-downloader)
|
||||
|
||||
### 2. Clone/Create Directory Structure
|
||||
|
||||
```bash
|
||||
# Create the base directory
|
||||
sudo mkdir -p /mnt/fast-block/audiojacker/{downloads,audiobooks,music,config}
|
||||
|
||||
# Create subdirectories
|
||||
sudo mkdir -p /mnt/fast-block/audiojacker/downloads/{torrents,soulseek,youtube,torbox,complete}
|
||||
sudo mkdir -p /mnt/fast-block/audiojacker/music/{incoming,library}
|
||||
```
|
||||
|
||||
### 3. Configure Environment
|
||||
|
||||
```bash
|
||||
# Copy the example environment file
|
||||
cp .env.example .env
|
||||
|
||||
# Edit with your credentials
|
||||
nano .env
|
||||
```
|
||||
|
||||
**Required credentials to fill in:**
|
||||
|
||||
| Variable | Where to get it |
|
||||
|----------|-----------------|
|
||||
| `PROTONVPN_USER` | [ProtonVPN Account](https://account.protonvpn.com/settings) → OpenVPN/IKEv2 username |
|
||||
| `PROTONVPN_PASSWORD` | [ProtonVPN Account](https://account.protonvpn.com/settings) → OpenVPN/IKEv2 password |
|
||||
| `SOULSEEK_USER` | [Soulseek](https://www.slsknet.org) account |
|
||||
| `SOULSEEK_PASS` | [Soulseek](https://www.slsknet.org) password |
|
||||
| `TORBOX_API_KEY` | [Torbox](https://torbox.app/settings) API key |
|
||||
|
||||
### 4. Set Permissions
|
||||
|
||||
```bash
|
||||
# Set ownership (replace with your PUID:PGID)
|
||||
sudo chown -R 1000:1000 /mnt/fast-block/audiojacker
|
||||
|
||||
# Set permissions
|
||||
sudo chmod -R 755 /mnt/fast-block/audiojacker
|
||||
```
|
||||
|
||||
### 5. Start the Stack
|
||||
|
||||
```bash
|
||||
# Start all services
|
||||
docker-compose up -d
|
||||
|
||||
# Check status
|
||||
docker-compose ps
|
||||
|
||||
# View logs
|
||||
docker-compose logs -f
|
||||
```
|
||||
|
||||
### 6. Access Web Interfaces
|
||||
|
||||
| Service | URL | Default Credentials |
|
||||
|---------|-----|---------------------|
|
||||
| qBittorrent | http://localhost:8080 | `admin` / `adminadmin` |
|
||||
| Lidarr | http://localhost:8686 | None (set on first access) |
|
||||
| slskd | http://localhost:5000 | Set in .env (`SLSKD_ADMIN_USER/PASS`) |
|
||||
| soularr | http://localhost:8400 | - |
|
||||
| yubal | http://localhost:8888 | - |
|
||||
| audiobookshelf | http://localhost:13378 | None (set on first access) |
|
||||
| koel | http://localhost:8000 | Set in .env (`KOEL_ADMIN_EMAIL/PASS`) |
|
||||
|
||||
## 📁 Directory Structure
|
||||
|
||||
```
|
||||
/mnt/fast-block/audiojacker/
|
||||
├── downloads/
|
||||
│ ├── torrents/ # qBittorrent downloads
|
||||
│ ├── soulseek/ # slskd downloads
|
||||
│ ├── youtube/ # yubal downloads
|
||||
│ ├── torbox/ # Torbox downloads
|
||||
│ └── complete/ # Completed downloads
|
||||
├── audiobooks/ # Audiobook library
|
||||
├── music/
|
||||
│ ├── incoming/ # Music being processed
|
||||
│ └── library/ # Organized music library
|
||||
└── config/
|
||||
├── gluetun/
|
||||
├── qbittorrent/
|
||||
├── lidarr/
|
||||
├── slskd/
|
||||
├── soularr/
|
||||
├── yubal/
|
||||
├── torbox/
|
||||
├── audiobookshelf/
|
||||
└── koel/
|
||||
```
|
||||
|
||||
## ⚙️ Configuration
|
||||
|
||||
### ProtonVPN Setup
|
||||
|
||||
1. Log into [ProtonVPN](https://account.protonvpn.com/settings)
|
||||
2. Go to **Downloads** → **OpenVPN configuration**
|
||||
3. Note your **OpenVPN / IKEv2 username** and **password**
|
||||
4. (Optional) Choose preferred server countries in `.env`
|
||||
|
||||
### Lidarr Setup
|
||||
|
||||
1. Access Lidarr at http://localhost:8686
|
||||
2. Complete the setup wizard
|
||||
3. Add your music library path: `/music/library`
|
||||
4. Add download client: qBittorrent at `localhost:8080`
|
||||
5. Get API key from **Settings** → **General** → **Security**
|
||||
6. Update `.env` with `LIDARR_API_KEY`
|
||||
7. Restart soularr: `docker-compose restart soularr`
|
||||
|
||||
### slskd Setup
|
||||
|
||||
1. Access slskd at http://localhost:5000
|
||||
2. Login with credentials from `.env`
|
||||
3. Configure share directories in **Shares** settings
|
||||
4. Add `/music` as a share directory
|
||||
|
||||
### soularr Setup
|
||||
|
||||
soularr connects Lidarr with Soulseek for automated downloads:
|
||||
|
||||
1. Ensure Lidarr is configured and running
|
||||
2. Ensure slskd is configured and running
|
||||
3. soularr will automatically search Soulseek for Lidarr requests
|
||||
|
||||
### qBittorrent Setup
|
||||
|
||||
1. Access qBittorrent at http://localhost:8080
|
||||
2. Login with `admin` / `adminadmin`
|
||||
3. **Change password immediately** in **Tools** → **Options** → **Web UI**
|
||||
4. Set download path to `/downloads`
|
||||
5. Configure connection settings as needed
|
||||
|
||||
### audiobookshelf Setup
|
||||
|
||||
1. Access audiobookshelf at http://localhost:13378
|
||||
2. Create admin account on first access
|
||||
3. Add library pointing to `/audiobooks`
|
||||
4. Configure metadata provider preferences
|
||||
|
||||
### Koel Setup
|
||||
|
||||
1. Access Koel at http://localhost:8000
|
||||
2. Login with credentials from `.env`
|
||||
3. Scan music library: `/music`
|
||||
4. Configure settings as needed
|
||||
|
||||
## 🔧 Maintenance
|
||||
|
||||
### View Logs
|
||||
|
||||
```bash
|
||||
# All services
|
||||
docker-compose logs -f
|
||||
|
||||
# Specific service
|
||||
docker-compose logs -f gluetun
|
||||
docker-compose logs -f qbittorrent
|
||||
```
|
||||
|
||||
### Restart Services
|
||||
|
||||
```bash
|
||||
# Restart all
|
||||
docker-compose restart
|
||||
|
||||
# Restart specific service
|
||||
docker-compose restart gluetun
|
||||
```
|
||||
|
||||
### Update Services
|
||||
|
||||
```bash
|
||||
# Pull latest images
|
||||
docker-compose pull
|
||||
|
||||
# Recreate containers with new images
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
### Stop Services
|
||||
|
||||
```bash
|
||||
# Stop all
|
||||
docker-compose down
|
||||
|
||||
# Stop and remove volumes
|
||||
docker-compose down -v
|
||||
```
|
||||
|
||||
## 🐛 Troubleshooting
|
||||
|
||||
### VPN Not Connecting
|
||||
|
||||
```bash
|
||||
# Check gluetun logs
|
||||
docker-compose logs gluetun
|
||||
|
||||
# Common issues:
|
||||
# - Wrong OpenVPN credentials
|
||||
# - Server country not available
|
||||
# - Network connectivity issues
|
||||
```
|
||||
|
||||
### Services Can't Connect Through VPN
|
||||
|
||||
Ensure services are using `network_mode: service:gluetun` and gluetun is healthy:
|
||||
|
||||
```bash
|
||||
# Check gluetun health
|
||||
docker-compose ps gluetun
|
||||
|
||||
# Check VPN connection
|
||||
docker-compose exec gluetun curl -s https://ipinfo.io
|
||||
```
|
||||
|
||||
### Permission Issues
|
||||
|
||||
```bash
|
||||
# Check current PUID/PGID
|
||||
id
|
||||
|
||||
# Update .env with correct values
|
||||
# Fix ownership
|
||||
sudo chown -R $(id -u):$(id -g) /mnt/fast-block/audiojacker
|
||||
```
|
||||
|
||||
### Port Conflicts
|
||||
|
||||
If default ports are in use, modify the port mappings in `.env`:
|
||||
|
||||
```bash
|
||||
# Example: Change qBittorrent port
|
||||
QBITTORRENT_PORT=18080
|
||||
```
|
||||
|
||||
## 📚 Additional Resources
|
||||
|
||||
- [gluetun Wiki](https://github.com/qdm12/gluetun/wiki)
|
||||
- [qBittorrent Documentation](https://github.com/linuxserver/docker-qbittorrent)
|
||||
- [Lidarr Documentation](https://lidarr.audio/)
|
||||
- [slskd Documentation](https://github.com/slskd/slskd)
|
||||
- [soularr GitHub](https://github.com/guillevc/yubal)
|
||||
- [audiobookshelf Documentation](https://www.audiobookshelf.org/)
|
||||
- [Koel Documentation](https://koel.dev/)
|
||||
|
||||
## 📜 License
|
||||
|
||||
This configuration is provided as-is. Individual services have their own licenses.
|
||||
|
||||
## ⚠️ Disclaimer
|
||||
|
||||
This setup is for personal use with legally obtained content. Ensure compliance with copyright laws in your jurisdiction. The authors are not responsible for any misuse of this software.
|
||||
@@ -0,0 +1,292 @@
|
||||
version: "3.9"
|
||||
|
||||
# =============================================================================
|
||||
# Audiojacker - All-in-One Media Download and Streaming Stack
|
||||
# =============================================================================
|
||||
# This compose file sets up a complete media management system with:
|
||||
# - VPN-routed download services (via gluetun)
|
||||
# - Direct-access media servers
|
||||
# =============================================================================
|
||||
|
||||
# Shared environment variables for linuxserver.io containers
|
||||
x-lsio-environment: &lsio-environment
|
||||
PUID: ${PUID:-1000}
|
||||
PGID: ${PGID:-1000}
|
||||
TZ: ${TZ:-America/New_York}
|
||||
|
||||
# Common volume mounts for download services
|
||||
x-download-volumes: &download-volumes
|
||||
- ${BASE_PATH}/downloads:/downloads
|
||||
- ${BASE_PATH}/config:/config
|
||||
|
||||
services:
|
||||
# ===========================================================================
|
||||
# VPN GATEWAY - gluetun
|
||||
# ===========================================================================
|
||||
# All download services route through this container for VPN protection
|
||||
# Documentation: https://github.com/qdm12/gluetun
|
||||
# ===========================================================================
|
||||
gluetun:
|
||||
image: qmcgaw/gluetun:latest
|
||||
container_name: gluetun
|
||||
cap_add:
|
||||
- NET_ADMIN
|
||||
devices:
|
||||
- /dev/net/tun:/dev/net/tun
|
||||
environment:
|
||||
<<: *lsio-environment
|
||||
VPN_SERVICE_PROVIDER: protonvpn
|
||||
VPN_TYPE: openvpn
|
||||
OPENVPN_USER: ${PROTONVPN_USER}
|
||||
OPENVPN_PASSWORD: ${PROTONVPN_PASSWORD}
|
||||
SERVER_COUNTRIES: ${PROTONVPN_SERVERS:-Netherlands}
|
||||
# Optional: Add more ProtonVPN options
|
||||
# SERVER_CITIES: Amsterdam
|
||||
# VPN_ENDPOINT_IP:
|
||||
# VPN_ENDPOINT_PORT:
|
||||
volumes:
|
||||
- ${BASE_PATH}/config/gluetun:/gluetun
|
||||
ports:
|
||||
# qBittorrent Web UI (routed through VPN)
|
||||
- ${QBITTORRENT_PORT:-8080}:8080
|
||||
# Lidarr Web UI (routed through VPN)
|
||||
- ${LIDARR_PORT:-8686}:8686
|
||||
# slskd Web UI (routed through VPN)
|
||||
- ${SLSKD_PORT:-5000}:5000
|
||||
# slskd listen ports for Soulseek network
|
||||
- 22398:22398/tcp
|
||||
- 22398:22398/udp
|
||||
- 22399:22399/tcp
|
||||
- 22399:22399/udp
|
||||
- 22400:22400/tcp
|
||||
- 22400:22400/udp
|
||||
# soularr Web UI (routed through VPN)
|
||||
- ${SOULARR_PORT:-8400}:8400
|
||||
# yubal Web UI (routed through VPN)
|
||||
- ${YUBAL_PORT:-8888}:8888
|
||||
restart: unless-stopped
|
||||
healthcheck:
|
||||
test: ["CMD", "curl", "-f", "https://ipinfo.io"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
start_period: 30s
|
||||
networks:
|
||||
- media_net
|
||||
|
||||
# ===========================================================================
|
||||
# TORRENT CLIENT - qBittorrent
|
||||
# ===========================================================================
|
||||
# Web UI accessible at http://localhost:8080
|
||||
# Default credentials: admin / adminadmin (change on first login)
|
||||
# Documentation: https://hub.docker.com/r/linuxserver/qbittorrent
|
||||
# ===========================================================================
|
||||
qbittorrent:
|
||||
image: linuxserver/qbittorrent:latest
|
||||
container_name: qbittorrent
|
||||
network_mode: service:gluetun
|
||||
depends_on:
|
||||
gluetun:
|
||||
condition: service_healthy
|
||||
environment:
|
||||
<<: *lsio-environment
|
||||
WEBUI_PORT: 8080
|
||||
TORRENTING_PORT: 6881
|
||||
volumes:
|
||||
- ${BASE_PATH}/config/qbittorrent:/config
|
||||
- ${BASE_PATH}/downloads/torrents:/downloads
|
||||
restart: unless-stopped
|
||||
|
||||
# ===========================================================================
|
||||
# MUSIC COLLECTION MANAGER - Lidarr
|
||||
# ===========================================================================
|
||||
# Web UI accessible at http://localhost:8686
|
||||
# Documentation: https://lidarr.audio/
|
||||
# ===========================================================================
|
||||
lidarr:
|
||||
image: linuxserver/lidarr:latest
|
||||
container_name: lidarr
|
||||
network_mode: service:gluetun
|
||||
depends_on:
|
||||
gluetun:
|
||||
condition: service_healthy
|
||||
environment:
|
||||
<<: *lsio-environment
|
||||
volumes:
|
||||
- ${BASE_PATH}/config/lidarr:/config
|
||||
- ${BASE_PATH}/music:/music
|
||||
- ${BASE_PATH}/downloads:/downloads
|
||||
restart: unless-stopped
|
||||
|
||||
# ===========================================================================
|
||||
# SOULSEEK CLIENT - slskd
|
||||
# ===========================================================================
|
||||
# Web UI accessible at http://localhost:5000
|
||||
# Documentation: https://github.com/slskd/slskd
|
||||
# ===========================================================================
|
||||
slskd:
|
||||
image: slskd/slskd:latest
|
||||
container_name: slskd
|
||||
network_mode: service:gluetun
|
||||
depends_on:
|
||||
gluetun:
|
||||
condition: service_healthy
|
||||
environment:
|
||||
<<: *lsio-environment
|
||||
SLSKD_SLSK_USERNAME: ${SOULSEEK_USER}
|
||||
SLSKD_SLSK_PASSWORD: ${SOULSEEK_PASS}
|
||||
SLSKD_SLSK_LISTEN_PORT: 22398
|
||||
SLSKD_REMOTE_CONFIGURATION: true
|
||||
SLSKD_NO_AUTH: false
|
||||
SLSKD_USERNAME: ${SLSKD_ADMIN_USER:-admin}
|
||||
SLSKD_PASSWORD: ${SLSKD_ADMIN_PASS:-admin}
|
||||
volumes:
|
||||
- ${BASE_PATH}/config/slskd:/app/data
|
||||
- ${BASE_PATH}/downloads/soulseek:/downloads
|
||||
- ${BASE_PATH}/music:/music
|
||||
restart: unless-stopped
|
||||
|
||||
# ===========================================================================
|
||||
# LIDARR + SOULSEEK INTEGRATION - soularr
|
||||
# ===========================================================================
|
||||
# Connects Lidarr with Soulseek for automated music downloading
|
||||
# Documentation: https://github.com/guillevc/yubal
|
||||
# Note: soularr may need to be built from source or use alternative image
|
||||
# ===========================================================================
|
||||
soularr:
|
||||
image: ghcr.io/guillevc/soularr:latest
|
||||
container_name: soularr
|
||||
network_mode: service:gluetun
|
||||
depends_on:
|
||||
gluetun:
|
||||
condition: service_healthy
|
||||
lidarr:
|
||||
condition: service_started
|
||||
slskd:
|
||||
condition: service_started
|
||||
environment:
|
||||
<<: *lsio-environment
|
||||
LIDARR_URL: http://localhost:8686
|
||||
LIDARR_API_KEY: ${LIDARR_API_KEY}
|
||||
SLSKD_URL: http://localhost:5000
|
||||
SLSKD_API_KEY: ${SLSKD_API_KEY:-}
|
||||
volumes:
|
||||
- ${BASE_PATH}/config/soularr:/config
|
||||
- ${BASE_PATH}/downloads/soulseek:/downloads
|
||||
- ${BASE_PATH}/music:/music
|
||||
restart: unless-stopped
|
||||
|
||||
# ===========================================================================
|
||||
# YOUTUBE AUDIO DOWNLOADER - yubal
|
||||
# ===========================================================================
|
||||
# Web UI accessible at http://localhost:8888
|
||||
# Documentation: https://github.com/guillevc/yubal
|
||||
# ===========================================================================
|
||||
yubal:
|
||||
image: ghcr.io/guillevc/yubal:latest
|
||||
container_name: yubal
|
||||
network_mode: service:gluetun
|
||||
depends_on:
|
||||
gluetun:
|
||||
condition: service_healthy
|
||||
environment:
|
||||
<<: *lsio-environment
|
||||
volumes:
|
||||
- ${BASE_PATH}/config/yubal:/config
|
||||
- ${BASE_PATH}/downloads/youtube:/downloads
|
||||
- ${BASE_PATH}/music:/music
|
||||
restart: unless-stopped
|
||||
|
||||
# ===========================================================================
|
||||
# TORBOX AUTO DOWNLOADER
|
||||
# ===========================================================================
|
||||
# Automated downloading from Torbox service
|
||||
# Documentation: https://github.com/MrJoiny/torbox-auto-downloader
|
||||
# ===========================================================================
|
||||
torbox-auto-downloader:
|
||||
image: ghcr.io/mrjoiny/torbox-auto-downloader:latest
|
||||
container_name: torbox-auto-downloader
|
||||
network_mode: service:gluetun
|
||||
depends_on:
|
||||
gluetun:
|
||||
condition: service_healthy
|
||||
environment:
|
||||
<<: *lsio-environment
|
||||
TORBOX_API_KEY: ${TORBOX_API_KEY}
|
||||
# Add additional Torbox configuration as needed
|
||||
volumes:
|
||||
- ${BASE_PATH}/config/torbox:/config
|
||||
- ${BASE_PATH}/downloads/torbox:/downloads
|
||||
restart: unless-stopped
|
||||
|
||||
# ===========================================================================
|
||||
# AUDIOBOOK SERVER - audiobookshelf
|
||||
# ===========================================================================
|
||||
# Web UI accessible at http://localhost:13378
|
||||
# Documentation: https://github.com/advplyr/audiobookshelf
|
||||
# ===========================================================================
|
||||
audiobookshelf:
|
||||
image: advplyr/audiobookshelf:latest
|
||||
container_name: audiobookshelf
|
||||
environment:
|
||||
<<: *lsio-environment
|
||||
ports:
|
||||
- ${AUDIOBOOKSHELF_PORT:-13378}:80
|
||||
volumes:
|
||||
- ${BASE_PATH}/audiobooks:/audiobooks
|
||||
- ${BASE_PATH}/config/audiobookshelf:/config
|
||||
- ${BASE_PATH}/config/audiobookshelf/metadata:/metadata
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- media_net
|
||||
|
||||
# ===========================================================================
|
||||
# MUSIC STREAMING SERVER - koel
|
||||
# ===========================================================================
|
||||
# Web UI accessible at http://localhost:8000
|
||||
# Default credentials: admin@koel.dev / KoelIsCool (change on first login)
|
||||
# Documentation: https://github.com/koel/koel
|
||||
# ===========================================================================
|
||||
koel:
|
||||
image: koel/koel:latest
|
||||
container_name: koel
|
||||
environment:
|
||||
<<: *lsio-environment
|
||||
DB_CONNECTION: sqlite
|
||||
DB_DATABASE: /data/koel.db
|
||||
ADMIN_EMAIL: ${KOEL_ADMIN_EMAIL:-admin@koel.dev}
|
||||
ADMIN_PASSWORD: ${KOEL_ADMIN_PASS:-KoelIsCool}
|
||||
# Optional: For streaming optimization
|
||||
STREAMING_METHOD: php
|
||||
ports:
|
||||
- ${KOEL_PORT:-8000}:80
|
||||
volumes:
|
||||
- ${BASE_PATH}/music:/music
|
||||
- ${BASE_PATH}/config/koel:/data
|
||||
- ${BASE_PATH}/config/koel/covers:/var/www/html/public/img/covers
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- media_net
|
||||
|
||||
# =============================================================================
|
||||
# NETWORKS
|
||||
# =============================================================================
|
||||
networks:
|
||||
media_net:
|
||||
driver: bridge
|
||||
name: media_net
|
||||
|
||||
# =============================================================================
|
||||
# VOLUMES (optional - for persistent data if preferred over bind mounts)
|
||||
# =============================================================================
|
||||
# volumes:
|
||||
# gluetun_data:
|
||||
# qbittorrent_config:
|
||||
# lidarr_config:
|
||||
# slskd_data:
|
||||
# soularr_config:
|
||||
# yubal_config:
|
||||
# torbox_config:
|
||||
# audiobookshelf_config:
|
||||
# audiobookshelf_metadata:
|
||||
# koel_data:
|
||||
Reference in New Issue
Block a user