Features • Installation • Development • License
- Customizable dock-based dashboard
- Support for Atom and RSS feeds
- Four feed layouts: condensed, list, detailed, tiles
- Tabbed multi-feeds
- Import/Export settings and feeds
- Filter feed items
This is a self-hosted solution with a provided Docker image for easy installation.
- Reverse proxy (nginx recommended)
- Redis
To start quickly, run the Docker image, which starts the API server. The static web app is available
under the volume /client
. For production, you need to serve the static files using a
webserver.
$ docker run \
-e REDIS_URL=redis://redis:6380 \
-p 127.0.0.1:3000:3000 \
-v ./path/to/client:/client \
newsdash/newsdash
To persist settings and feeds, provide a Redis instance. You can start a Redis
container and link it to newsdash. Docker Compose is ideal for
small setups. Use the REDIS_URL
environment variable to customize the connection URL.
For production deployment, use a reverse proxy like nginx for:
- Static file serving
- Image caching
- Basic authentication
- Gzip compression
- TLS termination
# Sample nginx configuration as starting point
http {
# ...
# Cache for newsdash images (highly recommended)
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=newsdash_cache:10m max_size=1g inactive=30d use_temp_path=off;
server {
listen 443 ssl;
http2 on;
server_name newsdash.example.com;
# point this to the container volume `/client`
root /path/to/volume/client;
ssl on;
ssl_certificate ...;
ssl_certificate_key ...;
auth_basic "Restricted";
auth_basic_user_file htpasswd_file;
autoindex off;
gzip on;
gzip_min_length 500;
gzip_proxied any;
gzip_types text/css text/javascript application/json;
# Cache dynamic images
location ~ ^/api/feed/(image|logo) {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_pass http://newsdash:3000; # point to newsdash API server
proxy_http_version 1.1;
proxy_cache newsdash_cache;
proxy_cache_key "$scheme$request_method$host$request_uri";
proxy_cache_valid 200 302 15d;
proxy_cache_valid 404 1d;
proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;
add_header X-Cache-Status $upstream_cache_status;
}
# Serve API endpoints
location ~ ^/api {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_pass http://newsdash:3000; # point to newsdash API server
proxy_http_version 1.1;
}
# Serve static files
location / {
try_files $uri $uri/index.html =404;
}
}
}
Ensure you have recent versions of Node.js and pnpm installed.
Clone the project and start a development server.
$ git clone https://github.com/buzz/newsdash.git
$ cd newsdash
$ pnpm install
$ pnpm dev