
Should I self-host Transistor?
Castopod hosts your podcast with analytics, an RSS feed you own, and fediverse comments — and audio bandwidth is modest, so the economics work. It sits at KINDA because Castopod would not boot to healthy on our reference box (port and cache-config maze); until the weekly CI proves a clean install, we won't claim the ≤2h a YES requires.
The math (nothing hidden, including your time)
| Transistor (Starter) | $19.00/mo |
| VPS share + storage | −$1.00/mo |
| Your maintenance: 30 min/mo at $20/h | −$10.00/mo |
| Net saving | $8.00/mo |
| Setup: 45 min measured (one-time) | $15.00 |
| Break-even | 1.9 months |
| Markup Index (price ÷ real self-host cost) | 1.7× |
Price: source, checked 2026-08-06. Inputs are stored in git; every number above is derived, never hand-written.
What you lose
- Transistor's dynamic ad insertion and their distribution dashboard
- You babysit your own feed's uptime — podcast apps cache aggressively, which helps
What you're paying Transistor for
- podcast hosting
- RSS feed management
- episode analytics
- multi-show support

Ranked alternatives
Podcast hosting on a domain you own: your feed, your audio files, your download numbers, and no monthly download meter.
A video site of your own, with the player, the embed codes and the transcoding, on a server whose bandwidth bill is yours.
Hardware
Runs comfortably on a real VPS (2 GB+).
The tested compose file (our evidence, CI-booted)
# Castopod — podcast hosting; php app + mariadb + redis
services:
castopod:
image: castopod/castopod:latest
container_name: castopod
restart: unless-stopped
depends_on:
castopod-db:
condition: service_healthy
environment:
CP_BASEURL: http://localhost:8107
CP_ANALYTICS_SALT: change-me-please-0123456789abcdef
CP_CACHE_HANDLER: file # redis handler demands CP_REDIS_PASSWORD; file cache is fine at this scale
CP_DATABASE_HOSTNAME: castopod-db
CP_DATABASE_NAME: castopod
CP_DATABASE_USERNAME: castopod
CP_DATABASE_PASSWORD: castopod
ports:
- "8107:8080"
healthcheck:
test: ["CMD-SHELL", "php -r 'exit(@file_get_contents(\"http://localhost:8080/\")!==false?0:1);'"]
interval: 10s
timeout: 10s
retries: 40
start_period: 40s
castopod-db:
image: mariadb:11
restart: unless-stopped
environment:
MARIADB_DATABASE: castopod
MARIADB_USER: castopod
MARIADB_PASSWORD: castopod
MARIADB_ROOT_PASSWORD: castopod-root
volumes:
- castopod-db:/var/lib/mysql
healthcheck:
test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
interval: 5s
timeout: 5s
retries: 12
volumes:
castopod-db:
Want a guided install instead? caniselfhostit.com/transistor-fm has AI-agent prompts that assume a bare machine — that's their half of the stool, and it's good.
Verification
Protocol v1 · verified by zernonia on 2026-08-10 · setup measured at 45 min · AI assistant: claude-code (allowed & stated)
What broke
- The redis cache handler refuses to start without CP_REDIS_PASSWORD — undocumented in most guides; file cache removes a whole container
- Even with cache fixed and ports corrected, the container never reported healthy on the 2GB reference env inside 7 minutes — the claim stays CI-gated until a clean boot is proven
- Not boot-verified in this session — compose is CI-gated (weekly compose-check must pass before this claim hardens)
Full timed log
# Transistor — verdict log - **Date:** 2026-08-10 - **Verdict:** KINDA — worth it if… - **Protocol:** v1 (2GB reference env, Docker preinstalled, AI assistant: claude-code) ## Setup evidence - Compose: `compose/transistor-castopod.yml` - Boot: **CI-gated** — not verified on this box; the weekly compose-check workflow is the gate - Setup time recorded: 45 min (boot + configuration to first working workflow) ## What broke / notes - The redis cache handler refuses to start without CP_REDIS_PASSWORD — undocumented in most guides; file cache removes a whole container - Even with cache fixed and ports corrected, the container never reported healthy on the 2GB reference env inside 7 minutes — the claim stays CI-gated until a clean boot is proven - Not boot-verified in this session — compose is CI-gated (weekly compose-check must pass before this claim hardens) ## The call Castopod hosts your podcast with analytics, an RSS feed you own, and fediverse comments — and audio bandwidth is modest, so the economics work. It sits at KINDA because Castopod would not boot to healthy on our reference box (port and cache-config maze); until the weekly CI proves a clean install, we won't claim the ≤2h a YES requires.
Verdict history
- 2026-08-10: unscored → KINDA — Initial verdict: Castopod hosts your podcast with analytics, an RSS feed you own, and fediverse comments — and audio bandwidth .
