Skip to content
Switch branches/tags


Failed to load latest commit information.
Latest commit message
Commit time

Simple file-based podcast publisher.

In the wild:



This application is now considered as stable. No more features are planned, but feel free to suggest some if you need. Feature, fix, UX, logo, translation... any help is welcome !


....for end users

  • short feed description in the homepage.
  • list of podcasts currently in the feed in the homepage.
  • archives sorted per folder.
  • possibility to listen any episode from the web browser.
  • link to the RSS feed.
  • responsive design.

...for administrator

  • database free application.
  • recursive file search.
  • configurable without development (release frequency, theme, locale, timezone).
  • built on Lumen 6.0 and Bootstwatch 4.3.


  • a web server (tested with Apache).
  • PHP >= 7.2.
  • composer.


  1. Download the code to an empty folder:
git clone /var/www/podcast
  1. Create the configuration file:
cd /var/www/podcast && cp .env.example .env
  1. Set configuration in .env:

    • APP_KEY is a random generated string (for example 5YPcB9vVuxWf1YyjJgKhEVSg7ggvL+fD).
    • APP_TIMEZONE is the timezone (for example Europe/Paris).
    • APP_LOCALE is the locale (en or fr).
    • PODCAST_ROOT is the path to audio files (absolute path).
    • PODCAST_START is the date and time the first episode is published at (timestamp).
    • PODCAST_LENGTH is the number of episodes available in the feed (integer).
    • PODCAST_INTERVAL is the unit of PODCAST_FREQUENCY between two releases (hour, day, week or month).
    • PODCAST_FREQUENCY is the number of PODCAST_INTERVAL between two releases (integer or decimal).
    • PODCAST_TITLE is the podcast feed title.
    • PODCAST_DESCRIPTION is podcast description.
    • PODCAST_IMAGE is the podcase image URL (optional).
    • PODCAST_THEME is the theme for the web interface (see
  2. Install the dependencies:

composer install --optimize-autoloader --no-dev
  1. Point the web server to /var/www/podcast/public.


How to upload episodes?

This feature is not implemented, and there is no plan to implement it in the future. This is a KISS project focusing on publishing audio, not managing files.

To upload episodes, you have several options:

  • (S)FTP or any file manager provided by your hosting.
  • sync a server folder with a local folder.
  • sync a server folder with a file hosting service.
  • sync a server folder with a personal cloud service.
  • fork the project and implement the feature.

How are episodes sorted?

Episodes are sorted following the alphabetical order of their path relative to PODCAST_ROOT.

You are free to name folders and episodes as it suits you. If you decide to name the file with the date format YYYY-MM-DD, the episode title will be the long date format in the locale defined by APP_LOCALE.

How to publish a new episode every... ?

The release schedule is based on 3 settings:

  • PODCAST_START: date for the first episode. The two other settings will start counting from this value.
  • PODCAST_INTERVAL: iteration length. Repeated PODCAST_INTERVAL times betwwen each release.
  • PODCAST_FREQUENCY: number of iteration between each release. The value is multiply by the duration of PODCAST_FREQUENCY to wait for the next release.
Every day day 1
Every two days day 2
Twice per week day 3.5
Twice per week week 0.5
Every week week 1
Every two week week 2

What about authentication?

Authentication either requires a database or an external service. Also, authentication requires additional features like lost passwords and account activation. This is a KISS project focusing on publishing audio, avoiding any complexity.

If you want authentication, I recommend you to setup Basic access authentication at the server level.


Simple file-based podcast publisher



No releases published


No packages published