Recently I set up an instance of djabberd on a box running Debian. Brad Fitzpatrick has posted helpful instructions for getting the daemon set up and configured (even though I needed to tweak the configuration a bit; see below).
What was missing was the ability to start/stop/reload the
daemon the Debian way using "/etc/init.d/djabberd
(start|stop|restart)
". Fortunately Debian makes this
pretty easy:
#! /bin/sh set -e PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin DESC="DJabberd" NAME="djabberd" DAEMON=/usr/local/djabberd/djabberd PIDFILE=/var/run/$NAME.pid SCRIPTNAME=/etc/init.d/$NAME OPTS="--conf=/etc/djabberd/my.conf" test -x $DAEMON || exit 0 d_start() { start-stop-daemon --start --quiet --pidfile $PIDFILE -m \ -d /usr/local/djabberd \ --chuid djabberd \ --background \ --exec $DAEMON -- $OPTS } d_stop() { start-stop-daemon --stop --quiet --pidfile $PIDFILE \ -d /usr/local/djabberd \ --name $NAME -- $OPTS } d_reload() { start-stop-daemon --stop --quiet --pidfile $PIDFILE \ --name $NAME --signal 1 } case "$1" in start) echo -n "Starting $DESC: $NAME" d_start echo "." ;; stop) echo -n "Stopping $DESC: $NAME" d_stop echo "." ;; restart|force-reload) echo -n "Restarting $DESC: $NAME" d_stop sleep 1 d_start echo "." ;; *) echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2 exit 1 ;; esac exit 0
I'm running djabberd with an unprivileged system-user
called "djabberd", which you'll have to add before using the
above script. The djabberd instance is located in
/usr/local/djabberd
in my configuration.
As mentioned above, Brad's configuration sample wasn't
fully up-to-date. Here is what I'm using in
/etc/djabberd/my.conf
:
OldSSL enable SSLCertificateFile /etc/djabberd/server-cert.pem SSLCertificateKeyFile /etc/djabberd/server-key.pem <VHost example.com> S2S enable RequireSSL yes <Plugin DJabberd::Authen::HTDigest> Realm djabberd HtDigest /etc/djabberd/djabberd.users </Plugin> <Plugin DJabberd::RosterStorage::SQLite> Database /etc/djabberd/jabber.sqlite </Plugin> </VHost>
And finally, here is what I use for logging djabberd errors:
log4perl.logger.DJabberd = ERROR, LOGFILE log4perl.logger.DJabberd.Hook = WARN log4perl.appender.LOGFILE=Log::Log4perl::Appender::File log4perl.appender.LOGFILE.filename=/var/log/djabberd.log log4perl.appender.LOGFILE.mode=append log4perl.appender.LOGFILE.layout=Log::Log4perl::Layout::PatternLayout log4perl.appender.LOGFILE.layout.ConversionPattern=%-5p %-40c %m %n
(Put this file in /etc/djabberd/log.conf
and
djabberd will find it automagically.)