Podcast/audiobook caster (.NET)
  • C# 74.7%
  • HTML 23.2%
  • CSS 1.6%
  • Shell 0.3%
  • Dockerfile 0.2%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-10-22 20:12:52 +00:00
.claude claude 2026-01-26 21:13:12 +00:00
.github ci: remove smoke workflow 2026-08-28 16:01:35 +00:00
Castr docs: point registry and release docs at Forgejo 2026-10-22 20:12:40 +00:00
Castr.Tests fix: wire download queue so the downloads panel reflects real activity 2026-06-22 23:17:32 +00:00
docs/superpowers/specs docs: add log view viewport height fix implementation plan 2026-06-22 15:13:29 +00:00
.gitignore fix: persist DataProtection keys to /data volume 2026-06-18 10:57:46 +00:00
assign-issue Add GitHub Copilot issue assignment workflow and skill 2026-01-17 18:30:56 +00:00
CLAUDE.md docs: point registry and release docs at Forgejo 2026-10-22 20:12:40 +00:00
DEPLOYMENT.md docs: point registry and release docs at Forgejo 2026-10-22 20:12:40 +00:00
dotnet-tools.json fix: address review findings from extended metadata PR (#79) 2026-02-17 22:49:39 +00:00
LICENSE chore: add MIT license 2026-02-05 21:30:27 +00:00
README.md docs: point registry and release docs at Forgejo 2026-10-22 20:12:40 +00:00
YOUTUBE_WATCHER_IMPLEMENTATION.md docs: clean up stale documentation and fix cross-references 2026-02-07 21:13:39 +00:00

Castr

A self-hosted podcast RSS server that serves local MP3 directories as podcast feeds. Optionally monitors YouTube playlists and automatically downloads new episodes.

Features

  • Generates standard RSS feeds from local MP3 directories
  • Monitors YouTube playlists and auto-downloads new episodes
  • Web dashboard for managing feeds, episodes, and downloads
  • Real-time download progress via SignalR
  • ID3 tag extraction for episode metadata
  • Range request support for streaming
  • Multi-feed support from a single instance

Quickstart

Create a docker-compose.yml:

services:
  castr:
    image: forgejo.ht2.io/joezombie/castr:latest
    container_name: castr
    ports:
      - "5000:8080"
    volumes:
      - /path/to/your/podcasts:/Podcasts:rw
      - castr-data:/data:rw
    environment:
      - Dashboard__Username=admin
      - Dashboard__Password=changeme
    restart: unless-stopped

volumes:
  castr-data:
docker compose up -d

The dashboard is at http://localhost:5000 and feeds are at http://localhost:5000/feed.

Configuration

Feeds are managed entirely through the web dashboard. No appsettings.json feed configuration is needed.

The dashboard lets you create, edit, and delete feeds with all settings including YouTube playlist monitoring.

API

  • GET /feed - List all feeds
  • GET /feed/{name} - RSS feed XML
  • GET /feed/{name}/media/{file} - Stream media file

License

MIT