Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Lesedauer 18 Min.

Die Do-it-yourself-Cloud

Online-Speicher sind heute essenziell. Das System Nextcloud lässt sich über viele APIs an eigene Bedürfnisse anpassen.
© dotnetpro
Die verteilte Zusammenarbeit von Teams hat in den Corona-Jahren noch einmal einen ordentlichen Anschub bekommen. Wichtig und notwendig war es für viele Unternehmen aber bereits vor dieser Zeit, dass sich Teams untereinander austauschen, Dateien und Dokumente teilen und im besten Fall auch kollaborativ daran arbeiten können.Die geistigen und zum Teil technologischen Vorgänger dieser Systeme sind Anwendungen wie beispielsweise Dropbox [1]. Den beiden Gründern Drew Houston und Arash Ferdowsi ist bereits im Jahr 2007 aufgefallen, dass es bei immer besser verfügbaren Online-Zugängen eine Erleichterung wäre, wenn Dateien und Verzeichnisse an einem bestimmten Ort auf dem eigenen PC automatisch gesichert und synchronisiert werden. So lässt sich der Austausch von Daten stark vereinfachen. Der Legende nach ist diese Idee einem der Gründer auf einer längeren Busfahrt gekommen, als er bemerkte, dass er einen USB-Stick nicht mitgenommen hatte und somit während der Fahrt nicht an etwas arbeiten konnte.Die Idee von Dropbox, die zunächst stark auf Privatpersonen als Zielgruppe ausgerichtet war, hat sich anschließend zu Systemen wie ownCloud und später Nextcloud weiterentwickelt (siehe dazu auch den Kasten Nextcloud versus ownCloud). Ziel ist es nicht mehr, nur Dateien zu tauschen, sondern über diese Anwendungen auch zu kommunizieren und zusammen an Projekten zu arbeiten. Mittlerweile gibt es eine ganze Reihe von Anbietern und Anwendungen zu diesem Zweck. Einige Anwendungen werden dabei mit der eigenen Datenhoheit beworben, weil es sich beispielsweise um Open Source handelt oder weil die Systeme selbst gehostet werden können.

Nextcloud versus ownCloud

Die Geschichte von Nextcloud begann im Juni 2016, als <br/>Frank Karlitschek mit weiteren Entwicklern das von ihm 2010 gegründete Unternehmen ownCloud verließ. Kurz darauf gab er Nextcloud als Fork von ownCloud bekannt. Nextcloud gilt als schneller in der Weiterentwicklung und bietet einige Funk­tionen an, die ownCloud gar nicht oder nur in der kostenpflichtigen Enterprise-Version zur Verfügung stellt. Ein offizielles Statement über den Fork hat es nie gegeben. In einem Vortrag von Karlitschek wurden kulturelle Missverhältnisse zwischen den Open-Source-Entwicklern und den geschäftsorientierten Personen bei ownCloud, die nicht an die Open-­Source-Com­munity gewöhnt seien, genannt.
Nextcloud gehört zu dieser Art von Anwendung und wirbt sehr offen damit, dass es die Kontrolle über die eigenen Daten ermöglicht [2] – insbesondere mit dem Versprechen, dass es keine Datenweitergabe an Dritte gibt. Der Artikel wirft einen Blick auf Nextcloud und beschreibt die Einsatzgebiete und den Funktionsumfang. Ein Schwerpunkt sind dabei die verschiedenen Schnittstellen in Form von APIs, mit denen sich Informationen aus einer Nextcloud-Instanz herausholen und dort hinterlegen lassen.

Was ist Nextcloud?

Die erste wichtige Frage: Was ist Nextcloud überhaupt? Wer in den Bereichen der kollaborativen Arbeit, Cloud-Speicher oder angrenzenden Themenfeldern unterwegs ist, hat den Namen oder die Abkürzung NC sicherlich schon einmal gehört, ebenso ownCloud und OC als Abkürzung. Next­cloud ist Open Source, der Quelltext steht auf GitHub zur Verfügung. Primär kommt dabei die AGPL-Lizenz in Version 3.0 zum Einsatz. GitHub meldet bei vielen Repositories aber auch, dass unbekannte Lizenzen gefunden wurden. Wenn der Code modifiziert werden soll, dann ist vorher ein genauerer Blick auf die Repositories und Abhängigkeiten notwendig. Einen guten Überblick bietet die Organisation von Nextcloud auf GitHub [3]. Dort sind die mittlerweile 260 Repositories verlinkt und diese stammen von über 210 Personen, die als Mitwirkende eingetragen sind. Das Projekt hat in den vergangenen Jahren eine große Community um sich herum aufgebaut.Nextcloud selbst wirbt damit, die Kontrolle über die eigenen Daten zurückzubekommen und die Zusammenarbeit im Team zu vereinfachen. Die Anwendung funktioniert vor Ort betrieben und in der Cloud und ist stark erweiterbar. Es ist wichtig zu unterscheiden, dass es nicht „die Nextcloud“ gibt, auch wenn es der Sprachgebrauch häufig vereinfacht so darstellt. Mit Nextcloud ist in der Regel die Server-Komponente gemeint [4]. Primär ist der Server in PHP, JavaScript und Vue.js implementiert. Allgemein steht Nextcloud unter anderem für Nachhaltigkeit, Datenschutz und Sicherheit, nutzerzentrierte Gestaltung, Vertrauen, offenen Quellcode und offene Standards, Dezentralisierung und Barrierefreiheit.Zu Nextcloud als Marke gehören allerdings noch eine ganze Reihe weiterer Produkte. Dazu zählen Nextcloud Hub, Nextcloud Files, Nextcloud Talk, Nextcloud Groupware, Nextcloud Office, Nextcloud at Home und Nextcloud Enterprise. Zum Teil beschreiben diese Produkte unterschiedliche Funktionen. Mit Nextcloud Files werden die Synchronisierung und das Teilen von Dateien zusammengefasst. Mit dem Produkt Talk ist ein Chat- und Videokonferenz-Tool gemeint, hinter Groupware verbergen sich Funktionen wie Kalender, Kontakte und E-Mails, während Nextcloud Office die Zusammenarbeit an Dokumenten in Echtzeit bezeichnet. Die anderen Produkte Nextcloud at Home und Enterprise fokussieren sich dann auf andere Zielgruppen, um zum Beispiel eine bessere Verfügbarkeit bei Nextcloud Enterprise zu gewährleisten. Erfahrungsgemäß meint Nextcloud als Oberbegriff in der Regel Nextcloud Files, Groupware und Office. Diese Features gehen Hand in Hand und sind daher sehr oft im Einsatz.Dieser Artikel basiert auf der frischen Hauptversion 25.0.0 von Nextcloud, die Mitte Oktober 2022 veröffentlicht wurde. Mittlerweile ist zudem der Wartungsrelease 25.0.1 erschienen.

Installationen und Hosting

Die Installation von Nextcloud ist auf verschiedenen Wegen möglich. Die Server-Variante lässt sich manuell einrichten oder im Docker-Container nutzen. Auch virtuelle Maschinen und andere Community-Projekte stehen zur Verfügung. Die Downloadseite listet die Möglichkeiten detailliert auf [5].Für Desktop und Mobile stehen spezielle Clients zur Verfügung, die sich problemlos installieren und nutzen lassen; entweder mit einer selbst gehosteten Nextcloud-Instanz oder gemietet bei einem der vielen Anbieter.Zudem stehen eine Reihe von Hardware-Komponenten und Systemen zur Verfügung, um Nextcloud direkt im eigenen Unternehmen zu betreiben [6], ohne sich um einen Server oder andere Hardware-Themen Gedanken machen zu müssen.

Nextcloud Hub

Den Nextcloud Hub genannten Programmteil gibt es mit Nextcloud v25 jetzt in der dritten Version. Er soll in Form eines Dashboards alle zentralen Elemente für einen Nutzer zusammenfassen; dazu gehören beispielsweise die anstehenden Termine aus dem Kalender, Erwähnungen in Chats, Aufgaben aus dem Cards-Plug-in, wichtige E-Mails und Dateien, die Aktivitäten der letzten Stunden und mehr. Ein wichtiges Merkmal des Hub ist die Anpassbarkeit. Jeder Nutzer kann sich das Dashboard frei gestalten, auch die Farben und den Hintergrund. Der Hub ist somit die Schaltzentrale für alle, die sich bei Nextcloud über die Weboberfläche anmelden. Bild 1 zeigt einen Screenshot des Nextcloud Hub in Version 3.
Der Nextcloud-Hubdient als Dashboard, das alle Elemente für den Nutzer zusammenfasst(Bild 1) © Autor

Nextcloud Files und Groupware

Über Nextcloud Files werden Dateien aller Art geteilt. Damit ist sowohl die Synchronisation über verschiedene Clients gemeint wie auch der Zugriff über freigegebene Links oder Ähnliches. Dazu gehören Verschlüsselungsfunktionen und regelbasierte Kontrollen über Dateizugriffe. Passwortrichtlinien schützen die Dateien zusätzlich.Darüber hinaus bietet Nextcloud Files eine tiefe Integra­tion mit anderen Protokollen. Der Zugriff auf die Daten besteht nicht nur über die Nextcloud-Weboberfläche oder die Clients, sondern auch über FTP, Windows Network Drive, SharePoint, NFS, Objektspeicher und viele mehr. Zudem erlaubt eine umfangreiche Konfiguration dieser Dienste und Schnittstellen es, genau den Funktionsumfang zu nutzen, der im aktuellen Projekt- oder Unternehmenskontext notwendig ist. Bild 2 zeigt ­eine Ansicht über alle Dateien. Zusätzlich lässt sich anzeigen, welche Dateien zuletzt genutzt wurden, die manuell gesetzten Favoriten, Freigaben, Tags und externe Speicher. Ein Papierkorb ist ebenfalls mit an Bord, um gelöschte Dateien wiederherzustellen. Andere Ansichten dieser Dateien, zum Beispiel als Liste, sind ebenfalls möglich. Zudem werden Dateien bei Veränderungen versioniert, das heißt, dass Next­cloud es ermöglicht, zu einer vorherigen Dateiversion zurückzugehen.
Nextcloud Filesist quasi der Windows-Explorer von Nextcloud(Bild 2) © Autor
Ein weiteres wichtiges Merkmal sind die sogenannten Workflows. Damit lässt sich der Datenfluss zwischen Nutzern auf oder zwischen Servern kontrollieren und steuern. Regelbasiertes Taggen von Dateien und die Reaktion auf diese Tags sowie andere Auslöser wie physischer Standort, Nutzergruppe, Dateieigenschaften und Anfragetyp ermöglichen es Administratoren, den Zugriff auf Daten gezielt zu verweigern, sie zu konvertieren, zu löschen oder sie gemäß geschäftlichen oder rechtlichen Anforderungen aufzubewahren.Zu den Groupware-Funktionen kommen E-Mails und der Kalender hinzu. Beide lassen sich gut einbinden, sodass
E-Mails mit Einladungen direkt im Kalender landen und dergleichen. Diese starke Integration ist allerdings nur möglich, wenn die E-Mails über Nextcloud abgerufen werden und im Webmailer zur Verfügung stehen. In Bild 3 ist die E-Mail-Ansicht zu sehen, Bild 4 zeigt einen Screenshot des Kalenders von Nextcloud v25.
Die E-Mail-Verwaltungder Nextcloud-Groupware-Funktion(Bild 3) © Autor
Der Kalenderträgt E-Mail-Einladungen direkt ein(Bild 4) © Autor
Zusätzlich gibt es eine umfangreiche Nutzer- und Gruppenverwaltung, um Rechte vergeben oder einschränken zu können. Die Übersicht der Aktivitäten verrät zudem, wer woran gearbeitet hat, zum Beispiel in Form von Dateiänderungen, neuen Kommentaren oder To-do-Einträgen (Bild 5).
Eine Journalfunktionfasst die Aktivitäten des Nutzers zusammen(Bild 5) © Autor

Nextcloud Office

Ein langersehntes Merkmal ist Nextcloud Office. Damit ist es möglich, Dokumente direkt live im Browser zu bearbeiten, zum Beispiel Word-Dateien. Nextcloud Office ist damit eine leistungsstarke Online-Office-Suite mit kollaborativer Bearbeitung. Die Funktion unterstützt alle wichtigen Dateiformate für Dokumente, Tabellenkalkulationen und Präsentationen und funktioniert in allen modernen Browsern. Zu den unterstützten Dateiformaten zählen unter anderem DOC, DOCX, PPT, PPTX, XLS, XLSX, ODF, das Pub­lisher-Format und viele weitere. Nextcloud ­Office wurde zusammen mit Collabora Productivity entwickelt [7].Diese Office-Suite ist sehr gut in Nextcloud integriert und sorgt dafür, dass die Daten auch in der eigenen Nextcloud-Instanz und im Zweifel auf dem eigenen Server bleiben. Die Office-Komponente bietet einen ordentlichen Wysiwyg-Editor an, sodass sich die Dokumente online im Browser so bearbeiten lassen, wie sie nachher aussehen und gedruckt werden sollen. Zudem erinnert der Funktionsumfang an Offline-Versionen von Microsoft und Co. Ob der Funktionsumfang für die eigenen Anforderungen im Projekt ausreicht, ist fallweise zu entscheiden; die jeweiligen Features heißen Nextcloud Write, Nextcloud Spreadsheet, Nextcloud Present und Nextcloud Draw. Bild 6 zeigt Screenshots von Nextcloud Write und Nextcloud Draw.
Die Office-Komponentefür Diagramme(Bild 6) © Autor

Apps für Desktop und Mobile

Eine Anwendung für den Austausch von Dateien und für die Zusammenarbeit verteilter Nutzer muss viele verschiedene Clients für unterschiedliche Situationen zur Verfügung stellen. Eine wichtige Schnittstelle, die bereits häufig erwähnt wurde, ist die Weboberfläche. Darüber lässt sich eine Next­cloud-Instanz sowohl nutzen als auch verwalten. Für Letzteres gibt es auch eine Kommandozeile, um insbesondere kritische oder lang laufende Operationen zu starten und zu verwalten. Das können beispielsweise Upgrades oder Änderungen an den gespeicherten Daten sein. Die Weboberfläche ist somit für viele Nutzer eine zentrale Schnittstelle.Gerade für den Zugriff auf die Dateien sind aber ebenso die mobilen Apps und die Anwendungen für zahlreiche Desktop-Systeme notwendig und wichtig. Bei den mobilen Apps wird zwischen Nextcloud Files und Talk unterschieden. Mit Ersterem besteht der ­Zugriff auf die Dateien, und mit Letzterem lässt sich chatten oder
an (Video-)Meetings teilnehmen. Bild 7 zeigt einen Screenshot der Files-App unter iOS. Mit dieser mobilen Anwendung ist es zudem möglich, automatisch Bilder hochzuladen, die mit dem Smartphone erstellt wurden. So lässt sich eine Nextcloud-Instanz als Bildspeicher nutzen, wenn das gewünscht ist.
Für mobile Gerätestehen eigene Nextcloud-Clients zur Verfügung, hier beispielsweise für iOS 16(Bild 7) © Autor
Die Desktop-Anwendung steht für Windows, macOS und Linux zur Verfügung. Diese Clients dienen primär dazu, Dateien mit einem Verzeichnis zu synchronisieren. So werden Änderungen auf dem Server direkt lokal wiedergegeben, oder es werden umgekehrt die lokalen Änderungen auf dem Server mit allen anderen geteilt. Die Anwendung kann mit mehreren Accounts umgehen, sodass sich die Daten unterschiedlicher Nextcloud-Instanzen in unterschiedliche Verzeichnisse synchronisieren lassen. Zudem ist es möglich, nur einen Ausschnitt zu synchronisieren und die anderen Dateien und Verzeichnisse im Offline-Modus zu halten. Diese werden erst dann heruntergeladen, wenn sie über den Explorer geöffnet werden.Gerade diese Desktop-Clients und die mobilen Apps haben in den vergangenen zwei Jahren zahlreiche Updates erhalten, um die Funktionalität zu erhöhen und die Robustheit deutlich zu verbessern.Darüber hinaus gibt es zahlreiche weitere Integrationen, etwa in E-Mail-Clients wie Outlook, damit Kontakte und Dateien aus einer Nextcloud-Instanz ohne Umwege zur Verfügung stehen. Ebenso gibt es eine Verbindung zu Microsoft Teams, um dort ebenfalls direkt auf Dateien und dergleichen zugreifen zu können.

Die verschiedenen APIs

Damit sich Nextcloud in so viele Situa­tio­nen und Umgebungen wie möglich einbinden lässt, gibt es eine Menge offener Schnittstellen. Diese APIs sind über REST (Representational State Transfer), OCS (Open Collaboration Services) und WebDAV (Web-based Distributed Authoring and Versioning) verfügbar. Je nach gewünschter Funktion ist die eine oder die andere Schnittstelle anzusprechen.WebDAV beispielsweise ermöglicht die Suche in Dateien, den Zugriff auf den Papierkorb, die Dateiversionen, Kommentare und die wichtige Funktion des Dateiuploads. Dabei wird zwischen dem Chunked-File-Upload und dem File-Bulk-Upload unterschieden. Insbesondere die erste Variante ist essenziell, da damit auch umfangreiche Dateien hochgeladen werden können, bei denen die Gefahr groß ist, dass der Upload aus zahlreichen Gründen zwischendurch abbricht.Das OCS-API dient dazu, auf Informationen zuzugreifen, die das Teilen von Dateien und Verzeichnissen betreffen, auf die Personen, die diese Daten teilen, und für den Zugriff auf das Status-API. Auch die Empfehlungen und die Nutzerpräferenzen lassen sich über diese Schnittstelle abfragen und manipulieren.Darüber hinaus bietet Nextcloud einen standardisierten Login-Flow an, damit sich Clients authentifizieren können. Das ist für einen nicht unerheblichen Teil der genannten Schnittstellen wichtig, da diese nur funktionieren, wenn ein Account zur Verfügung steht, der die notwendigen Berechtigungen besitzt. Auch das sogenannte Remote-Wipe-Feature ist als API verfügbar. Damit ist gemeint, dass bei Nutzern, die keinen Zugriff mehr auf die Nextcloud-Instanz haben sollen, die lokalen Daten über einen Befehl gelöscht werden. Das aktuelle Gerät lässt sich auf diese Weise vom Server aus der Ferne löschen. Das ist aus Unternehmenssicht eine enorm wichtige Funktion, um den Zugriff auf die ­lokalen Daten zu unterbinden. Zudem bietet Nextcloud das Activity-API an, mit dem sich die Aktivitäten von Nutzern abrufen lassen.Für alle, die Nextcloud-Apps in Form von Plug-ins implementieren möchten oder anderweitig mit Webtechnologien auf Nextcloud-APIs zugreifen wollen, gibt es die JavaScript-APIs [8]. Damit sind Pakete gemeint, die aktuelle Front­end-APIs von Nextcloud verpacken und in JavaScript-Projekten zur Verfügung stellen. Eine Übersicht bei der Paketverwaltung npm zeigt, welche Pakete es momentan gibt [9].

WebDAV

WebDAV ist ein Netzwerkprotokoll, um Dateien über das Internet bereitzustellen. Es unterstützt HTTP und HTTPS und erlaubt es, ganze Verzeichnisse zu übertragen, und es „versteht“ auch die Versionskontrolle, siehe oben. WebDAV ist Grundlage für Protokolle wie CalDAV und CardDAV, die zur Synchronisation von Kalender- und Adressdaten verwendet werden.Beim Zugriff über WebDAV auf eine Nextcloud-Instanz gilt es einige Punkte zu beachten. Das fängt bereits beim Login und dem Zugriff auf den Server an. Auch Nextcloud unterstützt die Zwei-Faktor-Authentifizierung, sodass man sich nicht einfach so per Nutzername und Passwort Zugriff verschaffen kann. Versucht man es doch, erscheint die Fehlermeldung aus Listing 1; sie weist darauf hin, dass der Login mit einem Passwort nicht erlaubt ist. Das ist nachvollziehbar, da es merkwürdig wäre, wenn die 2FA-Methode den Login erschwert, der Zugriff per API aber weiterhin ohne zusätzliche Authentifizierung möglich wäre.
Listing 1: Login mittels Passwort ist nicht erlaubt
&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt; &lt;br/&gt;&amp;lt;d:error xmlns:d="DAV:"&lt;br/&gt;    xmlns:s="http://sabredav.org/ns"&lt;br/&gt;    xmlns:o="http://owncloud.org/ns"&amp;gt; &lt;br/&gt;  &amp;lt;s:exception&amp;gt;OCA\DAV\Connector\Sabre\Exception\&lt;br/&gt;    PasswordLoginForbidden&amp;lt;/s:exception&amp;gt; &lt;br/&gt;  &amp;lt;s:message/&amp;gt; &lt;br/&gt;  &amp;lt;o:hint xmlns:o="o:"&amp;gt;password login forbidden&lt;br/&gt;  &amp;lt;/o:hint&amp;gt; &lt;br/&gt;&amp;lt;/d:error&amp;gt; 
Die Lösung ist, ein App-Passwort zu erstellen, das die Authentifizierung ermöglicht. Diese App-Passwörter lassen sich über Nextcloud im jeweiligen Account anlegen und werden einmalig angezeigt. Danach können sie verwendet werden oder müssen wieder gelöscht und neu angelegt werden, wenn der Zugang verloren gegangen ist. Ein solcher Login sieht zum Beispiel wie folgt aus:
FDeitelhoff / tEXdT-aBpsR-3rSm4-BDsLc-MzkdX 
Um APIs im Allgemeinen während der Entwicklung zu testen, bieten sich Tools wie Postman und Co. an. Wer lieber die Konsole nutzt, ist mit dem Tool curl gut bedient. Hier ein Beispielaufruf; Bild 8 verdeutlicht zusätzlich einen Aufruf über Postman:
PostmanmitRequest und Response des WebDAV-API(Bild 8) © Autor
curl -u username:password
  'https://cloud.example.com/remote.php/dav/files/
  username/folder' -X PROPFIND
  --data '&lt;?xml version="1.0" encoding="UTF-8"?&gt; 
          ...' 
Der URL, der mit dem PROPFIND-Befehl über WebDAV aufgerufen wird, lautet:
https://&lt;Nextcloud server&gt;/remote.php/dav/files/
  FDeitelhoff/03. Publikationen/1. Fachmagazine/
  1. Dotnetpro 
Die Informationen, die abgerufen werden sollen, werden als XML-String im Body übertragen, Listing 2 zeigt dazu ein Beispiel. Es definiert, dass das Datum der letzten Änderung, die Größe des Contents, die Zugriffsrechte und weitere Informationen abgerufen werden sollen. Das Beispiel erzeugt eine Antwort vom Server mit mehr als 120 Kilobyte. Abgerufen wurde das Verzeichnis aller Artikel für die dotnetpro, die der Autor dieses Artikels seit 2009 geschrieben hat, denn diese Daten liegen seit etlichen Jahren in einer Nextcloud-Instanz. Damit wird deutlich, dass es problemlos möglich ist, über WebDAV Informationen über die Dateien und Verzeichnisse einer Nextcloud-Instanz abzurufen. Welche Eigenschaften beim PROPFIND-Aufruf möglich sind, beschreibt die Next­cloud-Dokumentation im Abschnitt zu WebDAV sehr gut [10].
Listing 2: WebDAV-propfind-Aufrufs im Request-Body
&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt; &lt;br/&gt;&amp;lt;d:propfind xmlns:d="DAV:"&amp;gt; &lt;br/&gt;  &amp;lt;d:prop xmlns:oc="http://owncloud.org/ns"&amp;gt; &lt;br/&gt;    &amp;lt;d:getlastmodified/&amp;gt; &lt;br/&gt;    &amp;lt;d:getcontentlength/&amp;gt; &lt;br/&gt;    &amp;lt;d:getcontenttype/&amp;gt; &lt;br/&gt;    &amp;lt;oc:permissions/&amp;gt; &lt;br/&gt;    &amp;lt;d:resourcetype/&amp;gt; &lt;br/&gt;    &amp;lt;d:getetag/&amp;gt; &lt;br/&gt;  &amp;lt;/d:prop&amp;gt; &lt;br/&gt;&amp;lt;/d:propfind&amp;gt; 
Das funktioniert auch unter .NET, entweder mit bereits vorhandenen Klassen aus dem .NET Framework, zum Beispiel HttpClient, oder mit speziellen Bibliotheken wie WebDav .NET Client [11]. Was zum Einsatz kommt, hängt vom persönlichen Geschmack oder von den Anforderungen des Projekts ab. Da viele zusätzliche Informationen in Form von XML im Body übermittelt werden müssen, ist der Einsatz ­einer speziellen Bibliothek ab einem gewissen Punkt wahrscheinlich einfacher und spart Aufwand. Wer jedoch lediglich ein paar WebDAV-Aufrufe plant, kann diese auch selbst implementieren.Nach ähnlichem Prinzip lassen sich über WebDAV Dateien herunterladen, hochladen, Verzeichnisse erstellen, wieder löschen und Dateien sowie Verzeichnisse verschieben. Listing 3 zeigt ein Beispiel, um eine Word-Datei über die WebDAV-Schnittstelle herunterzuladen. Die Datei enthält diesen Artikel, den Sie gerade lesen, der in der Nextcloud des Autors liegt und konstant bei jedem Speichern aktualisiert wird. Der Code ist unter .NET 7 und C# 11 getestet und funktioniert in JetBrains Rider problemlos. Kurz gestartet, und schon liegt die DOCX-Datei im Debug-Verzeichnis des Projekts. Das ist ein weiteres Beispiel für den einfachen Zugriff auf die Dateien und Verzeichnisse einer Nextcloud-Instanz über die WebDAV-Schnittstelle.
Listing 3: Datei-Download über WebDAV in C#
const string file = "https://&amp;lt;Nextcloud Server&amp;gt;/&lt;br/&gt;  remote.php/dav/files/FDeitelhoff/03.&lt;br/&gt;  Publikationen/1. Fachmagazine/1. dotnetpro/&lt;br/&gt;  211. Nextcloud v25 + .NET/Nextcloud v25 +&lt;br/&gt;  .NET.docx"; &lt;br/&gt;&lt;br/&gt;var client = new HttpClient(); &lt;br/&gt;&lt;br/&gt;var byteArray = Encoding.ASCII.GetBytes(""); &lt;br/&gt;client.DefaultRequestHeaders.Authorization &lt;br/&gt;  = new AuthenticationHeaderValue("Basic",&lt;br/&gt;  Convert.ToBase64String(byteArray)); &lt;br/&gt;&lt;br/&gt;var response = await client.GetAsync(file); &lt;br/&gt;&lt;br/&gt;await using (var streamToReadFrom =&lt;br/&gt;    await response.Content.ReadAsStreamAsync()) &lt;br/&gt;{ &lt;br/&gt;  await using (Stream streamToWriteTo =&lt;br/&gt;      File.Open("Nextcloud v25 + 'NET.docx",&lt;br/&gt;      FileMode.Create)) &lt;br/&gt;  { &lt;br/&gt;    await streamToReadFrom.CopyToAsync(&lt;br/&gt;      streamToWriteTo); &lt;br/&gt;  } &lt;br/&gt;} 
Ebenso funktionieren die Zugriffe auf die Suche, den Papierkorb, Versionshistorien von Dateien und das Hochladen von umfangreichen Dateien per Chunked-File-Upload. Um die Versionen einer Datei abzurufen, reicht ein PROPFIND-Aufruf mit diesem URL:
https://&lt;Nextcloud-Server&gt;/remote.php/dav/versions/USER/
  versions/FILEID 
Zurückgegeben werden alle Versionen der Datei, die über die File-ID definiert wird. Der Name ist dabei der Zeitstempel der Version. Wird anschließend eine spezifische Version zum speziellen sogenannten Restore-Verzeichnis verschoben, dann wird diese Datei wiederhergestellt:
https://cloud.example.com/remote.php/dav/versions/USER/
  restore 
Diese und weitere Operationen erlauben es auf recht einfache Weise, administrative Aufgaben und Anwendungen zu implementieren, die dann über die Schnittstelle automatisierbar sind. Bei umfangreichen Nextcloud-Instanzen erspart das einiges an Arbeit.

Das OCS-API

Das OCS-API ist eine pragmatische REST- und WebDAV-basierte Schnittstelle, die eine einfache Anbindung von Anwendungen an eine Content-Collaboration-Plattform ermöglicht. Sie deckt grundlegende Dateiverarbeitungsfunktionen wie Dateizugriff, gemeinsame Nutzung, Versionierung und Kommentierung von Dateien ab und ermöglicht auch Kommunikation (Chat, Videoanrufe), Kalender, Aufgaben und mehr. Derzeit implementiert und entwickelt Nextcloud das OCS-API, wobei Teile auch in verschiedenen anderen Projekten und von vielen Anwendungen und Tools von Drittanbietern unterstützt werden. Die aktuelle Definition des API ist in der Nextcloud-Entwicklerdokumentation zu finden [12].Über diese Schnittstelle lassen sich die verschiedensten Informationen abrufen, etwa Metadaten über Nutzer, Angaben zu geteilten Verzeichnissen und Dateien sowie Daten über den Status von Nutzern (OCS-Status-API [13]). Dieser Status lässt sich in Nextcloud pro Nutzer setzen, beispielsweise ob dieser online, auf „Do not Disturb“ (DnD) oder offline gesetzt ist. Wichtig ist, dass bei allen Aufrufen über die Endpunkte der sogenannte APIRequest-Header gesetzt wird:
OCS-APIRequest: true 
Das teilt dem Endpunkt mit, dass ein automatisierter API-Aufruf erfolgt. Ansonsten begegnet Nextcloud den Aufrufen mit der Fehlermeldung „CSRS check failed“.Der Zugriff auf den folgenden URL ruft beispielsweise die Metadaten eines Nutzers in Nextcloud ab:
https://&lt;Nextcloud-Server&gt;/ocs/v1.php/cloud/users/
  FDeitelhoff 
Die Antwort ist XML und fällt entsprechend umfangreich aus, nicht nur bezogen auf den konkreten Inhalt, sondern auch auf den Aufbau des Dokuments. Listing 4 zeigt einen Ausschnitt der Antwort. Neben den Metadaten zum Aufruf selbst und der Information, ob alles funktioniert hat, enthält die Antwort die Daten zum Nutzer. Das kann zum Beispiel der Speicherort für die Daten des Nutzers sein, der Zeitpunkt des letzten Logins, wie viel Speicherplatz der Nutzer aktuell verbraucht oder welcher Anteil noch zur Verfügung steht (Quota).
Listing 4: Zugriff auf Account-Daten per OCS-API
&amp;lt;?xml version="1.0"?&amp;gt; &lt;br/&gt;&amp;lt;ocs&amp;gt; &lt;br/&gt;  &amp;lt;meta&amp;gt; &lt;br/&gt;    &amp;lt;status&amp;gt;ok&amp;lt;/status&amp;gt; &lt;br/&gt;    &amp;lt;statuscode&amp;gt;100&amp;lt;/statuscode&amp;gt; &lt;br/&gt;    &amp;lt;message&amp;gt;OK&amp;lt;/message&amp;gt; &lt;br/&gt;    &amp;lt;totalitems&amp;gt;&amp;lt;/totalitems&amp;gt; &lt;br/&gt;    &amp;lt;itemsperpage&amp;gt;&amp;lt;/itemsperpage&amp;gt; &lt;br/&gt;  &amp;lt;/meta&amp;gt; &lt;br/&gt;  &amp;lt;data&amp;gt; &lt;br/&gt;    &amp;lt;storageLocation&amp;gt;/var/www/html/data/FDeitelhoff&lt;br/&gt;    &amp;lt;/storageLocation&amp;gt; &lt;br/&gt;    &amp;lt;id&amp;gt;FDeitelhoff&amp;lt;/id&amp;gt; &lt;br/&gt;    &amp;lt;lastLogin&amp;gt;1668167965000&amp;lt;/lastLogin&amp;gt; &lt;br/&gt;    &amp;lt;backend&amp;gt;Database&amp;lt;/backend&amp;gt; &lt;br/&gt;    &amp;lt;subadmin/&amp;gt; &lt;br/&gt;    &amp;lt;quota&amp;gt; &lt;br/&gt;      &amp;lt;free&amp;gt;328260386816&amp;lt;/free&amp;gt; &lt;br/&gt;      &amp;lt;used&amp;gt;196757316268&amp;lt;/used&amp;gt; &lt;br/&gt;      &amp;lt;total&amp;gt;525017703084&amp;lt;/total&amp;gt; &lt;br/&gt;      &amp;lt;relative&amp;gt;37.48&amp;lt;/relative&amp;gt; &lt;br/&gt;      &amp;lt;quota&amp;gt;-3&amp;lt;/quota&amp;gt; &lt;br/&gt;    &amp;lt;/quota&amp;gt; &lt;br/&gt;    .... &lt;br/&gt;  &amp;lt;/data&amp;gt; &lt;br/&gt;&amp;lt;/ocs&amp;gt; 
Über einen identischen Mechanismus lassen sich weitere Metadaten der Nextcloud-Instanz abrufen, zum Beispiel die IDs aller Nutzer-Accounts, die Möglichkeiten der Nextcloud-Instanz (Capabilities-API), zum Beispiel zur aktuellen Ver­sion und zu den Möglichkeiten des aktuellen Nextcloud-Designs. Mit der Schnittstelle lassen sich somit administrative Arbeiten an der Nextcloud-Instanz erledigen und automatisieren. Der folgende URL listet beispielsweise alle geteilten Dateien auf, die vom aktuellen Nutzer erstellt wurden (OCS-Share-API [14]):
https://&lt;Nextcloud-Server&gt;/ocs/v2.php/apps/
  files_sharing/api/v1/shares 
Einen Ausschnitt der Antwort zeigt Listing 5.
Listing 5: Antwort zu den Shares eines Nutzers
&amp;lt;?xml version="1.0"?&amp;gt; &lt;br/&gt;&amp;lt;ocs&amp;gt; &lt;br/&gt;  &amp;lt;meta&amp;gt; &lt;br/&gt;    &amp;lt;status&amp;gt;ok&amp;lt;/status&amp;gt; &lt;br/&gt;    &amp;lt;statuscode&amp;gt;200&amp;lt;/statuscode&amp;gt; &lt;br/&gt;    &amp;lt;message&amp;gt;OK&amp;lt;/message&amp;gt; &lt;br/&gt;  &amp;lt;/meta&amp;gt; &lt;br/&gt;  &amp;lt;data&amp;gt; &lt;br/&gt;    &amp;lt;element&amp;gt; &lt;br/&gt;      &amp;lt;id&amp;gt;6&amp;lt;/id&amp;gt; &lt;br/&gt;      &amp;lt;share_type&amp;gt;3&amp;lt;/share_type&amp;gt; &lt;br/&gt;      &amp;lt;uid_owner&amp;gt;FDeitelhoff&amp;lt;/uid_owner&amp;gt; &lt;br/&gt;      &amp;lt;displayname_owner&amp;gt;Dr. Fabian Deitelhoff&lt;br/&gt;      &amp;lt;/displayname_owner&amp;gt; &lt;br/&gt;      &amp;lt;permissions&amp;gt;17&amp;lt;/permissions&amp;gt; &lt;br/&gt;      &amp;lt;can_edit&amp;gt;1&amp;lt;/can_edit&amp;gt; &lt;br/&gt;      &amp;lt;can_delete&amp;gt;1&amp;lt;/can_delete&amp;gt; &lt;br/&gt;      &amp;lt;stime&amp;gt;1654627083&amp;lt;/stime&amp;gt; &lt;br/&gt;      ... &lt;br/&gt;    &amp;lt;/element&amp;gt; &lt;br/&gt;  &amp;lt;/data&amp;gt; &lt;br/&gt;&amp;lt;/ocs&amp;gt; 
Bei all den Antworten und Listings wird zudem deutlich, dass die Antworten recht umfangreich ausfallen können. Wer mit den Nextcloud-APIs arbeiten will, darf ganz offensichtlich nicht vor XML zurückschrecken.

Das Activity-API

Die Schnittstelle für die Aktivitäten in einer Nextcloud-Instanz ist überaus nützlich [15]. In vielen Situationen ist es wichtig zu wissen, welche Aktionen in der Cloud erfolgen. Diese Schnittstelle nutzt ebenfalls das OCS-API. Um die Schnittstelle einzusetzen, reicht es beispielsweise aus, einen GET-Request auf den folgenden URL abzusetzen:
https://&lt;Nextcloud Cloud&gt;/ocs/v2.php/apps/activity/api/
  v2/activity 
Header und Authentifizierung des Aufrufs sind identisch mit den anderen Zugriffen auf das OCS-API. Listing 6 zeigt wieder nur einen Ausschnitt aus der XML-Antwort, da der Umfang der gelieferten Daten enorm sein kann. Eine Aktivität wird im Zweifel nämlich sehr häufig protokolliert, etwa bei jeder Änderung einer Datei. Das zeigt auch das vorherige Listing, denn die Meldung (Subject) in der Antwort zeigt genau, worum es geht: „Du hast 03. Publikationen/1. Fachmagazine/1. dotnetpro/211. Nextcloud v25 + .NET/Nextcloud v25 + .NET.docx geändert” Diese Aktivität wird also bei jedem Speichern der Word-Datei für diesen Artikel protokolliert.
Listing 6: Antwort auf den Activity-Request über das Activity-API
&amp;lt;?xml version="1.0"?&amp;gt; &lt;br/&gt;&amp;lt;ocs&amp;gt; &lt;br/&gt;  &amp;lt;meta&amp;gt; &lt;br/&gt;    &amp;lt;status&amp;gt;ok&amp;lt;/status&amp;gt; &lt;br/&gt;    &amp;lt;statuscode&amp;gt;200&amp;lt;/statuscode&amp;gt; &lt;br/&gt;    &amp;lt;message&amp;gt;OK&amp;lt;/message&amp;gt; &lt;br/&gt;  &amp;lt;/meta&amp;gt; &lt;br/&gt;  &amp;lt;data&amp;gt; &lt;br/&gt;    &amp;lt;element&amp;gt; &lt;br/&gt;      &amp;lt;activity_id&amp;gt;846454&amp;lt;/activity_id&amp;gt; &lt;br/&gt;      &amp;lt;app&amp;gt;files&amp;lt;/app&amp;gt; &lt;br/&gt;      &amp;lt;type&amp;gt;file_changed&amp;lt;/type&amp;gt; &lt;br/&gt;      &amp;lt;user&amp;gt;FDeitelhoff&amp;lt;/user&amp;gt; &lt;br/&gt;      &amp;lt;subject&amp;gt;Du hast 03. Publikationen/&lt;br/&gt;        1. Fachmagazine/1. dotnetpro/211. Nextcloud&lt;br/&gt;        v25 + .NET/Nextcloud v25 + .NET.docx&lt;br/&gt;        geändert&amp;lt;/subject&amp;gt; &lt;br/&gt;      &amp;lt;subject_rich&amp;gt; &lt;br/&gt;        &amp;lt;element&amp;gt;Du hast {file1} geändert&amp;lt;/element&amp;gt; &lt;br/&gt;        &amp;lt;element&amp;gt; &lt;br/&gt;          &amp;lt;file1&amp;gt; &lt;br/&gt;            &amp;lt;type&amp;gt;file&amp;lt;/type&amp;gt; &lt;br/&gt;            &amp;lt;id&amp;gt;749704&amp;lt;/id&amp;gt; &lt;br/&gt;            &amp;lt;name&amp;gt;Nextcloud v25 + .NET.docx&amp;lt;/name&amp;gt; &lt;br/&gt;            &amp;lt;path&amp;gt;03. Publikationen/1. Fachmagazine/1.&lt;br/&gt;              dotnetpro/211. Nextcloud v25 + .NET/&lt;br/&gt;              Nextcloud v25 + .NET.docx&amp;lt;/path&amp;gt; &lt;br/&gt;            &amp;lt;link&amp;gt;https://nx21759.your-storageshare.&lt;br/&gt;              de/f/749704&amp;lt;/link&amp;gt; &lt;br/&gt;          &amp;lt;/file1&amp;gt; &lt;br/&gt;        &amp;lt;/element&amp;gt; &lt;br/&gt;      &amp;lt;/subject_rich&amp;gt; &lt;br/&gt;      &amp;lt;message&amp;gt;&amp;lt;/message&amp;gt; &lt;br/&gt;      &amp;lt;message_rich&amp;gt; &lt;br/&gt;        &amp;lt;element&amp;gt;&amp;lt;/element&amp;gt; &lt;br/&gt;        &amp;lt;element/&amp;gt; &lt;br/&gt;      &amp;lt;/message_rich&amp;gt; &lt;br/&gt;      &amp;lt;object_type&amp;gt;files&amp;lt;/object_type&amp;gt; &lt;br/&gt;      &amp;lt;object_id&amp;gt;749704&amp;lt;/object_id&amp;gt; &lt;br/&gt;      &amp;lt;object_name&amp;gt;/03. Publikationen/&lt;br/&gt;        1. Fachmagazine/1. dotnetpro/211. Nextcloud&lt;br/&gt;        v25 + .NET/Nextcloud v25 + .NET.docx&lt;br/&gt;      &amp;lt;/object_name&amp;gt; &lt;br/&gt;      &amp;lt;objects&amp;gt; &lt;br/&gt;        &amp;lt;element&amp;gt;/03. Publikationen/1. Fachmagazine/&lt;br/&gt;          1. dotnetpro/211. Nextcloud v25 +&lt;br/&gt;          .NET/Nextcloud v25 + .NET.docx&amp;lt;/element&amp;gt; &lt;br/&gt;        &amp;lt;/objects&amp;gt; &lt;br/&gt;      &amp;lt;link&amp;gt;https://nx21759.your-storageshare.de/apps/&lt;br/&gt;        files/?dir=/03.%20Publikationen/&lt;br/&gt;        1.%20Fachmagazine/1.%20dotnetpro/&lt;br/&gt;        211.%20Nextcloud%20v25%20%2B%20.NET&amp;lt;/link&amp;gt; &lt;br/&gt;      &amp;lt;icon&amp;gt;https://nx21759.your-storageshare.de/apps/&lt;br/&gt;        files/img/change.svg&amp;lt;/icon&amp;gt; &lt;br/&gt;      &amp;lt;datetime&amp;gt;2022-11-11T15:59:04+00:00&amp;lt;/datetime&amp;gt; &lt;br/&gt;    &amp;lt;/element&amp;gt; &lt;br/&gt;&lt;br/&gt;    ...&lt;br/&gt;&lt;br/&gt;  &amp;lt;/data&amp;gt; &lt;br/&gt;&amp;lt;/ocs&amp;gt; 
Das sind im Lauf der Zeit, in der – um beim verwendeten Beispiel zu bleiben – ein Artikelmanuskript entsteht, durchaus sehr viele Einträge. Dennoch ist das API essenziell, wenn es darum geht, die Aktivitäten einer Nextcloud-Instanz auszulesen, zu analysieren oder zu überwachen. Damit nicht immer alle Aktivitäten zurückgeliefert werden, lässt sich im Aufruf ein Filter platzieren:
/ocs/v2.php/apps/activity/api/v2/activity/{filter} 
Einige unterstützte Filter sind beispielsweise self, by, files, security und calendar. So können die Daten auf Nutzer, auf sicherheitsrelevante Aspekte oder den Kalender eingeschränkt werden; das dämmt die Datenflut im Zweifel stark ein. Welche Filter die Nextcloud-Instanz unterstützt, lässt sich über den folgenden URL mit einem GET-Request abfragen:
/ocs/v2.php/apps/activity/api/v2/activity/filters 

APIs für oder von Plug-ins

Nextcloud lässt sich umfassend durch Plug-ins erweitern. Diese Plug-ins sind zum Teil direkt mit dem Nextcloud-Kern verknüpft. Das bedeutet, dass beispielsweise die für die Erweiterungen notwendige Tabellenstruktur in der Datenbank mit der Nextcloud-Instanz installiert wird.Andere Erweiterungen sind davon unabhängig und vollständig extern und fügen die notwendigen Angaben erst bei der Installation hinzu. In vielen Fällen bietet Nextcloud es an, über ein REST-API auf die Daten des Plug-ins zuzugreifen. Beispiele für diese Art von Plug-ins sind der Kalender [16] und das sogenannte Deck[17]. Letzteres bietet ein Board im Kanban-Style an, um Karten zu erstellen, Personen in der Nextcloud zuzuweisen und dergleichen. Bild 9 zeigt einen Screenshot von Deck.
Das Deck-Add-onunter Nextcloud(Bild 9) © Autor
Dieses Deck-Plug-in bietet eine Schnittstelle, um Daten abzufragen oder zu manipulieren [18]. Der folgende URL ermöglicht es bei einem GET-Request zum Beispiel, alle Boards als JSON-Format auszugeben:
https://nx21759.your-storageshare.de/index.php/apps/
  deck/api/v1.1/boards 
Zudem besteht Zugriff auf alle Stacks (Stapel, Spalten), alle Karten, Label und Anhänge an Karten. Die Daten lassen sich nicht nur mit GET abfragen, sondern zudem mit POST erstellen und mit DELETE löschen. So können beispielsweise automatisiert Boards und Karten angelegt oder generell verwaltet werden.

Fazit

Nextcloud hat sich nach dem Abzweigen von ownCloud rasant entwickelt. Die Update-Dichte ist sehr gut, sodass spätestens alle paar Monate eine neue Major-Version veröffentlicht wird; zwischendurch gibt es regelmäßig Sicherheitsupdates und Korrekturen. Insgesamt wird die Entwicklungsgeschwindigkeit bei Nextcloud als schneller wahrgenommen, als bei ownCloud – mit allen Vor- und Nachteilen.Insgesamt hat sich die Software sehr gut platziert. Immer mehr Organisationen und Privatpersonen setzen auf diese Cloud-Lösung. Hinzu kommen immer mehr öffentliche Stellen und öffentliche Vergaben/Aufträge, die zu Nextcloud greifen, um Open Source beispielsweise in der öffentlichen Verwaltung umzusetzen. Das ist ebenfalls ein sehr gutes Zeichen für Nextcloud und insgesamt für die öffentliche Hand, wenn in diesen Situationen nicht das x-te System selbst implementiert wird.Nextcloud bietet viele Funktionen an, die bei einer Cloud-Lösung für das kollaborative Arbeiten im Team notwendig sind. Das Synchronisieren und Teilen von Dateien und Verzeichnissen ist da nur ein Standard-Anwendungsfall. Groupware- und Office-Funktionen sind ebenfalls mit an Bord. Auch die Möglichkeit, Nextcloud umfangreich durch Plug-ins zu erweitern, ist gegeben. All das bietet den Vorteil von Open Source und einem grundsätzlich kostenfreien System – von kostenpflichtigen Plug-ins und dem ebenfalls kostenpflichtigen Hosting einmal abgesehen.Ob sich Nextcloud auch in Zukunft weiterhin behaupten kann, muss die Zeit zeigen. Andere Unternehmen entwickeln ebenfalls Lösungen, die mit Next­cloud konkurrieren. Slack hat es vor etlichen Jahren vorgemacht, und Microsoft ist mit Teams als Kommunikationslösung nachgezogen. Die weitere Verzahnung von Office 365 und Microsoft Teams macht es Lösungen wie Nextcloud sicherlich nicht einfacher. Eine oft verwendete Begründung für Lösungen wie Nextcloud oder ownCloud ist die Datenhoheit. Die bleibt mit dem System im eigenen Unternehmen, insbesondere dann, wenn Nextcloud selbst gehostet wird.Nextcloud hat sich seinen Platz in der Welt der Cloud-Lösungen mehr als verdient. Wer auf der Suche nach einer Alternative ist, findet auf der Website des Projekts einen Vergleich mit zahlreichen anderen Lösungen, beispielsweise Google Drive, Office 365, ownCloud und Dropbox [19].Nextcloud ist nach all den Jahren konstanter Weiterentwicklung definitiv einen Blick wert und bekommt an dieser Stelle eine Empfehlung. Für zahlreiche Anwendungsfälle ist diese Cloud-Lösung sehr gut geeignet
Projektdateien herunterladen

Fussnoten

  1. Dropbox, http://www.dropbox.com
  2. Nextcloud, https://nextcloud.com
  3. Nextcloud bei GitHub, https://github.com/nextcloud
  4. Repository zum Nextcloud-Server GitHub, http://www.dotnetpro.de/SL2303Nextcloud1
  5. Download von Nextcloud und den Clients, https://nextcloud.com/install/
  6. Geräte für den Nextcloud-Einsatz, https://nextcloud.com/devices/
  7. Collabora Online, http://www.collaboraoffice.com
  8. Nextcloud JavaScript APIs, http://www.dotnetpro.de/SL2303Nextcloud2
  9. Paketübersicht bei NPM zu den JavaScript-Paketen, http://www.dotnetpro.de/SL2303Nextcloud3
  10. Nextcloud-Dokumentation zum WebDAV-API, http://www.dotnetpro.de/SL2303Nextcloud4
  11. WebDav .NET Client bei GitHub, http://www.dotnetpro.de/SL2303Nextcloud5
  12. Nextcloud-Dokumentation zum OCS-API, http://www.dotnetpro.de/SL2303Nextcloud6
  13. Dokumentation zum OCS-Status-API, http://www.dotnetpro.de/SL2303Nextcloud7
  14. Dokumentation zum OCS-Share-API, http://www.dotnetpro.de/SL2303Nextcloud89
  15. Nextcloud-Activity-API bei GitHub, http://www.dotnetpro.de/SL2303Nextcloud1
  16. Kalender-Add-on für Nextcloud, http://www.dotnetpro.de/SL2303Nextcloud10
  17. Deck-Add-on für Nextcloud, http://www.dotnetpro.de/SL2303Nextcloud11
  18. REST-API zum Deck-Add-on, http://www.dotnetpro.de/SL2303Nextcloud12
  19. How Nextcloud stacks up, https://nextcloud.com/compare/

Neueste Beiträge

DWX hakt nach: Wie stellt man Daten besonders lesbar dar?
Dass das Design von Websites maßgeblich für die Lesbarkeit der Inhalte verantwortlich ist, ist klar. Das gleiche gilt aber auch für die Aufbereitung von Daten für Berichte. Worauf besonders zu achten ist, erklären Dr. Ina Humpert und Dr. Julia Norget.
3 Minuten
27. Jun 2025
DWX hakt nach: Wie gestaltet man intuitive User Experiences?
DWX hakt nach: Wie gestaltet man intuitive User Experiences? Intuitive Bedienbarkeit klingt gut – doch wie gelingt sie in der Praxis? UX-Expertin Vicky Pirker verrät auf der Developer Week, worauf es wirklich ankommt. Hier gibt sie vorab einen Einblick in ihre Session.
4 Minuten
27. Jun 2025
„Sieh die KI als Juniorentwickler“
CTO Christian Weyer fühlt sich jung wie schon lange nicht mehr. Woran das liegt und warum er keine Angst um seinen Job hat, erzählt er im dotnetpro-Interview.
15 Minuten
27. Jun 2025
Cloud & DevOps

Das könnte Dich auch interessieren

UIs für Linux - Bedienoberflächen entwickeln mithilfe von C#, .NET und Avalonia
Es gibt viele UI-Frameworks für .NET, doch nur sehr wenige davon unterstützen Linux. Avalonia schafft als etabliertes Open-Source-Projekt Abhilfe.
16 Minuten
16. Jun 2025
Mythos Motivation - Teamentwicklung
Entwickler bringen Arbeitsfreude und Engagement meist schon von Haus aus mit. Diesen inneren Antrieb zu erhalten sollte für Führungskräfte im Fokus stehen.
13 Minuten
19. Jan 2017
Evolutionäres Prototyping von Business-Apps - Low Code/No Code und KI mit Power Apps
Microsoft baut Power Apps zunehmend mit Features aus, um die Low-Code-/No-Code-Welt mit der KI und der professionellen Programmierung zu verbinden.
19 Minuten
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige