No description https://nrss.timharek.no
  • Go 97%
  • Shell 1.2%
  • Dockerfile 1%
  • Pkl 0.5%
  • CSS 0.3%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Tim Hårek Andreassen 5474c0e1fa
All checks were successful
ci / check (push) Successful in 2m2s
release / check (push) Successful in 2m5s
release / ci (push) Successful in 0s
release / image (push) Successful in 2m47s
Initial commit
2026-10-18 10:54:54 +02:00
.forgejo/workflows Initial commit 2026-10-18 10:54:54 +02:00
cmd/nrss-go Initial commit 2026-10-18 10:54:54 +02:00
internal Initial commit 2026-10-18 10:54:54 +02:00
scripts Initial commit 2026-10-18 10:54:54 +02:00
.air.toml Initial commit 2026-10-18 10:54:54 +02:00
.dockerignore Initial commit 2026-10-18 10:54:54 +02:00
.gitignore Initial commit 2026-10-18 10:54:54 +02:00
.golangci.toml Initial commit 2026-10-18 10:54:54 +02:00
compose.yaml Initial commit 2026-10-18 10:54:54 +02:00
Dockerfile Initial commit 2026-10-18 10:54:54 +02:00
go.mod Initial commit 2026-10-18 10:54:54 +02:00
go.sum Initial commit 2026-10-18 10:54:54 +02:00
hk.pkl Initial commit 2026-10-18 10:54:54 +02:00
LICENSE Initial commit 2026-10-18 10:54:54 +02:00
mise.lock Initial commit 2026-10-18 10:54:54 +02:00
mise.toml Initial commit 2026-10-18 10:54:54 +02:00
README.md Initial commit 2026-10-18 10:54:54 +02:00

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_URL to the public URL. Chapter URLs in the feeds are built from it. If it is unset, they are derived from each request's Host and X-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 run docker 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.