Favicon of Newsblur

Newsblur

Read news from any source with real-time RSS updates. Train feeds to hide stories you dislike and highlight what you love. Share and discuss stories with friends.

Take control of your news reading with a personal RSS reader designed to filter out the noise. Its most powerful feature is its intelligence training: teach it what you like and dislike by author, tags, or title, and it will automatically hide stories you don't want to see and highlight the ones you do. Read your feeds anywhere with native apps for Web, iOS, and Android, all perfectly in sync.

Share and discuss interesting articles with friends through your own public or private blurblog. It's a social way to experience the news. Beyond standard RSS, you can also follow email newsletters, YouTube channels, and even websites that don't have a feed.

Key features include:

  • Multiple Layouts: Choose from list, grid, magazine, and other views to suit your reading style.
  • Real-time Updates: Stories are pushed to you as soon as they are published.
  • Full Text Search: Instantly find stories across all your subscriptions.
  • Saved Stories & Tags: Organize important articles for later reference.
  • AI-Powered Summaries: Get a daily briefing of your top stories.

You can start with a generous free plan or try all premium features with a 30-day trial, no credit card required.

Directory Structure

newsblur
data
elasticsearch
mongo
newsblur
media
static
postgres
redis
.env
docker-compose.yml

docker-compose.yml

services:
  database:
    image: postgres:13
    restart: unless-stopped
    environment:
      POSTGRES_USER: newsblur
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
      POSTGRES_DB: newsblur
    volumes:
      - ./data/postgres:/var/lib/postgresql/data

  mongo:
    image: mongo:4.4
    restart: unless-stopped
    volumes:
      - ./data/mongo:/data/db

  redis:
    image: redis:6
    restart: unless-stopped
    volumes:
      - ./data/redis:/data

  elasticsearch:
    image: elasticsearch:7.17.9
    restart: unless-stopped
    environment:
      - discovery.type=single-node
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    volumes:
      - ./data/elasticsearch:/usr/share/elasticsearch/data

  newsblur_web:
    image: newsblur/newsblur_python:latest
    restart: unless-stopped
    ports:
      - "${APP_PORT}:8000"
    environment:
      - DOCKER_BUILD=1
      - DEBUG=False
      - SECRET_KEY=${SECRET_KEY}
      - DOMAIN=${DOMAIN}
      # Legacy link variables required by NewsBlur settings
      - POSTGRES_PORT_5432_TCP_ADDR=database
      - POSTGRES_PORT_5432_TCP_PORT=5432
      - POSTGRES_USER=newsblur
      - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
      - MONGODB_PORT_27017_TCP_ADDR=mongo
      - MONGODB_PORT_27017_TCP_PORT=27017
      - REDIS_PORT_6379_TCP_ADDR=redis
      - REDIS_PORT_6379_TCP_PORT=6379
      - ELASTICSEARCH_URL=http://elasticsearch:9200
    volumes:
      - ./data/newsblur/static:/newsblur/static
      - ./data/newsblur/media:/newsblur/media
    depends_on:
      - database
      - mongo
      - redis
      - elasticsearch
    command: /bin/bash -c "python manage.py migrate && gunicorn newsblur.wsgi:application -b 0.0.0.0:8000"

  newsblur_node:
    image: newsblur/newsblur_node:latest
    restart: unless-stopped
    ports:
      - "8888:8888"
    environment:
      - MONGODB_PORT_27017_TCP_ADDR=mongo
      - REDIS_PORT_6379_TCP_ADDR=redis
    depends_on:
      - mongo
      - redis

.env

APP_PORT=8000
DOMAIN=localhost
POSTGRES_PASSWORD=your_secure_postgres_password
SECRET_KEY=your_generated_secret_key_here
Categories:

Share:

Ad
Favicon

 

  
 

Similar to Newsblur

Favicon

 

  
  
Favicon

 

  
  
Favicon