/liveblog

Sourcefabric's Live Blog is an open source web app that enables journalists to provide immediate and ongoing coverage on rapidly evolving news events.

Primary LanguageJavaScriptGNU Affero General Public License v3.0AGPL-3.0

Liveblog

DownloadForkLicenseDocumentationVersion 3.1.0

Build Status

Installation

How to install Liveblog locally (recommended)

Here I'm assuming you are running Ubuntu Linux 16.04

Install the dependencies

First we need to install the necessary dependencies:

sudo apt-get install mongodb redis-server

We currently require a specific version of elastic search (not sure why we need that, but it might come in a handy later on):

wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
echo "deb http://packages.elastic.co/elasticsearch/1.7/debian stable main" | sudo tee --append /etc/apt/sources.list.d/elastic.list
sudo apt-get update
sudo apt-get install openjdk-8-jre elasticsearch

Remove the elasticsearch node discovery functionality:

echo "discovery.zen.ping.multicast.enabled: false" | sudo tee --append /etc/default/elasticsearch

Install Node.js LTS version:

curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash -
sudo apt-get install nodejs

Install The various Python requirements

sudo apt-get install \
python3 python3-dev python3-pip python3-lxml \
build-essential libffi-dev git \
libtiff5-dev libjpeg8-dev zlib1g-dev \
libfreetype6-dev liblcms2-dev libwebp-dev \
curl libfontconfig virtualenv

Install the required npm tools:

sudo npm install -g grunt-cli bower

Configure the server

Now we can create the python virtual environment and install the server dependencies:

cd server
virtualenv -p python3 env
source env/bin/activate
pip install -r requirements.txt

Add the default data:

python3 manage.py app:initialize_data;
python3 manage.py users:create -u admin -p admin -e 'admin@example.com' --admin ;
python3 manage.py register_local_themes ;

Still in the virtualenv, you can now start the server

honcho -f ../docker/Procfile-dev start

If you encounter any connection errors from elastic search:

elasticsearch.exceptions.ConnectionError: ConnectionError(<urllib3.connection.HTTPConnection object at 0x7f9434838358>: Failed to establish a new connection: [Errno 111] Connection refused) caused by: NewConnectionError(<urllib3.connection.HTTPConnection object at 0x7f9434838358>: Failed to establish a new connection: [Errno 111] Connection refused)

You will need to restart and elasticsearch and wait 10 seconds before starting honcho.

sudo service elasticsearch restart
sleep 10
honcho -f ../docker/Procfile-dev start

Configure the client

Now we can install the dependencies for the client

cd client
npm install
bower install

We can now run the client server:

grunt --force server --server='http://localhost:5000/api' --ws='ws://localhost:5100'

You can now access your local copy at http://localhost:9000 (user: admin, password: admin)

Docker Install

Use docker-compose and the config from docker folder or build docker images manually from the Dockerfile.

install docker
$ sudo apt-get install docker.io

and make sure you can run docker without sudo.

create python virtualenv
$ sudo apt-get install python-virtualenv
$ virtualenv env
install docker compose and run app
$ . env/bin/activate
$ pip install -r docker/requirements.txt
$ ./scripts/docker-local-demo.sh

Testing

How to run the behaviore tests for the syndication feature:

cd server
behave --format progress2 --logging-level ERROR features/syndication.feature

Vagrant LXC Installation

Setting things up

This will only work on Linux

cd /tmp
wget -c https://releases.hashicorp.com/vagrant/1.8.6/vagrant_1.8.6_x86_64.deb
sudo dpkg -i vagrant_1.8.6_x86_64.deb
rm vagrant_1.8.6_x86_64.deb
vagrant plugin install vagrant-lxc

We need to create the configuration file for the frontend:

cd ~/code/liveblog
cp client/config.sample.js client/config.js

Start the virtual machine

cd ~/code/liveblog
sudo rm -rf client/data client/dist/* client/.tmp server/src
vagrant destroy
vagrant up
vagrant ssh

Once in the virtual machine:

/opt/liveblog/scripts/vagrant-provision.sh

Once the provisioning done whil still in the virtual machine:

/opt/liveblog/scripts/vagrant-start-dev.sh