Jump to content

sweetpotatoe

Members
  • Posts

    8
  • Joined

  • Last visited

Posts posted by sweetpotatoe

  1. You should be a bit more specific which distro you use. Armbian images were either Debian Wheezy, Jessie, Ubuntu Trusty or Xenial (support for Wheezy and Trusty removed a few hours ago). Usually Ubuntu images are more up to date (and sometimes faster since built with a more recent GCC version). So please add for which distro your instructions should apply.

     

    Edited the first post and added the information.

  2. Is there a reason for you to compile it yourself? I've been using the version from the official packages for quite a while now. I remember there were problems long time ago with version 0.19. But since Espen Jurgensen took over the development (from forked-daapd >= 0.20) this works very reliable. Installation from the official repos is really easy...

     

    when i tried to use forked-daapd for the first time, it just didn´t work with my iTunes (OS X and Windows 7). Later I found, that Apple changed some small parts of their software :)

    Getting the most up-to-date version of forked-daapd solved the problem. And it was just available from source.

     

    The developer is very active, so I always have a very good change to solve any kind of problem just by compiling myself.

  3. If you follow https://github.com/ejurgensen/forked-daapd you will get a lot of error-messages. 

     

    Here is guide to install it on your Orange Pi Pc (Debian Jessie),

    sudo apt-get install build-essential git autotools-dev autoconf libtool gettext gawk gperf \
      antlr3 libantlr3c-dev libconfuse-dev libunistring-dev libsqlite3-dev \
      libavcodec-dev libavformat-dev libavfilter-dev libswscale-dev libavutil-dev \
      libasound2-dev libmxml-dev libgcrypt11-dev libavahi-client-dev zlib1g-dev \
      libevent-dev
    

    for Armbian you need some little extras installed

    sudo apt-get install libcurl4-gnutls-dev 
    sudo apt-get install libjson0 libjson0-dev
    sudo apt-get install avahi-daemon avahi-discover libnss-mdns
    

    then you run

     git clone https://github.com/ejurgensen/forked-daapd.git
     cd forked-daapd
     autoreconf -i
     ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var
     make
     sudo make install
    

    create the new user 

    sudo adduser daapd

    adjust the settings for your music-path in /etc/forked-daapd.conf

     

     on my Orange Pi, the file /etc/init.d/forked-daapd was missing. If yours is missing, too, just add it:

    sudo nano /etc/init.d/forked-daapd
    

    and copy this text inside:

    #! /bin/sh
    
    ### BEGIN INIT INFO
    # Provides:          forked-daapd
    # Required-Start:    $local_fs $remote_fs $network $time avahi
    # Required-Stop:     $local_fs $remote_fs $network $time
    # Default-Start:     2 3 4 5
    # Default-Stop:      0 1 6
    # Short-Description: media server with support for RSP, DAAP, DACP and AirTunes
    # Description:       forked-daapd is an iTunes-compatible media server for
    #                    sharing your music library over the local network with RSP
    #                    clients like the SoundBridge from Roku and DAAP clients like
    #                    iTunes. It can also stream music to AirTunes devices.
    ### END INIT INFO
    
    PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
    DAEMON=/usr/sbin/forked-daapd
    NAME=forked-daapd
    DESC="RSP and DAAP media server"
    
    test -x $DAEMON || exit 0
    
    PIDFILE=/var/run/$NAME.pid
    
    set -e
    
    running_pid()
    {
        # Check if a given process pid's cmdline matches a given name
        pid=$1
        name=$2
        [ -z "$pid" ] && return 1
        [ ! -d /proc/$pid ] &&  return 1
        cmd=`cat /proc/$pid/cmdline | tr "\000" "\n"|head -n 1 |cut -d : -f 1`
        # Is this the expected child?
        [ "$cmd" != "$name" ] &&  return 1
        return 0
    }
    
    running()
    {
    # Check if the process is running looking at /proc
    # (works for all users)
    
        # No pidfile, probably no daemon present
        [ ! -f "$PIDFILE" ] && return 1
        # Obtain the pid and check it against the binary name
        pid=`cat $PIDFILE`
        running_pid $pid $DAEMON || return 1
        return 0
    }
    
    force_stop() {
    # Forcefully kill the process
        [ ! -f "$PIDFILE" ] && return
        if running ; then
            kill -15 $pid
            # Is it really dead?
            if running ; then
                kill -9 $pid
                if running ; then
                    echo "Cannot kill $NAME (pid=$pid)!"
                    exit 1
                fi
            fi
        fi
        rm -f $PIDFILE
        return 0
    }
    
    case "$1" in
      start)
            echo -n "Starting $DESC: "
            start-stop-daemon --start --quiet --pidfile $PIDFILE \
                --exec $DAEMON -- $DAEMON_OPTS
            if running ; then
                echo "$NAME."
            else
                echo " ERROR."
            fi
            ;;
      stop)
            echo -n "Stopping $DESC: "
            start-stop-daemon --oknodo --stop --quiet --pidfile $PIDFILE \
                --exec $DAEMON
            echo "$NAME."
            ;;
      force-reload)
            start-stop-daemon --stop --test --quiet --pidfile \
                /var/run/$NAME.pid --exec $DAEMON \
                && $0 restart \
                || exit 0
            ;;
      restart)
            PID=$(cat $PIDFILE 2> /dev/null || true)
    
            echo -n "Restarting $DESC: "
            start-stop-daemon --stop --quiet --oknodo --pidfile \
                /var/run/$NAME.pid --exec $DAEMON
    
            if [ -n "$PID" ]; then
                while running_pid $PID $DAEMON; do echo -n "."; sleep 1; done
            fi
    
            start-stop-daemon --start --quiet --pidfile \
                /var/run/$NAME.pid --exec $DAEMON -- $DAEMON_OPTS
            echo "$NAME."
            ;;
      status)
        echo -n "$NAME is "
        if running ;  then
            echo "running"
        else
            echo " not running."
            exit 1
        fi
        ;;
      *)
        N=/etc/init.d/$NAME
        echo "Usage: $N {start|stop|restart|force-reload|status}" >&2
        exit 1
        ;;
    esac
    
    exit 0
    
    

    Save it. 

     

    Now we need to allow the service access to it´s own database:

    sudo chown -R daapd /var/cache/forked-daapd 
    

    Start the service:

    sudo /etc/init.d/forked-daapd restart
    tail -f /var/log/forked-daapd.log
    

    you should see some activity on the log-file. After the scanning is complete, you can see your Orange Pi music-server in iTunes.

     

    Automatic updates for the music-server (e.g. at 4am in the morning, necessary if you use a network-share for the data):

    sudo crontab -e
    

    and add the line

    0 4 * * * touch /{path to your music}/trigger.init-rescan
    
  4. For my Orange Pi PC, I just switched from the buggy debian-image to Armbian. Armbian works fantastic, but there is one small problem with my ssh reverse tunnel.

     

    On the (old) debian system i had my script tunnel.sh:

    #!/bin/bash
    /usr/bin/autossh -p2000 -fNC -R 9000:localhost:9091 -R 5057:localhost:4949 -R 8000:localhost:8888 -R 10012:localhost:22 myusername@www.mydomain.com
    

    The remote Pi will call my gateway Pi at port 2000. Whenever i call the gateway-ip:9000 i am at port 9091 on my remote pi etc.

    Worked flawless.

     

    After I changed to Armbian, this mini-script for tunnel.sh works, too:

    #!/bin/bash
    /usr/bin/autossh -p2000 -fNC -R 10012:localhost:22 myusername@www.mydomain.com
    

    I can log in by SSH on port 10012 of my gateway Pi into my remote Pi.

    But i can´t add the other ports from the example above. The Orange Pi PC will reboot ok, but I can´t even log in by SSH through port 10012 of my gateway Pi.

     

    Any ideas, what i am doing wrong?

×
×
  • Create New...

Important Information

Terms of Use - Privacy Policy - Guidelines