# 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. ```docker 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: ```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](https://www.python.org/) and the [uv](https://docs.astral.sh/uv/) package manager installed. ```bash # install dependencies uv sync # run server in development mode uv run fastapi dev main.py ```