Initial template repository
🎬 ARR Suite Template Bootstrap - Complete Media Automation Stack Features: - 16 production services (Prowlarr, Sonarr, Radarr, Plex, etc.) - One-command Ansible deployment - VPN-protected downloads via Gluetun - Tailscale secure access - Production-ready security (UFW, Fail2Ban) - Automated backups and monitoring - Comprehensive documentation Ready for customization and deployment to any VPS. Co-authored-by: openhands <openhands@all-hands.dev>
This commit is contained in:
215
README.md
Normal file
215
README.md
Normal file
@@ -0,0 +1,215 @@
|
||||
# 🎬 ARR Suite Template Bootstrap
|
||||
|
||||
> **Complete Media Automation Stack Template** - Production-ready Ansible deployment for VPS
|
||||
|
||||
[](https://opensource.org/licenses/MIT)
|
||||
[](https://www.ansible.com/)
|
||||
[](https://www.docker.com/)
|
||||
[](https://ubuntu.com/)
|
||||
|
||||
## 🚀 **One-Command Media Server Deployment**
|
||||
|
||||
Deploy a complete, production-ready media automation stack to your VPS in **15-30 minutes** with a single Ansible command.
|
||||
|
||||
### **🎯 What You Get**
|
||||
|
||||
```
|
||||
📦 16 Production Services
|
||||
├── 🔍 Prowlarr - Indexer management
|
||||
├── 📺 Sonarr - TV show automation
|
||||
├── 🎬 Radarr - Movie automation
|
||||
├── 🎵 Lidarr - Music automation
|
||||
├── 🔞 Whisparr - Adult content (optional)
|
||||
├── 📝 Bazarr - Subtitle automation
|
||||
├── 🎭 Jellyseerr - Request management
|
||||
├── 📥 SABnzbd - Usenet downloader
|
||||
├── 🌊 Deluge - Torrent downloader
|
||||
├── 🎪 Plex - Media server
|
||||
├── 📊 Tautulli - Analytics
|
||||
├── 🔒 Gluetun - VPN protection
|
||||
├── 🛡️ Fail2Ban - Security
|
||||
├── 🔥 UFW - Firewall
|
||||
├── 🌐 Tailscale - Remote access
|
||||
└── 📈 Monitoring - Health checks
|
||||
```
|
||||
|
||||
## ⚡ **Quick Start**
|
||||
|
||||
### **Prerequisites**
|
||||
- Ubuntu 20.04+ VPS with 4GB+ RAM
|
||||
- SSH access with sudo privileges
|
||||
- Domain name (optional but recommended)
|
||||
|
||||
### **1. Clone & Configure**
|
||||
```bash
|
||||
git clone <this-repo> arr-suite
|
||||
cd arr-suite
|
||||
|
||||
# Configure your VPS details
|
||||
nano inventory/production.yml
|
||||
|
||||
# Set up your secrets
|
||||
cp group_vars/all/vault.yml.example group_vars/all/vault.yml
|
||||
ansible-vault encrypt group_vars/all/vault.yml
|
||||
ansible-vault edit group_vars/all/vault.yml
|
||||
```
|
||||
|
||||
### **2. Deploy Everything**
|
||||
```bash
|
||||
# One command deployment
|
||||
ansible-playbook -i inventory/production.yml ansible-deployment.yml
|
||||
|
||||
# Or use the helper script
|
||||
./deploy.sh
|
||||
```
|
||||
|
||||
### **3. Access Your Services**
|
||||
```
|
||||
🌐 Web Interfaces (after deployment):
|
||||
├── Prowlarr: http://your-vps:9696
|
||||
├── Sonarr: http://your-vps:8989
|
||||
├── Radarr: http://your-vps:7878
|
||||
├── Lidarr: http://your-vps:8686
|
||||
├── Bazarr: http://your-vps:6767
|
||||
├── Jellyseerr: http://your-vps:5055
|
||||
├── SABnzbd: http://your-vps:8080
|
||||
├── Deluge: http://your-vps:8112
|
||||
├── Plex: http://your-vps:32400
|
||||
└── Tautulli: http://your-vps:8181
|
||||
```
|
||||
|
||||
## 🔧 **Configuration Guide**
|
||||
|
||||
### **Required Configuration**
|
||||
|
||||
1. **VPS Details** (`inventory/production.yml`):
|
||||
```yaml
|
||||
ansible_host: YOUR_VPS_IP_ADDRESS
|
||||
ansible_user: root
|
||||
ansible_ssh_private_key_file: ~/.ssh/your_private_key
|
||||
```
|
||||
|
||||
2. **VPN Credentials** (`group_vars/all/vault.yml`):
|
||||
```yaml
|
||||
vault_vpn_provider: "nordvpn" # or surfshark, expressvpn
|
||||
vault_vpn_username: "your_vpn_username"
|
||||
vault_vpn_password: "your_vpn_password"
|
||||
```
|
||||
|
||||
3. **Optional Services** (`ansible-deployment.yml`):
|
||||
```yaml
|
||||
# Enable/disable services
|
||||
enable_whisparr: false # Adult content
|
||||
enable_tailscale: true # Remote access
|
||||
enable_plex_claim: false # Auto Plex setup
|
||||
```
|
||||
|
||||
### **VPN Providers Supported**
|
||||
- ✅ NordVPN
|
||||
- ✅ Surfshark
|
||||
- ✅ ExpressVPN
|
||||
- ✅ ProtonVPN
|
||||
- ✅ CyberGhost
|
||||
- ✅ Private Internet Access
|
||||
- ✅ Mullvad
|
||||
|
||||
## 📚 **Documentation**
|
||||
|
||||
- 📖 **[Complete Deployment Guide](ANSIBLE_DEPLOYMENT.md)** - Detailed setup instructions
|
||||
- ⚙️ **[Configuration Guide](docs/CONFIGURATION.md)** - Service configuration
|
||||
- 🔧 **[Troubleshooting](docs/TROUBLESHOOTING.md)** - Common issues & solutions
|
||||
- 🔒 **[VPN Setup](docs/VPN_CONFIGURATION.md)** - VPN provider configuration
|
||||
- 🌐 **[Service Access](docs/SERVICE_ACCESS.md)** - Web interface guide
|
||||
|
||||
## 🛡️ **Security Features**
|
||||
|
||||
- 🔒 **VPN Protection** - All downloads through encrypted VPN
|
||||
- 🛡️ **Firewall** - UFW with minimal open ports
|
||||
- 🚫 **Intrusion Prevention** - Fail2Ban protection
|
||||
- 🔐 **Encrypted Secrets** - Ansible Vault for credentials
|
||||
- 🌐 **Secure Access** - Tailscale mesh networking
|
||||
- 🔄 **Auto Updates** - Security patches automated
|
||||
|
||||
## 🎯 **Production Ready**
|
||||
|
||||
✅ **Tested on Ubuntu 22.04**
|
||||
✅ **Resource optimized** (4GB RAM minimum)
|
||||
✅ **High availability** with health checks
|
||||
✅ **Automated backups** with encryption
|
||||
✅ **Monitoring & alerts** included
|
||||
✅ **SSL/TLS ready** for domain setup
|
||||
|
||||
## 🚀 **Deployment Options**
|
||||
|
||||
### **Option 1: Full Automation (Recommended)**
|
||||
```bash
|
||||
ansible-playbook -i inventory/production.yml ansible-deployment.yml
|
||||
```
|
||||
|
||||
### **Option 2: Manual Bootstrap**
|
||||
```bash
|
||||
./bootstrap.sh # Prepare VPS
|
||||
docker-compose -f compose/docker-compose-vpn.yml up -d
|
||||
```
|
||||
|
||||
### **Option 3: Custom Services**
|
||||
```bash
|
||||
# Deploy only specific services
|
||||
ansible-playbook -i inventory/production.yml ansible-deployment.yml --tags "sonarr,radarr,plex"
|
||||
```
|
||||
|
||||
## 🔧 **Customization**
|
||||
|
||||
### **Add Your Own Services**
|
||||
1. Create service definition in `compose/`
|
||||
2. Add configuration in `templates/`
|
||||
3. Update `ansible-deployment.yml`
|
||||
|
||||
### **Custom Domains**
|
||||
```yaml
|
||||
# In group_vars/all/vault.yml
|
||||
vault_domain: "yourdomain.com"
|
||||
vault_ssl_email: "you@yourdomain.com"
|
||||
```
|
||||
|
||||
### **Resource Limits**
|
||||
```yaml
|
||||
# Adjust in ansible-deployment.yml
|
||||
docker_memory_limit: "2g"
|
||||
docker_cpu_limit: "1.0"
|
||||
```
|
||||
|
||||
## 📊 **System Requirements**
|
||||
|
||||
| Component | Minimum | Recommended |
|
||||
|-----------|---------|-------------|
|
||||
| **RAM** | 4GB | 8GB+ |
|
||||
| **Storage** | 50GB | 500GB+ |
|
||||
| **CPU** | 2 cores | 4+ cores |
|
||||
| **Network** | 100Mbps | 1Gbps |
|
||||
| **OS** | Ubuntu 20.04 | Ubuntu 22.04 |
|
||||
|
||||
## 🆘 **Support & Community**
|
||||
|
||||
- 📖 **Documentation**: Check `docs/` directory
|
||||
- 🐛 **Issues**: Open GitHub issues for bugs
|
||||
- 💬 **Discussions**: Use GitHub Discussions for questions
|
||||
- 🔧 **Troubleshooting**: See `docs/TROUBLESHOOTING.md`
|
||||
|
||||
## 📝 **License**
|
||||
|
||||
MIT License - see [LICENSE](LICENSE) file for details.
|
||||
|
||||
## 🙏 **Credits**
|
||||
|
||||
Built with ❤️ using:
|
||||
- [Ansible](https://www.ansible.com/) - Infrastructure automation
|
||||
- [Docker](https://www.docker.com/) - Containerization
|
||||
- [Gluetun](https://github.com/qdm12/gluetun) - VPN container
|
||||
- [Linuxserver.io](https://www.linuxserver.io/) - Container images
|
||||
|
||||
---
|
||||
|
||||
**⭐ Star this repo if it helped you build an awesome media server!**
|
||||
|
||||
> **Note**: This is a template repository. Customize the configuration files with your own settings before deployment.
|
||||
Reference in New Issue
Block a user