diff --git a/server/djrandom.init b/server/djrandom.init
new file mode 100755
index 0000000000000000000000000000000000000000..53dbd31730c9b70ece759157ee8b474ef01c9c89
--- /dev/null
+++ b/server/djrandom.init
@@ -0,0 +1,88 @@
+#!/bin/bash
+#
+# Init script for djrandom frontend and backend workers.
+#
+### BEGIN INIT INFO
+# Provides:          djrandom
+# Required-Start:    $local_fs $remote_fs $network $syslog $named
+# Required-Stop:     $local_fs $remote_fs $network $syslog $named
+# Default-Start:     2 3 4 5
+# Default-Stop:      0 1 6
+# X-Interactive:     true
+# Short-Description: Start/stop DJRandom daemons
+### END INIT INFO
+
+# Usually tools will be installed in /usr/local/bin.
+PATH=/usr/local/bin:$PATH
+
+RUN_DIR=/var/run/djrandom
+USER=djrandom
+DAEMONS="receiver scanner fingerprinter frontend"
+COMMON_OPTIONS="--debug --user $USER"
+
+. /lib/lsb/init-functions
+
+[ -r /etc/default/djrandom ] && . /etc/default/djrandom
+
+
+start_daemons() {
+    ret=0
+    [ -d ${RUN_DIR} ] || mkdir -p ${RUN_DIR}
+    [ -n "${USER}" ] && chown ${USER} ${RUN_DIR}
+    for daemon in ${DAEMONS} ; do
+        program_name="djrandom-${daemon}"
+        pidfile="${RUN_DIR}/${program_name}.pid"
+
+        log_daemon_msg "Starting DJRandom ${daemon}" "${program_name}"
+
+        upcase_prog=$(echo ${program_name} | tr a-z A-Z)
+        program_opts=$(eval echo \${$(echo ${upcasevar})_OPTIONS})
+        options="${COMMON_OPTIONS} ${program_opts}"
+        if start-stop-daemon --start --quiet --pidfile ${pidfile} \
+            --exec ${program_name} -- --pidfile ${pidfile} --user ${USER} \
+            ${options} ; then
+            log_end_msg 0
+        else
+            log_end_msg 1
+            ret=1
+        fi
+    done
+    return ${ret}
+}
+
+stop_daemons() {
+    for daemon in ${DAEMONS} ; do
+        program_name="djrandom-${daemon}"
+        pidfile="${RUN_DIR}/${program_name}.pid"
+
+        log_daemon_msg "Stopping DJRandom ${daemon}" "${program_name}"
+        start-stop-daemon --stop --oknodo --quiet --pidfile ${pidfile}
+        log_end_msg 0
+    done
+}
+
+
+err=0
+
+case "$1" in
+    start)
+        start_daemons
+        err=$?
+        ;;
+
+    stop)
+        stop_daemons
+        ;;
+
+    restart)
+        stop_daemons
+        start_daemons
+        err=$?
+        ;;
+
+    *)
+        echo "Usage: $0 {start|stop|restart}"
+        ;;
+esac
+
+exit $err