marketing-content
Transistor logo

Should I self-host Transistor?

KINDAworth it if…

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-even1.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
Castopod running from the boot-verified compose file
Castopod, running from the compose file on this page — screenshot from our verified instance, not marketing material.

Ranked alternatives

Podcast hosting on a domain you own: your feed, your audio files, your download numbers, and no monthly download meter.

ad-aures/castopod · ★ 863 · last commit 66d ago · 169,151 pulls · AGPL-3.0

A video site of your own, with the player, the embed codes and the transcoding, on a server whose bandwidth bill is yours.

Chocobozzz/PeerTube · ★ 15,246 · last commit 0d ago · AGPL-3.0

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 .