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.

Hosts

...

Hostname

...

Use

Page index
  1. Common

...

  1. Web application and tracker server

...

db-dev.lobber.se

...

PgSQL server

...

tracker-dev.lobber.se

...

BT Tracker

  1. Storage node
  2. Database server
  3. Development sandbox

Anchor
common
common

Common

...

sn-dev.lobber.se

...

All hosts are running Ubuntu (9.10 from day 010.04) with the following extra packages and customizations.

common to all

Code Block
apt-get install git-core git-doc ssl-cert gitpython-corevirtualenv
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 python-django apache2libapache2-mod-wsgi libapache2-mod-shib2 libpq-dev python-libtorrent \
  dev python-bittorrenttwisted python-django-doc python-egenix-mxdatetime python-egenix-mxtools \
   python-psycopg2 python-pycurl python-openssl postgresql-client-8.4 python-twisted \
   python-setuptools python-pysqlite2 libapache2-mod-python python-django-tagging \
   python-werkzeug python-django-extensions python-django-evolution deluge-common

python-setuptools gives us easy-install which we use for installing some stuff not packaged in Debian packages:

Code Block

# easy_install orbited
# easy_install stompservice

Get a 3.x version of stomp.py from http://code.google.com/p/stomppy/Image Removed and install:

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

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

Code Block

virtualenv --no-site-packages /path/to/lobber_env
source /path/to/lobber_env/bin/activate

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

You 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://git.nordu.net/lobber.git
cd lobber
git checkout bud-light

Create the a log, torrent and a dropbox directory in the lobber root directory. Make the writable by the Apache user.

Code Block

cd /path/to/lobber/
mkdir logs
mkdir torrents
mkdir dropbox

Symlink the environment directory and Django admin media directory in to the src directory.

Code Block

cd /path/to/lobber/src
ln -s /path/to/lobber_env env
ln -s env/lib/python2.6/site-packages/django/contrib/admin/media admin-media

Edit paths and other options in settings.py.

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

Setup Orbited by creating Create /etc/orbited.cfg:

Code Block
titleorbited.cfg
[listen]
http://:9001
stomp://:61613

[access]
* -> localhost:61613

[static]

[global]
session.ping_interval = 300
user=www-data

[logging]
debug=STDERR,debug.log
info=STDERR,info.log
access=STDERR,info.log
warn=STDERR,error.log
error=STDERR,error.log

#Don't enable debug by default
enabled.default=info,access,warn,error

...

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 &

Activate some Apache modules:

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:

Code Block
titlelobber.wsgi

sys.path.append('/path/to/lobber/src')

Create /etc/apache2/conf.d/lobber:

Code Block
titlelobber

WSGIPythonPath "/path/to/lobber:/path/to/lobber/src"
WSGIPythonHome "/path/to/lobber/src/env"
WSGIRestrictStdout Off
WSGIScriptAlias / /path/to/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).
Info
titleMissing documentation

Documentation on how to set up federated login using mod_shib2 should be added or linked to.

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 /dev/null 2>&1
0 0 * * * cd /path/..to/lobber/src/ && ./dev-django-admin.sh expire_torrents >/dev/null 2>&1
5 0 * * * cd /path/..to/lobber/src/ && ./dev-django-admin.sh expire_keys >/dev/null 2>&1 

Finally, make sure that Lobber can send email. This is done via STOMP messages to a twisted. Run this (in the src directory):

Code Block

# env PYTHONPATH=`pwd`:$PYTHONPATH twistd -y sendmail.tac

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 app-dev is the web application and tracker server needs a storage node too 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. apt-get deluge
  6. git clone git@git.nordu.net:lobber.git (alt. git pull)
  7. cd lobber
  8. git checkout embedded-tracker<branch>
  9. mkdir db
  10. mkdir logs
  11. cd src
  12. ./dev-django-admin.sh syncdb
  13. ln -s /mina/envs/lobber env
  14. ln -s env/lib/python2.6/site-packages/django/contrib/admin/media admin-media
  15. Edit paths in settings.py
  16. ./dev-django-admin.sh runserver_plus