Ideas, experiments, and ongoing thoughts...

From Podimo to Apple Podcasts: Building a Secure Feed Bridge

Like many podcast enthusiasts, I’ve been a Podimo subscriber for years, great content, but an app experience that leaves much to be desired. Rather than complain, I decided to do what any self-respecting hacker would: build my own workaround.

The Challenge

Podimo keeps their podcasts in a walled garden, with no way to use their content in other podcast players like Apple Podcasts. This weekend, I set out to change that with a little API exploration and some creative problem-solving.

The Solution: Podimo2Apple

After a few hours of API digging, I built a complete bridge system with three key components:

  1. Feed Generator: A Python script that fetches content from Podimo and transforms it into standard XML podcast feeds
  2. Authenticated Server: A minimal HTTP server with basic auth to protect the feeds
  3. Secure Tunnel: A Cloudflare Tunnel to make everything accessible without exposing ports

The Technical Implementation

The core of the solution is surprisingly simple. I created a custom HTTP server in Python that handles basic authentication:

class AuthHandler(SimpleHTTPRequestHandler):
    def __init__(self, *args, username=None, password=None, **kwargs):
        self.username = username
        self.password = password
        self.auth_string = f"{username}:{password}"
        super().__init__(*args, **kwargs)
    
    def authenticate(self):
        auth_header = self.headers.get('Authorization')
        
        if auth_header is None or not auth_header.startswith('Basic '):
            self.send_auth_request()
            return False
        
        auth_decoded = base64.b64decode(auth_header[6:]).decode('utf-8')
        
        if auth_decoded != self.auth_string:
            self.send_auth_request()
            return False
        
        return True

This server exposes the XML feed files generated by the main application.

But things get interesting when we combine this with Cloudflare Tunnels.

Cloudflare Tunnels

Instead of opening ports and configuring DNS,

Cloudflare Tunnels creates an encrypted connection from my local server to Cloudflare’s edge network:

# ~/.cloudflared/config.yml
tunnel: [tunnel-id]
credentials-file: /home/charles/.cloudflared/[tunnel-id].json

ingress:
  - hostname: feeds.mydomain.com
    service: http://localhost:8000
  - service: http_status:404

With this setup, I can securely access my podcast feeds from anywhere using a URL like:

https://username:password@feeds.mydomain.com/my-favorite-show.xml

Making It Production-Ready

To ensure reliability, I have created systemd services for each component:

The Podimo2Apple app that fetches and generates feeds.

The HTTP server that serves the feeds with authentication

The Cloudflare Tunnel that provides secure access

These services automatically start at boot and restart if anything crashes, creating a truly “set it and forget it” solution.

The Results

Now I can enjoy all my Podimo content in Apple Podcasts (or any podcast player that supports custom feeds). The setup has been running flawlessly for several days with minimal resource usage.

The best part? I didn’t have to:

  • Open any ports on my firewall
  • Setup complex reverse proxies
  • Configure SSL certificates
  • Deal with dynamic DNS

Beyond Podcasts

While I built this specifically for Podimo, the same approach can be used for any content that needs secure, authenticated access:

  • Private file sharing
  • Internal documentation
  • Personal APIs
  • Media libraries

The combination of a minimal Python server with Cloudflare Tunnels provides an elegant solution for securely exposing local services without the complexity of traditional web hosting.

Wrapping Up

When platforms restrict how we access content we pay for, a bit of technical creativity can restore the freedom to use our preferred tools. This side project was a satisfying weekend hack that continues to improve my daily podcast experience.

As a bonus, the entire setup runs on free services (aside from my Podimo subscription, of course) and requires minimal server resources.

← Back to Articles