Tot nu toe is de AppleTV 3 nog steeds niet jailbroken. Dit hield in dat je hier bijvoorbeeld ook nog steeds niet Plex op kon draaien. Nu is er sinds een tijdje een slimme truc bedacht om dit toch voor elkaar te krijgen. Het idee is dat je de output van het Trailer menu op de Apple TV (via aangepaste DNS instellingen) omleid naar jouw Server die dan hiervoor in de plaats Plex output terug geeft. Alle andere DNS request worden netjes doorgeleid.

Op deze manier kun je Plex draaien op iedere AppleTV, ongeacht of deze een jailbreak heeft of niet. Dit krijg je voor elkaar met PlexConnect waarover je meer informatie op deze thread kunt vinden.

In deze blog ga ik uitleggen hoe je PlexConnect aan de praat krijgt op een Debian Server. Ik ga er vanuit dat je PlexMediaServer al hebt geinstallered op dezelfde Debian Server zoals uitgelegd in een eerdere blog. Verder ga ik hieronder ervan uit dat je als superuser (su) bent ingelogd.

In mijn geval ga ik PlexConnect installeren in mijn home directory op ‘/home/henri’ met de volgende commando’s:

cd /home/henri
git clone https://github.com/iBaa/PlexConnect.git
./PlexConnect.py

Je krijgt nu een foutmelding (vanwege incorrecte configuratie) maar dat is geen probleem, want dat gaan we later oplossen.

Verder kreeg ik in mijn geval een foutmelding daar de DNS server van PlexConnect UDP port 53 probeerde te benaderen die al in gebruik was. Dit kwam omdat ik (vanwege een ander experiment) BIND9 op mijn systeem had staan. Na het stoppen en verwijderen van BIND9 was dit probleem opgelost.

Edit nu de file ‘Settings.cfg’

Verander ‘ip_webserver’ naar 0.0.0.0
Verander ‘port_webserver’ naar een poort die niet in gebruik is (b.v. 4500)
Verander ‘ip_plexconnect’ naar 0.0.0.0

Aangezien ik mijn blog ook op mijn Linux Server draai (op poort 80) en ik een redirect van het verkeer naar ‘trailers.apple.com’ naar poort 4500 wil doen, moet ik nog een aantal Apache2 instellingen veranderen:

Voeg het volgende toe aan ‘/etc/apache2/sites-enabled/000-default’

LoadModule proxy_module /usr/lib/apache2/modules/mod_proxy.so
LoadModule proxy_http_module /usr/lib/apache2/modules/mod_proxy_http.so

<VirtualHost *:80>
  SSLEngine off
  ServerName trailers.apple.com
  ServerAlias atv.plexconnect
  ProxyPreserveHost On

  <Proxy *>
    Order allow,deny
    Allow from all
  </Proxy *>
  
  AllowEncodedSlashes NoDecode

  ProxyPass / http://your.server.name.or.ip:4500/ nocanon
  ProxyPassReverse / http://your.server.name.or.ip:4500/
</Virtualhost>

Comment (of verwijder) verder de volgende regel uit ‘/etc/apache2/ports.conf’

NameVirtualHost *:80

Als je dit niet doet dan krijg je telkens bij het opstarten van apache2 de volgende waarschuwing (die overigens niet erg is):

[warn] NameVirtualHost *:80 has no VirtualHosts

Start vervolgens Apache2 opnieuw op met het volgende commando:

/etc/init.d/apache2 restart

Nu moeten we tenslotte er voor gaan zorgen dat PlexConnect voortaan automatisch opstart. Eerst moet je je huidige ‘plexmediaserver’ opstart-script aanpassen. Zie hiervoor de volgende thread wat je moet doen. In de toekomst (na Plex Media Server 0.9.8.3.xx voor Debian) is dit niet meer nodig.

Creëer nu de file ‘/etc/init.d/plexconnect’ met de volgende inhoud:

#!/bin/bash

#
# sample start stop script
#

# Package
DNAME="PlexConnect"
PNAME="PlexConnect_daemon"

# Others
INSTALL_DIR="/home/henri/PlexConnect"
PYTHON="python"
PROGRAM="${INSTALL_DIR}/${PNAME}.py"
PID_FILE="/var/${PNAME}.pid"


start_daemon ()
{
    cd "${INSTALL_DIR}"
    ${PYTHON} ${PROGRAM} --pidfile ${PID_FILE}
}

stop_daemon ()
{
    kill `cat ${PID_FILE}`
    wait_for_status 1 20 || kill -9 `cat ${PID_FILE}`
    rm -f ${PID_FILE}
}

daemon_status ()
{
    if [ -f ${PID_FILE} ] && kill -0 `cat ${PID_FILE}` > /dev/null 2>&1; then
        return
    fi
    rm -f ${PID_FILE}
    return 1
}

wait_for_status ()
{
    counter=$2
    while [ ${counter} -gt 0 ]; do
        daemon_status
        [ $? -eq $1 ] && return
        let counter=counter-1
        sleep 1
    done
    return 1
}


case $1 in
    start)
        if daemon_status; then
            echo ${DNAME} is already running
        else
            echo Starting ${DNAME} ...
            start_daemon
        fi
        ;;
    stop)
        if daemon_status; then
            echo Stopping ${DNAME} ...
            stop_daemon
        else
            echo ${DNAME} is not running
        fi
        ;;
    status)
        if daemon_status; then
            echo ${DNAME} is running
            exit 0
        else
            echo ${DNAME} is not running
            exit 1
        fi
        ;;
    *)
        exit 1
        ;;
esac

Tenslotte moeten we dit script nog executable maken en toevoegen aan de startup procedure met de volgende commando’s:

chmod 755 /etc/init.d/plexconnect
update-rc.d plexconnect defaults

Je kunt nu PlexConnect stoppen en starten op je Debian Server met het volgende commando:

/etc/init.d/plexconnect restart

Tenslotte moet je op je AppleTV nog de DNS instellingen aanpassen. Deze moet je laten wijzen naar het IP adres van je Debian Linux Server. Dit kun je in het Instellingen menu van je AppleTV doen.

Om tenslotte Plex te krijgen op je AppleTV hoef je alleen maar het Trailer icon te klikken en de rest wijst zichzelf uit.

Als je in toekomst je PlexConnect software wilt updaten moet je de volgende commando’s uitvoeren

cd /home/henri/PlexConnect
git pull

Ik denk dat prijzen van de AppleTV 2 na deze ‘truc’ zullen kelderen op Marktplaats 😉 daar je nu geen jailbreak meer nodig hebt…