Based on [[howto:linux:install:fedora|Fedora Installation Guide]] and help from will on the forums. This was tested on CentOS 6.3 (Final) ==== Prerequisites ==== * Javayum install java-1.6.0-openjdk FIXME update for Java 8 ==== 1.Download Serviio ==== Always check http://www.serviio.org/download for the latest version first. wget http://download.serviio.org/releases/serviio-1.1-linux.tar.gz ==== 2.Extract Serviio ==== tar -C /opt -zxvf serviio-1.1-linux.tar.gz mv /opt/serviio-1.1 /opt/serviio ==== 3.Create Serviio's user ==== useradd -d /opt/serviio -r serviio chown -R serviio:serviio /opt/serviio ==== 4. Init.d script ==== 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 ==== 5. Enable service ==== chmod +x /etc/init.d/serviio chkconfig --add serviio chkconfig serviio on ==== 6. Start Serviio ==== service serviio start ==== 7. Stop Serviio ==== service serviio stop ==== 8. IP Tables rules ==== (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" ==== 9. Build ffmpeg ==== 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 [[:build_ffmpeg_linux|Building FFmpeg on Linux]] but edited slightly for CentOS: * Remove existing packages, and install essential build packages for lateryum 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 * x264 (optional)cd ~ mkdir src cd src git clone git://git.videolan.org/x264 cd x264 ./configure --enable-static --prefix=/usr make fprofiled make install * Libvpx (optional)cd ~/src git clone http://git.chromium.org/webm/libvpx.git cd libvpx ./configure make install * rtmpdumpcd ~/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. * ffmpegcd ~/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 * Add the ffmpeg location to /opt/serviio/bin/serviio.sh by updating the following line with the -Dffmpeg.location e.g.: # 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" * At this point it should be working, I have this tested on an XBox 360, if you have any troubles you may find my the forum post here useful [[http://forum.serviio.org/viewtopic.php?f=7&t=7277&start=0]] ~~NOTOC~~