- Twisted >= 8.0.1:
- Twisted Core
- Twisted Conch (for idavoll-http)
- Twisted Web (for idavoll-http)
- Twisted Web2 (for idavoll-http)
- Twisted Words
- uuid.py (Python 2.5 std. lib. or http://pypi.python.org/pypi/uuid)
- Wokkel >= 0.5.0 (http://wokkel.ik.nu/)
- simplejson (for idavoll-http)
- A Jabber server that supports the component protocol (XEP-0114)
For the PostgreSQL backend, the following is also required:
Idavoll uses setuptools for package building and installing, and is also
available through the Python Package Index (pypi). The easiest way to
install idavoll is:
This will pull down the dependencies, if needed, except for the Twisted
To building from source run:
python setup.py build
Then, to install run the following, possibly as root:
python setup.py install
See the setuptools documentation for further information on changing
Idavoll uses Twisted's twistd command for running its services. Starting with
Twisted 2.5.0, twistd supports running Twisted Application Plugins directly,
without the use of mktap. In Twisted 8.1.0, the use of mktap for configuration
is deprecated. These instructions will not cover the use of mktap anymore, but
you can use TAC files to store a configuration, as described near the end
of this document.
Idavoll provides two types of storage for the backend: a memory-based storage
facility, which is volatile, and a persistent storage facility using
PostgreSQL. By default, the memory backend is used.
For using the PostgreSQL backend, create a database (for example named pubsub)
psql pubsub <db/pubsub.sql
To use this backend, add the --backend=pgsql parameter to twistd, along
with the optional connection parameters (see twistd idavoll --help).
Your Jabber server must also be configured to accept component connections,
see below for details.
Idavoll provides two twistd plugins: idavoll and idavoll-http. The former
provides a generic publish-subscribe service, and the latter adds to that an
HTTP interface to access some of the features of the Idavoll backend, and also
provides a way to subscribe to, and receive notifications from, remote
The minimal example for running idavoll is:
This will start the service and run it in the background. It generates a
file twistd.pid that holds the PID of the service and a log file twistd.log.
The twistd utility has a fair number of options that might be useful, and
can be viewed with:
When the service starts, it will connect to the Jabber server at the local
machine using the component protocol, and assumes the JID 'pubsub'. This
assumes a couple of defaults which can be overridden by passing parameters to
the twistd plugin. You can get an overview of the parameters and their defaults
twistd idavoll --help
In particular, the following parameters will be of interest:
--jid: The Jabber ID the component will assume.
--rport: the port number of the Jabber server to connect to
--secret: the secret used to authenticate with the Jabber server.
--backend: the backend storage facility to be used (memory or PostgreSQL).
The defaults for Idavoll use the memory database and assume the default
settings of jabberd 2.x for --rport and --secret.
You may also want to provide the --verbose flag to see the traffic flow,
for example to debug the configuration. Below some specifics for the
different Jabber server implementations.
You can use the 'legacy' component support that defaults to port 5347 with
secret 'secret'. These are the defaults of Idavoll, so you don't need to
alter the connection details with a default jabberd 2.x install.
Put the following in the jabber.xml configuration file of jabberd:
and restart jabberd. Unlike jabber 2.x, you can only have one component per
port, so the port number may need to be changed.
For other server implementations, please refer to its documentation on
how to interact with server side components using the protocol defined in
Then, you can start Idavoll with:
twistd idavoll --rport=5347 --jid=pubsub.localhost --secret=secret
This uses the (default) memory based backend.
Using TAC files to store a configuration
Apart from the provided TAPs that can be run with twistd, you can also create
a configuration file that can be used by twistd to start up Idavoll. You can
find an example in doc/examples/idavoll.tac, which can be run using:
twisted -y idavoll.tac