Host your own podcasts on your server.
My brother recently started podcasting, and in order to help publish his podcasts, I created a Go (golang) application that runs on my server. I have decided to create an open source version of this application and release it here.
/health
- Simply returns a200 OK
response with aUp!
message as the body. This can be used by frontend web servers such as Haproxy to check whether this server is running./{podcast_name}/feed.xml
- This is the feed for a configured podcast. This is what will be used by podcasting applications, or by Apple, Spotify, etc.
- Download the relevant binary file from the releases section of this repository.
- Run the binary file from the command line interface of your server:
./Podcaster
. Run it with the-config "path/to/config.yaml"
option if you want to specify a config file. The default location for the config file is:/etc/podcaster/config.yaml
. If no config file is found at the default location (or at the location specified), one will be automatically created on first run.
To run this application within a docker container:
- Build the docker image:
docker build -t Podcaster .
- Run a docker container:
docker run --name Podcaster --restart always -v "path/to/config/directory":/etc/podcaster -v "path/to/data/directory":/var/podcaster -d Podcaster
- Restart the docker container if you make changes to the data directory later:
docker restart Podcaster
- Make sure the
shortname
field in the.yaml
file for each podcast does not contain spaces or special characters. This will be used in the URL for the podcast feed. href
field must contain the location of your podcast's cover art. This location must be relative to the data directory. For instance if you want the URL for the cover art to behttps://www.domain.tld/media/images/podcast_name.jpeg
, this field must contain:/media/images/podcast_name.jpeg
and the file should be stored indata/directory/media/images/podcast_name.jpg
.url
field in the episode configuration must meet the same requirements as thehref
field mentioned above.file
field in the episode configuration must contain the on disk location of your podcast media (audio/video) files relative to the data directory. For example, if you want to serve the media file fromhttps://www.domain.tld/media/podcast_name/s01e01.mp3
, you should store it in thedata/directory -> media -> podcast_name
directory and name its01e01.mp3
. You must then put/media/podcast_name/s01e01.mp3
as the value for thefile
field.
If you want to suggest a change or fix something, feel free to send me a pull request.
This project is licensed under the GNU GPLv3 license.