Child pages
  • Lobber setup (bud light)

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
  2. Web application and tracker server
  3. Storage node
  4. Database server
  5. 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 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 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

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 /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
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