[{"data":1,"prerenderedAt":113},["ShallowReactive",2],{"$f3k6w5a9hnpfi0":3},{"site":4,"app":16,"alternatives":70,"compose":108,"log":109,"changelog":110},{"hourly_rate_usd":5,"break_even_window_mo":6,"reference_env":7,"attribution":8},20,18,"Fresh Debian 12, Docker + Compose preinstalled, 2 GB RAM \u002F 2 vCPU ($5-class VPS)",{"caniselfhostit":9},{"name":10,"url":11,"repo":12,"license":13,"author":14,"note":15},"caniselfhostit.com","https:\u002F\u002Fcaniselfhostit.com","https:\u002F\u002Fgithub.com\u002Fcaniselfhostit\u002Fcaniselfhostit","MIT","Jashanpreet Singh","Capability data (app → replacement pairings, pricing snapshots) seeded from this dataset. They answer 'can you run it, and how' — go there for guided installs.",{"id":17,"name":18,"domain":19,"category":20,"price_usd_mo":21,"price_plan":22,"price_unit":23,"price_source":24,"price_checked":25,"links":26,"jobs":28,"verdict":33,"alternatives":34,"provenance":37,"verdict_reason":40,"what_you_lose":41,"economics":44,"hardware_tier":48,"verified":49,"compose":57,"derived":62},"transistor-fm","Transistor","transistor.fm","marketing-content",19,"Starter","flat","https:\u002F\u002Ftransistor.fm\u002Fpricing\u002F","2026-08-06",{"caniselfhostit":27},"https:\u002F\u002Fcaniselfhostit.com\u002Ftransistor-fm",[29,30,31,32],"podcast hosting","RSS feed management","episode analytics","multi-show support","KINDA",[35,36],"castopod","peertube",{"capability_seed":38,"decision_layer":39},"caniselfhostit","original","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.",[42,43],"Transistor's dynamic ad insertion and their distribution dashboard","You babysit your own feed's uptime — podcast apps cache aggressively, which helps",{"vps_share_usd_mo":45,"storage_usd_mo":46,"maint_min_mo":47},1,0,30,"vps",{"by":50,"at":51,"protocol":52,"setup_min":53,"assistant":54,"evidence":55,"what_broke":58},"zernonia","2026-08-10","v1",45,"claude-code",[56,57],"logs\u002Ftransistor-fm.md","compose\u002Ftransistor-castopod.yml",[59,60,61],"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)",{"hourly_rate_usd":5,"self_host_cost_usd_mo":63,"net_saving_usd_mo":64,"setup_cost_usd":65,"break_even_months":66,"break_even_date":67,"markup_index":68,"primary_abandoned":69,"verdict_stale":69},11,8,15,1.88,"2026-10-06",1.73,false,[71,90],{"id":35,"name":72,"tagline":73,"repo":74,"site":75,"docker_image":76,"license":77,"category":20,"resources":78,"provenance":83,"metrics":84},"Castopod","Podcast hosting on a domain you own: your feed, your audio files, your download numbers, and no monthly download meter.","ad-aures\u002Fcastopod","https:\u002F\u002Fcastopod.org","castopod\u002Fcastopod","AGPL-3.0",{"ram_min_mb":79,"disk_gb":80,"arm64":81,"containers":82,"external_db":81},2048,10,true,3,{"capability_seed":38,"decision_layer":39},{"id":35,"stars":85,"last_commit":86,"latest_release":87,"docker_pulls":88,"open_issues":46,"fetched_at":89},863,"2026-06-05T19:47:06Z",null,169151,"2026-08-11T03:55:17.927Z",{"id":36,"name":91,"tagline":92,"repo":93,"site":94,"license":77,"category":95,"resources":96,"provenance":98,"metrics":99},"PeerTube","A video site of your own, with the player, the embed codes and the transcoding, on a server whose bandwidth bill is yours.","Chocobozzz\u002FPeerTube","https:\u002F\u002Fjoinpeertube.org","photos-media",{"ram_min_mb":79,"disk_gb":97,"arm64":81,"containers":82,"external_db":81},40,{"capability_seed":38,"decision_layer":39},{"id":36,"stars":100,"last_commit":101,"latest_release":102,"docker_pulls":87,"open_issues":106,"fetched_at":107},15246,"2026-08-10T15:04:23Z",{"tag":103,"published_at":104,"url":105},"v8.2.4","2026-08-04T07:28:52Z","https:\u002F\u002Fgithub.com\u002FChocobozzz\u002FPeerTube\u002Freleases\u002Ftag\u002Fv8.2.4",688,"2026-08-11T03:55:29.036Z","# Castopod — podcast hosting; php app + mariadb + redis\nservices:\n  castopod:\n    image: castopod\u002Fcastopod:latest\n    container_name: castopod\n    restart: unless-stopped\n    depends_on:\n      castopod-db:\n        condition: service_healthy\n    environment:\n      CP_BASEURL: http:\u002F\u002Flocalhost:8107\n      CP_ANALYTICS_SALT: change-me-please-0123456789abcdef\n      CP_CACHE_HANDLER: file # redis handler demands CP_REDIS_PASSWORD; file cache is fine at this scale\n      CP_DATABASE_HOSTNAME: castopod-db\n      CP_DATABASE_NAME: castopod\n      CP_DATABASE_USERNAME: castopod\n      CP_DATABASE_PASSWORD: castopod\n    ports:\n      - \"8107:8080\"\n    healthcheck:\n      test: [\"CMD-SHELL\", \"php -r 'exit(@file_get_contents(\\\"http:\u002F\u002Flocalhost:8080\u002F\\\")!==false?0:1);'\"]\n      interval: 10s\n      timeout: 10s\n      retries: 40\n      start_period: 40s\n  castopod-db:\n    image: mariadb:11\n    restart: unless-stopped\n    environment:\n      MARIADB_DATABASE: castopod\n      MARIADB_USER: castopod\n      MARIADB_PASSWORD: castopod\n      MARIADB_ROOT_PASSWORD: castopod-root\n    volumes:\n      - castopod-db:\u002Fvar\u002Flib\u002Fmysql\n    healthcheck:\n      test: [\"CMD\", \"healthcheck.sh\", \"--connect\", \"--innodb_initialized\"]\n      interval: 5s\n      timeout: 5s\n      retries: 12\nvolumes:\n  castopod-db:\n","# Transistor — verdict log\n\n- **Date:** 2026-08-10\n- **Verdict:** KINDA — worth it if…\n- **Protocol:** v1 (2GB reference env, Docker preinstalled, AI assistant: claude-code)\n\n## Setup evidence\n\n- Compose: `compose\u002Ftransistor-castopod.yml`\n- Boot: **CI-gated** — not verified on this box; the weekly compose-check workflow is the gate\n- Setup time recorded: 45 min (boot + configuration to first working workflow)\n\n## What broke \u002F notes\n\n- The redis cache handler refuses to start without CP_REDIS_PASSWORD — undocumented in most guides; file cache removes a whole container\n- 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\n- Not boot-verified in this session — compose is CI-gated (weekly compose-check must pass before this claim hardens)\n\n## The call\n\nCastopod 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.\n",[111],{"date":51,"app":17,"from":87,"to":33,"reason":112},"Initial verdict: Castopod hosts your podcast with analytics, an RSS feed you own, and fediverse comments — and audio bandwidth .",1786459422213]