How to Install and Set Up Castopod for Your Podcast

Are you ready to take full control of your podcast hosting? Whether you’re tired of limitations on commercial platforms or simply want to own your podcast data, Castopod is a powerful open-source option designed with modern podcasters in mind.

In this guide, we’ll walk you through how to install and set up Castopod using Docker or manual installation. We’ll also help you get your first episode published and ready to share with the world.


What is Castopod?

Castopod is a self-hosted podcasting platform designed to give podcasters freedom, flexibility, and modern features. It supports Podcasting 2.0 tags, ActivityPub (for decentralized social sharing), and gives you full control over your feed, episodes, analytics, and monetization.


Prerequisites

Before installing Castopod, make sure you have the following:

  • A Linux-based server (Ubuntu 20.04+ recommended) or VPS
  • Root or sudo access
  • A domain name (optional, but recommended for HTTPS)
  • Docker & Docker Compose installed (for Docker-based install)
  • PHP 8.1+, Composer, MySQL/MariaDB (for manual install)
  • Basic command-line knowledge

Installation Options

Castopod can be installed in two main ways:

Option 1: Docker (Recommended)

This is the easiest and most reliable way to deploy Castopod. Docker ensures all services are isolated and simplifies future updates.

Option 2: Manual (PHP + MySQL)

Ideal if you’re on shared hosting or need full control over every aspect of your environment.


Installing Castopod with Docker

Step 1: Clone the Repository

git clone https://code.castopod.org/adaures/castopod.git
cd castopod

Step 2: Set Up Your 

.env

 File

Copy the example .env.docker file:

cp .env.docker .env

Then edit the .env file and configure the following:

  • APP_URL=https://yourdomain.com
  • DB_USERNAME=castopod
  • DB_PASSWORD=your_secure_password
  • DB_DATABASE=castopod

Also, make sure to set your email address for SSL generation.

Step 3: Launch Castopod

docker compose up -d

After a few minutes, Castopod should be running on your server. Visit your server’s IP or domain in your browser.

Reference: Castopod Docs – Docker Install


Installing Castopod Manually (Non-Docker)

This method gives you full control and is suited for environments without Docker.

Step 1: Install Dependencies

Make sure your server has the following:

  • PHP 8.1 or higher
  • Composer
  • MySQL or MariaDB
  • Nginx or Apache

Step 2: Clone Castopod

git clone https://code.castopod.org/adaures/castopod.git
cd castopod
composer install --no-dev

Step 3: Create the 

.env

 File

Copy the example and configure it:

cp .env.example .env

Edit the file with your database and mail settings.

Step 4: Create the Database

Log into MySQL or MariaDB and run:

CREATE DATABASE castopod CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

Step 5: Run Setup Commands

php castopod migrate
php castopod admin:create

You’ll be prompted to create an admin user for the web interface.

Step 6: Set Up Cron Jobs

To ensure feeds and background tasks run automatically, set up a cron job:

* * * * * php /path/to/castopod/artisan schedule:run >> /dev/null 2>&1

Reference: Castopod Docs – Manual Install


First-Time Setup via Web Interface

Once installed, visit your domain or IP address in a web browser.

  1. Log in using your admin credentials.
  2. Create your first podcast: name, description, cover art, and license.
  3. Adjust visibility and language settings.
  4. Set categories to help with podcast directories.

Publishing Your First Episode

With your podcast created, it’s time to upload your first episode.

  1. Click “Episodes” and then “Add New.”
  2. Upload your audio file (MP3 recommended).
  3. Fill out the episode title, description, and optional show notes.
  4. Add chapters, transcript files (e.g., .vtt or .json), or artwork if desired.
  5. Choose the publish date and status (draft, scheduled, or public).

Podcast Directory & Indexing

After publishing:

  • Your feed is available at: https://yourdomain.com/@yourpodcast/feed

Submit your feed to major podcast platforms:

If you’ve enabled ActivityPub, Castopod can also act like a social account, letting users follow your podcast on Mastodon or other Fediverse platforms.


Tips and Best Practices

  • Backup your database and uploaded media regularly.
  • Use NGINX Proxy Manager for simplified HTTPS and domain routing.
  • Enable Podcasting 2.0 tags for support of chapters, transcripts, and monetization.
  • Integrate Lightning Wallets to receive Boosts and streaming sats (Value 4 Value).
  • Check for updates regularly via Git or Docker rebuilds.

Wrapping Up

Installing Castopod gives you full control over your podcast, your data, and your future. Whether you’re focused on decentralization, monetization, or freedom from big platforms, Castopod has you covered.

Have questions? Share them in the comments.

Already using Castopod? We’d love to hear how it’s working for you.


Useful Links

4 thoughts on “How to Install and Set Up Castopod for Your Podcast

  1. Nick

    Additonally there is this error:
    docker compose up -d
    no configuration file provided: not found

    • Randy Black Post author

      “no configuration file provided: not found” is means that docker does not have a configuration file to build the container. Are you sure that you created/generated one and placed it in the correct location?

  2. nick

    Hi this seems clear, just wanted to clairfy these points:
    these are what I see in the database section which differ from what you list:
    database.default.hostname=”localhost”
    database.default.database=”castopod”
    database.default.username=”root”
    database.default.password=”****”
    database.default.DBPrefix=”cp_”
    Looks like they want a root password in this one.

    Also Also, make sure to set your email address for SSL generation.
    Is this in the Email configuration?
    eg:
    # email.fromEmail=””
    # email.SMTPHost=”your_smtp_host”
    # email.SMTPUser=”your_smtp_user”
    # email.SMTPPass=”your_smtp_password”

    Thanks for any clarification, I’ve been trying to install this package every which way but the preresuquisites for manual config are thorny and hard to locate.

    • Randy Black Post author

      “root” as the username is what you would be setting as the username. It is not related to a username for the server you are installing this on.

      As for the SSL certificate generation, the email address should be all that is needed since it uses Let’s Encrypt’s ACME service to obtain the certificate.

Comments are closed.