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~~