Kategorien

Druckansicht des Beitrags Druckansicht des Beitrags

Logitech Media Server auf FreeNAS 11

Installation des Logitech Media Servers im Jail

Um den Logitech Media Server auf FreeNAS 11 zu betreiben bin ich wie folgt vorgegangen:

  1. Anleitung zum Bauen des Logitech Media Servers aus dem Forum befolgen (hierzu habe ich ein separates Jail verwendet). Diese Anleitung funktioniert auch unter FreeNAS 11.
  2. Eigenen Jail für den Logitech Media Server erstellen (Name: lms)
  3. Das erzeugte Paket in den neu erstellten Jail kopieren. Den folgenden Befehl auf der FreeNAS Konsole ausführen
    cp /mnt/data0/jails/lms_build/tmp/LMS/logitechmediaserver-7.9.0-FreeBSD.tar /mnt/jails/lms/tmp/
  4. Analoge Schritte aus dem Forum befolgen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    
    pkg update
    pkg upgrade
    pw groupadd -n lms -g 30001
    pw useradd -n lms -u 30001 -g lms -s /usr/sbin/nologin -c "Logitech Media Server" -d /nonexistent
    mkdir /usr/local/lms
    tar xf /tmp/logitechmediaserver-7.9.0-FreeBSD.tar -C /usr/local/lms
    mv /usr/local/lms/logitechmediaserver-7.9.0-FreeBSD/* /usr/local/lms
    rmdir /usr/local/lms/logitechmediaserver-7.9.0-FreeBSD/
    chown -R lms:lms /usr/local/lms
    rm /usr/bin/perl
    rm /usr/bin/perl5
    ln -s -f /usr/local/bin/perl5.24.3 /usr/bin/perl
    ln -s -f /usr/local/bin/perl5.24.3 /usr/bin/perl5
  5. Init-Skript /etc/rc.d/lms zum automatischen Start des Logitech Media Servers mit folgenden Inhalt erstellen:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    
    #!/bin/sh
     
    # This script is a modified version of:
    # $FreeBSD: branches/RELENG_9_2_0/audio/squeezeboxserver/files/squeezeboxserver.in 302141 2012-08-05 23:19:36Z dougb $
     
    # PROVIDE: lms
    # REQUIRE: LOGIN
    # KEYWORD: shutdown
     
    # Add the following lines to /etc/rc.conf to enable lms on startup:
    # lms_enable="YES"
     
    # Optional configuration parameters:
    # Directory where lms writes it's logs to.
    # lms_logdir="/var/log/lms"
    #
    # Directory where lms stores it's cache files.
    # lms_cachedir="/var/db/lms/cache"
    #
    # Directory where lms stores it's configuration.
    # lms_prefsdir="/var/db/lms/prefs"
    #
    # Directory where lms stores the playlists. THIS NEEDS TO BE CONFIGURED THROUGH THE UI.
    # lms_playlistdir="/var/db/lms/playlists"
    #
    # Additional parameters, e.g. "--noimage --novideo"
    # lms_flags=""
    #
    # The charset lms uses.
    # lms_charset="UTF-8"
    #
    # The LC_CTYPE envvar which is necessary to get rid of the warning
    # """
    # Your locale was detected as C, you may have problems with non-Latin filenames.
    # Consider changing your LANG variable to the correct locale, i.e. en_US.utf8.
    # """
    # See https://forums.freenas.org/index.php?threads/logitech-media-server-for-freenas-9-2-1-1.19044/page-3#post-132872
    # lms_lc_ctype="en_US.UTF.8"
     
    . /etc/rc.subr
     
    name=lms
    rcvar=lms_enable
     
    pidfile=/var/run/${name}/${name}.pid
    lms_user=lms
    lms_group=lms
     
    load_rc_config ${name}
     
    : ${lms_enable="NO"}
    : ${lms_logdir="/var/log/${name}"}
    : ${lms_cachedir="/var/db/${name}/cache"}
    : ${lms_prefsdir="/var/db/${name}/prefs"}
    : ${lms_playlistdir="/var/db/${name}/playlists"}
    : ${lms_flags=""}
    : ${lms_charset="UTF-8"}
    : ${lms_lc_ctype="en_US.UTF-8"}
     
    command_interpreter=/usr/bin/perl
    command=/usr/local/lms/slimserver.pl
    command_args="\
    --daemon \
    --pidfile=${pidfile} \
    --logdir=${lms_logdir} \
    --cachedir=${lms_cachedir} \
    --prefsdir=${lms_prefsdir} \
    --charset=${lms_charset} \
    ${lms_flags}"
     
    start_precmd="lms_start_precmd"
    stop_postcmd="lms_stop_postcmd"
     
    lms_start_precmd()
    {
            export LC_CTYPE="${lms_lc_ctype}"
     
            if [ ! -d "${pidfile%/*}" ]; then
                    install -d -o ${lms_user} -g ${lms_group} ${pidfile%/*};
            fi
     
            if [ ! -d "${lms_logdir}" ]; then
                    install -d -o ${lms_user} -g ${lms_group} "${lms_logdir}";
            fi
     
            if [ ! -d "${lms_cachedir}" ]; then
                    install -d -o ${lms_user} -g ${lms_group} "${lms_cachedir}";
            fi
     
            if [ ! -d "${lms_prefsdir}" ]; then
                    install -d -o ${lms_user} -g ${lms_group} "${lms_prefsdir}";
            fi
     
            if [ ! -d "${lms_playlistdir}" ]; then
                    install -d -o ${lms_user} -g ${lms_group} "${lms_playlistdir}";
            fi
    }
     
    lms_stop_postcmd()
    {
            pids=`pgrep -u ${lms_user}`
            if [ -n "${pids}" ]; then
                    sleep 1
                    kill $pids > /dev/null 2>&1
            fi
            pids=`pgrep -u ${lms_user}`
            if [ -n "${pids}" ]; then
                    wait_for_pids $pids
            fi
    }
     
    run_rc_command "$1"
  6. Sicherstellen, dass das Init-Skript ausführbar ist
    chmod +x /etc/rc.d/lms
  7. Datei /etc/rc.conf editieren und die folgende Zeile ergänzen
    lms_enable=“YES“
  8. Zusätzlich erforderliche Verzeichnisse erstellen und Rechte anpassen
    1
    2
    
    mkdir -p /var/log/lms /var/db/lms/cache /var/db/lms/prefs /var/db/lms/playlists
    chown -R lms:lms /var/log/lms /var/db/lms/cache /var/db/lms/prefs /var/db/lms/playlists
  9. Benötigtes perl Package installieren
    pkg install p5-IO-Socket-SSL
  10. Logitech Media Server starten
    /etc/rc.d/lms start
  11. Binaries zur Umwandlung im richtigen Ordner hinterlegen und ausführbar machen
    cp /usr/local/lms/Bin/i386-freebsd-64int/* /usr/local/lms/Bin/
    chmod +x faad flac sls wvunpack

Erweiterung des Dateispektrums des Logitech Media Servers

Der Logitech Media Server benötigt nnoch weitere Binaries, um zusätzliche Formate umzuwandeln z.B. Monkey’s Audio (APE). aus diesem Grund habe ich die folgenden Programme nachinstalliert

1
2
pkg install mac
ln -s /usr/local/bin/mac /usr/local/lms/Bin/mac

Will man Cue-Sheets mit APE-Dateien verwenden, benötigt man ffmpeg. Der für mich einfachste Weg war, ein statisches Binary herunterzuladen und in FreeNAS Linux Kompatibilität herzustellen. Dazu unter System -> Tunable den Punkt Add Tunable auswählen und folgende Variablen setzen
Variable: linux_load
Value: YES
Type: Loader
Type: rc.conf
Enabled: yes
Um einen Neustart zu vermeiden, manuell das entsprechende Modul laden (FreeNAS Konsole):

kldload linux

Dann statisches ffmpeg herunterladen und entsprechend verschieben

1
2
3
fetch https://johnvansickle.com/ffmpeg/builds/ffmpeg-git-32bit-static.tar.xz
tar xf ffmpeg-git-32bit-static.tar.xz -C /usr/local/lms/Bin
mv /usr/local/lms/Bin/ffmpeg-git-20170929-32bit-static/ffmpeg /usr/local/lms/Bin

Testen, ob ffmpeg ausgeführt werden kann

/usr/local/lms/Bin/ffmpeg

Jetzt noch wie in meinem anderen Blogartikel beschrieben die convert.conf anpassen und das Skript ffmpeg_wrapper in /usr/local/lms/Bin/ ablegen. Da dieses nur mit der bash funktioniert, diese Shell nachinstallieren

pkg install bash

und die erste Zeile von ffmpeg_wrapper in

#!/usr/local/bin/bash

anpassen. Außerdem wird noch lame benötigt

1
2
3
4
cd /usr/ports/audio/lame
pkg install gmake gcc
make install
ln -s /usr/local/bin/lame /usr/local/lms/Bin/lame

Zum Schluss noch entsprechend der Anleitung die Datei /usr/local/lms/Slim/Formats/APE.pm anpassen.

Leave a Reply

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>