selfhost.directory

The index of self-hostable projects — ranked, categorized and served with live updates.
Own your data and stop giving it to big tech.

FeedHQ logo

Self-host FeedHQ

Lightweight self-hosted RSS/ATOM feed reader

BetaOpen SourceBSD-3-Clause
Updated2 years ago
LanguagePython
Setup difficultyAdvanced
MobileResponsive
Stars
578
Requires
Elasticsearch, PostgreSQL, Redis
Install with Python

What is FeedHQ?

FeedHQ is a Django-based feed reader you can host yourself. It handles RSS and ATOM feeds, lets you organize them into categories, and provides a responsive interface that works on phones and desktops. Articles can be saved to Pocket, Instapaper, or Readability. The reader also supports OPML import, keyboard shortcuts, syntax highlighting for code, and real-time updates via PubSubHubbub. It requires PostgreSQL, Redis, and Elasticsearch, with all settings controlled through environment variables. Development has been quiet since 2022 and the version remains at 0.2 (beta).

Should you self-host FeedHQ?

FeedHQ scores 43/100 on selfhost.directory (how scoring works) and ranks #57 of 85 in Feed Reader. It has 578 GitHub stars.

There was no stable release in the past 12 months, so check the repository's recent activity before you rely on it.

Setup is advanced: plan for several services and some ongoing maintenance. It is BSD-3-Clause-licensed and written mostly in Python.

Its closest alternative on selfhost.directory is RSSHub (85/100, 46 702 stars). It scores higher overall, so compare the two before you pick. See FeedHQ vs RSSHub side by side.

Features

  • ETag and Last-Modified support
  • Exponential backoff
  • Feed categories
  • Filter read entries
  • Hide images/media by default
  • Keyboard Navigation
  • Multiple user support
  • OPML Import
  • PubSubHubbub support
  • Reading list integration
  • RSS and ATOM support
  • Subtome support
  • Syntax highlighting

FeedHQ README

How to install FeedHQ

Install FeedHQ with Python

Environment variables
DJANGO_SETTINGS_MODULE, SECRET_KEY, ALLOWED_HOSTS, FROM_EMAIL, REDIS_URL, DATABASE_URL, DEBUG, MEDIA_ROOT, MEDIA_URL, STATIC_ROOT, STATIC_URL, SENTRY_DSN, SESSION_COOKIE_PATH, HTTPS, EMAIL_URL, ES_NODES, ES_INDEX, ES_ALIAS_TEMPLATE, ES_SHARDS, ES_REPLICAS, HEALTH_SECRET, LOG_SYSLOG, READITLATER_API_KEY, INSTAPAPER_CONSUMER_KEY, INSTAPAPER_CONSUMER_SECRET, READABILITY_CONSUMER_KEY, READABILITY_CONSUMER_SECRET

git clone https://github.com/feedhq/feedhq.git cd feedhq virtualenv -p python2 env source env/bin/activate add2virtualenv . pip install -r requirements.txt

django-admin.py create_index django-admin.py syncdb django-admin.py migrate django-admin.py collectstatic

Run workers

django-admin.py rqworker store high default low favicons

Set up cron jobs for feed updates

*/5 * * * * /path/to/env/django-admin.py updatefeeds @monthly /path/to/env/bin/django-admin.py favicons --all

Requires Python 3.4+, PostgreSQL, Redis, Elasticsearch. No Docker or pre-built packages provided.

How to configure FeedHQ

  • ALLOWED_HOSTSSpace-separated list of hosts which serve the web app

    Space-separated list of hosts which serve the web app

  • DATABASE_URLHeroku-like database URL for PostgreSQL

    Heroku-like database URL for PostgreSQL

  • DEBUGEnable Django debug mode

    Enable Django debug mode

    values: non-empty value

  • DJANGO_SETTINGS_MODULESet to feedhq.settings

    Set to feedhq.settings

  • EMAIL_URLURL for configuring email (SMTP)

    URL for configuring email (SMTP)

  • ES_ALIAS_TEMPLATEfeedhq-{0}String template for per-user Elasticsearch alias

    String template for per-user Elasticsearch alias

  • ES_INDEXfeedhqName of the Elasticsearch index

    Name of the Elasticsearch index

  • ES_NODESlocalhost:9200Space-separated list of Elasticsearch nodes

    Space-separated list of Elasticsearch nodes

  • ES_REPLICAS1Number of replicas for Elasticsearch shards

    Number of replicas for Elasticsearch shards

  • ES_SHARDS5Number of shards for Elasticsearch index

    Number of shards for Elasticsearch index

  • FROM_EMAILEmail address that sends automated emails

    Email address that sends automated emails

  • HEALTH_SECRETShared secret for /health/ endpoint protection

    Shared secret for /health/ endpoint protection

  • HTTPSConfigure FeedHQ for SSL access

    Configure FeedHQ for SSL access

    values: non-empty value

  • INSTAPAPER_CONSUMER_KEYInstapaper API consumer key

    Instapaper API consumer key

  • INSTAPAPER_CONSUMER_SECRETInstapaper API consumer secret

    Instapaper API consumer secret

  • LOG_SYSLOGSend logs to /dev/log instead of stdout

    Send logs to /dev/log instead of stdout

    values: 1

  • MEDIA_ROOTAbsolute location where media files are stored

    Absolute location where media files are stored

  • MEDIA_URL/media/URL that handles media files

    URL that handles media files

  • READABILITY_CONSUMER_KEYReadability API consumer key

    Readability API consumer key

  • READABILITY_CONSUMER_SECRETReadability API consumer secret

    Readability API consumer secret

  • READITLATER_API_KEYPocket API key for reading list integration

    Pocket API key for reading list integration

  • REDIS_URLURL for configuring Redis

    URL for configuring Redis

  • SECRET_KEYLong random string for Django secret key

    Long random string for Django secret key

  • SENTRY_DSNDSN to enable Sentry error reporting

    DSN to enable Sentry error reporting

  • SESSION_COOKIE_PATHPath set on the session cookie

    Path set on the session cookie

  • STATIC_ROOTAbsolute location where static files are stored

    Absolute location where static files are stored

  • STATIC_URL/static/URL that serves static files

    URL that serves static files

More in Feed Reader

Rate this project

Click to rate — no account needed.

0 comments

Posting as guest
Loading comments…