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

  • Ab sofort steht euch hier im Forum die neue Add-on Verwaltung zur Verfügung – eine zentrale Plattform für alles rund um Erweiterungen und Add-ons für den DSM.

    Damit haben wir einen Ort, an dem Lösungen von Nutzern mit der Community geteilt werden können. Über die Team Funktion können Projekte auch gemeinsam gepflegt werden.

    Was die Add-on Verwaltung kann und wie es funktioniert findet Ihr hier

    Hier geht es zu den Add-ons

Status
Für weitere Antworten geschlossen.

ThomasTempelmann

Benutzer
Registriert
21. Okt. 2019
Beiträge
4
Reaktionspunkte
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.
 
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
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
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.
 
  • Like
Reaktionen: ThomasTempelmann
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
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.
 
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.
 
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:
Status
Für weitere Antworten geschlossen.
 

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