Based on Fedora Installation Guide and help from will on the forums.
This was tested on CentOS 6.3 (Final)
yum install java-1.6.0-openjdk
update for Java 8
Always check http://www.serviio.org/download for the latest version first.
wget http://download.serviio.org/releases/serviio-1.1-linux.tar.gz
tar -C /opt -zxvf serviio-1.1-linux.tar.gz mv /opt/serviio-1.1 /opt/serviio
useradd -d /opt/serviio -r serviio chown -R serviio:serviio /opt/serviio
Create the initscript /etc/init.d/serviio with the following code:
#! /bin/sh # # chkconfig 35 85 15 # description: Start the serviio DLNA server in headless mode ### BEGIN INIT INFO # Provides: serviio # Required-Start: $network # Required-Stop: $network # Default-Start: 3 5 # Default-Stop: 0 1 2 6 # Description: Start the serviio DLNA server in headless mode ### END INIT INFO SERVIIO_HOME="/opt/serviio" SERVIIO_DAEMON="serviio.sh" SERVIIO_BIN="$SERVIIO_HOME/bin/$SERVIIO_DAEMON" SERVIIO_USER="serviio" # Source function library. . /etc/rc.d/init.d/functions RETVAL=0 check() { # Check that we're a privileged user [ $(id -u) = 0 ] || exit 4 # Check if SERVIIO_HOME exists test -d "$SERVIIO_HOME" || exit 5 # Check if SERVIIO_BIN is executable test -x "$SERVIIO_BIN" || exit 5 } start() { check echo -n "Starting Serviio DLNA server: " /bin/su --session-command="$SERVIIO_BIN -headless" $SERVIIO_USER & RETVAL=$? if [ $RETVAL -eq 0 ]; then touch /var/lock/subsys/serviio.sh echo_success else echo_failure fi echo return $RETVAL } stop() { check echo -n "Shutting down Serviio DLNA daemon: " # Retrieve JAVA Serviio process ID PIDDAEMON=`pgrep $SERVIIO_DAEMON` [ -z "$PIDDAEMON" ] || PIDJAVA=`ps -o pid= --ppid $PIDDAEMON` # Kill the daemon killproc "$SERVIIO_BIN" RETVAL=$? [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/serviio.sh echo # Kill the JAVA Serviio process if exists [ -z "$PIDJAVA" ] || kill -9 $PIDJAVA return $RETVAL } restart() { stop start } case "$1" in start) start ;; stop) stop ;; force-reload) restart ;; restart) restart ;; condrestart) if [ -f /var/lock/subsys/serviio.sh ]; then restart fi ;; status) status serviio.sh ;; *) echo $"Usage: $0 {start|stop|status|restart|condrestart|force-reload}" RETVAL=2 esac exit $RETVAL
chmod +x /etc/init.d/serviio chkconfig --add serviio chkconfig serviio on
service serviio start
service serviio stop
(I added these to my firewall.sh I run every time I update iptables, if you use another firewall just make sure the correct ports are open)
iptables -A INPUT -p udp -m udp --dport 1900 -j ACCEPT -m comment --comment "Serviio" iptables -A INPUT -p tcp --dport 8895 -j ACCEPT -m comment --comment "Serviio" iptables -A INPUT -p tcp --dport 23423 -j ACCEPT -m comment --comment "Serviio" iptables -A INPUT -p tcp --dport 23424 -j ACCEPT -m comment --comment "Serviio"
As of Serviio v1.0, you need ffmpeg v0.11 or greater so in most cases you will need to build ffmpeg from source, rather than use the version from yum.
As per Building FFmpeg on Linux but edited slightly for CentOS:
yum remove x264 ffmpeg -y yum install git libfaac-devel libmp3lame-devel libtheora-devel \ libva-devel libvdpau-devel libvorbis-devel libX11-devel libXfixes-devel texi2html yasm \ libxvidcore-devel libXext-devel libXfixes-devel librtmp-devel -y
cd ~ mkdir src cd src git clone git://git.videolan.org/x264 cd x264 ./configure --enable-static --prefix=/usr make fprofiled make install
cd ~/src git clone http://git.chromium.org/webm/libvpx.git cd libvpx ./configure make install
cd ~/src git clone git://git.ffmpeg.org/rtmpdump cd rtmpdump make SYS=posix
Some of the above libraries are optional, if you don't build them, remember to remove the equivilant –enable-libXXX from ./configure below.
cd ~/src wget http://download.serviio.org/opensource/ffmpeg-N-42368-gbf53863.tar.gz tar xvf ffmpeg-N-42368-gbf53863.tar.gz cd ffmpeg ./configure --enable-gpl --enable-libfaac --enable-libmp3lame --enable-libtheora \ --enable-libvorbis --enable-libx264 --enable-nonfree --enable-postproc --enable-version3 \ --enable-x11grab --enable-libvpx --enable-librtmp --enable-libxvid make make fprofiled make install
# Setup Serviio specific properties JAVA_OPTS="-Djava.net.preferIPv4Stack=true -Djava.awt.headless=true -Dderby.system.home=$SERVIIO_HOME/library -Dserviio.home=$SERVIIO_HOME -Dffmpeg.location=/usr/local/bin/ffmpeg"