podcast-generator/README.md
2025-01-13 13:09:23 +00:00

59 lines
1.9 KiB
Markdown

# 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
```