Files
ssmithxandClaude Opus 5.5 3215da07ed feat: installable FIPS-aware player for any podcast RSS feed
The player now takes any RSS feed URL as well as a podsteadr server,
and plays podsteadr feeds hosted on the FIPS mesh.

A browser can't speak FIPS, and an HTTPS page can't fetch or play
http:// URLs, so .fips URLs are routed one of two ways (src/lib/net.ts):
- served over the mesh (http://<npub>.fips:8097/), the page fetches
  .fips URLs directly over the device's own FIPS connection;
- served over HTTPS (player.atobitcoin.io), .fips URLs are rewritten to
  the host's /fips/<host>/<port>/<path> gateway, which relays only
  podsteadr feeds (8095) and blossom blobs (8098) over the host's FIPS
  link (deploy/player-domain.conf).

Also:
- "Add" accepts a feed, an OPML catalog, or a server address and works
  out which; old saved servers migrate to the new subscription format
- PWA: manifest, icons, service worker caching only the app shell
  (never feeds, audio or the gateway), install button, safe areas
- lock-screen controls and artwork via the Media Session API
- artwork, dates and durations in the episode list
- no secure-context-only APIs on the mesh copy (randomUUID, clipboard)
- buying episodes over FIPS is refused with a clear message: NIP-98
  signs the server's public URL, which a .fips address never matches

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 17:16:38 +00:00
..

Deploying podsteadr-player on podsteadr

Two ways in, one container:

URL How .fips feeds load Installable / offline
https://player.atobitcoin.io via the host's /fips/ gateway (player-domain.conf) yes
http://<node-npub>.fips:8097/ directly, over the device's own FIPS connection no (plain http)

Container

Source lives at /var/lib/archipelago/podsteadr-player-src (the path restore-podsteadr.sh restores from at boot):

cd /var/lib/archipelago/podsteadr-player-src
podman-compose build && podman-compose up -d     # serves :8097

Mesh access

Allow the container's port through the fips0 default-deny baseline, in the hand-maintained /etc/fips/fips.d/90-podsteadr.nft, then reload:

tcp dport 8097 accept
sudo nft -f /etc/fips/fips.nft

HTTPS domain + gateway

  1. Install only the port-80 server block from player-domain.conf as /etc/nginx/sites-available/player-domain, symlink it into sites-enabled, nginx -t && systemctl reload nginx.
  2. sudo certbot certonly --nginx -d player.atobitcoin.io
  3. Install the full player-domain.conf, nginx -t, reload.