Skip to content

FeedKeeper 0.20.0

Choose a tag to compare

@visualfusion visualfusion released this 09 Oct 18:21

FeedKeeper v0.20.0 updates feeds in parallel, so a slow source no longer holds up the rest. It uses the existing Node process and SQLite database, with no additional services to run.

What's New in v0.20.0

Feed updates

  • Several feeds at once: Scheduled and manual refreshes, subscriptions and OPML imports share a queue. Defaults allow four concurrent feeds and two requests per source hostname.
  • Retries without blocking: Temporary failures retry with backoff. Sources' Retry-After requests are respected, and unfinished updates resume after a restart.
  • Clearer refresh feedback: The web reader shows when an update is still pending, in English, German and Japanese.

Notifications and operation

  • Separate notification queue: Slow push services no longer occupy feed workers. Pending notifications resume after a restart; concurrent refreshes of one feed do not send duplicate notifications.
  • Settings and logs: Configure concurrency and timeouts, and monitor queue delay, throughput and errors without logging private feed URLs.

Upgrade notes

Back up the database before updating. The two new migrations run automatically. Run one application process per database and allow 45 seconds for shutdown. The updated Docker Compose file includes the polling settings and shutdown grace period; existing installations should adopt those changes.

On hosts with little memory, start with POLL_CONCURRENCY=2 and POLL_HOST_CONCURRENCY=1. See Feed polling for the settings and rollback guidance.


Quick start with Docker

mkdir feedkeeper && cd feedkeeper
curl -fsSLO https://raw.githubusercontent.com/visualfusion/feedkeeper/main/compose.yaml
echo "SESSION_SECRET=$(openssl rand -hex 32)" > .env
docker compose up -d

Open http://localhost:3000 to complete setup. For a public domain, add PUBLIC_URL=https://your.domain to .env.

README · Changelog · Documentation