Mehrere Phoniebox’n synchronisieren, damit Karten und Musik auf allen funktionieren

Dieser Beitrag richtet sich eher an Phoniebox Haushalte, die min. zwei Phonieboxen oder ein Linux-basiertes NAS oder ähnliches betreiben. Hintergrund ist, dass ich die Karten für beide Boxen auch untereinander einsetzen möchte. Somit sollten die Kartenkonfigurationen bzw. Playlists und Musikdateien synchronisiert werden. Das Ganze hab ich mittels rsync gelöst. Natürlich ist auch ein einfach Sync direkt zwischen zwei Boxen möglich, dann sollte eine Box die Aufgabe des Syncs übernehmen und die andere könnt Ihr wie nachfolgend als NAS betrachten, oder Ihr führt die Schritte einfach auf beiden Boxen aus…

YouTube

Mit dem Laden des Videos akzeptieren Sie die Datenschutzerklärung von YouTube.
Mehr erfahren

Video laden

Schritt 1: ssh Login ohne Zugangsdaten erlauben

Damit wir kein Klartextpasswort benötigen arbeiten wir mit Schlüsselpaaren. Wer mehr darüber erfahren will: Wiki-Beitrag zum Thema RSA Public Key Verfahren

Zunächst meldet euch per ssh an Eurer Phoniebox an. Im Regelfall mit dem User pi. Dort gebt folgende Befehle ein:

ssh-keygen -t rsa

Es folgen ein paar Abfragen, vom Prinzip könnt Ihr alles mit Enter durch bestätigen.

Mehrere Phoniebox'n synchronisieren, damit Karten und Musik auf allen funktionieren

Nun kopiert Euch die Datei ~/.ssh/id_rsa.pub auf Euer NAS-System. Zum Beispiel könnt Ihr das File erstmal in den Samba-Share der Phoniebox kopieren:

cp ~/.ssh/id_rsa.pub ~/RPi-Jukebox-RFID/shared

Nun geht es auf Euer NAS. Kopiert die Datei irgendwo hin und verbindet Euch ebenso per SSH auf das System. Wechselt in das Verzeichnis wohin Ihr die Datei gelegt habt und gebt folgenden Befehel ein:

cat id_rsa.pub >>~/.ssh/authorized_keys
chmod 0600 ~/.ssh/authorized_keys

Bitte beachtet, dass dies dann für den angemeldeten Benutzer gilt, als Beispiel admin oder root. Versucht nun mit folgendem Befehl auf Euer NAS zu kommen OHNE Passwort:

ssh <User>@<FQDN/IP>

Schritt 2: Autosync einrichten

Mittels rsync ist eine Synchronisation nun ein Kinderspiel:

rsync -az Username@FQDN/IP des Servers:/Pfad/auf/dem/Server/ /lokaler/Pfad/

Der Parameter a stellt eine ganze Latte von Parametern da. Damit werden u.a. Unterverzeichnisse, Berechtigungen, Links usw. mit übernommen. Der Parameter z aktiviert die Komprimierung bei der Übertragung der Daten. Zu beachten ist, dass rsync immer nur in eine Richtung synchronisiert. Im Beispiel wird vom Server auf das lokale Dateisystem gespeichert. Umgekehrt geht es auch:

rsync -az /lokaler/Pfad/ Username@FQDN/IP des Servers:/Pfad/auf/dem/Server 

Da ich mir das Leben gerne schwer mache und Skripte entwerfe, hier ein fertiges Script, welches Ihr auf Eure Belange einstellen könnt: https://github.com/splitti/phoniebox_rsync

Mehrere Phoniebox'n synchronisieren, damit Karten und Musik auf allen funktionieren

Ihr könnt Euch das Script mit folgendem Befehlen direkt auf die Box ziehen und startklar machen:

wget https://raw.githubusercontent.com/splitti/phoniebox_rsync/master/sync.sh
chmod 0700 sync.sh

Das Ganze Script synct erst, dann werden die Daten neu eingelesen und somit auch die Dienste neu gestartet. Daher macht ein Sync per Rfid-Karte Sinn. Eine Anleitung dazu findet Ihr hier: https://github.com/MiczFlor/RPi-Jukebox-RFID/wiki/MANUAL#cardcontrol

Dafür muss die Datei /home/pi/RPi-Jukebox-RFID/settings/rfid_trigger_play.conf z.B. folgende neue Zeile erhalten:

SYNCDATA="RFID-CARD-ID-012345"

Die ID passt Ihr passend zu Eurem Einsatz an. Dann muss noch die Datei /home/pi/RPi-Jukebox-RFID/scripts/rfid_trigger_play.sh erweitert werden. In Zeile 275 hinter dem Abschnitt

        $RECORDPLAYBACKLATEST)
            $PATHDATA/playout_controls.sh -c=recordplaybacklatest
            ;;

tragt Ihr dann

       $SYNCDATA)
            /home/pi/sync.sh
            ;;

ein. Dabei passt den Pfad entsprechend zu Eurer Datei an!

Solltet Ihr tatsächlich zwei Phonieboxen auf diese Art direkt synchronisieren, macht es noch Sinn auf der anderen Box die Dienste neu zu starten. Das funktioniert natürlich ebenso aus der Shell Remote:

ssh -q Username@IP/FQDN sudo service mopidy stop; sudo mopidyctl local scan; sudo service mopidy start

Das könnte Dich auch interessieren …

10 Antworten

  1. Piehti sagt:

    Ich habe auch vor meine Boxen zu syncen, allerdings läuft auf meinen NAS kein Linux. Wird wohl über smb und xcopy laufen… wenn, dann

  2. MaGru sagt:

    Ich habe gestern meine Box versucht fertig zu bauen und bin wegen eines Bugs fast wahnsinnig geworden. Die Box wollte einfach nach dem Starten nichts abspielen. Es musste irgendwie an mopidy liegen. Zufällig bin ich über deinen Betrag hier gestolpert und als ich die letzte Zeile deines Artikels laß, hatte ich eine Eingebung.
    sudo service mopidy stop; sudo mopidyctl local scan; sudo service mopidy start

    Das ganze ins Script für den Start-up-Sound gepackt, damit es erst am weit am Ende der Bootfolge ausgeführt wird und siehe da. Die Box läuft nun einwandfrei.

    Keine Ahnung, warum meine Box nach dem Boot die Musikdatenbank neu scannen muss, damit Spotify läuft oder warum es die Software nicht automatisch macht, wenn es denn notwendig ist…

    Ich sag trotzdem mal dank, obwohl es in deinem Beitrag eigentlich um etwas ganz anderes ging.

    Viele Grüße

    • Olli sagt:

      Nachdem man Karten aktiviert hat und mit Liedern verlinkt, müssen diese tatäschlich der Mopidy DB bekannt gemacht werden. Das kann man auch simpel per Klick in der Weboberfläche!

    • MaGru sagt:

      Ich musste das aber nicht nach dem aktivieren von Karten, sondern nach jedem Neustart der Box. Entweder per Klick in der Weboberfläche oder eben nun automatisch per Shellbefehl

    • Olli sagt:

      So darf und soll das aber nicht sein. Merkwürdig!

    • Christoph sagt:

      Das sieht nach #893 unter den bugs aus. https://github.com/MiczFlor/RPi-Jukebox-RFID/issues/893 – Als Abhilfe kannst Du auch in der config einstellen, dass die Box beim booten erst abwartet bis sie online ist – zumindest ist das die Zwischenlösung. Dadurch, dass Du das den mopidy im Script ans Ende stellst, hast Du im Prinzip die gleiche Lösung – dann scheint er die Wifi Verbindung aufgebaut zu haben. Ich habe das Problem auch erst seit kurzem – mit meiner zweiten Phoniebox. Jetzt läuft es aber, zumindest solange ich online bin.

  3. Carver sagt:

    Vielen Dank dafür. Ehrlich, das wäre perfekt.
    Werde ich, sobald die Zeit es zulässt, testen!
    Grüße

    • carver sagt:

      Bevor ich das ins Live-System bringe; wie hast Du das gelöst mit den Karten IDs?
      Hast Du eine Master-Box (auf der Du die Musik ablegst und die Karten anlernst) die für die anderen Boxen als Host fungiert? Ich würde das gerne über die Synology steuern: Master-Ordner auf dem NAS von dem aus auf die Boxen gesinnt wird – aber dann habe ich noch keine angelernte Karte auf den Boxen… Könnte man von Hand anlegen, aber das ist ja semi-praktikabel die ID von der Karte abschreiben (sofern überhaupt noch lesbar wenn schon beklebt).
      Bins gespannt 🙂

    • Olli sagt:

      Kommt jetzt drauf an was Du machen magst. Ich arbeite ja mit Spotify, da gibst Du nur den Link ein und musst es eh auf einer Box einmal durchlaufen. Zentral arbeite ich mit einem NAS, vom Prinzip werden die bidirektional abgeglichen, wobei die NAS die Hosen an hat. Änderungen werden nicht zur NAS, geschrieben und somit auf der Box ggf. überschrieben. Neu angelegte Karten werden aber zur NAS gesynct!
      Ja, Du kannst eine Verzeichnisstruktur ohne Karten anlegen und syncen lassen. Hoffe das hilft Dir weiter?

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.