You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
SoulSync/Support/DOCKER.md

186 lines
4.6 KiB

# 🐳 SoulSync Docker Installation Guide
Complete guide to running SoulSync in Docker with persistent data and proper configuration.
## 🚀 Quick Start
```bash
# Clone the repository
git clone https://github.com/Nezreka/SoulSync
cd SoulSync
# Start the container
docker-compose up -d
# Access SoulSync at http://localhost:8008
```
## 📋 Prerequisites
Before running SoulSync in Docker, ensure you have:
- **Docker & Docker Compose** installed on your system
- **slskd** running on your host machine (port 5030)
- **Spotify API credentials** (Client ID/Secret)
- **Media server** (Plex/Jellyfin) - optional but recommended
## 🔧 Configuration Setup
### 1. Initial Configuration
On first run, SoulSync will create a default config. You need to update it with your credentials:
1. Start the container: `docker-compose up -d`
2. Open http://localhost:8008 in your browser
3. Go to **Settings** page
4. Fill in your API credentials:
- **Spotify**: Client ID and Client Secret
- **Soulseek**: slskd URL (`http://host.docker.internal:5030`) and API key
- **Media Server**: Plex/Jellyfin connection details
- **Paths**: Download and transfer folder paths
### 2. Path Configuration
**Important**: Your download and transfer paths must be accessible to the Docker container.
#### Default Setup (E: Drive)
The docker-compose.yml mounts the E: drive by default:
```yaml
volumes:
- /mnt/e:/host/mnt/e:rw
```
If your paths are on E: drive, you can use paths like:
- Download Path: `E:/Music/Downloads`
- Transfer Path: `E:/Music/Library`
#### Other Drives
If your music folders are on different drives, update docker-compose.yml:
```yaml
volumes:
# Add drive mounts as needed
- /mnt/c:/host/mnt/c:rw # For C: drive
- /mnt/d:/host/mnt/d:rw # For D: drive
- /mnt/e:/host/mnt/e:rw # For E: drive
```
Then restart: `docker-compose down && docker-compose up -d`
### 3. Service URLs for Docker
When configuring services in Docker mode, use these URLs:
- **slskd**: `http://host.docker.internal:5030`
- **Plex**: `http://host.docker.internal:32400`
- **Jellyfin**: `http://host.docker.internal:8096`
Docker automatically resolves `host.docker.internal` to your host machine.
## 📊 Data Persistence
SoulSync Docker uses a named volume for the database:
- **Database**: Stored in `soulsync_database` volume (persists across container rebuilds)
- **Config**: Stored in `./config/` folder (mapped to host)
- **Logs**: Stored in `./logs/` folder (mapped to host)
**Note**: The Docker database is separate from GUI/WebUI versions.
## 🛠️ Common Commands
```bash
# Start SoulSync
docker-compose up -d
# View logs
docker-compose logs -f
# Stop SoulSync
docker-compose down
# Restart SoulSync
docker-compose restart
# Update to latest image
docker-compose pull && docker-compose up -d
# Rebuild from source
docker-compose down && docker-compose up -d --build
```
## 🔍 Troubleshooting
### Container Won't Start
```bash
# Check container status
docker-compose ps
# View error logs
docker-compose logs
```
### Can't Access Services
- Ensure slskd is running on host machine
- Use `host.docker.internal` URLs in settings
- Check firewall isn't blocking ports 8008, 8888, 8889
### Files Not Processing
- Verify download/transfer paths are mounted correctly
- Check paths use correct drive letters (E:/, C:/, etc.)
- Ensure directories exist and have proper permissions
### Database Issues
```bash
# Reset database (WARNING: deletes all data)
docker volume rm soulsync_database
docker-compose up -d
```
## 📁 Directory Structure
```
SoulSync/
├── config/ # Configuration files (mapped to container)
├── logs/ # Application logs (mapped to container)
├── docker-compose.yml
└── Dockerfile
```
## 🔐 Security Notes
- Config files contain API keys - keep them secure
- The database volume persists your library data
- Only required ports (8008, 8888, 8889) are exposed
## 🆕 Updates
To update SoulSync:
```bash
# Pull latest image
docker-compose pull
# Restart with new image
docker-compose up -d
```
Your configuration and database will be preserved.
## ❓ Need Help?
- Check logs: `docker-compose logs -f`
- Verify service connections in Settings page
- Ensure all prerequisites are running
- Database and config persist between restarts
## 🎵 Ready to Go!
Once configured, SoulSync will:
- Automatically sync your playlists
- Download missing tracks with FLAC priority
- Organize files with proper metadata
- Retry failed downloads every hour
- Monitor watchlist artists for new releases
Access your SoulSync instance at **http://localhost:8008**