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:
- Feed Generator: A Python script that fetches content from Podimo and transforms it into standard XML podcast feeds
- Authenticated Server: A minimal HTTP server with basic auth to protect the feeds
- 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.