59 lines
1.9 KiB
Markdown
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
|
|
```
|