Skip to content

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
└── .dockerignore

Creating the Dockerfile

Create a Dockerfile in the root of your repository:

FROM ghcr.io/madiele/vod2pod-rss:latest
# Set environment variables
ENV PORT=8080
ENV HOST_URL=${HOST_URL}
# Optional: Set default transcode quality
ENV TRANSCODE_QUALITY=${TRANSCODE_QUALITY:-128}
# Expose the web interface port
EXPOSE 8080

Creating the .dockerignore File

Create a .dockerignore file:

.git
.github
*.md
LICENSE
.gitignore
*.log
.DS_Store
.env
.env.local

Environment Variables Reference

VariableRequiredDefaultDescription
HOST_URLYes-Public URL of your instance (e.g., https://your-app.klutch.sh)
PORTNo8080Port to listen on
TRANSCODE_QUALITYNo128Audio bitrate in kbps
YOUTUBE_API_KEYNo-YouTube API key for better metadata
REDIS_URLNo-Redis URL for caching (optional)

Deploying vod2pod-rss on Klutch.sh

Once your repository is prepared, follow these steps to deploy vod2pod-rss:

    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:

    • Select HTTP as the traffic type
    • Set the internal port to 8080

    Set Environment Variables

    In the environment variables section, add:

    VariableValue
    HOST_URLhttps://your-app-name.klutch.sh
    TRANSCODE_QUALITY128 (or your preferred bitrate)

    Deploy Your Application

    Click Deploy to start the build process. Klutch.sh will:

    • Detect your Dockerfile automatically
    • Build the container image
    • Start the vod2pod-rss container
    • Provision an HTTPS certificate

    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:

  1. Find the channel URL (e.g., https://www.youtube.com/c/ChannelName)
  2. Use the feed generator:
https://your-app-name.klutch.sh/youtube/channel/CHANNEL_ID

Or use the web interface to generate the feed URL.

YouTube Playlist Feed

Convert a playlist:

https://your-app-name.klutch.sh/youtube/playlist/PLAYLIST_ID

Twitch VOD Feed

Convert Twitch VODs:

https://your-app-name.klutch.sh/twitch/CHANNEL_NAME

Subscribing in Podcast Apps

Adding Feeds

Most podcast apps support custom RSS feeds:

Apple Podcasts:

  1. Open the Library tab
  2. Tap the menu icon and select “Add Show by URL”
  3. Paste your feed URL

Overcast:

  1. Tap the + button
  2. Select “Add URL”
  3. Paste your feed URL

Pocket Casts:

  1. Go to Search
  2. Tap “Add by URL”
  3. Paste your feed URL

AntennaPod (Android):

  1. Tap + to add podcast
  2. Select “Add Podcast by URL”
  3. Paste your feed URL

Feed URL Format

Your podcast feeds will follow this format:

https://your-app-name.klutch.sh/youtube/channel/UCxxxxxxxx
https://your-app-name.klutch.sh/youtube/playlist/PLxxxxxxxx
https://your-app-name.klutch.sh/twitch/channelname

Advanced Configuration

Audio Quality

Adjust audio bitrate for quality vs bandwidth:

BitrateQualitySize (per hour)
64 kbpsLow~28 MB
128 kbpsStandard~56 MB
192 kbpsHigh~84 MB
320 kbpsVery High~140 MB

Caching with Redis

For improved performance with multiple users:

  1. Deploy a Redis instance
  2. Set REDIS_URL environment variable
  3. Cached metadata reduces YouTube API calls

YouTube API Key

For better reliability and metadata:

  1. Create a project in Google Cloud Console
  2. Enable YouTube Data API v3
  3. Create an API key
  4. Set YOUTUBE_API_KEY environment 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_URL is 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.