Paket-Entwicklung für Synology-NAS-Systeme Mit dem Synology SDK Anwendungen für KMU entwickeln

Von Thomas Joos

NAS-Systeme von Synology bieten weit mehr als Datenspeicherung. Die Geräte können als Server dienen, Webdienste bereitstellen und vieles mehr. Mit dem Synology SDK lassen sich auch eigene Pakete entwickeln und für KMU bereitstellen.

Firmen zum Thema

Für die Entwicklung von Paketen für Synology NAS empfiehlt der Hersteller ein Gerät der Plus-Serie.
Für die Entwicklung von Paketen für Synology NAS empfiehlt der Hersteller ein Gerät der Plus-Serie.
(Bild: purzlbaum / Unsplash)

Synology stellt in seiner Weboberfläche zahlreiche Pakete zur Verfügung, um die Funktion der NAS-Systeme zu erweitern. Neben Dateiservern und verschiedenen Netzwerkdiensten können die Systeme auch für Container, LDAP, Webserver, Datenbankserver und zur Virtualisierung genutzt werden.

Das Betriebssystem von Synology mit der Bezeichnung DiskStation Manager (DSM) basiert auf Linux; somit können Entwicklerinnen und Entwickler mit etwas Erfahrung in Linux durchaus problemlos eigene Anwendungen bzw. Pakete erstellen.

Programme für Millionen Kunden entwickeln und einfach bereitstellen

Die unterstützten Programmiersprachen reichen von C, C++, Java, Perl, PHP und Node.js bis hin zu Python. Parallel zu eigenen Anwendungen gibt es im Paketzentrum von Synology auch Community-Pakete. Auch damit lassen sich die Funktionen deutlich erweitern.

Synology bietet zahlreiche Pakete an, mit denen sich die NAS-Systeme erweitern lassen. Auch Eigenentwicklungen sind möglich.
Synology bietet zahlreiche Pakete an, mit denen sich die NAS-Systeme erweitern lassen. Auch Eigenentwicklungen sind möglich.
(Bild: Joos / Synology)

Die Installation der Pakete gestaltet sich für Administratoren sehr einfach und erweitert den Nutzen der Umgebung deutlich. Alle Pakete stehen über die Weboberfläche der Synology-NAS-Systeme zur Verfügung, so dass Millionen Synology-Kunden sofort nach der Bereitstellung Zugriff auf die Pakete haben.

Nach eigenen Angaben laden Synology-Kunden im Durchschnitt eine Million Pakete aus dem Paketzentrum auf ihr NAS-System. Wer für das Paketzentrum Programme entwickelt, kann also auf eine sehr große und aktive Benutzerbasis zurückgreifen. NAS-Systeme von Synology werden von kleinen und mittleren Unternehmen genauso eingesetzt, wie von Privathaushalten.

Dev SDK – eigene Pakete mit Synology NAS entwickeln

Um eigene Pakete zu entwickeln, stellt Synology eine Entwicklungsplattform zur Verfügung. Hierfür muss zunächst eine Registrierung beim Hersteller erfolgen.

Natürlich ist für die Entwicklung von Paketen für Synology NAS ein entsprechendes Speichersystem erforderlich, der Hersteller empfiehlt die Verwendung der Plus-Reihe. Für die Entwicklung ist darüber hinaus ein Linux-Rechner mit 64-Bit-System und Root-Berechtigungen notwendig. Nach der erfolgreichen Anmeldung kann es mit dem Dev SDK losgehen. Synology stellt dazu verschiedene Dokumente und Erweiterungen zur Verfügung.

Nach der Entwicklung wird das Paket an Synology gesendet. Nach der Validierung des Paketes und der Überprüfung durch Synology veröffentlicht das Unternehmen das Paket im Paketzentrum und alle Benutzer können auf das Programm zugreifen. Die Bereitstellung der Anwendungen erfolgt daher immer durch den Anbieter.

Das müssen Developer wissen

Entwicklerinnen und Entwickler können über die Pakete auf umfassende Anpassungen der NAS-Systeme zurückgreifen. Dazu gehören:

  • Zugriff auf DSM API
  • Zugriff auf eigene Datenfreigabeordner
  • Desktop-Anwendung integrieren
  • Integration von Hilfedokumenten
  • Firewall-Regeln integrieren
  • Ressourcenmonitor integrieren
  • Lebenszyklusverhalten definieren
  • Beziehung zwischen Paketen definieren
  • Identitätsprivileg definieren

Das Betriebssystem für Synology NAS-Systeme trägt die Bezeichnung DiskStation Manager (DSM) und steht in den Versionsreihen 7.x und 6.x zur Verfügung. Wer für beide Betriebssystemversionen entwickeln will, benötigt auch jeweils ein NAS-System. Allerdings sollten die Entwicklungstools nicht direkt auf den Systemen installiert werden. Wenn das dennoch gewünscht ist, sollte die Installation über Docker auf dem NAS-System erfolgen.

Synology Toolkit installieren

Die Installation des Synology Toolkits lässt sich unter anderem mit der folgenden Befehlskette direkt auf einem (Debian-basierten) Linux-Rechner erfolgen:

apt-get install git
mkdir -p /toolkit
cd /toolkit
git clone https://github.com/SynologyOpenSource/pkgscripts-ng
apt-get install cifs-utils \
   python \
   python-pip \
   python3 \
   python3-pip

Danach befinden sich die Dateien für die Entwicklung im Verzeichnis „toolkit“. In den meisten Fällen ist für die Installation noch „sudo“ notwendig. Um nach der Installation zu überprüfen, für welche Plattformen mit der aktuellen Version des SDK Pakete entwickelt werden können, steht der folgende Befehl zur Verfügung:

./EnvDeploy -v 7.0 --list

Sobald die Umgebung bereit ist, kann das erste Paket entwickelt werden. Hierfür stehen auch Beispiele für die Entwicklung von Synology-NAS-Paketen auf GitHub zur Verfügung. Die einzelnen Schritte bei der Paketentwicklung sind wiederum auf der Seite „Your First Package“ zu finden.

Für jedes Paket gibt es eine Kontrolldatei mit der Bezeichnung „info.sh“. Die Datei enthält alle wichtigen Eigenschaften des Paketes und umfasst zum Beispiel folgende Inhalte:

#!/bin/bash
# INFO.sh
source /pkgscripts/include/pkg_util.sh
Your First Package
package="ExamplePackage"
version="1.0.0000"
os_min_ver="7.0-40000"
displayname="ExamplePackage Package"
description="this is an example package"
arch="$(pkg_get_unified_platform)"
maintainer="Synology Inc."
pkg_dump_info

Sobald das Paket entwickelt ist, kann der Build erfolgen. Dabei wird das Programm in eine SPK-Datei gepackt, zum Beispiel mit dem folgenden Befehl:

cd /toolkit/pkgscripts-ng/
./PkgCreate.py -v 7.0 -p avoton -c ExamplePackage

Um ein Paket auf dem eigenen NAS-System zu installieren, kann diese SPK-Datei im Paketzentrum des NAS-Systems geladen und installiert werden. Dazu steht die manuelle Installation zur Verfügung.

(ID:47838024)