QNAP Musik Streaming ins WAN

Pingumania

Lt. Junior Grade
Registriert
Dez. 2008
Beiträge
338
Hallo,

ich besitze ein TS-412 NAS von QNAP, auf dem befindet sich meine Musiksammlung.
Nun suche ich eine geeignete Lösung, um diese überall hin streamen zu können.
DDNS und VPN stehen zur Verfügung.

Ich weiß nicht was hier der "beste" Ansatz ist.
Einen UPnP Server + DDNS, der QNAP Cloud Dienst + QMusic App, VPN + Zugriff auf die Freigaben oder doch etwas anderes?
 
Der Subsonic Streaming Server ist cool. Es gibt Apps für Android und iOS.
Der Server selbst ist etwas sperrig und in Java programmiert. Ich persönlich nutze eine API-kompatible Implementierung in Python namens supysonic. Die frisst kaum Ressourcen und dürfte auf deinem QNAP gut laufen.
 
Danke für den Tipp, aber ich weiß leider nicht wie ich das auf dem NAS zum laufen bekomme bzw. installiere.
​Benötige ich den Subsonic Server auch?
 
Entweder Subsonic oder Supysonic. Subsonic benötigt Java, Tomcat, .. Supysonic benötigt Python und ein paar python-module. Schau mal, ob es die Java RE und Tomcat als qpkq-Pakete für dein NAS gibt.
Python 2.7 wird es sicherlich geben.

Sagt dir IPKG und QPKG etwas? Das ist eine Paketverwaltung für Zusatzpakete auf solchen Geräten wie deinem NAS.

Egal ob du den Subsonic oder die supysonic Implementierung nutzt, ein bisschen Erfahrung mit SSH und Linux ist da sehr hilfreich. So ganz trivial ist die Installation leider nicht.
 
Zuletzt bearbeitet:
Es gibt python, java und tomcat für mein NAS als QPKG. Es gibt auch Madsonic, was ich allerdings nicht zum laufen bekomme.
IPKG und QPKG sagen mir etwas, ich habe auch ein bisschen Erfahrung mit SSH und Linux (Dreambox).
Ich hab den Subsonic Server schonmal installiert auf meinem NAS (mithilfe einer älteren QPKG, die nicht im App Store zu finden ist.), allerdings lief es so langsam, dass ich ihn wieder deinstalliert habe.

Ich nehme an das ist supysonic? https://github.com/spl0k/supysonic
Den Teil unter "Prerequisites" versteh ich noch, aber was mache ich danach?
 
Zuletzt bearbeitet:
Wenn du subsonic und madsonic schon ausprobiert hast, und mit der Performance
nicht so zufrieden bist, kannst du ruhig supysonic ausprobieren.
Das hat zwar nicht alle Funktionen wie Subsonic und die Entwicklung ist
noch sehr am Anfang aber ich nutze es auch gerne, weil
mir subsonic zu überladen schien.

Aber Achtung, supysonic gibts noch nicht so lange. Könnte also durchaus noch Bugs geben.

Zuerst mit ipkg python27 und sqlite installieren:
Code:
$ ipkg install python27 py27-setuptools sqlite
$ easy_install pip

Dann kann man alle benötigten Abhängigkeiten von supysonic installieren:
Code:
$ pip install flask storm Pillow simplejson requests mutagen

Wenn das geklappt hat, kannst du Supysonic herunterladen.
Angenommen, du willst supysonic in /opt/supysonic, dann
unter https://github.com/spl0k/supysonic auf "Download ZIP" und nach
/opt/supysonic entpacken.
Dann gehst du in den Ornder /opt/supysonic und installierst supysonic:
Code:
$ cd /opt/supysonic
$ python setup.py install


Dann noch eine Konfigurationsdatei unter namens /etc/supysonic
(Dateiname ist "supysonic" im Ordner /etc) neu anlegen mit folgendem Inhalt
Code:
[base]

database_uri = sqlite:////opt/supysonic/supysonic.db
scanner_extensions = mp3 ogg flac
cache_dir = /tmp

Danach kannst du die (leere) Datenbank anlegen.
Ich habe einfach mal SQLite benutzt, ist am einfachsten:
Code:
cd /opt/supyonic
sqlite3 supysonic.db < schema/sqlite.sql

Anschliessend kannst du einen Benutzeraccount anlegen:
Code:
$ supysonic-cli user add benutzername

Dann kannst du Supysonic eigentlich mit dem eingebauten Webserver mal ausprobieren.
Den kannst du starten mit
Code:
$ cd /opt/supyonic
$ python server.py ::


Wenn du dann auf http://IP-ADRESSE-VOM-QNAP:5000/ surfst,
müsstest du die Verwaltungsoberflaeche von Supysonic sehen.
Dort kannst du einen Musikordner hinzufügen, der durchsucht werden soll.

Anschließend müsstest du mit der App deiner Wahl auf den Musikserver http://IP-ADRESSE-VOM-QNAP:5000/ zugreifen können.





Achtung: das ganze beschreibt noch nicht, wie man Supysonic hinter deinem Apache2 oder nginx Webserver laufen lässt und in den Autostart packt.
Bisher ist es mit dem o.g. Befehl nur manuell gestartet zum Testen.



Wenn du Supysonic wieder deinstallieren willst,
kannst du es mit den folgenden Befehlen entfernen:
Code:
$ pip uninstall supysonic
Dann noch den Ordner /etc/supysonic löschen.
 
Danke für die ausführliche Anleitung!

Leider kann ich keinen Benutzer anlegen, weil supysonic-cli nicht ausgeführt werden kann (command not found).
Und der Server lässt sich auch nicht starten mit folgendem Fehler (ImportError: No module named Flask).
Flask ist aber zu finden, wenn ich "pip list" eingebe.

PS: ich habe als alternative noch den Plex Media Server installiert. Ich weiß zwar nicht ob dieser empfehlenswert ist, aber zumindest läuft dieser :). Wäre aber trotzdem super wenn ich den supysonic auch noch zum Laufen bekomme.
 
Zuletzt bearbeitet:
Ui, dann stimmt vllt etwas mit der Python Installation/Konfiguration nicht so Recht. Zusätzlich installierte Python Module (wie Flask und supysonic) sind zwar installiert, werden aber nicht gefunden. Vllt irgendein Problem mit dem sog. PYTHONPATH, also der Liste der Ordner in denen Python Module gefunden werden. Sind vllt auch noch mehrere Python Versionen installiert? Was liefert denn:
Code:
$ python -V
$ pip -V

Als ich Flex zuletzt getestet hatte, war das ganz schon viel Arbeit für schwache CPUs. :-(
 
Code:
[~] # python -V
​Python 2.7
[~] # /opt/local/bin/pip -V
pip 1.5.6 from /opt/local/lib/python2.7/site-packages/pip-1.5.6-py2.7.egg (python 2.7)

Wie man sieht kann ich pip nicht ohne den Pfad ausführen, vielleicht hat das damit was zu tun?
 
Ja, wenn man ipkg installiert, fügt man normalerweise den Pfad /opt/bin und /opt/local/bin zur Umgebungsvariablen $PATH hinzu.
Dann muss man nämlich den Ordner nicht mehr davorschreiben. Das supysonic-cli ist wahrscheinlich auch dort gelandet. :-)

Schau mal hier: http://wiki.qnap.com/wiki/Install_Optware_IPKG#Fix_the_.24PATH_in_.2Fetc.2Fprofile
Da kannst du noch /opt/local/bin hinzufügen. Achtung: Neustart kann nötig sein.

Genauso kannst du da in der Datei /etc/profile den sog Pythonpath setzen. Wahrscheinlich fehlt das Verzeichnis /opt/local/lib/python2.7/site-packages. Wenn du in die /etc/profile einfach am Ende noch folgendes einfügst (und neustartest), müsste Python die Zusatzmodule wie Flask finden:
Code:
export PYTHONPATH=/opt/local/lib/python2.7/site-packages
 
Zuletzt bearbeitet:
ok den Server hab ich zum laufen gebracht und ist unter port 5000 erreichbar.
Leider kann ich noch immer keinen Benutzer anlegen.
 
Zuletzt bearbeitet:
Cool! Sehr gut.

Hast du mal nachgeguckt, wo das supysonic-cli installiert ist (/opt/bin oder /opt/local/bin)? Wenn nicht, gibts ja auch die Möglichkeit, nach Dateien zu suchen (find / -name "supysonic-cli").
Zur Not kannst du es auch aus dem Download von Github im Ordner "bin" hergekommen.
 
Zuletzt bearbeitet:
supysonic-cli lässt sich nun ausführen, ich kann auch ein Passwort eingeben, aber am Ende bekomme ich die Meldung
Code:
LookupError: unknown encoding:
Wenn ich mich am Server anmelden will kommt dieselbe Meldung.



Ansonsten musste ich noch PIL installieren mit Pillow bekomme ich
Code:
ImportError: No module named PIL
 
Zuletzt bearbeitet:
Leider ist das die komplette Fehlermeldung :/
Werde trotzdem bei github posten.
 
Liegts vllt an Umlauten oder Sonderzeichen im Namen oder Passwort (wäre ein Bug in supysonic)?
Ach vergessen: noch den Parameter --admin beim Anlegen des Users nicht vergessen.
Also supysonic-cli user add --admin benutzername


PS: aber gut, dass du noch nicht die Flinte ins Korn geworfen hast.
 
Zuletzt bearbeitet:
Code:
[/opt] # /opt/supysonic/bin/supysonic-cli user add --admin pingumania
​Password:
Confirm password:
Traceback (most recent call last):
  File "/opt/supysonic/bin/supysonic-cli", line 231, in <module>
    cli.onecmd(' '.join(sys.argv[1:]))
  File "/share/MD0_DATA/.qpkg/Python/lib/python2.7/cmd.py", line 219, in onecmd
    return func(arg)
  File "/opt/supysonic/bin/supysonic-cli", line 51, in method
    return func(** { key: vars(args)[key] for key in vars(args) if key != 'action' })
  File "/opt/supysonic/bin/supysonic-cli", line 190, in user_add
    status = UserManager.add(self.__store, name, password, email, admin)
  File "/share/MD0_DATA/.qpkg/Python/lib/python2.7/site-packages/supysonic/managers/user.py", line 53, in add
    if store.find(User, User.name == name).one():
  File "/opt/local/lib/python2.7/site-packages/storm/store.py", line 1158, in one
    result = self._store._connection.execute(select)
  File "/opt/local/lib/python2.7/site-packages/storm/database.py", line 238, in execute
    statement = self.compile(statement, state)
  File "/opt/local/lib/python2.7/site-packages/storm/databases/sqlite.py", line 57, in compile_select_sqlite
    statement = compile_select(compile, select, state)
  File "/opt/local/lib/python2.7/site-packages/storm/expr.py", line 666, in compile_select
    tokens.append(compile(select.columns, state))
LookupError: unknown encoding:

Keine Sonderzeichen oder Umlaute im Passwort.
 
Issue ist von mir erstellt und wurde als Bug gekennzeichnet.

Ich hätte da noch eine andere Frage. In deiner Anleitung wird Pillow anstelle von PIL installiert, wenn ich Pillow nehme bekomme ich wieder ImportError: No module named PIL aber eigentlich sollte es mit Pillow doch auch funktionieren?
 
pingumania schrieb:
Ich hätte da noch eine andere Frage. In deiner Anleitung wird Pillow anstelle von PIL installiert, wenn ich Pillow nehme bekomme ich wieder ImportError: No module named PIL aber eigentlich sollte es mit Pillow doch auch funktionieren?

Ja, ist komisch. Ich benutze bei mir auch Pillow statt PIL (siehe pip list bzw. pip freeze) und kann mit Python trotzdem PIL importieren:
Code:
(supysonic)[supysonic@wandboard ~]$ pip freeze
Flask==0.10.1
Jinja2==2.7.3
MarkupSafe==0.23
Pillow==2.6.1
PyYAML==3.11
Werkzeug==0.9.6
argh==0.25.0
itsdangerous==0.24
mutagen==1.25.1
pathtools==0.1.2
requests==2.4.3
simplejson==3.6.4
storm==0.20
supysonic==0.1
watchdog==0.8.1
wsgiref==0.1.2
(supysonic)[supysonic@wandboard ~]$ python
Python 2.7.8 (default, Sep 24 2014, 05:50:32)
[GCC 4.8.2 20131219 (prerelease)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import PIL
>>>
(supysonic)[supysonic@wandboard ~]$

Wenn ich auf meinem ARM-Server Pillow mit pip installiere, wird der gcc-Compiler ein paar Sachen kompilieren. Vllt. stimmt deshalb bei deiner Pillow-Installation was nicht, weil kein GCC auf deinem QNAP installiert ist?

ich hab dir übrigens mal ne leere Datenbank mit einem User namens pingumania (pw ist auch pingumania) angehängt:
http://filebin.ca/1iVnkw82hW1d/supysonic.db.zip

Vllt kannst du damit - statt mit deiner Datenbank - schon mal den Rest austesten (zB einen Ordner hinzufügen und scannen oder mit einer Handy App verbinden).
 
Zuletzt bearbeitet:
Zurück
Oben