Ratschläge für Entwicklung eines eigenen DSM-Pakets?

ThomasTempelmann

Benutzer
Mitglied seit
21. Okt 2019
Beiträge
4
Punkte für Reaktionen
0
Punkte
1
Ich habe eine Mac-Anwendung (Find Any File), und möchte dazu einen Service für das NAS schreiben, das dann auf dem NAS läuft, um Suchaufgaben dort auszuführen. Ziel ist natürlich auch, daß ich so ein Paket dann für andere User installierbar anbiete, idealerweise über den Synology-eigenen Package Center.

Ich habe allerdings kaum Erfahrung mit Entwicklung under Linux und erst recht keine mit Erstellung von Paketen dafür. Dafür finden sich zumindest Anleitungen auf https://help.synology.com/developer-guide.

Allerdings finde ich da keine Ratschläge, wie ich am Besten vorgehe sollte.

Hat hier schon jmd. Erfahrung mit der Entwicklung für das NAS?

Meine Fragen wären u.A:
  • Lohnt es sich, das Paket in C zu entwickeln? Denn das wäre für mich am Einfachsten, da mein bisheriger Code auch in C ist. Müßte ich dann für jede Arch selbst die Binaries zur Verfügung stellen oder kann ich das Paket als C-Source ausliefern und es wird dann bei der Installation gebaut? Bei üblichen Linux-Distros ist das ja normal, nicht?
  • Andernfalls, da ich v.A. schnellen Zugriff auf das lokale Dateisystem und dessen Attribute (Dateigröße, Änderungsdatum usw.) brauche, und daneben v.A. ein paar String-Operationen, könnte ich es vermutlich auch in einer interpretierten Sprache wie Python machen, wobei mir keine der Sprache besonders vertraut ist. Aber da kann ich mich durchbeissen. Gibt's da was zu beachten?
  • Mein Service sollte dann immer laufen können und einen Socket bieten, so daß es von meinem Programm auf anderen Macs gefunden und aufrufbar ist. Das ist ja kein Problem, hoffe ich.
 

Ulfhednir

Benutzer
Sehr erfahren
Mitglied seit
26. Aug 2013
Beiträge
3.264
Punkte für Reaktionen
923
Punkte
174
Ich bin jetzt zwar kein Developer, aber durchaus in der Software-Entwicklung tätig.
Was man bei im Kontext für Synology festhalten muss: Die Sicherheits-Anforderungen an Software sind gestiegen. Daher könnte das ein Problem sein.
Mein Vorschlag wäre daher: Was spricht gegen eine Docker-Anwendung? Wäre dann auch plattform-unabhängiger.
 
  • Like
Reaktionen: ThomasTempelmann

Benares

Benutzer
Sehr erfahren
Mitglied seit
27. Sep 2008
Beiträge
12.351
Punkte für Reaktionen
2.878
Punkte
423
In letzter Zeit sind vor allem 3rd-Party-Anwendungen, die als "root" laufen müssten, zum Problem geworden. Das erschwert die Erstellung von SPKs sehr.
 
  • Like
Reaktionen: ThomasTempelmann

ThomasTempelmann

Benutzer
Mitglied seit
21. Okt 2019
Beiträge
4
Punkte für Reaktionen
0
Punkte
1
Docker-Container macht für meine Anwendung keinen Sinn, weil Docker ja in einer eigenen geschützten Umgebung laufen - ich brauche aber Zugriff auf die Dateien, die vom NAS im Netz bereitgestellt werden.

Ob ich dazu root-Rechte brauche, weiß ich nicht, aber zumindest brauche ich Rechte von den Usern, die auch diese Netz-Laufwerke nutzen wollen.

Hmm, das wird evtl. in der Tat komplex, wenn ich dafür keine root-Rechte habe.

Danke auf jeden Fall für die Hinweise.
 

Ulfhednir

Benutzer
Sehr erfahren
Mitglied seit
26. Aug 2013
Beiträge
3.264
Punkte für Reaktionen
923
Punkte
174
  • Like
Reaktionen: ThomasTempelmann

Tommes

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
26. Okt 2009
Beiträge
9.155
Punkte für Reaktionen
1.116
Punkte
314
Hi!

Laut Synology können als Programmiersprachen C, C++, Java und Skriptsprachen wie Perl und Python bzw. Bash verwendet werden. HTML, CSS, JavaScript, jQuery usw. erhalten ebenfalls Einzug . Ich gehöre zu den Leuten, die ein SPK mittels Bash, HTML und CSS erstellen, habe von allen anderen Sprachen also keine Ahnung. Daher kann ich dir auch nicht den Weg beschreiben, wie du das alles mit C lösen kannst.

Des weiteren schreibe ich meine Apps Plattformübergreifend, weshalb ich an keine Prozessor Architekturen bzw. Binaries gebunden bin. Daher verwende ich auch nicht das Synology Toolkit, sondern bastel das SPK von Hand zusammen. Ist also ziemlich Oldschool und vielleicht nicht der beste Weg, aber für meine Bedürfnisse reicht das vollkommen aus.

Was den Zugriff auf das lokale Dateisystem angeht. Soll deine Suche nur innerhalb freigegebener Ordner, also den Shares erfolgen, sollte es theoretisch ausreichen, wenn die App über Administrationsrechte verfügt. Dazu muss man die App in die Gruppe der Administratoren bekommen, was nur über einen Umweg möglich ist, aber es geht. Sollte das nicht ausreichen, müsste man sich root Rechte verschaffen. Das geht aber nur, wenn Synology das abnickt, was ich aber für eher unwahrscheinlich halte. Zur Zeit ist mir nur bekannt, das man Scripte über den Aufgabenplaner als root ausführen kann. Aus einer App heraus kann man solch ein Script aber nicht als root ausführen.

Seit Einführung von DSM 7 laufen alle Apps so gesehen in einer eigenen Sandbox, aus der sie erstmal nicht raus kommen. Die Rechte werden so gesetzt, das der App Name als eigenen Gruppe und Benutzer fungiert und diese dann entsprechend wenig Rechte besitzt. Möchte man mehr Rechte haben, muss man sich diese ergaunern indem man die App in weiteren Gruppen wie z.B. „administrators“ oder „system“ aufnimmt. Das funktioniert jedoch nicht mit allen Gruppen. Daher muss man das im Einzelfall immer prüfen, was geht. Für eine App von mir musste ich z.B. Mitglied in der Gruppe log werden, um innerhalb /var/log Dateioperationen ausführen zu können.

Ich hoffe, das dir das weiter hilft, aber du siehst, das das sicherlich ein steiniger Weg werden wird. Leider ist die Zahl derer, die weiterhin Apps für DSM 7 entwickeln, stark geschrumpft, weshalb es schwierig werden dürfte, an adäquate Informationen zu kommen… bis auf den Developer-Guide.

Nachtrag: @Tosoboso hatte hier mal ein DummySPK veröffentlicht, mit dem du anfangen könntest zu experimentieren. In meiner Signatur findest du meine Pakete, wobei die für DSM 7 auf GitHub zu finden sind. Darfst dich da gerne umschauen und austoben.

Versuch dein Glück

Tommes
 
Zuletzt bearbeitet:
  • Like
Reaktionen: ThomasTempelmann

ThomasTempelmann

Benutzer
Mitglied seit
21. Okt 2019
Beiträge
4
Punkte für Reaktionen
0
Punkte
1
Ulf und Tommes, danke für die Infos, beides hilft mir weiter.

@Tommes - du hast in deiner Sig je einer DSM6- und DSM7-Version von LogAnalysis? Heißt das, daß man immer getrennte Pakete für 6 und 7 machen muss? Meine alte NAS fährt noch DSM6. Ich werde mir daher dann wohl erstmal noch eine mit DSM7 kaufen müssen, wenn das so stark unterschiedlich ist, wie's scheint.
 

EDvonSchleck

Gesperrt
Mitglied seit
06. Mrz 2018
Beiträge
4.703
Punkte für Reaktionen
1.114
Punkte
214
Du könntest immer noch einen VM mit DSM machen. Ich würde aber wie Ulfhednir bereits vorgeschlagen hat eher in Richtung Docker gehen und noch eine viel breitere Anwendung realisieren. Docker funktioniert natürlich auch direkt als "Host" somit gibt es fast keinen Unterschied zur einer App an sich, nur eben das es einfacher zu realisieren ist. Für weitere Netzwerke muss nur bei Docker richtig gemappt werden. Host ist da die einfachste Lösung.
Weiterhin läuft es nicht nur auf der DS sondern auch auf andere NAS, PC, Raspi usw.
 

Tommes

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
26. Okt 2009
Beiträge
9.155
Punkte für Reaktionen
1.116
Punkte
314
Unter DSM6 hatten 3rdParty Apps noch vollen root Zugriff und somit standen dir alle Möglichkeiten offen. Das hat sich mit DSM7 grundlegend geändert und man wird mit einem hohen Maß an Restriktionen konfrontiert. Auch lässt es Synology nicht zu, das DSM6 Pakete unter DSM7 laufen, daher findest du bei mir LogAnalysis sowohl für DSM6 sowie für DSM7. BasicBackup wurde dagegen nur wegen DSM7 ins Leben gerufen, es gibt von dieser App demnach keine Version für DSM6.

Wenn du mich nach meiner Meinung fragst, dann würde ich an deiner Stelle keine Apps mehr für DSM6 entwickeln, sondern mich auf DSM7 konzentrieren. Da du dir hierfür jedoch zuerst die nötige Hardware anschaffen musst und du noch garnicht abschätzen kannst, ob dein Projekt überhaupt Früchte trägt, bewegst du dich eh auf dünnen Eis. Diese Entscheidung musst du für dich selbst treffen.

VM bzw. Docker würde ich daher wohl auch empfehlen, doch leider laufen diese Dinge nicht auf jeder DS, was deinen möglichen Kunden- bzw. Nutzerkreis wiederum einschränken würde. Ist halt alles nicht so einfach…

Tommes
 
Zuletzt bearbeitet:


 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat