193 lines
5.5 KiB
Markdown
193 lines
5.5 KiB
Markdown
# Docker Media & Utility Stack
|
|
|
|
A comprehensive Docker Compose setup for media management, document processing, and various utility services.
|
|
|
|
## 🚀 Quick Start
|
|
|
|
```bash
|
|
# Clone the repository
|
|
git clone <your-repo-url>
|
|
cd <repo-name>
|
|
|
|
# Start all services
|
|
docker compose up -d
|
|
```
|
|
|
|
## 📋 Services Overview
|
|
|
|
### 🎬 Media Management
|
|
- **Bazarr** (6767) - Subtitle Management
|
|
- **FlareSolverr** (8191) - Cloudflare Bypass
|
|
- **Jellyfin** (8096) - Media Streaming Server
|
|
- **Jellyseerr** (5055) - Media Request Management
|
|
- **Prowlarr** (9696) - Indexer Management
|
|
- **qBittorrent** (7070) - Download Client
|
|
- **Radarr** (7878) - Movie Management
|
|
- **Sonarr** (8989) - TV Series Management
|
|
|
|
### 🎵 Music & Scrobbling
|
|
- **Lidarr** (8686) - Music management
|
|
- **Lidarr Importer API** (5110) - API of Maloja DB for Lidarr Import
|
|
- **Maloja** (42010) - Music Statistics
|
|
- **Multi-Scrobbler** (9078) - Music Scrobbling
|
|
- **Pinchflat** (8945) - Youtube Content Downloader
|
|
- **Soulseek** (5030) - P2P Filesharer
|
|
- **Soularr** - Intermediary between Lidarr and Soulseek
|
|
|
|
### 📄 Document Management
|
|
- **Gotenberg** - Document Conversion
|
|
- **OnlyOffice** (8054) - Document Editing
|
|
- **Paperless AI** (3040) - AI Document Enhancement
|
|
- **Paperless NGX** (8100) - Document Management
|
|
- **Redis** - Paperless Broker
|
|
- **MariaDB** - Paperless Database
|
|
- **Stirling PDF** (8090) - PDF Processing
|
|
- **Tika** - Content Extraction
|
|
|
|
### 🏠 Personal Applications
|
|
- **AdventureLog Frontend** (8015) - Adventure tracking interface
|
|
- **AdventureLog Backend** (8016) - Adventure tracking API
|
|
- **AdventureLog Database** - PostgreSQL database
|
|
- **Gramps** (5511) - Genealogy management
|
|
- **Gramps Celery** - Background task processing
|
|
- **Gramps Redis** - Task queue
|
|
- **KitchenOwl** - (8081) Recipe and Grocery Manager
|
|
- **LiteLLM** (4000) - LLM API Flattening
|
|
- **LiteLLM Postgres** - LLM database
|
|
- **Obsidian Remote** (8181) - Note-taking
|
|
- **Redbot** - Discord Bot
|
|
- **Syncthing** (8384) - File synchronization
|
|
|
|
### 🛠️ System Utilities
|
|
- **Docker Proxy** (2375) - Docker API proxy
|
|
- **FileBrowser** (6633) - Web file manager
|
|
- **FoundryVTT Watcher** (30000) - FoundryVTT player login watcher
|
|
- **Glances** - Resource manager
|
|
- **Homepage** (7575) - Service dashboard
|
|
- **iPerf3 Server** (5201) - LAN Network Speedtest server
|
|
- **RustDesk (hbbr)** - Remote desktop relay
|
|
- **RustDesk (hbbs)** - Remote desktop signaling
|
|
- **Newt** - Tunneloing service to offaite reverse proxy
|
|
- **RackNerd API Converter** (5000) - VPS monitoring API
|
|
- **Speedtest Database** - MariaDB for speedtest
|
|
- **Speedtest Tracker** (8180) - Network monitoring
|
|
- **Watchtower** - Container updates
|
|
|
|
## 🏗️ Architecture
|
|
|
|
The stack is organized into logical service groups:
|
|
|
|
```
|
|
/docker # Stateless / ephemeral services
|
|
├── docker-compose.yml # Main orchestration for ephemeral services
|
|
├── .env # Environment variables
|
|
├── .env.template # Template for new deployments
|
|
├── Services/
|
|
│ ├── filebrowser/
|
|
│ ├── homepage/
|
|
│ └── ... # Other stateless services
|
|
|
|
/docker-local # Stateful / database-backed services
|
|
├── docker-compose.yml # Orchestrates all local stateful services
|
|
├── Arrs/
|
|
│ ├── Sonarr/config/
|
|
│ ├── Radarr/config/
|
|
│ └── ...
|
|
└── [service-name]/config/
|
|
```
|
|
|
|
## 🔧 Configuration
|
|
|
|
### Environment Variables
|
|
|
|
Key configuration is handled through `.env`:
|
|
|
|
- `DOMAIN` - Your domain name
|
|
- `TZ` - Timezone (Pacific/Auckland)
|
|
- `DATA_ROOT` - Media storage path (/data)
|
|
- Database credentials for each service
|
|
|
|
## 📁 Directory Structure
|
|
|
|
Ensure these directories exist:
|
|
|
|
```
|
|
/data/ # Media storage
|
|
├── movies/
|
|
├── tv/
|
|
├── music/
|
|
├── torrents/
|
|
│ ├── incomplete/
|
|
│ └── complete/
|
|
```
|
|
|
|
## 🔒 Security Features
|
|
|
|
- **No hardcoded secrets** - All sensitive data in `.env`
|
|
- **Network isolation** - Separate networks for different stacks
|
|
- **Health checks** - Automatic service monitoring
|
|
- **Read-only mounts** - Docker socket proxy with restricted access
|
|
|
|
## 🌐 Network Configuration
|
|
|
|
- **arr_network** (172.20.0.0/16) - Media services
|
|
- **database_network** (172.21.0.0/16) - Database services
|
|
|
|
Static IPs assigned for reliable service discovery.
|
|
|
|
## 🔄 Management Commands
|
|
|
|
```bash
|
|
# View running services
|
|
docker compose ps
|
|
|
|
# View logs
|
|
docker compose logs [service-name]
|
|
|
|
# Update a service
|
|
docker compose pull [service-name]
|
|
docker compose up -d [service-name]
|
|
|
|
# Stop all services
|
|
docker compose down
|
|
|
|
# Stop and remove volumes (⚠️ DATA LOSS)
|
|
docker compose down -v
|
|
```
|
|
|
|
## 🚨 Troubleshooting
|
|
|
|
### Common Issues
|
|
|
|
1. **Port conflicts**: Check if ports are already in use
|
|
2. **Permission issues**: Ensure PUID/PGID match your user
|
|
3. **Volume mounts**: Verify directory paths exist
|
|
4. **Network issues**: Check firewall settings
|
|
|
|
### Health Checks
|
|
|
|
Most services include health checks. View status:
|
|
|
|
```bash
|
|
docker compose ps
|
|
# Shows health status for each service
|
|
```
|
|
|
|
## 🔐 Security Notes
|
|
|
|
- `.env` contains sensitive data - keep it secure
|
|
- Consider using Docker secrets for production
|
|
- Regular updates via Watchtower
|
|
- Monitor access logs
|
|
|
|
## 🤝 Contributing
|
|
|
|
1. Follow the existing structure when adding services
|
|
2. Add health checks to new services
|
|
3. Use environment variables for configuration
|
|
4. Update documentation for new services
|
|
|
|
---
|
|
|
|
**⚠️ Important**: This setup includes production credentials. Ensure `.env` is never committed to version control.
|