Work in progress
This page is a work in progress and the accuracy of the information can not be guaranteed
Description of how to install the software needed for Lobber.
Page index
Common
All hosts are running Ubuntu (10.04) with the following extra packages and customizations.
apt-get install git-core git-doc ssl-cert git-core python-virtualenv
apt-get install postfix # local only configuration!
Web application and tracker server
Install the following packages:
apt-get install apache2 libapache2-mod-wsgi libapache2-mod-shib2 libpq-dev python-dev python-twisted pip install orbited
Orbited can not be installed in the lobber python environment because it requires python-twisted.
pip install orbited
You might need these:
python-egenix-mxdatetime python-egenix-mxtools python-pycurl python-openssl
Set up a virtual python environment (virtualenv) and activate it.
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)
pip install django django-tagging django-form-utils stomp.py psycopg2 orbited
You might need these:
pip install uuid django-evolution django-extensions werkzeug
Get Lobber from git.nordu.net and check out the latest stable version.
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.
cd /path/to/lobber/ mkdir logs mkdir torrents mkdir dropbox
Symlink the environment directory and Django admin media directory in to the src directory.
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.
BASE_DIR = '/path/to/lobber' APP_ADDR = 'host_ip or FQDN' TRACKER_ADDR = 'host_ip or FQDN' 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:
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql_psycopg2', 'NAME': 'lobber' 'USER': 'lobber' 'HOST': 'database_server' 'PORT': 'database_port' } }
Synchronize the database.
./dev-django-admin.sh syncdb
Setup Orbited by creating /etc/orbited.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:
echo "orbited -c /etc/orbited.cfg" >> /etc/rc.local
Then start orbited:
orbited -c /etc/orbited.cfg &
Activate some Apache modules:
a2enmod shib2 a2enmod headers a2enmod rewrite a2enmod proxy a2enmod proxy_http
Restart Apache
/etc/init.d/apache2 restart
Edit lobber/src/lobber.wsgi:
sys.path.append('/path/to/lobber/src')
Create /etc/apache2/conf.d/lobber:
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:
Alias /admin-media /path/to/lobber/admin-media Alias /site-media /path/to/lobber/site-media
Missing documentation
Documentation on how to set up Apache to handle https is missing.
Perhaps useful links for Apache SSL configuration: http://www.tc.umn.edu/~brams006/selfsign.html 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).
Missing 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.
# 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.
Storage node
Note that the web application and tracker server needs a storage node nowadays – that's how we do file upload.
Database server
apt-get install postgresql-client-8.4
Look at the official Django database documentation.
Setting up your own sandbox
- apt-get install python-virtualenv
- virtualenv /mina/envs/lobber
- . /mina/envs/lobber/bin/activate
- pip install django django-extensions django-tagging orbited uuid django-evolution stomp.py werkzeug psycopg2
- git clone git@git.nordu.net:lobber.git (alt. git pull)
- cd lobber
- git checkout <branch>
- mkdir db
- mkdir logs
- cd src
- ./dev-django-admin.sh syncdb
- ln -s /mina/envs/lobber env
- ln -s env/lib/python2.6/site-packages/django/contrib/admin/media admin-media
- Edit paths in settings.py
- ./dev-django-admin.sh runserver_plus