Deploying Medusa
Introduction
Medusa is an automatic video library manager for TV shows. It watches for new episodes of your favorite shows and when they are released, it finds, downloads, and processes them. Medusa can be configured to automatically download subtitles, rename files according to your preferences, and organize your library structure.
Originally a fork of SickRage and SickBeard, Medusa has evolved into a robust, actively maintained project with a modern web interface and extensive feature set. It integrates with numerous download clients, indexers, and media servers to provide a complete automation solution for TV show management.
Key highlights of Medusa:
- Automatic Episode Tracking: Monitors your shows and downloads new episodes as they air
- Quality Management: Set quality preferences and automatically upgrade to better releases
- Subtitle Downloads: Automatically finds and downloads subtitles in your preferred languages
- Smart Renaming: Rename and organize files according to customizable templates
- Multiple Indexer Support: Works with numerous Usenet and torrent indexers
- Download Client Integration: Supports SABnzbd, NZBGet, Transmission, qBittorrent, Deluge, and more
- Media Server Integration: Notifies Plex, Emby, Kodi, and other media servers of new content
- Failed Download Handling: Automatically retries with alternate releases when downloads fail
- Manual Search: Search for specific episodes when automatic search doesn’t find results
- Modern Web Interface: Clean, responsive interface for managing your library
This guide walks through deploying Medusa on Klutch.sh using Docker, configuring persistent storage, and setting up automatic TV show management.
Why Deploy Medusa on Klutch.sh
Deploying Medusa on Klutch.sh provides several advantages for automated TV library management:
Simplified Deployment: Klutch.sh automatically detects your Dockerfile and builds Medusa without complex orchestration. Push to GitHub, and your automation platform deploys automatically.
Persistent Storage: Attach persistent volumes for your configuration and media library. Your shows and settings survive container restarts.
HTTPS by Default: Klutch.sh provides automatic SSL certificates for secure remote access to your Medusa instance.
GitHub Integration: Connect your configuration repository directly from GitHub. Updates trigger automatic redeployments.
Scalable Resources: Allocate CPU and memory based on your library size and processing needs.
Always-On Availability: Your TV automation runs 24/7 without managing your own hardware.
Custom Domains: Assign a custom domain for easy access to your Medusa dashboard.
Prerequisites
Before deploying Medusa on Klutch.sh, ensure you have:
- A Klutch.sh account
- A GitHub account with a repository for your configuration
- Basic familiarity with Docker and containerization concepts
- Access to Usenet or torrent indexers
- A download client (SABnzbd, NZBGet, Transmission, etc.)
- (Optional) A custom domain for your Medusa instance
Preparing Your Repository
To deploy Medusa on Klutch.sh, create a GitHub repository containing your Dockerfile and configuration.
Repository Structure
medusa-deploy/├── Dockerfile├── README.md└── .dockerignoreCreating the Dockerfile
Create a Dockerfile in the root of your repository:
FROM lscr.io/linuxserver/medusa:latest
# Set environment variablesENV PUID=${PUID:-1000}ENV PGID=${PGID:-1000}ENV TZ=${TZ:-Etc/UTC}
# Create media directoriesRUN mkdir -p /tv /downloads
# Expose the web interface portEXPOSE 8081
# Health checkHEALTHCHECK --interval=30s --timeout=10s --start-period=60s --retries=3 \ CMD curl -f http://localhost:8081/ || exit 1Environment Variables Reference
| Variable | Required | Default | Description |
|---|---|---|---|
PUID | No | 1000 | User ID for file ownership |
PGID | No | 1000 | Group ID for file ownership |
TZ | No | Etc/UTC | Timezone for scheduling |
Deploying on Klutch.sh
- Select HTTP as the traffic type
- Set the internal port to 8081
- Detect your Dockerfile automatically
- Build the container image
- Attach the persistent volumes
- Start the Medusa container
- Provision an HTTPS certificate
Push Your Repository to GitHub
Initialize your repository and push to GitHub:
git initgit add Dockerfile .dockerignore README.mdgit commit -m "Initial Medusa deployment configuration"git remote add origin https://github.com/yourusername/medusa-deploy.gitgit push -u origin mainCreate a New Project on Klutch.sh
Navigate to the Klutch.sh dashboard and create a new project. Give it a descriptive name like “medusa” or “tv-automation”.
Create a New App
Within your project, create a new app. Connect your GitHub account if you haven’t already, then select the repository containing your Medusa Dockerfile.
Configure HTTP Traffic
Medusa serves its web interface over HTTP. In the deployment settings:
Set Environment Variables
Add the following environment variables:
| Variable | Value |
|---|---|
PUID | 1000 |
PGID | 1000 |
TZ | Your timezone (e.g., America/New_York) |
Attach Persistent Volumes
Add the following volumes:
| Mount Path | Recommended Size | Purpose |
|---|---|---|
/config | 5 GB | Configuration, database, and logs |
/tv | 500+ GB | TV show library |
/downloads | 100+ GB | Download staging area |
Deploy Your Application
Click Deploy to start the build process. Klutch.sh will:
Access Medusa
Once deployment completes, access your Medusa instance at https://example-app.klutch.sh.
Initial Configuration
First-Time Setup
When you first access Medusa:
- Navigate to Settings > General
- Set your preferred language and timezone
- Configure API key for remote access
Adding Indexers
Configure search providers:
- Go to Settings > Search Providers
- Add your Usenet indexers (Newznab-compatible)
- Add your torrent indexers
- Set provider priorities
Configuring Download Clients
Set up your download client:
- Navigate to Settings > Search Settings
- Configure Usenet client (SABnzbd, NZBGet)
- Configure Torrent client (Transmission, qBittorrent, Deluge)
- Test connections
Media Server Integration
Connect to your media server:
- Go to Settings > Notifications
- Enable your media server (Plex, Emby, Kodi)
- Configure connection details
- Test notifications
Adding Shows
Adding a New Show
- Click Shows > Add Shows
- Search for your show by name
- Select the correct result from TVDB/TMDB
- Choose quality settings
- Select root folder for storage
- Set initial episode status
Quality Settings
Configure quality preferences:
- Initial: Quality for new downloads
- Archive: Quality for older episodes
- Preferred: Trigger upgrades to this quality
- Allowed: All acceptable quality levels
Episode Status
Set how Medusa handles existing episodes:
- Wanted: Download episodes
- Skipped: Ignore episodes
- Ignored: Never download
- Archived: Already have in best quality
Automation Features
Automatic Searches
Medusa runs searches automatically:
- Daily Search: Looks for episodes that aired recently
- Backlog Search: Finds missing older episodes
- Proper Search: Finds corrected releases
Post-Processing
Configure what happens after downloads:
- Go to Settings > Post Processing
- Enable automatic post-processing
- Set renaming pattern
- Configure file operations (move, copy, link)
Subtitle Downloads
Enable automatic subtitle downloads:
- Go to Settings > Subtitles
- Enable subtitle downloads
- Select preferred languages
- Choose subtitle services (OpenSubtitles, Addic7ed, etc.)
File Organization
Renaming Patterns
Customize file naming with patterns:
# Example patterns%SN - S%0SE%0E - %EN # Show Name - S01E01 - Episode Name%S.N.S%0SE%0E.%EN # Show.Name.S01E01.Episode.Name%SN/Season %S/%SN - S%0SE%0E # Organized in foldersAvailable Variables
| Variable | Description |
|---|---|
%SN | Show Name |
%S.N | Show Name (with dots) |
%S | Season Number |
%0S | Season Number (zero-padded) |
%E | Episode Number |
%0E | Episode Number (zero-padded) |
%EN | Episode Name |
%Y | Year |
%Q | Quality |
Security
Authentication
Protect your Medusa instance:
- Go to Settings > General
- Set username and password
- Enable authentication
API Security
For API access:
- Generate a secure API key
- Use the API key for remote access
- Limit API access to trusted applications
Troubleshooting
Shows Not Downloading
- Verify indexers are configured correctly
- Check download client connection
- Review logs for search errors
- Ensure shows are set to “Wanted” status
Post-Processing Failing
- Check file permissions
- Verify destination path exists
- Review naming pattern syntax
- Check available disk space
Subtitles Not Found
- Enable multiple subtitle providers
- Check provider credentials
- Verify show naming is correct for matches
Additional Resources
- Medusa GitHub Repository
- Medusa Wiki
- Medusa Discord
- Klutch.sh Persistent Volumes
- Klutch.sh Deployments
Conclusion
Deploying Medusa on Klutch.sh gives you a powerful, automated TV show management system that runs 24/7. With extensive indexer support, download client integration, and media server notifications, Medusa automates the entire process of finding, downloading, and organizing your TV library.
The combination of Medusa’s feature-rich automation and Klutch.sh’s reliable infrastructure means you can build and maintain a well-organized TV collection without manual intervention. Simply add your shows, configure your preferences, and let Medusa handle the rest.