- Go 97%
- Shell 1.2%
- Dockerfile 1%
- Pkl 0.5%
- CSS 0.3%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| .forgejo/workflows | ||
| cmd/nrss-go | ||
| internal | ||
| scripts | ||
| .air.toml | ||
| .dockerignore | ||
| .gitignore | ||
| .golangci.toml | ||
| compose.yaml | ||
| Dockerfile | ||
| go.mod | ||
| go.sum | ||
| hk.pkl | ||
| LICENSE | ||
| mise.lock | ||
| mise.toml | ||
| README.md | ||
nrss-go
nrss-go turns NRK Radio podcasts and series into RSS feeds that any podcast app can subscribe to.
It is a "fork" of NRSS by Olav Sundfør: a rewrite in Go that fetches from NRK the same way and serves the same feed URLs, so existing NRSS subscribers can move over with a domain redirect.
It is written in Go to be lightweight and easy to self-host: one static binary with an embedded database (PocketBase), no Node or Deno runtime and no external services.
Feeds
/api/feeds/{seriesId}: the RSS feed for a series./api/feeds/{seriesId}/{episodeId}/chapters: chapters in the Podcasting 2.0 JSON format.
Search for a series on the front page to get its feed URL.
Self-hosting with Docker
docker compose up -d
compose.yaml runs the image
src.timharek.no/tim/nrss-go:latest on port 8080 and keeps its data in a
volume mounted at /data. To build from this checkout instead, uncomment
build: . in it. Without Compose:
docker run -d -p 8080:8080 -v nrss-go-data:/data \
-e HOST_URL=https://radio.example.com \
src.timharek.no/tim/nrss-go:latest
- Put a TLS reverse proxy in front of it and set
HOST_URLto the public URL. Chapter URLs in the feeds are built from it. If it is unset, they are derived from each request'sHostandX-Forwarded-Proto. - Run exactly one container per data volume. SQLite has a single writer.
- PocketBase's admin UI is at
/_/. On first boot the container logs a link for creating the superuser. Create it before the instance is public, or rundocker exec <container> /nrss-go superuser upsert EMAIL PASS.
Development
Tools are managed with mise:
mise install
mise run dev # http://127.0.0.1:8090, with live reload
mise run test
mise run check
License
nrss-go is derived from NRSS and is licensed, like NRSS, under the GNU Affero General Public License v3.0.