diff --git a/conf/init b/conf/init
new file mode 100644
index 0000000..b7b7320
--- /dev/null
+++ b/conf/init
@@ -0,0 +1,158 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides: statsd
+# Required-Start: $network $local_fs
+# Required-Stop:
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+### END INIT INFO
+
+# Do NOT "set -e"
+
+PATH=$PATH:/usr/local/bin:/usr/bin:/bin
+NODE_BIN=$(which nodejs||which node)
+
+if [ ! -x "$NODE_BIN" ]; then
+  echo "Can't find executable nodejs or node in PATH=$PATH"
+  exit 1
+fi
+
+# PATH should only include /usr/* if it runs after the mountnfs.sh script
+PATH=/sbin:/usr/sbin:/bin:/usr/bin
+DESC="StatsD"
+NAME=statsd
+DAEMON=$NODE_BIN
+DAEMON_ARGS="/srv/statsd/stats.js /etc/statsd/localConfig.js 2>&1 >> /var/log/statsd/statsd.log "
+PIDFILE=/var/run/$NAME.pid
+SCRIPTNAME=/etc/init.d/$NAME
+CHDIR="/srv/statsd"
+
+# Exit if the package is not installed
+# [ -x "$DAEMON" ] || exit 0
+
+# Read configuration variable file if it is present
+[ -r /etc/default/$NAME ] && . /etc/default/$NAME
+
+# Load the VERBOSE setting and other rcS variables
+. /lib/init/vars.sh
+
+# Define LSB log_* functions.
+# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
+. /lib/lsb/init-functions
+
+#
+# Function that starts the daemon/service
+#
+do_start()
+{
+# Return
+# 0 if daemon has been started
+# 1 if daemon was already running
+# 2 if daemon could not be started
+start-stop-daemon --start --quiet -m --pidfile $PIDFILE --startas $DAEMON --background --test > /dev/null \
+|| return 1
+start-stop-daemon --start --quiet -m --pidfile $PIDFILE --startas $DAEMON --background --chdir $CHDIR -- \
+$DAEMON_ARGS > /dev/null 2> /var/log/$NAME-stderr.log \
+|| return 2
+# Add code here, if necessary, that waits for the process to be ready
+# to handle requests from services started subsequently which depend
+# on this one. As a last resort, sleep for some time.
+}
+
+#
+# Function that stops the daemon/service
+#
+do_stop()
+{
+# Return
+# 0 if daemon has been stopped
+# 1 if daemon was already stopped
+# 2 if daemon could not be stopped
+# other if a failure occurred
+start-stop-daemon --stop --quiet --retry=0/0/KILL/5 --pidfile $PIDFILE
+RETVAL="$?"
+[ "$RETVAL" = 2 ] && return 2
+# Wait for children to finish too if this is a daemon that forks
+# and if the daemon is only ever run from this initscript.
+# If the above conditions are not satisfied then add some other code
+# that waits for the process to drop all resources that could be
+# needed by services started subsequently. A last resort is to
+# sleep for some time.
+start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
+[ "$?" = 2 ] && return 2
+# Many daemons don't delete their pidfiles when they exit.
+rm -f $PIDFILE
+return "$RETVAL"
+}
+
+#
+# Function that sends a SIGHUP to the daemon/service
+#
+do_reload() {
+#
+# If the daemon can reload its configuration without
+# restarting (for example, when it is sent a SIGHUP),
+# then implement that here.
+#
+start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME
+return 0
+}
+
+case "$1" in
+  start)
+[ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
+do_start
+case "$?" in
+0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+esac
+;;
+  stop)
+[ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
+do_stop
+case "$?" in
+0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+esac
+;;
+  #reload|force-reload)
+#
+# If do_reload() is not implemented then leave this commented out
+# and leave 'force-reload' as an alias for 'restart'.
+#
+#log_daemon_msg "Reloading $DESC" "$NAME"
+#do_reload
+#log_end_msg $?
+#;;
+  restart|force-reload)
+#
+# If the "reload" option is implemented then remove the
+# 'force-reload' alias
+#
+log_daemon_msg "Restarting $DESC" "$NAME"
+do_stop
+case "$?" in
+0|1)
+do_start
+case "$?" in
+0) log_end_msg 0 ;;
+1) log_end_msg 1 ;; # Old process is still running
+*) log_end_msg 1 ;; # Failed to start
+esac
+;;
+*)
+# Failed to stop
+log_end_msg 1
+;;
+esac
+;;
+  status)
+    status_of_proc $DAEMON "$NAME"
+    ;;
+  *)
+echo "Usage: $SCRIPTNAME {start|stop|restart|status|force-reload}" >&2
+exit 3
+;;
+esac
+
+:
