Thanks to @shadowzero and his excellent Serviio Install Guide, I've been happily using Serviio for a couple years. However, I recently was given a ChromeCast, but was frustrated by it's inability to stream content from the local network. After some searching, I came across BubbleUPNP which does exactly what I needed, but was a bit of a pain to install. I documented all my steps and am sharing it here in case it may be of use to anyone else.
BubbleUPNP Install Guide
Requirements: a UPNP server (anything should work, I use Serviio) BubbleUPNP, Java 8.x, Android Phone
Pre-Installaion:
- Check for Java
If it's installed you'll get output similar to below and can skip installing Java and go immediately to step 1Zitatjava version "1.8.0_72"
Java(TM) SE Runtime Environment (build 1.8.0_72-b15)
Java HotSpot(TM) 64-Bit Server VM (build 25.72-b15, mixed mode) - add the Java 8 repository, then install the Java 8 runtimeCode
echo "deb http://ppa.launchpad.net/webupd8team/java/ubuntu trusty main" | tee /etc/apt/sources.list.d/webupd8team-java.list echo "deb-src http://ppa.launchpad.net/webupd8team/java/ubuntu trusty main" | tee -a /etc/apt/sources.list.d/webupd8team-java.list apt-key adv --keyserver keyserver.ubuntu.com --recv-keys EEA14886 apt-get update apt-get install oracle-java8-installer
- Set Oracle Java 8 as the default on the system:
Installation:
- The first step is to download BubbleUPNP:
Then unzip it:
You'll also need ffmpeg in the BubbleUPNP directory for it to function properly: -
ffmpeg needs to be unzipped as well: - Move BubbleUPNP to a better location than your home directory:
- And make things executable:
- You don't want services running as root (security risk!), so we'll create a new user that will only be responsible for running BubbleUPNP:
- our new user needs to own the folder in order to do it's job:
- It's time to create our startup script. Open nano (or the text editor of your choice):
and paste in the following:Bash
Alles anzeigen#!/bin/bash ### BEGIN INIT INFO # Provides: BubbleServer # Required-Start: $remote_fs $syslog # Required-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: BubbleUPnP Server Background Service Management # Description: Used to ensure BubbleUPnP starts/stops etc ### END INIT INFO . /lib/lsb/init-functions if [ -f /etc/default/rcS ]; then . /etc/default/rcS fi DAEMON="/usr/local/bubbleupnp/launch.sh" DAEMONOPTS="" NAME="bubbleupnp" DESC="Runs BubbleUPnPServer" PIDFILE=/var/run/$NAME.pid SCRIPTNAME=/etc/init.d/$NAME DAEMON_STOP=" -stop" SERVICE_ACCOUNT="bubbleupnp" ## DON'T RUN UNDER ROOT! TIMEOUT=3 DAEMON_PATH="/usr/local/bubbleupnp/" case "$1" in start) printf "%-50s" "Starting $NAME..." cd $DAEMON_PATH PID=`sudo -u $SERVICE_ACCOUNT $DAEMON $DAEMONOPTS > /dev/null 2>&1 & echo $!` #echo "Saving PID" $PID " to " $PIDFILE if [ -z $PID ]; then printf "%sn" "Fail" else echo $PID > $PIDFILE printf "%sn" "Ok" fi ;; status) printf "%-50s" "Checking $NAME..." if [ -f $PIDFILE ]; then PID=`cat $PIDFILE` if [ -z "`ps axf | grep ${PID} | grep -v grep`" ]; then printf "%sn" "Process dead but pidfile exists" else echo "Running" fi else printf "%sn" "Service not running" fi ;; stop) printf "%-50s" "Stopping $NAME" PID=`cat $PIDFILE` cd $DAEMON_PATH if [ -f $PIDFILE ]; then kill -HUP $PID printf "%sn" "Ok" rm -f $PIDFILE else printf "%sn" "pidfile not found" fi ;; restart) $0 stop $0 start ;; *) echo "Usage: $0 {status|start|stop|restart}" exit 1 esac
Save it (Ctrl-o) and exit (Ctrl-x) the editor.
If you've made any changes to usernames, directories, etc, please ensure you make the necessary changes in the script as well. - This script needs to be executable:
And root needs to own it:
It needs to be added to startup: - The moment of truth! Let's start the service:
- Did it work? Let's make sure it's running:
- Time to configure the server!
http://<server>:58050