Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3

Description of how to install the software needed for Lobber.

...

Page index

...

  1. Common

...

Use

  1. Web application and tracker server
  2. Storage node
  3. Database server

...

  1. Development sandbox

Anchor
common
common

Common

All hosts are running Ubuntu (10.04) with the following extra packages and customizations.

...

Code Block
apt-get install git-core git-doc ssl-cert git-core python-virtualenv
Code Block
apt-get install postfix
# local only configuration!

Anchor
webapp
webapp

Web application and tracker server

Install the following packages:

Code Block
apt-get install apache2 libapache2-mod-wsgi libapache2-mod-shib2 libpq-dev python-dev python-twisted
pip install orbited python-pip

If you don't want to install libpq-dev and python-dev you can install psycopg2 with apt and later symlink it to your virtual python environment.

Code Block

ln -s /usr/lib/python2.6/dist-packages/psycopg2 /path/to/lobber_env/lib/python2.6/site-packages
ln -s /usr/lib/python2.6/dist-packages/mx /path/to/lobber_env/lib/python2.6/site-packages
ln -s /usr/lib/python2.6/dist-packages/psycopg2-2.0.13.egg-info /path/to/lobber_env/lib/python2.6/site-packages

Orbited can not be installed in the lobber python environment because it requires python-twisted.

Code Block
pip install orbited

You might need these:

Code Block

python-egenix-mxdatetime python-egenix-mxtools python-pycurl python-openssl 

Set up a virtual python environment (virtualenv) and activate it.

...

Install the needed python applications. (Yes, orbited again...needed as import in django)

Code Block
pip install django django-tagging django-form-utils stomp.py psycopg2 orbited

* Yes, orbited again...

You might need these if you are setting up a development sandbox:

Code Block
pip install uuid django-evolution django-extensions werkzeug django-debug-toolbar

Get Lobber from git.nordu.net and check out the latest stable version.

Code Block
git clone git@gitgit://git.nordu.net:/lobber.git
cd lobber
git checkout bud-light

...

Code Block
titlesettings.py
BASE_DIR = '/path/to/lobber'

APP_ADDR = 'host_ip or FQDN'
BASE_UI_URL = 'https://' + APP_ADDR

TRACKER_ADDR = 'host_ip or FQDN'
ANNOUNCE_BASE_URL = 'https://' + TRACKER_ADDR

ADMINS = (
    ('Your name', 'your@email.net'),

DATABASE_ENGINE = 'postgresql_psycopg2'
DATABASE_NAME = 'lobber'
DATABASE_USER = 'lobber'
DATABASE_PASSWORD = 'secret_password'
DATABASE_HOST = 'database host'
DATABASE_PORT = 'database port'

DROPBOX_DIR = '/path/to/lobber/dropbox'

# Make this unique, and don't share it with anybody.
SECRET_KEY = 'secret'

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',      # For the Permission model.
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.admin',
    'tagging',
    'lobber.extensions',
    'lobber.userprofile',
    'lobber.share',
    'lobber.links',
    'lobber.tracker',
    'lobber.auth'
)

If you are using Django 1.3 (standard from pip) then you need to change your database settings to:

Code Block
titlesettings.py

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'lobber',
        'USER': 'lobber',
        'PASSWORD': 'secret',
        'HOST': 'database_server',
        'PORT': 'database_port'
    }
}

Synchronize the database.

Code Block
./dev-django-admin.sh syncdb

...

and make sure that orbited is started like this automatically at boot:

Code Block

echo "orbited -c /etc/orbited.cfg" >> /etc/rc.local

...


Then start orbited, :

Code Block

orbited -c /etc/orbited.cfg

...

You might need:

Code Block

pip install stompservice &

Activate some Apache modules and restart Apache, /etc/init.d/apache2 restart:

Code Block
a2enmod shib2
a2enmod headers
a2enmod rewrite
a2enmod proxy
a2enmod proxy_http

Restart Apache

Code Block

/etc/init.d/apache2 restart

Edit lobber/src/lobber.wsgi:

...

Edit /etc/apache2/sites-available/default-ssl:

Code Block
titledefault
Alias /admin-media /path/to/lobber/admin-media
Alias /site-media /path/to/lobber/site-media

Documentation on how to set up Apache to handle https can be found here:

  1. http://www.tc.umn.edu/~brams006/selfsign.html
  2. http://www.tc.umn.edu/~brams006/selfsign_ubuntu.html

Usual problems:

  • /path/to/lobber/logs/web.log is not writable by www-data (apache user).
  • /path/to/lobber/torrents/ is not writable by www-data (apache user).
  • /path/to/lobber/dropbox/ is not writable by www-data (apache user).
  • /path/to/lobber/db/ (if you are using sqlite) is not writable by www-data (apache user).

...

Set up cron jobs for expiring old torrents, keys and peers.

Code Block
PATH=/usr/bin:/usr/sbin:/path/to/lobber/src/env/bin
# m h dom mon dow command
*/5 * * * * cd /path/to/lobber/src/ && ./dev-django-admin.sh expire_peers 5
0 0 * * * cd /path/to/lobber/src/ && ./dev-django-admin.sh expire_torrents
5 0 * * * cd /path/to/lobber/src/ && ./dev-django-admin.sh expire_keys

To be able to accept file uploads in the Lobber web application you need to install a Lobber storage node on the web application and tracker server.

Anchor
storagenode
storagenode

Storage node

See Running a storage node (bud light)

Note that the web application and tracker server needs a storage node nowadays – that's how we do file upload.

Anchor
database
database

Database server

Code Block
apt-get install postgresql-client-8.4

Look at the official Django database documentation.

Anchor
devsandbox
devsandbox

Setting up your own development sandbox

  1. apt-get install python-virtualenv
  2. virtualenv /mina/envs/lobber
  3. . /mina/envs/lobber/bin/activate
  4. pip install django django-extensions django-tagging orbited uuid django-evolution stomp.py werkzeug psycopg2
  5. git clone git@git.nordu.net:lobber.git (alt. git pull)
  6. cd lobber
  7. git checkout <branch>
  8. mkdir db
  9. mkdir logs
  10. cd src
  11. ./dev-django-admin.sh syncdb
  12. ln -s /mina/envs/lobber env
  13. ln -s env/lib/python2.6/site-packages/django/contrib/admin/media admin-media
  14. Edit paths in settings.py
  15. ./dev-django-admin.sh runserver_plus