This page is a work in progress and the accuracy of the information can not be guaranteed (smile)

Page index
  1. Overview
  2. Installing
  3. Configuration
    1. Stand-alone configuration
    2. Lobber web app configurationĀ«

Overview

A lobber storage node is essentially a standard BitTorrent client with a very thin layer used to receive notification about new and modified torrents. A lobber storage node is provided as a twisted plugin and is installed from the python package index. Currently the twisted plugin works with transmission - a popular, cross-platform BitTorrent client. Other BT clients may be supported in the future.

Installing

The examples below assume a debian/ubuntu environment. If you're running another unix-like or windows OS your milage may vary. Our goal is for lobber to run on a multitude of environments and operating systems. Please provide us with patches!

Install Transmission

We recommend installing transmission 2.03 or later. If you are using Ubuntu 10.04 you may have to install transmission from a PPA:

# apt-get install python-software-properties
# add-apt-repository ppa:transmissionbt/ppa
# apt-get update
# apt-get install transmission-cli transmission-daemon

At this point you should have a transmission daemon running after each reboot. Use the /etc/init.d/transmission-daemon tool to stop/start the service in the normal way.

Install lobber-storagenode

Install dependencies:

apt-get install python-pip python-setuptools python-twisted
pip install stompservice transmissionrpc feedparser

Get the storage node from git.nordu.net:

git clone git@git.nordu.net:lobber-storagenode.git

Install the storagenode:

cd lobber-storagenode
python setup.py install

At this point twistd should have a new plugin registered. Verify this by running twistd --help and look for lobberstoragenode in the list of commands. If you see this then you're installation should be ok.

# twistd --help
...
Commands:
    ftp                    An FTP server.
    telnet                 A simple, telnet-based remote debugging service.
    socks                  A SOCKSv4 proxy service.
    manhole-old            An interactive remote debugger service.
    portforward            A simple port-forwarder.
    lobberstoragenode      A Storage Node for Lobber
    web                    A general-purpose web server which can serve from a
                           filesystem or application resource.
    inetd                  An inetd(8) replacement.
    news                   A news server.
    xmpp-router            An XMPP Router server
    words                  A modern words server
    toc                    An AIM TOC service.
    dns                    A domain name server.
    mail                   An email service
    manhole                An interactive remote debugger service accessible via
                           telnet and ssh and providing syntax coloring and
                           basic line editing functionality.
    conch                  A Conch SSH service.

Running twistd lobberstoragenode --help gives you an overview of the options:

$ twistd lobberstoragenode --help
Usage: twistd [options] lobberstoragenode [options]
Options:
  -n, --standardNotifications      Add standard notificiation destinations
  -R, --register                   Register new torrents with lobber
  -a, --announceUrl=               Announce URL (tracker) to use for new
                                   torrents
  -A, --acl=                       Access Control List to apply to new torrents
  -b, --dropbox=                   A directory to watch for new content
  -d, --torrentDir=                The directory where to store torrents
                                   [default: torrents]
  -D, --transmissionDownloadsDir=  The downloads directory for transmission
                                   [default:
                                   /var/lib/transmission-daemon/downloads]
  -h, --lobberHost=                The host running both STOMP and https for
                                   lobber
  -k, --lobberKey=                 The Lobber application key to use
  -p, --trackerProxyTrackerUrl=    Enable tracker proxying for given https
                                   tracker (HOST[:PORT])
  -P, --trackerProxyListenOn=      Adress to bind the tracker proxy to [default:
                                   localhost:8080]
  -r, --removeLimit=               Remove torrent and data when this many other
                                   storage-nodes have the data (0=never remove)
                                   [default: 0]
  -S, --stompUrl=                  The STOMP protocol URL to use for
                                   notifications
  -T, --transmissionRpc=           The RPC URL for transmission
      --version                    
      --help                       Display this help and exit.

Configuration

Stand-alone storage node

First you will have to create a key with the right entitlements to be able to access the torrents you are interested in.

Find the script lobberstoragenode in the directory scripts in lobber-storagenode.

You need to change the following options:

L_KEY="[KEY]"
L_HOST="tracker.someserver.net"

L_TRACKERPROXYURL="https://tracker.someserver.net:443/tracker/uannounce"
L_TRACKERPROXYLISTEN="localhost:8080"
L_URLS="https://tracker.someserver.net/torrent/all.json ... ..."

L_URLS is a set of STOMP destinations and/or RSS feeds. Each destination is pulled regularly and each link is downloaded. If the downloaded data is a BitTorrent file it is stored in the --torrentDir directory and added to transmission.

By default (L_STDNOTIFY="True") the standalone storage node will listen to stomp://tracker.someserver.net/torrent/new.

STOMP destinations

Location

What it gets you

/torrent/new

Each newly created torrent

/torrent/tag/add

Each time a torrent is tagged

/torrent/tag/add/foo

Each time a torrent is tagged with 'foo'

/torrent/tag/remove/foo

Each time the 'foo' tag is removed from a torrrent

RSS URLs

Location

What it gets you

https://lobber.example.org/torrents/all.rss

All torrents readable by the current user (or key)

https://lobber.example.org/torrents/tag/foo.rss

All torrents tagged with 'foo'

Copy the script to the start up script folder and change permissions on it.

cp lobberstoragenode /etc/init.d/lobberstoragenode
chmod 755 /etc/init.d/lobberstoragenode

Start the storage node:

/etc/init.d/lobberstoragenode standalone start

Storage node for Lobber web application

To start a storage node to complement the Lobber web application you need first to create a key with the right entitlements and url filter via the web ui.

To make the storage node able to write in transmissions standard download directory you need to add the group debian-transmission to the www-data user.

usermod -G debian-transmission www-data

To make transmission read files in the dropbox directory change ownership for it to debian-transmission and set the gid bit for the directory.

chown debian-transmission:debian-transmission /path/to/lobber/dropbox
chmod g+s /path/to/lobber/dropbox

Find the script lobberstoragenode in the directory scripts in lobber-storagenode.

You need to change the following options:

L_KEY="[KEY]"
L_HOST="localhost"

L_DROPBOXDIR="/path/to/lobber/dropbox"

Copy the script to the start up script folder and change permissions on it.

cp lobberstoragenode /etc/init.d/lobberstoragenode
chmod 755 /etc/init.d/lobberstoragenode

Start the storage node:

/etc/init.d/lobberstoragenode webapp start