Initial commit of Docker files
This commit is contained in:
204
README.md
Executable file
204
README.md
Executable file
@@ -0,0 +1,204 @@
|
||||
# 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
|
||||
|
||||
# Or start specific service groups
|
||||
docker compose --profile media up -d
|
||||
```
|
||||
|
||||
## 📋 Services Overview
|
||||
|
||||
### 🎬 Media Stack (`media` profile)
|
||||
- **Sonarr** (8989) - TV series management
|
||||
- **Radarr** (7878) - Movie management
|
||||
- **Lidarr** (8686) - Music management
|
||||
- **Bazarr** (6767) - Subtitle management
|
||||
- **Prowlarr** (9696) - Indexer management
|
||||
- **FlareSolverr** (8191) - Cloudflare bypass
|
||||
- **Jellyfin** (8096) - Media streaming server
|
||||
- **Jellyseerr** (5055) - Media request management
|
||||
- **qBittorrent** (7070) - Download client
|
||||
- **Multi-Scrobbler** (9078) - Music scrobbling
|
||||
- **Maloja** (42010) - Music statistics
|
||||
|
||||
### 🛠️ Utilities (`utilities` profile)
|
||||
- **Homepage** (7575) - Service dashboard
|
||||
- **FileBrowser** (6633) - Web file manager
|
||||
- **Syncthing** (8384) - File synchronization
|
||||
- **Obsidian Remote** (8181) - Note-taking
|
||||
- **Stirling PDF** (8090) - PDF processing
|
||||
- **RustDesk** - Remote desktop server
|
||||
- **Gramps** (5511) - Genealogy management
|
||||
- **Newt** - Notification service
|
||||
- **RackNerd API Converter** (5000) - VPS monitoring API
|
||||
|
||||
### 📄 Documents (`documents` profile)
|
||||
- **Paperless NGX** (8100) - Document management
|
||||
- **Paperless AI** (3040) - AI document enhancement
|
||||
- **Gotenberg** - Document conversion
|
||||
- **Tika** - Content extraction
|
||||
|
||||
### 📊 Monitoring (`monitoring` profile)
|
||||
- **Speedtest Tracker** (8180) - Network monitoring
|
||||
- **Watchtower** - Container updates
|
||||
|
||||
## 🏗️ Architecture
|
||||
|
||||
The stack is organized into logical service groups:
|
||||
|
||||
```
|
||||
├── docker-compose.yml # Main orchestration
|
||||
├── compose/
|
||||
│ ├── media-stack.yml # *arr services & Jellyfin
|
||||
│ ├── utilities.yml # General utilities
|
||||
│ ├── document-management.yml # Paperless stack
|
||||
│ └── monitoring.yml # Monitoring services
|
||||
├── .env # Environment variables
|
||||
└── .env.template # Template for new deployments
|
||||
```
|
||||
|
||||
## 🔧 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各服务
|
||||
|
||||
### Service Profiles
|
||||
|
||||
Control which services start:
|
||||
|
||||
```bash
|
||||
# Start only media services
|
||||
export COMPOSE_PROFILES=media
|
||||
docker compose up -d
|
||||
|
||||
# Start multiple profiles
|
||||
export COMPOSE_PROFILES=media,utilities
|
||||
docker compose up -d
|
||||
|
||||
# Start everything
|
||||
export COMPOSE_PROFILES=all
|
||||
docker compose up -d
|
||||
```
|
||||
|
||||
## 📁 Directory Structure
|
||||
|
||||
Ensure these directories exist:
|
||||
|
||||
```
|
||||
/data/ # Media storage
|
||||
├── movies/
|
||||
├── tv/
|
||||
├── music/
|
||||
└── torrents/
|
||||
|
||||
../docker-local/ # Container configs
|
||||
├── Arrs/
|
||||
│ ├── Sonarr/config/
|
||||
│ ├── Radarr/config/
|
||||
│ └── ...
|
||||
└── [service-name]/config/
|
||||
```
|
||||
|
||||
## 🔒 Security Features
|
||||
|
||||
- **No hardcoded secrets** - All sensitive data in `.env`
|
||||
- **Least privilege** - `no-new-privileges` security options
|
||||
- **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.
|
||||
|
||||
## 📝 Service URLs
|
||||
|
||||
Once running, access services at:
|
||||
|
||||
- **Homepage**: http://localhost:7575
|
||||
- **Jellyfin**: http://localhost:8096
|
||||
- **Sonarr**: http://localhost:8989
|
||||
- **Radarr**: http://localhost:7878
|
||||
- **qBittorrent**: http://localhost:7070
|
||||
- **Paperless**: http://localhost:8100
|
||||
- **FileBrowser**: http://localhost:6633
|
||||
- **RackNerd API**: http://localhost:5000
|
||||
|
||||
## 🔄 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
|
||||
|
||||
## 📄 License
|
||||
|
||||
[Add your license here]
|
||||
|
||||
---
|
||||
|
||||
**⚠️ Important**: This setup includes production credentials. Ensure `.env` is never committed to version control.
|
Reference in New Issue
Block a user