No description
Find a file
Jake Walker bbfbeddc55
All checks were successful
ci/woodpecker/push/build Pipeline was successful
add podcast images
2025-01-13 13:45:52 +00:00
.woodpecker allow manual pipeline 2025-01-09 21:42:00 +00:00
templates add podcast images 2025-01-13 13:45:52 +00:00
.dockerignore web app rewrite 2025-01-10 13:30:09 +00:00
.editorconfig initial commit 2025-01-09 21:38:48 +00:00
.gitignore web app rewrite 2025-01-10 13:30:09 +00:00
.python-version initial commit 2025-01-09 21:38:48 +00:00
data.py add podcast images 2025-01-13 13:45:52 +00:00
Dockerfile update container run command 2025-01-10 13:34:31 +00:00
LICENSE update documentation 2025-01-13 13:09:23 +00:00
main.py add podcast images 2025-01-13 13:45:52 +00:00
process.py adjust normalization settings 2025-01-10 13:54:49 +00:00
pyproject.toml add podcast images 2025-01-13 13:45:52 +00:00
README.md update documentation 2025-01-13 13:09:23 +00:00
settings.py web app rewrite 2025-01-10 13:30:09 +00:00
uv.lock add podcast images 2025-01-13 13:45:52 +00:00

Podcast Server

This is a really simple project allowing for quick creation of podcasts. The server provides a simple admin panel to manage podcasts, and the ability to upload episodes. Any uploaded episodes have their audio level normalised, and are re-encoded to AAC which tends to use less disk space than original formats.

Deployment

This is designed to sit behind a reverse proxy set up with forward authentication to protect the admin panel. Although, basic authentication should work too.

services:
  server:
    image: git.jakew.me/jakew/podcast-generator:latest
    restart: unless-stopped
    environment:
      - PG_FEEDS=["mypodcast"]
    volumes:
      - data:/work

volumes:
  data:

Example reverse proxy configuration for Caddy:

podcast.example.org {
    # rewrite the base admin path to have a trailing slash
    @admin path /admin /admin/*

    # apply forward authentication to just admin routes
    # this is only an example, refer to your auth provider documentation
    forward_auth @admin https://auth.example.org {
        copy_headers X-Auth-User ...
    }

    # proxy requests to the app
    reverse_proxy podcast-server:8000
}

Environment Variables

Name Default Description
PG_DIRECTORY ./data (/data for Docker) Where any files are stored. This includes episodes, images and application data.
PG_UPLOADS_DIRECTORY ./uploads (/uploads for Docker) Where any currently uploading files are stored. This directory does not need persistence in Docker.
PG_FEEDS ["default"] A JSON array of the podcast names to be initially created.

Development

This project is made using Python and FastAPI. To get started, ensure you have Python and the uv package manager installed.

# install dependencies
uv sync

# run server in development mode
uv run fastapi dev main.py