2011-07-17 10:59:59 -07:00
# NewsBlur
2013-04-12 10:11:21 -07:00
* NewsBlur is a personal news reader bringing people together
to talk about the world. A new sound of an old instrument.
* [www.newsblur.com ](http://www.newsblur.com ).
2011-07-17 10:59:59 -07:00
* Created by [Samuel Clay ](http://www.samuelclay.com ).
* Twitter: [@samuelclay ](http://twitter.com/samuelclay ) and
[@newsblur ](http://twitter.com/newsblur ).
2017-03-12 13:13:04 +01:00
< a href = "https://f-droid.org/repository/browse/?fdid=com.newsblur" target = "_blank" >
< img src = "https://f-droid.org/badge/get-it-on.png" alt = "Get it on F-Droid" height = "80" / > < / a >
< a href = "https://play.google.com/store/apps/details?id=com.newsblur" target = "_blank" >
< img src = "https://play.google.com/intl/en_us/badges/images/generic/en-play-badge.png" alt = "Get it on Google Play" height = "80" / > < / a >
2011-07-17 10:59:59 -07:00
## Features
2013-04-30 01:14:38 -03:00
1. Shows the original site (you have to see it to believe it).
2011-07-17 11:00:36 -07:00
2. Hides stories you don't want to read based on tags, keywords, authors, etc.
3. Highlights stories you want to read, based on the same criteria.
2011-07-17 10:59:59 -07:00
## Technologies
### Server-side
2020-11-03 11:26:04 +07:00
* [Python 3.7+ ](http://www.python.org ): The language of choice.
2011-07-17 11:34:38 -07:00
* [Django ](http://www.djangoproject.com ): Web framework written in Python, used
to serve all pages.
* [Celery ](http://ask.github.com/celery ) & [RabbitMQ ](http://www.rabbitmq.com ):
Asynchronous queueing server, used to fetch and parse RSS feeds.
2015-08-21 14:38:09 -04:00
* [MongoDB ](http://www.mongodb.com ), [Pymongo ](https://pypi.python.org/pypi/pymongo ), &
2011-07-17 11:34:38 -07:00
[Mongoengine ](http://www.github.com/hmarr/mongoengine ): Non-relational database,
used to store stories, read stories, feed/page fetch histories, and proxied sites.
* [PostgreSQL ](http://www.postgresql.com ): Relational database, used to store feeds,
subscriptions, and user accounts.
2019-04-13 15:28:56 -04:00
* [Redis ](http://redis.io ): Programmer's database, used to assemble stories for the river, store story ids, manage feed fetching schedules, and the minuscule bit of caching that NewsBlur uses.
* [Elasticsearch ](http://elasticsearch.org ): Search database, use for searching stories. Optional.
2011-07-17 10:59:59 -07:00
### Client-side and design
2011-07-17 11:34:38 -07:00
* [jQuery ](http://www.jquery.com ): Cross-browser compliant JavaScript code. IE works without effort.
2015-08-21 14:38:09 -04:00
* [Underscore.js ](http://underscorejs.org/ ): Functional programming for JavaScript.
2019-08-15 14:22:10 +12:00
Indispensable.
* [Backbone.js ](http://backbonejs.org/ ): Framework for the web app. Also indispensable.
2011-07-17 10:59:59 -07:00
* Miscellaneous jQuery Plugins: Everything from resizable layouts, to progress
bars, sortables, date handling, colors, corners, JSON, animations.
[See the complete list ](https://github.com/samuelclay/NewsBlur/tree/master/media/js ).
2010-02-14 22:53:51 -05:00
2011-07-17 11:31:07 -07:00
2011-07-17 15:30:25 -07:00
### Prerequisites
2020-11-03 11:26:04 +07:00
* Docker
2021-12-08 14:47:44 -05:00
* Docker-Compose
* You may need to `sudo apt install nodejs npm`
* Github SSH keys.
You may meet this error `The authenticity of host 'github.com (140.82.121.3)` can't be established. In which case you need to access Github direct & accept the key, after verifying it here (https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/githubs-ssh-key-fingerprints) & make sure that you have an SSH key associated with your Github account (https://docs.github.com/en/authentication/troubleshooting-ssh/error-permission-denied-publickey)
2011-07-17 11:31:07 -07:00
2020-11-03 11:26:04 +07:00
## Installation Instructions
2021-09-25 10:53:52 +01:00
1. Clone this repo
2021-12-08 14:47:44 -05:00
2. Before starting to run any commands: decide whether you will access Newsblur via localhost or a domain!
3. Open a bash shell & navigate to the Newsblur directory. Ensure that the mydomain.sh script is executable ('sudo chmod +x' if it isn't).
4. Type `./mydomain.sh <domain name>` (where < domain name > is the domain that you want to use to access Newsblur.
If you need to fix a typo then you can use `./mydomain.sh <old domain> <new domain>`
* What it does (you could do it manually instead):
* Changes `NEWSBLUR_URL` and `SESSION_COOKIE_DOMAIN` in `newsblur_web/docker_local_settings.py`
* Changes the domain in `config/fixtures/bootstrap.json`
5. If you're using a custom subdomain, you'll also want to add it to `ALLOWED_SUBDOMAINS` in `apps/reader/views.py`
6. Run `make nb` to build Newsblur containers. This will set up all necessary databases, celery tasks, node applications,
flask database monitor, NGINX, and a Haproxy load balancer.
2021-09-25 11:01:22 +01:00
7. Navigate to:
2011-07-17 20:53:30 -07:00
2021-12-08 14:47:44 -05:00
https://localhost or https://< domain name > if you chose to use your own domain
2013-04-27 15:09:44 -04:00
2021-12-08 14:47:44 -05:00
Note: You will be warned that you are using a self signed certificate. In order to get around this warning you must type "thisisunsafe" as per https://dblazeski.medium.com/chrome-bypass-net-err-cert-invalid-for-development-daefae43eb12
2021-03-09 12:34:56 -05:00
2021-12-08 14:47:44 -05:00
## Unable to log in after registering?
A way to make sure you updated all the correct places (thanks to Djagatahel via Reddit):
2021-08-25 17:10:51 -04:00
2021-09-25 10:53:52 +01:00
* Go to the website address in your browser
* Open developer tools and look at the network tab
* Try to login
* Look again at the developer tools, there should be a POST call to /login
* Observe the Response headers for that call
* The value of the "set-cookie" header should contain a "Domain=" string
2021-08-25 17:10:51 -04:00
2021-12-08 14:47:44 -05:00
If the string after Domain= is not the domain you are using to access the website, then your configuration is missing a piece.
You can also confirm that there is a domain name mismatch in the database by running `make shell` & typing `Site.objects.all()[0]` to show the domain that Newsblur is using.
2021-09-25 10:53:52 +01:00
2021-12-08 14:47:44 -05:00
## Making docker-compose work with your database
2021-07-01 16:54:11 -04:00
2021-02-17 11:19:01 -05:00
To make docker-compose work with your database, upgrade your local database to the docker-compose version and then volumize the database data path by changing the `./docker/volumes/` part of the volume directive in the service to point to your local database's data directory.
To make docker-compose work with an older database version, change the image version for the database service in the docker-compose file.
2020-11-03 11:26:04 +07:00
## Contribution Instructions
2011-07-17 11:31:07 -07:00
2020-11-03 11:26:04 +07:00
* Making Changes:
* To apply changes to the Python or JavaScript code, use the `make` command.
* To apply changes to the docker-compose.yml file, use the `make rebuild` command.
* To apply changes to the docker/haproxy/haproxy.conf file, node packages, or any new database migrations you will need to use the `make nb` command.
2011-07-17 15:52:06 -07:00
2020-11-03 11:26:04 +07:00
* Adding Python packages:
Currently, the docker-compose.yml file uses the newsblur/newsblur_python3 image. It is built using the Dockerfile found in `docker/newsblur_base_image.Dockerfile` . Because of how the docker image is set up, you will need to create your own image and direct your docker-compose.yml file to use it. Please follow the following steps to do so.
2011-07-17 15:52:06 -07:00
2020-11-03 11:26:04 +07:00
1. Add your new site-packages to config/requirements.txt.
2. Add the following lines of code to your docker-compose.yml file to replace anywhere where it says `image: newsblur/newsblur_python3`
2011-07-17 15:52:06 -07:00
2020-11-03 11:26:04 +07:00
< code >
build:
context: .
dockerfile: docker/newsblur_base_image.Dockerfile
< / code >
2011-07-17 15:52:06 -07:00
2020-11-03 11:26:04 +07:00
3. Run the `make nb` command to rebuild your docker-compose containers
2011-07-17 21:50:37 -07:00
2020-11-03 11:26:04 +07:00
* Debugging Python
* To debug your code, drop `import pdb; pdb.set_trace()` into the Python code where you would like to start debugging
and run `make` and then `make debug` .
2011-07-17 15:52:06 -07:00
2020-11-03 11:26:04 +07:00
* Using Django shell within Docker
* Make sure your docker containers are up and run `make shell` to open
the Django shell within the newsblur_web container.
2011-07-17 11:34:38 -07:00
2020-11-03 11:26:04 +07:00
### Running unit and integration tests
2011-07-17 11:34:38 -07:00
2020-11-03 11:26:04 +07:00
NewsBlur comes complete with a test suite that tests the functionality of the rss_feeds,
reader, and feed importer. To run the test suite:
2011-07-17 11:34:38 -07:00
2020-11-03 11:26:04 +07:00
`make test`
2011-07-17 11:31:07 -07:00
2021-02-24 10:21:47 -05:00
### Running a performance test
Performance tests use the locust performance testing tool. To run performance tests via CLI, use
2021-05-07 09:59:35 -05:00
`make perf-cli users=1 rate=1 host=https://localhost` . Feel free to change the users, rate, and host
2021-02-24 10:21:47 -05:00
variables in the command to meet you needs.
You can also run locust performance tests using a UI by running `make perf-ui` and then navigating to
http://127.0.0.1:8089. This allows you to chart and export your performance data.
To run locust using docker, just run `make perf-docker` and navigate to http://127.0.0.1:8089
2011-07-17 11:31:07 -07:00
2011-07-17 21:03:31 -07:00
## Author
* Created by [Samuel Clay ](http://www.samuelclay.com ).
2012-06-20 18:37:46 -07:00
* Email address: < samuel @newsblur .com >
2011-07-17 21:03:31 -07:00
* [@samuelclay ](http://twitter.com/samuelclay ) on Twitter.
2021-12-08 14:47:44 -05:00
2011-07-17 21:03:31 -07:00
## License
2010-06-28 12:39:41 -04:00
2013-04-30 01:12:35 -03:00
NewsBlur is licensed under the MIT License. (See LICENSE)