Podcasting 2.0 with Castopod

Podcasting 2.0 with Castopod

Have you ever wanted to podcast but don't know where to begin? Well if so, Castopod is your all in one self-hosted solution. They claim that Castopod will:

"Self-host your podcasts with ease, keep control over what you create and talk to your audience without any middleman. Your podcast and your audience belong to you and you only."

Some key features they offer are:

  • Federated Social Media
  • Promotion Tools
  • Multiple Publishing Options
  • Podcasting Analytics

So now that you know what is offered, it's time to try it out.

The project does provide documentation for various types of installations, but we'll focus only on the Docker Installation that will not be used in production.

So please, don't use this config and try to make a real product off of it.

Disclaimer: This is a dev build and https is off by default (last variable in app environment). You may also need to adjust your volume locations, port numbers and PUID/PGID for each service.

version: "3.7"

services:
  app:
    image: castopod/app:develop
    container_name: "castopod-app1"
    volumes:
      - ./castopod-media:/opt/castopod/public/media
    environment:
      MYSQL_DATABASE: castopod1
      MYSQL_USER: castopod1
      MYSQL_PASSWORD: changeme1
      CP_BASEURL: "http://10.10.0.142:8087"
      CP_ANALYTICS_SALT: changeme20001
      CP_CACHE_HANDLER: redis
      CP_REDIS_HOST: redis
      CP_DISABLE_HTTPS: 1
      PUID: 1000
      PGID: 1000
    networks:
      - castopod-app1
      - castopod-db1
    restart: unless-stopped

  web-server:
    image: castopod/web-server:develop
    container_name: "castopod-web-server1"
    volumes:
      - ./castopod-media:/var/www/html/media
    environment:
      PUID: 1000
      PGID: 1000
    networks:
      - castopod-app1
    ports:
      - 8087:80
    restart: unless-stopped

  mariadb:
    image: mariadb:10.5
    container_name: "castopod-mariadb1"
    networks:
      - castopod-db1
    volumes:
      - ./castopod-db:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: changeme01
      MYSQL_DATABASE: castopod1
      MYSQL_USER: castopod1
      MYSQL_PASSWORD: changeme1
      PUID: 1000
      PGID: 1000
    restart: unless-stopped

  redis:
    image: redis:7.0-alpine
    container_name: "castopod-redis1"
    volumes:
      - ./castopod-cache:/data
    environment:
      PUID: 1000
      PGID: 1000

    networks:
      - castopod-app1

volumes:
  castopod-media:
  castopod-db:
  castopod-cache:

networks:
  castopod-app1:
  castopod-db1:

After Docker is finished pulling images and creating containers, you can log into the web GUI using your computer IP, ย port number and a trailing slash with "cp-install" at the end.

10.20.0.12:8087/cp-install

You'll have to create a super user account right away.

After logging in, you'll see the main dashboard that is available.

Your Castopod instance can host multiple podcasts and just appends the end of your base url with a trailing slash and the fediverse username you pick.

http://10.10.0.142:8087/@asdfasdf

After your podcast is created, it makes a social page for your feed

Your podcast will have it's own page with many settings that you can customize.

If you really want to take Castopod out of development and the main stream, you'll need to adapt your docker compose file and get things running with SSL and a reverse proxy. They have documentation for a reverse proxy using Caddy and there is a PR if you use LSIO Swag.

So what are you waiting for? Get out and there and get podcasting!!

Did you read the article on AzuraCast? If you're into podcasting 2.0 stuff, this might be a tool you could use to host a live (lit) stream.

Great! Next, complete checkout for full access to Noted.
You've successfully subscribed to Noted.
Success! Your account is fully activated, you now have access to all content.
Success! Your billing info has been updated.
Your billing was not updated.