Based on Fedora Installation Guide and help from will on the forums.
This was tested on CentOS 6.3 (Final)
Prerequisites
- Java
yum install java-1.6.0-openjdk
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 Building FFmpeg on Linux but edited slightly for CentOS:
- Remove existing packages, and install essential build packages for later
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
- 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
- rtmpdump
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.
- ffmpeg
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
- 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