πŸ“° Newspipe

July 6, 2026 Β· View on GitHub

πŸ“° Newspipe

A self-hosted web news aggregator β€” own your feeds, your data, and your reading.

License: AGPL v3 Python Version Last commit GitHub Sponsors

Built with Flask Β· asyncio Β· SQLAlchemy

Newspipe Home page


✨ Features

  • πŸ‘₯ Multi-user β€” a single Newspipe instance serves many users
  • πŸ”Œ API β€” manage feeds programmatically and plug in your own crawler
  • πŸ“¦ Data liberation β€” export and import your whole account as JSON
  • πŸ” OPML β€” import and export your feeds with OPML files
  • πŸ” Search & favorites β€” find and bookmark the articles that matter
  • πŸ’€ Inactive feed detection β€” keep your feed list clean
  • πŸ”– Bookmarks β€” full bookmark management, with import from Pinboard
  • πŸ“ Notes β€” write notes on articles and review them all on a dedicated page
  • 🌍 Internationalization β€” available in English, French, and German
  • πŸ” LDAP β€” optional LDAP authentication (see the example config)
  • πŸŒ— Themes β€” light and dark interfaces out of the box

πŸš€ Quick start

Assuming you already have git, poetry, npm, and Python >= 3.13 installed:

git clone https://github.com/cedricbonhomme/newspipe
cd newspipe/
npm ci
poetry install
poetry shell
pybabel compile -d newspipe/translations
export NEWSPIPE_CONFIG=sqlite.py
flask db_init
flask db stamp head
flask create_admin --nickname <nickname> --password <password>
flask run --debug

Then open http://127.0.0.1:5000 and sign in. πŸŽ‰

🐘 Using PostgreSQL

Customize the provided example configuration file (instance/config.py):

sudo apt-get install postgresql
cp instance/config.py instance/postgresql.py
vim instance/postgresql.py  # customize it
export NEWSPIPE_CONFIG=postgresql.py
flask db_create
flask db_init

For production, serve Newspipe with Gunicorn or mod_wsgi.

πŸ”„ Updates and migrations

cd newspipe/
git pull origin master
poetry install
poetry run flask db upgrade
poetry run pybabel compile -d newspipe/translations

⏱️ Retrieving feeds automatically

A dedicated Flask command runs the RSS/Atom feed importer. Schedule it with cron, for example every three hours:

0 */3 * * * poetry run flask fetch_asyncio

When using cron it is usually best to be explicit about the command location:

0 */3 * * * FLASK_APP=app.py /home/cedric/.cache/pypoetry/virtualenvs/newspipe-19mdZ4UL-py3.13/bin/flask fetch_asyncio

πŸ“„ License

Newspipe is released under the GNU Affero General Public License v3.

πŸ’› Donations

If you enjoy Newspipe, you can support its development:

GitHub Sponsors

…or with Bitcoin: bc1q56u6sj7cvlwu58v5lemljcvkh7v2gc3tv8mj0e

Thank you! πŸ™

πŸ“¬ Contact

Made by CΓ©dric Bonhomme.