Deploying vod2pod-rss
Introduction
vod2pod-rss is a self-hosted service that converts video content from platforms like YouTube and Twitch into podcast RSS feeds. This allows you to subscribe to video channels in your favorite podcast app and listen to them as audio-only content - perfect for consuming content while driving, exercising, or any situation where watching video isn’t practical.
The application generates valid podcast RSS feeds on-the-fly and streams audio extracted from videos directly to your podcast client. It supports YouTube channels, playlists, and Twitch VODs, making it a versatile tool for turning video content into audio podcasts.
Key highlights of vod2pod-rss:
- YouTube Support: Convert channels and playlists to podcast feeds
- Twitch Support: Convert VODs from Twitch streamers
- On-Demand Extraction: Audio is extracted when requested, no storage needed
- Standard RSS: Compatible with any podcast app that supports RSS
- No Pre-Processing: Videos are converted on-the-fly as episodes are played
- Metadata Preservation: Preserves titles, descriptions, and thumbnails
- Self-Hosted: Complete control over your conversion service
- Privacy Focused: Your listening habits stay private
- Low Storage: No need to store converted files permanently
- Open Source: Fully open source project
This guide walks through deploying vod2pod-rss on Klutch.sh using Docker, configuring the service, and subscribing to feeds in your podcast app.
Why Deploy vod2pod-rss on Klutch.sh
Deploying vod2pod-rss on Klutch.sh provides several advantages:
Simplified Deployment: Klutch.sh automatically detects your Dockerfile and builds vod2pod-rss without complex configuration. Push to GitHub, and your service deploys automatically.
HTTPS by Default: Klutch.sh provides automatic SSL certificates, required for many podcast apps to accept RSS feeds.
GitHub Integration: Connect your configuration repository directly from GitHub. Updates trigger automatic redeployments.
Always-On Availability: Your podcast conversion service remains accessible 24/7, ensuring your podcast feeds are always available.
Scalable Resources: Allocate CPU and memory based on your usage patterns and number of concurrent streams.
Custom Domains: Assign a custom domain for cleaner feed URLs.
Prerequisites
Before deploying vod2pod-rss on Klutch.sh, ensure you have:
- A Klutch.sh account
- A GitHub account with a repository for your vod2pod-rss configuration
- Basic familiarity with Docker and containerization concepts
- A podcast app that supports custom RSS feeds
- (Optional) A custom domain for your vod2pod-rss instance
Preparing Your Repository
To deploy vod2pod-rss on Klutch.sh, create a GitHub repository containing your Dockerfile.
Repository Structure
vod2pod-rss-deploy/├── Dockerfile└── .dockerignoreCreating the Dockerfile
Create a Dockerfile in the root of your repository:
FROM ghcr.io/madiele/vod2pod-rss:latest
# Set environment variablesENV PORT=8080ENV HOST_URL=${HOST_URL}
# Optional: Set default transcode qualityENV TRANSCODE_QUALITY=${TRANSCODE_QUALITY:-128}
# Expose the web interface portEXPOSE 8080Creating the .dockerignore File
Create a .dockerignore file:
.git.github*.mdLICENSE.gitignore*.log.DS_Store.env.env.localEnvironment Variables Reference
| Variable | Required | Default | Description |
|---|---|---|---|
HOST_URL | Yes | - | Public URL of your instance (e.g., https://your-app.klutch.sh) |
PORT | No | 8080 | Port to listen on |
TRANSCODE_QUALITY | No | 128 | Audio bitrate in kbps |
YOUTUBE_API_KEY | No | - | YouTube API key for better metadata |
REDIS_URL | No | - | Redis URL for caching (optional) |
Deploying vod2pod-rss on Klutch.sh
Once your repository is prepared, follow these steps to deploy vod2pod-rss:
- Select HTTP as the traffic type
- Set the internal port to 8080
- Detect your Dockerfile automatically
- Build the container image
- Start the vod2pod-rss container
- Provision an HTTPS certificate
Push Your Repository to GitHub
Initialize your repository and push to GitHub. Ensure your Dockerfile is in the root of your repository.
Create a New Project on Klutch.sh
Navigate to the Klutch.sh dashboard and create a new project. Give it a descriptive name like “vod2pod” or “podcast-converter”.
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 vod2pod-rss Dockerfile.
Configure HTTP Traffic
vod2pod-rss serves its interface over HTTP. In the deployment settings:
Set Environment Variables
In the environment variables section, add:
| Variable | Value |
|---|---|
HOST_URL | https://your-app-name.klutch.sh |
TRANSCODE_QUALITY | 128 (or your preferred bitrate) |
Deploy Your Application
Click Deploy to start the build process. Klutch.sh will:
Access vod2pod-rss
Once deployment completes, access your vod2pod-rss instance at https://your-app-name.klutch.sh.
Creating Podcast Feeds
YouTube Channel Feed
Convert a YouTube channel to a podcast:
- Find the channel URL (e.g.,
https://www.youtube.com/c/ChannelName) - Use the feed generator:
https://your-app-name.klutch.sh/youtube/channel/CHANNEL_IDOr use the web interface to generate the feed URL.
YouTube Playlist Feed
Convert a playlist:
https://your-app-name.klutch.sh/youtube/playlist/PLAYLIST_IDTwitch VOD Feed
Convert Twitch VODs:
https://your-app-name.klutch.sh/twitch/CHANNEL_NAMESubscribing in Podcast Apps
Adding Feeds
Most podcast apps support custom RSS feeds:
Apple Podcasts:
- Open the Library tab
- Tap the menu icon and select “Add Show by URL”
- Paste your feed URL
Overcast:
- Tap the + button
- Select “Add URL”
- Paste your feed URL
Pocket Casts:
- Go to Search
- Tap “Add by URL”
- Paste your feed URL
AntennaPod (Android):
- Tap + to add podcast
- Select “Add Podcast by URL”
- Paste your feed URL
Feed URL Format
Your podcast feeds will follow this format:
https://your-app-name.klutch.sh/youtube/channel/UCxxxxxxxxhttps://your-app-name.klutch.sh/youtube/playlist/PLxxxxxxxxhttps://your-app-name.klutch.sh/twitch/channelnameAdvanced Configuration
Audio Quality
Adjust audio bitrate for quality vs bandwidth:
| Bitrate | Quality | Size (per hour) |
|---|---|---|
| 64 kbps | Low | ~28 MB |
| 128 kbps | Standard | ~56 MB |
| 192 kbps | High | ~84 MB |
| 320 kbps | Very High | ~140 MB |
Caching with Redis
For improved performance with multiple users:
- Deploy a Redis instance
- Set
REDIS_URLenvironment variable - Cached metadata reduces YouTube API calls
YouTube API Key
For better reliability and metadata:
- Create a project in Google Cloud Console
- Enable YouTube Data API v3
- Create an API key
- Set
YOUTUBE_API_KEYenvironment variable
Use Cases
Commute Listening
Perfect for:
- Educational YouTube channels
- Tech talks and conferences
- Podcast-style video content
- News commentary
Background Listening
Listen while:
- Working out
- Doing chores
- At work
Data Conservation
Benefits:
- Audio-only uses less data than video
- No video rendering saves battery
- Works in audio-only situations
Production Best Practices
Performance Considerations
- Resource Allocation: Transcoding requires CPU, allocate accordingly
- Concurrent Streams: Plan for expected simultaneous listeners
- Quality Settings: Balance quality vs server load
Reliability
- Monitoring: Watch for failed transcodes
- Updates: Keep yt-dlp updated for YouTube compatibility
- Rate Limits: Be aware of YouTube rate limiting
Privacy
- Access Control: Consider who has access to your instance
- No Logs: vod2pod-rss doesn’t track listening habits
- Self-Hosted: Your subscriptions remain private
Troubleshooting Common Issues
Feed Not Loading
Symptoms: Podcast app fails to load feed.
Solutions:
- Verify
HOST_URLis set correctly - Check that HTTPS is working
- Verify the source channel/playlist exists
Audio Not Playing
Symptoms: Episodes appear but don’t play.
Solutions:
- Check server logs for transcoding errors
- Verify sufficient CPU resources
- Try a different video from the feed
Outdated Episodes
Symptoms: New videos don’t appear in feed.
Solutions:
- Refresh the feed in your podcast app
- Some apps cache feeds aggressively
- Check if the source has new content
Slow Streaming
Symptoms: Audio takes long to start or buffers.
Solutions:
- Allocate more CPU resources
- Reduce transcode quality
- Check network connectivity
Additional Resources
Conclusion
Deploying vod2pod-rss on Klutch.sh gives you a personal video-to-podcast conversion service with automatic builds and secure HTTPS access. The combination of on-demand transcoding and standard RSS output means you can subscribe to any YouTube channel or Twitch streamer in your favorite podcast app.
Whether you want to listen to educational content during your commute, catch up on conference talks while exercising, or simply prefer audio over video, vod2pod-rss on Klutch.sh provides a reliable, private solution that works with any podcast app you already use.