NewsBlur
★ 7.7kMIT LicenseOpen Core — Some Features Paid12 Containers — 12 containers — heavy hosting footprintDocker · Compose · SourceNeeds Postgres1+ active committer (12mo)
About
NewsBlur is a personal news reader built around RSS feeds, content filtering, and social sharing. It is aimed at people who want a more intelligent way to follow news sources, manage large numbers of...
Community Ratings
No ratings yetNew this week
Read recap →Weekly Recap — Oct 2, 2026 – Oct 9, 2026Oct 9, 2026
Features
- Real-time RSS
- Original site view
- Training classifiers
- Shared stories
- Full-text search
- Story tagging
- Blurblog privacy
- Saved searches
- Email newsletters
- Multiple layouts
Details
- Last Updated
- Oct 14, 2026
- Created
- Jan 5, 2009
- Install Methods
- dockerdocker-composesource
- Requirements
- DockerDocker ComposePostgreSQLMongoDBRedisElasticsearch (optional)CeleryNode.jsPython 3.7+
- Authentication
- oauthlocal
- API
- REST
- Backup & Export
- file-backupdatabase-dump
- Runtime / Stack
- Python
- Privacy & Independence
- Cloud: Optional
- User Model
- Multi-User
- Deployment
Deployment: Docker Compose ✓12 Containers — heavy hosting footprintRuns as 12 containers
Run NewsBlur with Docker Compose
Compose file from the NewsBlur project repository.
12 services · database: postgres · infra: nginx, postgres, redis, elasticsearch, mongo, haproxy · 2 unclassified (imageproxy, dejavu)
≈2.0 GB RAM requested (from Docker memory limits)
needs persistent storage (17 volumes)
docker-compose.yml · @ 84f2eed · scanned Sep 24, 2026
services:
newsblur_web:
hostname: nb.com
container_name: newsblur_web
image: newsblur/newsblur_${NEWSBLUR_BASE:-python3}:latest
build:
context: .
dockerfile: docker/newsblur_base_image.Dockerfile
# user: "${CURRENT_UID}:${CURRENT_GID}"
environment:
- DOCKERBUILD=True
- RUNWITHMAKEBUILD=${RUNWITHMAKEBUILD:-True}
stdin_open: true
tty: true
restart: unless-stopped
depends_on:
- newsblur_db_mongo
- newsblur_db_postgres
- newsblur_db_redis
- newsblur_db_elasticsearch
ulimits:
nproc: 10000
nofile:
soft: 10000
hard: 10000
ports:
- 8000:8000
# only use gunicorn if the TEST env variable is not "True"
entrypoint: /bin/sh -c newsblur_web/entrypoint.sh
volumes:
- ${PWD}:/srv/newsblur
newsblur_node:
container_name: newsblur_node
image: newsblur/newsblur_node:latest
user: "${CURRENT_UID:-1000}:${CURRENT_GID:-1000}"
environment:
- NODE_ENV=docker
- MONGODB_PORT=29019
command: node newsblur.js
restart: unless-stopped
stop_signal: HUP
depends_on:
- newsblur_db_mongo
- newsblur_db_postgres
- newsblur_db_redis
ports:
- 8008:8008
volumes:
- ${PWD}/node:/srv
- ${PWD}/node/originals:/srv/originals
imageproxy:
container_name: newsblur_imageproxy
# image: ghcr.io/willnorris/imageproxy:latest # Enable if you don't need arm64 and want the original imageproxy
image: yusukeito/imageproxy:v0.11.2 # Enable if you want arm64
user: "${CURRENT_UID:-1000}:${CURRENT_GID:-1000}"
entrypoint: /app/imageproxy -addr 0.0.0.0:8088 -cache /tmp/imageproxy -verbose
restart: unless-stopped
ports:
- 8088:8088
volumes:
- /tmp:/tmp/imageproxy
nginx:
container_name: newsblur_nginx
image: nginx:1.19.6
restart: unless-stopped
ports:
- 81:81
depends_on:
- newsblur_web
- newsblur_node
- newsblur_db_postgres
- newsblur_db_redis
- newsblur_db_mongo
- newsblur_db_elasticsearch
environment:
- DOCKERBUILD=True
volumes:
- ./docker/nginx/nginx.local.conf:/etc/nginx/conf.d/nginx.conf
- ${PWD}:/srv/newsblur
newsblur_db_postgres:
container_name: newsblur_db_postgres
image: postgres:13.1
restart: unless-stopped
environment:
- POSTGRES_USER=newsblur
- POSTGRES_PASSWORD=newsblur
# healthcheck:
# test: ["CMD-SHELL", "pg_isready -U newsblur"]
# interval: 10s
# timeout: 5s
# retries: 5
ports:
- 5434:5432
volumes:
- ./docker/volumes/postgres:/var/lib/postgresql/data
newsblur_db_redis:
container_name: newsblur_db_redis
image: redis:latest
ports:
- 6579:6579
restart: unless-stopped
volumes:
- ./docker/redis/redis.conf:/etc/redis/redis.conf
- ./docker/redis/redis_server.conf:/usr/local/etc/redis/redis_replica.conf
- ./docker/volumes/redis:/data
command: redis-server /etc/redis/redis.conf --port 6579
# Prod Redis
# db_redis:
# container_name: db_redis
# image: redis:latest
# ports:
# - 6579:6579
# restart: unless-stopped
# volumes:
# - ./docker/redis/redis.conf:/etc/redis/redis.conf
# - ./docker/redis/redis_server.conf:/usr/local/etc/redis/redis_replica.conf
# - ./docker/volumes/redis_prod:/data
# command: redis-server /etc/redis/redis.conf --port 6579
newsblur_db_elasticsearch:
container_name: newsblur_db_elasticsearch
image: docker.elastic.co/elasticsearch/elasticsearch:8.17.0
mem_limit: 2g
mem_reservation: 512m
restart: unless-stopped
environment:
- discovery.type=single-node
- "ES_JAVA_OPTS=-Xms384m -Xmx384m -XX:UseSVE=0"
- "CLI_JAVA_OPTS=-XX:UseSVE=0"
- cluster.routing.allocation.disk.threshold_enabled=false
- xpack.security.enabled=false
- bootstrap.memory_lock=false
- indices.breaker.total.use_real_memory=false
ports:
- 9200:9200
- 9300:9300
volumes:
- ./docker/volumes/elasticsearch:/usr/share/elasticsearch/data
- ./config/elasticsearch/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
# Dejavu is a web UI for Elasticsearch
dejavu:
container_name: newsblur_dejavu
image: appbaseio/dejavu:3.6.0
restart: unless-stopped
ports:
- 1358:1358
newsblur_db_mongo:
container_name: newsblur_db_mongo
image: mongo:4.0
restart: unless-stopped
ports:
- 29019:29019
command: mongod --port 29019 --wiredTigerEngineConfigString="checkpoint=(wait=60),file_manager=(close_idle_time=0)"
volumes:
- ./docker/volumes/db_mongo:/data/db:delegated
task_celery:
container_name: newsblur_celery
image: newsblur/newsblur_python3
user: "${CURRENT_UID:-1000}:${CURRENT_GID:-1000}"
command: "celery worker -A newsblur_web -B --loglevel=INFO"
restart: unless-stopped
volumes:
- ${PWD}:/srv/newsblur
environment:
- DOCKERBUILD=True
newsblur_mcp:
container_name: newsblur_mcp
build:
context: ./newsblur_mcp
restart: unless-stopped
environment:
- PYTHONPATH=/srv/newsblur_mcp
- NEWSBLUR_BASE_URL=http://newsblur_web:8000
- MCP_PORT=8099
- MCP_HOST=0.0.0.0
- MCP_OAUTH_CLIENT_ID=newsblur-mcp-server
- MCP_OAUTH_CLIENT_SECRET=newsblur-mcp-dev-secret
- MCP_OAUTH_BASE_URL=http://localhost/mcp
- MCP_OAUTH_UPSTREAM_URL=http://localhost
- MCP_OAUTH_INTERNAL_URL=http://newsblur_web:8000
- MCP_REDIS_URL=redis://newsblur_db_redis:6579/5
volumes:
- ${PWD}/newsblur_mcp/newsblur_mcp:/srv/newsblur_mcp/newsblur_mcp
depends_on:
- newsblur_web
haproxy:
container_name: newsblur_haproxy
image: haproxy:latest
restart: unless-stopped
depends_on:
- nginx
- newsblur_web
- newsblur_node
- imageproxy
- newsblur_db_redis
- newsblur_db_postgres
- newsblur_db_elasticsearch
- newsblur_db_mongo
ports:
- 80:80
- 443:443
- 1936:1936
volumes:
- ./docker/haproxy/haproxy.docker-compose.cfg:/usr/local/etc/haproxy/haproxy.cfg
- ${PWD}:/srv/newsblur
This file may be out of date. Check the NewsBlur documentation for current setup steps.
Tags
Track your self-hosted stack
Bookmark software to try, rate tools you've used, and keep your collection in one place.
Metadata extracted from README on Jul 30, 2026
Related Software
Haven
811
Haven is a private blog application built with Ruby on Rails that supports sharing with selected people and includes a built-in RSS reader.
Blogging PlatformsPermissive LicenseRSS Feed Readers+2
2 Containers
fx
328
A self-hosted Twitter/Bluesky-like microblogging service.
Blogging PlatformsPermissive LicenseSocial Networks+3
Huginn
50.1k
Huginn is a self-hosted automation system for building agents that monitor online events and perform actions on your behalf.
Automation ToolsPermissive LicenseAI Agents+3
4 Containers
FreshRSS
16.3k
FreshRSS is a self-hosted RSS feed aggregator with multi-user support, an API, and a command-line interface.
RSS Feed ReadersCopyleft LicenseSelf Hosting Solutions+2
Single Container
RSSHub
46.5k
RSSHub is a large open source RSS network that aggregates content from many sources into RSS feeds.
RSS Feed ReadersPermissive LicenseSelf Hosting Solutions+1
3 Containers
RSS-Bridge
9.3k
RSS-Bridge is a PHP web application that generates RSS/Atom-style web feeds for websites that do not provide one.
RSS Feed ReadersPermissive LicenseSelf Hosting Solutions+2
Single Container
Miniflux
9.8k
A minimalist, opinionated feed reader for RSS, Atom, and JSON Feed.
RSS Feed ReadersSelf Hosting SolutionsBookmark Management+2
CommaFeed
3.6k
A self-hosted RSS reader inspired by Google Reader.
RSS Feed ReadersSelf Hosting SolutionsPermissive License
Yarr
4.1k
yarr is a web-based RSS feed aggregator for desktop use or self-hosting.
RSS Feed ReadersPermissive LicenseSelf Hosting Solutions+1
2 Containers
Glance
37.5k
Glance is a lightweight, highly customizable dashboard for displaying feeds and widgets in a streamlined interface.
Personal DashboardsRSS Feed ReadersCopyleft License+1
Cypht
1.8k
Cypht is a webmail and news reader that combines email from multiple accounts into one interface.
Webmail ClientsRSS Feed ReadersSelf Hosting Solutions+1
Stringer
4.1k
Stringer is a self-hosted RSS reader with keyboard shortcuts and Fever API compatibility.
RSS Feed ReadersSelf Hosting SolutionsPermissive License
