Was ist Hubzilla?

Hubzilla ist ein dezentralisiertes Kommunikationsnetzwerk mit dem Ziel, Kommunikationsmöglichkeiten bereitzustellen, die Zensur umgehen, die Privatsphäre respektieren und somit frei sind von den Einschränkungen, die die heutigen kommerziellen Kommunikationsgiganten uns auferlegen. Diese stellen in erster Linie Spionagenetzwerke für zahlende Kunden aller Art zur Verfügung und monopolisieren und zentralisieren das ganze Internet – was ursprünglich eben gerade nicht unter den revolutionären Zielen war, die einst zum World Wide Web führten.

Hubzilla ist frei, kostenlos und Open Source. Sie wurde entwickelt, um auf einem Raspberry Pi für € 30,– ebenso zu laufen wie auf den größten AMD- und Intel-Xeon-Multiprozessor-Servern. Es kann für die Kommunikation zwischen einigen wenigen Einzelpersonen genutzt werden oder viele tausend Leute und mehr miteinander verbinden.

Ein weiteres Ziel ist es, von Können und Ressourcen unabhängig zu sein. Hubzilla ist für den einfachen Computernutzer ebenso leicht bedienbar wie für Systemadministratoren und Entwickler.

Wie Du es benutzt hängt davon ab, wie Du es benutzen willst.

Hubzilla ist in PHP geschrieben, dadurch ist es einfach, sie auf jedweder heutigen Hosting-Plattform zu installieren, inklusive Self-Hosting zu Hause, auf Shared Servern wie bei Uberspace, Media Temple und Dreamhost, oder auf virtuellen und dedizierten Servern, wie es sie zum Beispiel bei Linode, GreenQloud oder Amazon AWS gibt.

Mit anderen Worten, Hubzilla kann auf jeder Plattform laufen, die einen Web-Server, eine MySQL-kompatible Datenbank und PHP mitbringt.

Dabei bietet Hubzilla einige einzigartige Leckerbissen:

Ein-Klick-Identifikation: Du kannst auf andere Server im Hubzilla-Netzwerk zugreifen, indem Du einfach auf einen Link dorthin klickst. Die Authentifizierung wird ganz einfach automatisch hinter den Kulissen durchgeführt. Vergiss viele verschiedene Usernamen für verschiedene Seiten und die Passwörter dazu – das tut alles Hubzilla für Dich.

Klone: Du kannst Deine Online-Identität (oder, wie wir sagen, einen Kanal) klonen. Sie ist nicht mehr länger an einen bestimmten Server, eine Domain oder eine IP-Adresse gebunden. Importiere sie einfach auf einem anderen Hubzilla-Server (oder Hubzilla-Hub, wie es bei uns heißt) – direkt online oder mit Hilfe eines vorher generierten Exports. Wenn Dein primärer Hub plötzlich nicht mehr online ist, kein Problem, Deine Kontakte, Posts* und Nachrichten* sind automagisch weiterhin unter Deiner geklonten Identität verfügbar und zugreifbar. (*: nur Posts und Nachrichten, die nach dem Moment des Klonens erstellt wurden)

Privatsphäre: Hubzilla-Identitäten (Zot-IDs) können gelöscht, gesichert/heruntergeladen und geklont werden. Du hast volle Kontrolle über Deine Daten. Wenn Du Dich entscheidest, all Deine Daten und Deine Zot-ID zu löschen, musst Du nur auf einen Link klicken, und sie werden sofort von dem Server gelöscht. Keine Fragen, keine Umstände.

Funktionen

Im Folgenden einige der Hauptfunktionen von Hubzilla, die in der offiziellen Version enthalten sind. Hubzilla ist eine hochgradig erweiterbare Plattform, so dass weitere Funktionen und Möglichkeiten durch zusätzliche Themes und Plugins hinzugefügt werden können.

Affinity-Schieberegler

Beim Hinzufügen von Verbindungen in Hubzilla haben Mitglieder die Möglichkeit, der neuen Verbindung „Affinitätsstufen“ zuzuweisen (wie eng Ihre Freundschaft ist). Wenn Sie z. B. jemanden hinzufügen, dessen Blog Sie verfolgen, können Sie seinem Kanal die Affinitätsstufe „Bekannte“ zuweisen.

Wenn Sie hingegen den Kanal eines Freundes hinzufügen, könnten Sie ihm die Affinitätsstufe „Freunde“ zuweisen.

An diesem Punkt passt das Hubzilla Affinitäts-Schieberegler-Tool, das in der Regel oben auf Ihrer „Stream“-Seite erscheint, den Inhalt der Seite so an, dass die Kanäle innerhalb des gewünschten Affinitätsbereichs angezeigt werden. Kanäle außerhalb dieses Bereichs werden nicht angezeigt, es sei denn, Sie passen den Schieberegler so an, dass er sie einschließt.

Der Schieberegler für die Affinität ermöglicht die sofortige Filterung großer Mengen von Inhalten, gruppiert nach Grad der Nähe.

Filterung von Verbindungen

Mit dem optionalen „Verbindungsfilter“ haben Sie die Möglichkeit, genau zu steuern, was in Ihrem Stream angezeigt wird. Wenn er aktiviert ist, bietet der Verbindungseditor Eingaben zur Auswahl von Kriterien, die erfüllt werden müssen, um einen bestimmten Beitrag aus einem bestimmten Kanal aufzunehmen oder auszuschließen. Sobald ein Beitrag zugelassen wurde, sind alle Kommentare zu diesem Beitrag erlaubt, unabhängig davon, ob sie den Auswahlkriterien entsprechen. Sie können Wörter auswählen, die, falls vorhanden, den Beitrag blockieren oder sicherstellen, dass er in Ihren Stream aufgenommen wird. Reguläre Ausdrücke können für eine noch feinere Kontrolle verwendet werden, ebenso wie Hashtags oder sogar die erkannte Sprache des Beitrags.

Zugriffskontrolllisten

Bei der Freigabe von Inhalten haben die Mitglieder die Möglichkeit einzuschränken, wer den Inhalt sehen kann. Durch Anklicken des Vorhängeschlosses unter dem Freigabefeld kann man die gewünschten Empfänger des Beitrags auswählen, indem man auf deren Namen klickt.

Nach dem Versenden kann die Nachricht nur vom Absender und den ausgewählten Empfängern eingesehen werden. Mit anderen Worten, die Nachricht wird nicht auf öffentlichen Wänden erscheinen.

Zugangskontrolllisten können auf Inhalte und Beiträge, Fotos, Ereignisse, Webseiten, Chatrooms und Dateien angewendet werden.

Einmalige Anmeldung

Zugriffskontrolllisten funktionieren dank unserer einzigartigen Single-Sign-On-Technologie für alle Kanäle im Grid. Die meisten internen Links bieten ein Identitäts-Token, das auf anderen Hubzilla-Sites verifiziert und zur Kontrolle des Zugriffs auf private Ressourcen verwendet werden kann. Sie melden sich einmal bei Ihrem Home Hub an. Danach ist die Authentifizierung für alle Hubzilla-Ressourcen „magisch“.

WebDAV-fähiger Dateispeicher

Dateien können mit den Dienstprogrammen Ihres Betriebssystems (in den meisten Fällen per Drag & Drop) in Ihren persönlichen Speicherbereich hochgeladen werden. Sie können diese Dateien mit Zugriffskontrolllisten für eine beliebige Kombination von Hubzilla-Mitgliedern (einschließlich einiger Netzwerkmitglieder von Drittanbietern) schützen oder sie öffentlich zugänglich machen.

Fotoalben

Speichern Sie Fotos in Alben. Alle Ihre Fotos können durch Zugriffskontrolllisten geschützt werden.

Veranstaltungskalender

Erstellen und verwalten Sie Ereignisse und Aufgaben, die ebenfalls mit Zugriffskontrolllisten geschützt werden können. Ereignisse können mit dem Industriestandard vcalendar/iCal-Format in andere Software importiert/exportiert und in Posts mit anderen geteilt werden. Geburtstagsereignisse werden automatisch von Ihren Freunden hinzugefügt und in Ihre korrekte Zeitzone umgewandelt, so dass Sie genau wissen, wann der Geburtstag stattfindet - unabhängig davon, wo auf der Welt Sie sich in Bezug auf die Geburtstagsperson befinden. Veranstaltungen werden normalerweise mit Anwesenheitszählern erstellt, so dass Ihre Freunde und Verbindungen sofort zusagen können.

Chaträume

Sie können eine beliebige Anzahl von persönlichen Chatrooms erstellen und den Zugang über Zugangskontrolllisten erlauben. Diese sind in der Regel sicherer als XMPP, IRC und andere Instant Messaging-Transporte, obwohl wir auch die Nutzung dieser anderen Dienste über Plugins erlauben.

Erstellung von Webseiten

Hubzilla verfügt über zahlreiche „Content Management“-Werkzeuge zur Erstellung von Webseiten, einschließlich Layout-Bearbeitung, Menüs, Blöcke, Widgets und Seiten-/Inhaltsbereiche. Alle diese Tools können zugriffsgesteuert werden, so dass die resultierenden Seiten nur für das vorgesehene Publikum zugänglich sind.

Anwendungen

Apps können von Mitgliedern erstellt und verteilt werden. Diese unterscheiden sich von den traditionellen „Vendor Lockin“-Apps, da sie vollständig vom Autor kontrolliert werden - der den Zugriff auf die Zielseiten der App kontrollieren und entsprechend für diesen Zugriff bezahlen kann. Die meisten Apps in Hubzilla sind kostenlos und können auch von Personen ohne Programmierkenntnisse leicht erstellt werden.

Gestaltung

Das Seitenlayout basiert auf einer Beschreibungssprache namens Comanche. Hubzilla selbst ist in Comanche-Layouts geschrieben, die Sie ändern können. Dies ermöglicht ein Maß an individueller Anpassung, das man in so genannten „Multi-User-Umgebungen“ normalerweise nicht findet.

Lesezeichen

Teilen und speichern/verwalten Sie Lesezeichen von Links, die in Unterhaltungen bereitgestellt werden.

Verschlüsselung privater Nachrichten und Datenschutzaspekte

Private Nachrichten werden in einem verschlüsselten Format gespeichert. Dies ist zwar nicht hundertprozentig sicher, verhindert aber in der Regel das gelegentliche Ausspähen durch den Site-Administrator oder ISP.

Jeder Hubzilla-Channel verfügt über einen eigenen Satz privater und zugehöriger öffentlicher RSA 4096-Bit-Schlüssel, die bei der ersten Erstellung des Channels generiert werden. Dies wird verwendet, um private Nachrichten und Beiträge während der Übertragung zu schützen.

Zusätzlich können Nachrichten mit einer „Ende-zu-Ende-Verschlüsselung“ erstellt werden, die von Hubzilla-Betreibern, ISPs oder anderen Personen, die den Passcode nicht kennen, nicht gelesen werden kann.

Öffentliche Nachrichten werden in der Regel weder bei der Übertragung noch bei der Speicherung verschlüsselt.

Private Nachrichten können zurückgezogen (nicht gesendet) werden, obwohl es keine Garantie gibt, dass der Empfänger sie noch nicht gelesen hat.

Beiträge und Nachrichten können mit einem Verfallsdatum versehen werden, nach dessen Ablauf sie auf der Seite des Empfängers gelöscht/entfernt werden.

Dienst-Föderation

Neben zusätzlichen „Cross-Post-Connectoren“ zu einer Vielzahl von alternativen Netzwerken gibt es eine native Unterstützung für den Import von Inhalten aus RSS/Atom-Feeds und deren Verwendung zur Erstellung spezieller Kanäle. Es sind auch Plugins verfügbar, um mit anderen über die Protokolle Diaspora und GNU-Social (OStatus) zu kommunizieren. Diese Netzwerke unterstützen keine nomadische Identität oder domänenübergreifende Zugriffskontrolle; allerdings wird die grundlegende Kommunikation mit/von Diaspora, Friendica, GNU-Social, Mastodon und anderen Anbietern, die diese Protokolle verwenden, unterstützt.

Es gibt auch eine experimentelle Unterstützung für OpenID-Authentifizierung, die in Zugriffskontrolllisten verwendet werden kann. Dies ist ein Projekt, an dem gearbeitet wird. Ihr Hubzilla-Hub kann als OpenID-Provider verwendet werden, um Sie bei externen Diensten, die diese Technologie nutzen, zu authentifizieren.

Channels können die Berechtigung haben, zu „derivativen Channels“ zu werden, bei denen zwei oder mehr bestehende Channels kombiniert werden, um einen neuen thematischen Channel zu erstellen.

Datenschutz-Gruppen

Unsere Implementierung von Datenschutzgruppen ähnelt den „Circles“ von Google und den „Aspekten“ von Diaspora. Dies ermöglicht Ihnen, Ihren eingehenden Stream nach ausgewählten Gruppen zu filtern und die ausgehende Zugriffskontrollliste automatisch auf die Mitglieder dieser Gruppe zu beschränken, wenn Sie etwas posten. Sie können dies jederzeit (vor dem Senden des Beitrags) rückgängig machen.

Verzeichnisdienste

Wir bieten einen einfachen Zugang zu einem Mitgliederverzeichnis und stellen dezentralisierte Tools zur Verfügung, die „Vorschläge“ für Freunde machen können. Die Verzeichnisse sind normale Hubzilla-Sites, die sich entschieden haben, die Rolle des Verzeichnisservers zu übernehmen. Dies erfordert mehr Ressourcen als die meisten typischen Sites und ist daher nicht die Standardeinstellung. Die Verzeichnisse werden synchronisiert und gespiegelt, so dass sie alle aktuelle Informationen über das gesamte Netzwerk enthalten (vorbehaltlich normaler Ausbreitungsverzögerungen).

TLS/SSL

Bei Hubzilla-Hubs, die TLS/SSL verwenden, wird die Kommunikation zwischen Client und Server über TLS/SSL verschlüsselt. In Anbetracht der jüngsten Enthüllungen in den Medien über die weit verbreitete, weltweite Überwachung und die Umgehung der Verschlüsselung durch die NSA und das GCHQ kann man davon ausgehen, dass HTTPS-geschützte Kommunikation auf verschiedene Weise kompromittiert werden kann. Private Kommunikation wird daher auf einer höheren Ebene verschlüsselt, bevor sie nach außen gesendet wird.

Channel-Einstellungen

Bei der Erstellung eines Channels wird eine Rolle ausgewählt, die eine Reihe von vorkonfigurierten Sicherheits- und Datenschutzeinstellungen anwendet. Diese werden nach bewährten Verfahren ausgewählt, um den Datenschutz auf dem gewünschten Niveau zu halten.

Wenn Sie eine „benutzerdefinierte“ Datenschutzrolle wählen, können Sie für jeden Kanal fein abgestufte Berechtigungen für verschiedene Aspekte der Kommunikation festlegen. Unter der Überschrift „Sicherheits- und Datenschutzeinstellungen“ gibt es zum Beispiel für jeden Aspekt auf der linken Seite sechs (6) mögliche Anzeige-/Zugriffsoptionen, die durch Anklicken des Dropdown-Menüs ausgewählt werden können. Es gibt auch eine Reihe anderer Datenschutzeinstellungen, die Sie bearbeiten können.

Die Optionen sind:

- Niemand außer Ihnen selbst. - Nur diejenigen, die Sie ausdrücklich zulassen. - Jeder, der in Ihrem Adressbuch steht. - Alle Personen auf dieser Website. - Alle Personen in diesem Netzwerk. - Jeder, der authentifiziert ist. - Jeder, der sich im Internet befindet.

Öffentliche und private Foren

Foren sind in der Regel Kanäle, an denen sich mehrere Autoren beteiligen können. Derzeit gibt es zwei Möglichkeiten, Beiträge in Foren zu veröffentlichen: 1) „Wand-zu-Wand“-Beiträge und 2) über @mention-Tags im Forum. Foren können von jedem erstellt und für jeden Zweck verwendet werden. Das Verzeichnis enthält eine Option zur Suche nach öffentlichen Foren. In privaten Foren können nur Beiträge verfasst werden, die oft nur von Mitgliedern gesehen werden.

Klonen von Accounts

Konten in Hubzilla werden als nomadische Identitäten bezeichnet, da die Identität eines Mitglieds nicht an den Hub gebunden ist, in dem die Identität ursprünglich erstellt wurde. Wenn Sie zum Beispiel ein Facebook- oder Gmail-Konto erstellen, ist es an diese Dienste gebunden. Sie können nicht ohne Facebook.com oder Gmail.com funktionieren.

Angenommen, Sie haben eine Hubzilla-Identität namens tina@Hubzillahub.com erstellt. Sie können sie auf einen anderen Hubzilla-Hub klonen, indem Sie denselben oder einen anderen Namen wählen: liveForever@SomeHubzillaHub.info

Beide Kanäle werden nun synchronisiert, d. h. alle Ihre Kontakte und Einstellungen werden auf Ihrem Klon dupliziert. Es spielt keine Rolle, ob Sie einen Beitrag von Ihrem ursprünglichen Hub oder von dem neuen Hub aus senden. Die Beiträge werden auf beiden Konten gespiegelt.

Dies ist eine ziemlich revolutionäre Funktion, wenn wir uns einige Szenarien vor Augen führen:

- Was passiert, wenn der Hub, in dem sich eine Identität befindet, plötzlich offline geht? Ohne Klonen ist ein Mitglied nicht in der Lage zu kommunizieren, bis der Hub wieder online ist (zweifellos haben viele von Ihnen den „Fail Whale“ von Twitter gesehen und verflucht). Beim Klonen loggen Sie sich einfach in Ihr geklontes Konto ein, und das Leben geht fröhlich weiter.

- Der Administrator Ihres Hubs kann es sich nicht mehr leisten, für seinen kostenlosen und öffentlichen Hubzilla-Hub zu bezahlen. Er kündigt an, dass der Hub in zwei Wochen abgeschaltet wird. Das gibt Ihnen reichlich Zeit, Ihre Identität(en) zu klonen und Ihre Hubzilla-Beziehungen, Freunde und Inhalte zu bewahren.

- Was ist, wenn Ihre Identität der staatlichen Zensur unterliegt? Ihr Hub-Anbieter kann gezwungen sein, Ihr Konto sowie alle Identitäten und zugehörigen Daten zu löschen. Mit Klonen bietet Hubzilla Widerstand gegen Zensur. Wenn Sie möchten, können Sie Hunderte von Klonen haben, die alle einen anderen Namen tragen und auf vielen verschiedenen Hubs im Internet verstreut sind.

Hubzilla bietet interessante neue Möglichkeiten für die Privatsphäre. Weitere Informationen finden Sie auf der Seite <<Bewährte Praktiken für private Kommunikation>>.

Es gelten einige Vorbehalte. Eine vollständige Erklärung des Klonens von Identitäten finden Sie auf der Seite <WIE MAN MEINE IDENTITÄT KLONEN KANN>.

Mehrere Profile

Es kann eine beliebige Anzahl von Profilen mit unterschiedlichen Informationen erstellt werden, die für bestimmte Ihrer Verbindungen/Freunde sichtbar gemacht werden können. Ein „Standard“-Profil kann von jedem eingesehen werden und kann begrenzte Informationen enthalten, während mehr Informationen für ausgewählte Gruppen oder Personen zugänglich sind. Das bedeutet, dass das Profil (und der Inhalt der Website), das Ihre biertrinkenden Freunde sehen, anders sein kann als das, was Ihre Kollegen sehen, und auch völlig anders als das, was für die Allgemeinheit sichtbar ist.

Account-Sicherung

Hubzilla bietet ein einfaches Konto-Backup mit nur einem Klick, bei dem Sie ein vollständiges Backup Ihres Profils herunterladen können. Die Backups können dann zum Klonen oder Wiederherstellen eines Profils verwendet werden.

Konto-Löschung

Konten können sofort gelöscht werden, indem Sie auf einen Link klicken. Das war's. Alle zugehörigen Inhalte werden dann aus dem Netz gelöscht (einschließlich der Beiträge und aller anderen Inhalte, die von dem gelöschten Profil erstellt wurden). Je nach der Anzahl der Verbindungen, die Sie haben, kann der Vorgang des Löschens entfernter Inhalte einige Zeit in Anspruch nehmen, aber er wird so schnell wie möglich durchgeführt.

Löschung von Inhalten

Alle in Hubzilla erstellten Inhalte bleiben unter der Kontrolle des Mitglieds (oder Channels), das sie ursprünglich erstellt hat. Ein Mitglied kann zu jeder Zeit eine Nachricht oder eine Reihe von Nachrichten löschen. Der Löschvorgang stellt sicher, dass der Inhalt gelöscht wird, unabhängig davon, ob er auf dem primären (Heimat-)Hub eines Channels oder auf einem anderen Hub gepostet wurde, bei dem der Channel über Zot (Hubzilla-Kommunikations- und Authentifizierungsprotokoll) remote authentifiziert wurde.

Medien

Ähnlich wie jedes andere moderne Blogging-System, soziale Netzwerk oder ein Micro-Blogging-Dienst unterstützt Hubzilla das Hochladen von Dateien, das Einbetten von Videos und das Verlinken von Webseiten.

Vorschau/Bearbeitung

Beiträge und Kommentare können vor dem Senden in der Vorschau angezeigt und nach dem Senden bearbeitet werden.

Abstimmen/Umfragen

Beiträge können in „Umfrage“-Elemente umgewandelt werden, die es den Lesern ermöglichen, Feedback zu geben, das in Zählern für „Zustimmung“, „Ablehnung“ und „Enthaltung“ zusammengefasst wird. Auf diese Weise können Sie das Interesse für Ideen messen und informelle Umfragen erstellen.

Erweitern von Hubzilla

Hubzilla kann auf verschiedene Weise erweitert werden: durch Anpassung der Website, persönliche Anpassung, Optionseinstellungen, Themen und Addons/Plugins.

API

Eine API ist für die Nutzung durch Dienste von Drittanbietern verfügbar. Ein Plugin bietet auch eine grundlegende Implementierung der Twitter-API (für die es Hunderte von Drittanbieter-Tools gibt). Der Zugriff kann über Login/Passwort oder OAuth erfolgen, und eine Client-Registrierung von OAuth-Anwendungen ist vorgesehen.

Glossar

  • Hub

    Eine Instanz dieser Software, die auf einem Standard-Webserver läuft

  • Grid

    Das globale Netzwerk von Hubs, die mit Hilfe des Zot-Protokolls Informationen untereinander austauschen.

  • Kanal

    Die grundlegende Identität im Grid. Ein Channel kann eine Person, einen Blog oder ein Forum repräsentieren, um nur einige zu nennen. Channels können Verbindungen mit anderen Channels herstellen, um Informationen mit sehr detaillierten Berechtigungen zu teilen.

  • klonen

    Kanäle können Klone haben, die mit separaten und ansonsten nicht verbundenen Konten auf unabhängigen Hubs verbunden sind. Die mit einem Channel geteilte Kommunikation wird zwischen den Channel-Klonen synchronisiert, so dass ein Channel Nachrichten senden und empfangen und auf gemeinsame Inhalte von mehreren Hubs zugreifen kann. Dies bietet Ausfallsicherheit bei Netzwerk- und Hardwareausfällen, was für selbst gehostete oder mit begrenzten Ressourcen ausgestattete Webserver ein großes Problem darstellen kann. Das Klonen ermöglicht es Ihnen, einen Channel vollständig von einem Hub zu einem anderen zu verschieben und dabei Ihre Daten und Verbindungen mitzunehmen. Siehe nomadische Identität.

  • nomadische Identität

    Die Fähigkeit, eine Identität über unabhängige Hubs und Webdomänen hinweg zu authentifizieren und einfach zu migrieren. Die nomadische Identität bietet echte Eigentumsrechte an einer Online-Identität, da die Identitäten der Kanäle, die von einem Konto auf einem Hub kontrolliert werden, nicht an den Hub selbst gebunden sind. Ein Hub ist eher eine Art „Gastgeber“ für Kanäle. Bei Hubzilla haben Sie kein „Konto“ auf einem Server wie bei typischen Websites, sondern Sie besitzen eine Identität, die Sie über das Netz mitnehmen können, indem Sie Klone verwenden.

  • Zot

    Das neuartige JSON-basierte Protokoll zur Implementierung sicherer dezentraler Kommunikation und Dienste. Es unterscheidet sich von vielen anderen Kommunikationsprotokollen, indem es die Kommunikation auf einem dezentralen Identitäts- und Authentifizierungsrahmen aufbaut. Die Authentifizierungskomponente ähnelt dem OpenID-Konzept, ist aber von DNS-basierten Identitäten isoliert. Soweit möglich, erfolgt die Fernauthentifizierung still und unsichtbar. Dies bietet einen Mechanismus für eine verteilte Zugangskontrolle im Internet, der unauffällig ist.

Überblick

Während viele Funktionen und Möglichkeiten von Hubzilla denjenigen vertraut sind, die bereits Social-Networking-Websites und Blogging-Software verwendet haben, gibt es auch einige neue Konzepte und Funktionen, die den meisten Menschen noch nicht begegnet sind. Einige der neuen Ideen hängen mit der dezentralen Natur des Grids zusammen, andere mit dem fortschrittlichen Berechtigungssystem, das zum Schutz Ihrer Daten notwendig ist. Dieser Leitfaden soll Ihnen helfen zu verstehen, wie Sie Ihre nomadische Identität erstellen, konfigurieren und nutzen können.

Anmeldung / Registrierung

Nicht alle Hubzilla-Sites erlauben eine offene Registrierung. Wenn die Registrierung erlaubt ist, sehen Sie einen Link „Registrieren“ direkt neben der Anmeldeaufforderung auf der Homepage der Site. Wenn Sie diesem Link folgen, gelangen Sie auf die Registrierungsseite der Site. Auf einigen Sites werden Sie möglicherweise zu einer anderen Site weitergeleitet, auf der Hubs aufgeführt sind, bei denen eine Registrierung möglich ist. Da alle Hubzilla-Sites miteinander verbunden sind, spielt es keine Rolle, wo sich Ihr Account befindet.

Ihre E-Mail-Adresse

Bitte geben Sie eine gültige E-Mail-Adresse an. Ihre E-Mail-Adresse wird niemals veröffentlicht. Diese Adresse wird verwendet, um Ihr Konto zu aktivieren, um (optional) E-Mail-Benachrichtigungen für eingehende Nachrichten oder Artikel zu versenden und um verlorene Passwörter wiederherzustellen.

Kennwort

Geben Sie ein Passwort Ihrer Wahl ein und wiederholen Sie es im zweiten Feld, um sicherzustellen, dass es richtig eingegeben wurde. Da Hubzilla eine dezentrale Identität bietet, können Sie sich mit Ihrem Konto bei vielen anderen Websites anmelden.

Nutzungsbedingungen

Klicken Sie auf den Link, um die Nutzungsbedingungen der Website zu lesen. Wenn Sie sie gelesen haben, bestätigen Sie sie durch Anklicken des Kästchens im Anmeldeformular.

Anmelden

Sobald Sie die erforderlichen Angaben gemacht haben, klicken Sie auf die Schaltfläche „Registrieren“. Bei einigen Websites ist möglicherweise die Zustimmung des Administrators erforderlich, bevor die Registrierung bearbeitet werden kann; in diesem Fall werden Sie benachrichtigt. Bitte achten Sie auf Ihre E-Mail (einschließlich Spam-Ordner), um die Genehmigung für Ihre Registrierung zu erhalten.

Kanäle

Kanäle sind einfach Sammlungen von Inhalten, die an einem Ort gespeichert werden. Ein Kanal kann für alles Mögliche stehen. Er kann für Sie stehen, für eine Website, ein Forum, Fotoalben, einfach für alles. Für die meisten Menschen ist ihr erster Kanal „Ich“.

Die wichtigsten Funktionen für einen Kanal, der „mich“ repräsentiert, sind:

  • Sichere und private „spamfreie“ Kommunikation

  • Identität und „Single-Signon“ über das gesamte Netzwerk

  • Datenschutzkontrollen und Berechtigungen, die sich auf das gesamte Netz erstrecken

  • Verzeichnisdienste (wie ein Telefonbuch)

Kurz gesagt, ein Kanal, der Sie repräsentiert, ist „ich im Internet“.

Mit einem Account bei einem Hub können mehrere verschiedene Kanäle mit jeweils individueller Konfiguration angelegt und genutzt werden.

Kanäle erstellen

Nachdem Sie Ihr Konto erstellt haben, wird Ihnen der Bildschirm „Kanal hinzufügen“ angezeigt. Normalerweise wird Ihr erster Kanal einer sein, der Sie repräsentiert - es ist also eine gute Idee, Ihren eigenen Namen (oder ein Pseudonym) als Kanalnamen zu verwenden. Der Kanalname sollte als Titel oder kurze Beschreibung deines Kanals betrachtet werden. Das Feld „Wählen Sie einen kurzen Spitznamen“ ist vergleichbar mit einem „Benutzernamen“. Mit dem, was Sie hier eingeben, erstellen Sie eine Kanaladresse (im Fediverse auch als "Handle" bezeichnet), mit der sich andere Personen mit Ihnen verbinden können und mit der Sie sich auf anderen Websites anmelden können. Diese Adresse sieht aus wie eine E-Mail-Adresse und hat die Form <nickname>@<ihr_hub>.

Hinweis: Bei anderen Diensten im Fediverse wird dem Handle ein "@" vorangestellt. Bei Hubzilla muss dieses Zeichen weggelassen werden, wenn man sich z.B. mit einem anderen Nutzer verbinden oder nach einem Handle suchen möchte.

Sie können weitere Kanäle über den Link „Kanalmanager“ erstellen.

Sobald Sie dies getan haben, ist Ihr Kanal einsatzbereit. Unter <ihr_hub>/channel/<Nickname> finden Sie Ihren Kanal „Stream“. Hier werden Ihre jüngsten Aktivitäten in umgekehrter chronologischer Reihenfolge angezeigt.

Kanalrollen

Wenn Sie einen neuen Kanal erstellen, werden Sie aufgefordert, eine Berechtigungsrolle auszuwählen, je nachdem, wie Sie diesen Kanal nutzen möchten. Die beliebtesten Berechtigungsrollen sind die Rollen für soziale Netzwerke. Sie haben viele weitere Auswahlmöglichkeiten, die mit Facebook-Gruppen und -Seiten, kollaborativen Bereichen, Newsfeeds und mehr vergleichbar sind. Diese Rollen konfigurieren automatisch verschiedene Systemvariablen, von den Berechtigungen, die Freunden gewährt werden, bis hin zu den Standardeinstellungen für Privatsphäre und Sichtbarkeit. Es stehen erweiterte Konfigurationen zur Verfügung, mit denen Sie jeden dieser Parameter an Ihre Bedürfnisse anpassen können, aber wir haben die Erfahrung gemacht, dass die meisten Nutzer es vorziehen, die Einstellungen vorzunehmen und sie zu vergessen. Im Folgenden werden einige der verschiedenen Rollen beschrieben, die derzeit verfügbar sind, und wie sie sich auf Ihre Privatsphäre und Ihre Interaktionsmöglichkeiten auswirken.

Es gibt vier Kanal-Rollen:

  • Öffentlich
  • Persönlich
  • Community Forum
  • Benutzerdefiniert

Öffentlich

Der Kanal ist ein sehr freizügiges soziales Netzwerkprofil, das mit anderen föderierten sozialen Netzwerken kompatibel ist. Die Privatsphäre hat eine geringere Priorität als der einfache Zugang und die Verbindung mit anderen. Jeder im Netzwerk kann Ihre öffentlichen Beiträge kommentieren und Ihnen private Nachrichten schicken. Standardmäßig sind Beiträge und veröffentlichte Artikel öffentlich, aber Sie können dies bei der Erstellung des Artikels überschreiben und einschränken. Sie sind im Verzeichnis aufgeführt. Ihre Online-Präsenz und Ihre Verbindungen sind für andere sichtbar. Dieser Modus kann Ihre Anfälligkeit für unerwünschte Mitteilungen und Spam erhöhen. Der "klassische" Social-Media-Account.

Persönlich

Standardmäßig sind Beiträge und veröffentlichte Elemente öffentlich, aber Sie können dies bei der Erstellung des Elements außer Kraft setzen und einschränken. Sie sind im Verzeichnis aufgeführt. Ihre Online-Präsenz und Ihre Verbindungen sind für andere sichtbar. Nur Ihre unmittelbaren Verbindungen können Ihre öffentlichen Beiträge kommentieren und Ihnen private Nachrichten schicken.

Community Forum

Der Kanal ist ein typisches Forum. Standardmäßig sind Beiträge und veröffentlichte Artikel öffentlich. Mitglieder können Beiträge per !mention oder wall-to-wall posten. Das Einstellen von Fotos und anderen veröffentlichten Beiträgen ist gesperrt. Der Kanal ist im Verzeichnis sichtbar. Mitglieder werden automatisch hinzugefügt.

Benutzerdefiniert

Dies ist die genaueste Einstellung für Kanal-Rechte. Alle Rechte können fein-granular festgelegt werden. Vorsicht: Wer hier die falschen Einstellungen wählt, kann seinen Kanal unbrauchbar machen. Zum Glück lassen sich die Rechte auch wieder ändern, so dass man solche Fehlfunktionen beheben kann. Es ist sinnvoll, sich bei jedem einzelnen Recht zu überlegen, welche Auswirkungen es für einen selbst, als Kanalbesitzer, aber auch für andere Nutzer hat.

Für jeden Regelungspunkt sind folgende Einstellungen möglich:

  • Nur ich
  • Nur die, denen Du es explizit erlaubst
  • Angenommene Verbindungen
  • Beliebige Verbindungen
  • Jeder auf dieser Webseite
  • Alle Hubzilla-Mitglieder
  • Jeder authentifizierte
  • Jeder im Internet

Um die benutzerdefinierte Rolle zu bearbeiten, wählt man in den Einstellungen den Punkt "Privacy-Einstellungen". Rechts unten findet man den Button "Benutzerdefinierte Konfiguration der Kanal-Rolle". Klickt man darauf, erscheint ein Warn-Dialog, der auf die Risiken einer fehlerhaften Konfiguration aufmerksam macht. Bestätigt man, dass man die Rechte bearbeiten möchte, öffnet sich der Einstellungs-Dialog für die benutzerdefinierten Rollenrechte.

Profile

Hubzilla hat unbegrenzte Profile. Sie können verschiedene Profile verwenden, um verschiedene „Seiten von sich selbst“ für verschiedene Zielgruppen zu zeigen. Das ist etwas anderes als verschiedene Kanäle zu haben. Verschiedene Kanäle ermöglichen völlig unterschiedliche Informationen. Sie können einen Kanal für sich selbst, einen Kanal für Ihr Sportteam, einen Kanal für Ihre Website oder etwas anderes haben. Ein Profil ermöglicht fein abgestufte „Seiten“ eines jeden Kanals. Verschiedene Profile könnte man mit verschiedenen Visitenkarten einer Person vergleichen. Je nach Verwendungszweck werden auf der jeweiligen Visitenkarte unterschiedliche Informationen gegeben. Ihr öffentliches Standardprofil könnte zum Beispiel lauten: „Hallo, ich bin Fred und ich lache gerne“. Ihren engen Freunden können Sie ein Profil zeigen, auf dem steht „und ich werfe auch gerne Zwerge“.

Sie haben immer ein Profil, das als Ihr „Standard-“ oder „öffentliches“ Profil bezeichnet wird. Dieses Profil ist immer für die Allgemeinheit zugänglich und kann nicht versteckt werden (es kann seltene Ausnahmen auf privat betriebenen oder nicht angeschlossenen Sites geben). Sie können und sollten die Informationen, die Sie in Ihrem öffentlichen Profil zur Verfügung stellen, einschränken.

Wenn Sie möchten, dass Ihre Freunde Sie finden können, ist es hilfreich, wenn Sie die folgenden Informationen in Ihrem öffentlichen Profil angeben...

  • Ihr richtiger Name oder zumindest ein Spitzname, den jeder kennt
  • Ein Foto von Ihnen
  • Ihr Standort auf der Erde, zumindest auf Länderebene.

Wenn Sie außerdem Leute treffen möchten, die allgemeine Interessen mit Ihnen teilen, nehmen Sie sich bitte einen Moment Zeit und fügen Sie Ihrem Profil einige „Schlüsselwörter“ hinzu. Zum Beispiel „Musik, Linux, Fotografie“ oder ähnliches. Sie können so viele Stichwörter hinzufügen, wie Sie möchten.

Wählen Sie „Profile bearbeiten“ aus dem Menü Ihrer Hubzilla-Site. Sie können ein bestehendes Profil bearbeiten, das Profilfoto ändern, Dinge zu einem Profil hinzufügen oder ein neues Profil erstellen. Sie können auch einen „Klon“ eines bestehenden Profils erstellen, wenn Sie nur ein paar Dinge ändern möchten, aber nicht alle Informationen erneut eingeben wollen. Klicken Sie dazu auf das Profil, das Sie klonen möchten, und wählen Sie dort „Dieses Profil klonen“.

In der Liste Ihrer Profile können Sie auch die Kontakte auswählen, die ein bestimmtes Profil sehen können. Klicken Sie einfach auf „Sichtbarkeit bearbeiten“ neben dem betreffenden Profil (nur verfügbar für Profile, die nicht Ihr Standardprofil sind) und klicken Sie dann auf bestimmte Verbindungen, um sie zu der Gruppe von Personen, die dieses Profil sehen können, hinzuzufügen oder sie daraus zu entfernen.

Sobald ein Profil ausgewählt wurde, sieht die Person, die Ihr Profil anschaut, das private Profil, das Sie zugewiesen haben. Wenn die Person nicht authentifiziert ist, wird sie Ihr öffentliches Profil sehen.

Es gibt eine Einstellung, die es Ihnen ermöglicht, Ihr Profil in einem Verzeichnis zu veröffentlichen und sicherzustellen, dass es von anderen gefunden werden kann. Sie können diese Einstellung auf der Seite „Einstellungen“ ändern.

Wenn Sie nicht möchten, dass Sie von anderen gefunden werden, ohne ihnen Ihre Kanal-Adresse mitzuteilen, können Sie Ihr Profil unveröffentlicht lassen.

Einstellungen

Hubzilla erlaubt vielfältige Einstellungen zu Verhalten, Optik, Features,Kanälen etc.

Sie erreichen die meisten Einstellungen über das Hauptmenü, wo Sie den Menüpunkt Einstellungen finden.

Einstellungen 01

Einstellungen 02

Es werden verschiedene Einstellungs-Kategorien zur Verfügung gestellt:

  • Konto-Einstellungen
  • Kanal-Einstellungen
  • Privacy-Einstellungen
  • Anzeige-Einstellungen
  • sofern Klone des eigenen Kanals existieren: Klon-Adressen verwalten

Befinden Sie sich in der Stream Ansicht, ist ein neben dem Hauptmenü ein kleines Zahnrad (⚙)zu sehen,über welches Sie die

  • Stream-Einstellungen

erreichen.

Außerdem gibt es noch verborgene Einstellungen

  • Zusätzliche Funktionen

welche Sie jedoch nicht über das Menü oder ein Icon erreichen können.

Konto-Einstellungen

Mit den Konto-Einstellungen können Sie die Daten Ihres Accounts ändern.

Konto-Einstellungen

Kanal-Einstellungen

Rufen Sie die Einstellungen über den Menüeintrag auf, so werden als Standard die Kanal-Einstellungen gezeigt. Die Grundeinstellungen dienen dazu, die Eigenschaften und Funktionen des aktuell ausgewählten (genutzten) Kanals einzustellen. Neben der Kanalrolle können Sie hier auch den Standard für automatisch erstellte Verzeichnisse in der Cloud (diese werden z.B. erzeugt, wenn Sie in einem Beitrag ein Bild als Anhang hochladen) festlegen.

Sie können außerdem den Verfallszeitraum für importierte Inhalte anderer Kanäle festlegen und diesen Import über zwei Filter regeln.

Kanaleinstellungen 01

Die Benachrichtigungs-Einstellungen erlauben es, ganz genau festzulegen, ob man über bestimmte Ereignisse und Vorgänge benachrichtigt wird. Und ob die Benachrichtigung auch per E-Mail erfolgen soll.

Kanaleinstellungen 02

Privacy Einstellungen

In den Privacy-Einstellungen können Sie festlegen, ob Ihre eigenen Beiträge durch Suchmaschinen indiziert werden dürfen, ob Sie Kontaktanfragen automatisch (ohne manuelle Genehmigung) akzeptieren, ob alle Nachrichten in denen Sie erwähnt werden, automatisch akzeptiert werden, ob Kommentare von Nutzern, die nicht zu Ihren Kontakten gehören, zur Moderation (freigeben / verwerfen) gestellt oder gelöscht werden und ob Sie OCAP-Zugriff erlauben.

Privacy-Einstellungen 01

Anzeige-Einstellungen

Mit den Anzeige-Einstellungen kann das Design des Kanals eingestellt werden. Überdies kann in gewissen Grenzen festgelegt werden, welche Inhalte dargestellt werden.

In den Design-Einstellungen kann man aus den installierten Themes auswählen und dein Design-Schema für das Thema festlegen.

Anzeige-Einstellungen 01

Mit den Benutzerdefinierten Design-Einstellungen ist es möglich, das Farbschema den eigenen Vorstellungen anzupassen und Eckenradien, Standardgrößen sowie Standardmaße für Avatare festzulegen. Es werden als Standard zunächst die vereinfachten Einstellungen angezeigt, mit denen es nur möglich ist, den dunklen Modus festzulegen, eine schmale Navigationsleiste zu wählen, sowie die Breite des Inhaltsbereichs und die Schriftgröße.

Anzeige-Einstellungen 02

Wenn Sie den Schalter "Erweiterte Einstellungen anzeigen" auf "Ja" stellen und die Auswahl absenden, werden die erweiterten Einstellungen angezeigt, mit denen man Farben, Avatarmaße und Hintergrundbilder festlegen kann.

Anzeige-Einstellungen 03

Mit den Inhalts-Einstellungen lassen sich verschiedene Parameter auswählen (z.B. die Zeit bis zur Aktualisierung der Ansicht) und die Anzeige der "Links für neue Mitglieder", die bei neu angelegten Kanälen angezeigt werden, auszuschalten.

Anzeige-Einstellungen 04

Klon-Adressen verwalten

Existieren vom aktuellen Kanal Klone auf anderen Hubs, so wird als weiterer Menüeintrag "Klon-Adressen verwalten" angezeigt. Damit können Sie festlegen, auf welchem Hub der der Hauptkanal (primärer Kanal) liegt (das legt auch den Teil des Handles hinter dem "@" fest).

Außerdem kann man Klone an dieser Stelle löschen. Für Kanäle auf fremden Servern empfiehlt es sich allerdings, den Kanal auf dem eigentlichen Hub zu löschen. Das Löschen aus der Klon-Verwaltung sollte nur genutzt werden, wenn der Hub des Klons nicht mehr existiert.

Klon-Einstellungen 01

Stream-Einstellungen

Die Stream-Einstellungen erreicht man nicht über Hauptmenü → Einstellungen, sonder über das kleine Zahnradsymbol (⚙) neben dem Hauptmenü, das dort erscheint, sobald man die Stream-Ansicht aufruft.

Einstellungen 03

Mit den Stream-Einstellungen kann man die Ansicht des Streams und dort zur Verfügung stehende Features (z.B. Stream-Filter, das Speichern von Suchanfragen etc.) auswählen.

Stream-Einstellungen 01

Zusätzliche Funktionen (verborgene Einstellungen)

Die Einstellungen "Zusätzliche-Funktionen" sind in der Gesamtheit weder über das Menü, noch über ein Symbol/Icon erreichbar. Sämtliche einzelnen Funktions-Einstellungen kann man aber auch in der jeweiligen App über das Zahnrad neben dem Hauptmenü (Avatar-Bild) erreichen.

Es handelt sich um Einstellungen zu weiteren Funktionen in allen mögliche Bereichen von Hubzilla. Um die Einstellungen aufzurufen, muss man im Browser an die URL des Hubs /settings/features anhängen, also z.B. https://klacker.org/settings/features.

Features Einstellungen 01

Die Voreinstellungen für sämtliche dieser Optionen werden vom Administrator des Hubs vorgenommen. Diese Voreinstellung kann durch den Nutzer in den "Zusätzlichen Funktionen" überschrieben werden.

Adlerdings hat der Administrator bei jeder Option auch die Möglichkeit, die Voreinstellung gegen Änderung zu sperren. Der Nutzer kann den Schalter für die Option zwar weiterhin umlegen, die Auswahl wird aber nicht gespeichert, sondern die Option wieder auf die Voreinstellung zurückgesetzt.

Features Einstellungen 02

Features Einstellungen 03

Features Einstellungen 04

Features Einstellungen 05

Features Einstellungen 06

Features Einstellungen 07

Features Einstellungen 08

Features Einstellungen 09

Features Einstellungen 10

Features Einstellungen 11

Verbinden mit Kanälen

Verbindungen in Hubzilla können sehr viele verschiedene Bedeutungen haben. Eine Verbindung ist genauer definiert als eine Reihe von Berechtigungen, die Sie einer anderen Person erteilt haben. In herkömmlichen sozialen Netzwerken erhalten alle Verbindungen die gleichen Berechtigungen oder höchstens zwei Stufen (Freunde und „Follower“). In Hubzilla kann eine Reihe von separaten Berechtigungen festgelegt/angepasst werden, abhängig von der Situation und der Beziehung, die Sie mit dem anderen Kanal haben. Sie können jemandem erlauben, Ihre Beiträge zu sehen, aber nicht Ihre Fotos. Sie können ihnen auch die Erlaubnis verweigern, Ihre Beiträge zu kommentieren oder private Nachrichten an Sie zu senden. Aber machen wir es uns einfach: Sie wollen mit jemandem befreundet sein, den Sie aus sozialen Netzwerken kennen. Wie machen Sie das?

Sie können sich das Verzeichnis ansehen. Das Verzeichnis ist auf allen Hubzilla-Websites verfügbar, d. h., wenn Sie von Ihrer eigenen Seite aus suchen, erhalten Sie Ergebnisse aus dem gesamten Netzwerk. Sie können nach Name, Interesse, Standort und Schlüsselwort suchen.

Wenn Sie das „Handle“ von jemandem bereits kennen, können Sie direkt mit ihm in Verbindung treten. Ein Handle sieht genauso aus wie eine E-Mail-Adresse (z. B. bob@example.com), verweist aber auf eine Person im offenen sozialen Netz. Um eine Verbindung herstellen zu können, muss ein kompatibles Netzwerkprotokoll verwendet werden. Standardmäßig unterstützt diese Software das „Zot“-Protokoll, weitere Protokolle können jedoch über Plugins/Addons bereitgestellt werden. Weitere Informationen zur Verbindung mit Kanälen in anderen Netzwerken finden Sie weiter unten.

So verbinden Sie sich mit anderen Hubzilla-Kanälen:

Besuchen Sie das Profil des gewünschten Kanals, indem Sie auf ihr Foto im Verzeichnis, im Stream oder in den Kommentaren klicken, und es öffnet sich ihre Kanal-Homepage im Kanal-Betrachter. Auf der linken Seite des Bildschirms sehen Sie normalerweise einen Link mit der Bezeichnung „Verbinden“. Klicken Sie darauf, und schon sind Sie fertig. Je nach den Einstellungen des Kanals, mit dem Sie eine Verbindung herstellen möchten, müssen Sie möglicherweise warten, bis der Kanal Ihre Verbindung genehmigt hat, aber es sind keine weiteren Aktionen Ihrerseits erforderlich. Sobald Sie die Verbindung initiiert haben, werden Sie zum Verbindungseditor weitergeleitet. Hier können Sie bestimmte Berechtigungen für diesen Kanal zuweisen, wenn Sie Änderungen vornehmen möchten.

Sie können auch eine Verbindung zu einem beliebigen Kanal herstellen, indem Sie die Seite „Verbindungen“ Ihrer Website oder des Verzeichnisses aufrufen und den „Handle“ in das Feld „Neue Verbindung hinzufügen“ eingeben. Verwenden Sie diese Methode, wenn Ihnen jemand sein Handle mitteilt und Sie sich mit ihm verbinden möchten. Der Vorgang ist derselbe wie bei der Verbindung über die Schaltfläche „Verbinden“ - Sie werden dann zum Verbindungseditor weitergeleitet, um die Berechtigungen festzulegen.

So stellen Sie eine Verbindung zu Kanälen in anderen Netzwerken her:

Das Verfahren zum Verbinden mit "Kanälen" in anderen Netzwerken (wie z.B GNU-Social, Mastodon, Misskey, Pleroma und Diaspora) ist ähnlich - geben Sie deren „Handle“ in das Feld „+Add“ auf der Seite „Verbindungen“ ein. Bevor Sie dies jedoch tun, besuchen Sie bitte die App-Verwaltung im Hamburger-Menü und vergewissern Sie sich, dass das entsprechende Protokoll (Diaspora, GNU-Social/OStatus oder ActivityPub) in Ihrem Hub bereitgestellt und für Ihren Kanal aktiviert ist. Diese Netzwerke/Protokolle unterstützen keine Kontomigration und Standortunabhängigkeit. Wenn Sie also den Standort wechseln oder Ihren Kanal anderswo klonen, kann die Kommunikation mit diesen Verbindungen fehlschlagen. Aus diesem Grund sind diese Protokolle nicht standardmäßig aktiviert, sondern nur mit Ihrer Zustimmung. Die Aktivierung dieser Protokolle ist eine wichtige Entscheidung zwischen der Kommunikation mit Freunden in diesen Netzwerken und der Ausfallsicherheit des Kontos, falls Ihr Server ausfällt.

Einige Kommunikationsnetze bieten mehr als ein Protokoll an. So können Sie sich beispielsweise mit jemandem verbinden, der sowohl das „ostatus“- alsauch das „activitypub“-Protokoll für die Kommunikation verwendet. Im Allgemeinen bietet das 'activitypub'-Protokoll eine bessere Erfahrung als das 'ostatus'-Protokoll, aber Hubzilla wählt oft das erste Protokoll, das es entdeckt, und das ist vielleicht nicht das, was Sie wollen. Sie können sich mit jemandem über ein bestimmtes Protokoll verbinden, indem Sie den Protokollnamen in eckigen Klammern vor dessen „Handle“ setzen. Zum Beispiel

[activitypub]https://foo.bar/foobar

[ostatus]foobar@foo.bar

[diaspora]foobar@foo.bar

[zot]foobar@foo.bar

[feed]https://foo.bar/foobar

So verbinden Sie sich mit RSS-Feeds:

Ihr Hub-Administrator kann die Verbindung mit RSS-Feeds erlauben. Das Verfahren für die Verbindung mit einem RSS-Feed ist dasselbe, außer dass Sie die URL des Feeds in das Feld „Neue Verbindung hinzufügen“ eingeben (oder einfügen). Die Möglichkeiten können durch den Administrator Ihres Hubs eingeschränkt sein, weil Verbindungen mit Feeds teilweise für hohe Systemlast sorgen.

Posten

Möchten Sie einen Beitrag verfassen und teilen (veröffentlichen, wobei der Kreis der Empfänger bzw. derer, welche den Beitrag sehen können, eingeschränkt sein kann), so tun Sie dies in der Regel über das Feld "Teilen", das sich über dem Stream befindet. Klicken Sie in dieses Feld, öffnet sich der Beitragseditor.

Zu oberst gibt es das Feld für den Beitragstitel (optional), darunter befindet sich das Feld für die Zusammenfassung (Summary, ebenfalls optional nutzbar), sofern der Administrator Ihres Hubs diese Funktion erlaubt. Die Zusammenfassung kann auch für den Zweck einer Inhaltswarnung verwendet werden. Unter dem Feld für die Zusammenfassung befindet sich (sofern vom Admin aktiviert) ein Feld für Kategorien.

Darunter folgt das Textfeld, in welchem Sie den Beitragsinhalt erstellen können. Sie können, je nach Einstellung des Hubs, einfachen Text, Markdown, bbCode oder HTML für Formatierungen des Textes nutzen.

Am unteren Rand des Beitragseditors befinden sich einige Schaltflächen zur einfacheren Formatierung des Inhalts und für das einfügen von Elementen und das Nutzen zusätzlicher Funktionen: fett, kursiv, unterstrichen, Zitat, Code, Datei anhängen/hochladen, Link einfügen, Bild einfügen (ein unter Dateien bereits existierendes Bild), Standort einfügen, Verfallsdatum für den Beitrag festlegen, Veröffentlichungsdatum festlegen, Text verschlüsseln, Abstimmung (Umfrage) ein/aus, Kommentare deaktivieren. Rechts daneben befindet sich ein weiterer Block mit Schaltflächen. Hier kann man sich eine Vorschau des Beitrags anzeigen lassen, festlegen, ob der Beitrag ggf. noch bei anderen Netzwerken veröffentlicht wird, die Berechtigungs-Einstellungen (wer kann das Posting sehen) vornehmen und mit dem Button "Teilen" schließlich veröffentlichen.

teilen

Man erreicht den Beitrags-Editor auch, wenn man den entsprechenden Menüpunkt im Hamburger-Menü (oben rechts ☰) auswählt oder das entsprechende Icon in der Navigationsleiste (sofern man die App "Beitrag schreiben" angepinnt hat).

Kommentieren

Möchte man einen Beitrag kommentieren, also auf diesen antworten, klickt man in das Feld am unteren Rand des Beitrag ("Kommentar"). Es öffnet sich an dieser Stelle der Kommentar-Editor, welcher dem Beitrags-Editor ähnelt. Es gibt hier aber keine Felder für einen Titel, eine Zusammenfassung und Kategorien. Unter dem Eingabe-Feld für den Inhalt des Kommentars befinden sich wiederum Schaltflächen für bestimmte Formatierungen (nicht alle, die es im Beitrags-Editor gibt, weil nicht alles in einem Kommentar möglich ist) und rechts wieder eine Schaltfläche für eine Vorschau, sowie einen Button "Absenden", um den Kommentar zu veröffentlichen.

kommentieren

Auch im Feld für den Kommentar-Inhalt kann man den Text mit Markdown, bbCode und HTML auszeichnen.

Da es kein Feld für eine Zusammenfassung gibt, ist es nicht möglich, diese für eine Ihaltswarnung bzüglich des Kommentars zu verwenden. Man kann das aber durch bbCode erreichen, indem man die Inhaltswarnung in [summary][/summary]einschießt. Dadurch wird der gesamte nachfolgende Inhalt zunächst verborgen und kann per Klick angezeigt werden.

Das Grid

Als das "Grid" wird das Netzwerk aller Hubzilla-Hubs bezeichnet, die miteinander über das Zot-Protokoll kommunizieren. Das Grid ist quasi eine Untermenge des Fediverse und umfasst alle Hubzilla-Server.

Der Stream

Der Stream ist die Liste der Beiträge, Kommentare und Boosts von Nutzern im Fediverse. Er ist umgekehrt chronologisch sortiert (die neuesten Beiträge erscheinen zuoberst). Welche Beiträge Ihnen hier genau gezeigt werden, hängt weitgehend von Ihren Berechtigungseinstellungen ab.

Der Stream (bei anderen Fediversedienste wird er auch "Timeline" genannt) kann durch verschiedene Filter gefiltert werden: nach Direktnachrichten, Ereignissen, Umfragen, Privacy Gruppen, Foren, Markierten Beiträgen, den eigenen Beiträgen, gespeicherte Ordner, Namen.

Der Stream im Fediverse wird nicht durch Algorithmen, die vermeintlich interessante Inhalte für den Nutzer auswählt, erstellt, sondern wird ausschließlich durch den Nutzer selbst bestimmt. Im Fediverse sind Sie, der Nutzer, der Algorithmus für den Stream.

Mit Postings interagieren

Mit Postings, die man im Stream sieht, kann man interagieren. Das ist einer der Zwecke von Sozialen Netzwerken. Man kann einen solchen Beitrag kommentieren, es sind aber noch weitere Möglichkeiten der Interaktion möglich.

Die Schaltflächen (Buttons) dafür findet man im Beitrag unten rechts.

Schaltflächen

Man kann einen Beitrag "mögen" 🖒 oder "nicht mögen" 🖓 oder man kann mit einem Emoji auf einen Beitrag reagieren:

Emoji-Reaktion

Weitere Funktionen befinden sich im Menü .

Menü

Repeat

Mit dem Repeaten (Wiederholen) von Beiträgen, wird der Beitrag an die eigenen Verbindungen verteilt. Kommentare landen (im Gegensatz zu geteilten Beiträgen) beim Original-Beitrag.

Dieses Verhalten entspricht dem "Boosten", wie man es z.B. von Mastodon oder anderen Fediverse-Diensten kennt.

Teilen

Mit dem Teilen (Weitersagen) von Beiträgen wird ein Beitrag eines anderen Nutzers auf dem eigenen Kanal erneut gepostet. Es wird eine neue Konversation im eigenen Kanal erzeugt. Kommentare dazu landen bei der neuen Konversation und nicht bei der ursprünglichen.

Das Teilen von Beiträgen funktioniert nur aus dem Stream oder dem eigenen Kanal, nicht jedoch aus einem „fremden“ Kanal.

Mit "Link zur Quelle" gelangt man zur eigentlichen Quelle eines Beitrags. Man landet beim Original-Beitrag auf der Instanz des Beitragserstellers.

In Ordner speichern

Möchte man sich Postings für später merken, so kann man das durch Markierung tun. Bei einer großen Zahl solchermaßen gemerkter Postings wird es aber leicht unübersichtlich.

Praktischer ist es, solche Beiträge in verschiedenen "Ordner" zu speichern. Das sind kategorisierte Markierungen.

Wählt man "In Ordner speichern", so öffnet sich ein Dialogfenster zur Auswahl des Ordners.

Ordnername

In dem Textfeld kann man einen Ordnernamen vergeben. Sind schon Ordner vorhanden, sorgt ein zweifacher Kick in das Textfeld dafür, dass eine Auswahlliste der vorhandenen Ordner angezeigt wird, um einen davon auszuwählen.

Ordnerauswahl

Hat man einen Beitrag in einem Ordner abgelegt, erkennt man dies an Ordersymbol (inklusive Ordnernamen) unten links am Beitrag.

Ordnerauswahl

Dieses Symbol dient auch dazu, einen Beitrag wieder aus eienm Ordner zu entfernen, indem man auf das "X" im Symbol klickt.

Ordnerauswahl

In der Stream-Ansicht findet man in der linken Seitenleiste den Eintrag "Gespeicherte Ordner". Klickt man darauf werden sämtliche vorhandenen Ordner angezeigt. Wählt man nun einen Ordner aus, so werden sämtliche Postings, die man in diesem Ordner abgelegt hat in (umgekehrter) chronologischer Reihenfolge im Stream angezeigt.

Dieses Feature ist vergleichbar mit den "Clips" (= kategorisierte Lesezeichen), wie man sie von Misskey und den Forkeys kennt.

Markierungsstatus (Stern) umschalten

Das Umschalten des Markierungssterns darf nicht mit dem "Sternen" (= Favorisieren) anderer Fediversedienste (z.B. Mastodon) verwechselt werden. Während das "Sternen" bei diesen Diensten eine positive Wertung des Beitrags darstellt, die am ehesten einem "Link" entspricht, ist das Markieren mit einem Stern bei Hubzilla mit dem Setzen eines Lesezeichens vergleichbar. Mit dem Umschalten (ein Klick setzt den Stern, ein weiterer entfernt ihn wieder) wird der Beitrag für den Nutzer selbst als eine Art Lesezeichen gesetzt.

Einen "gesternten" Beitrag erkennt man am Sternsymbol unten links.

Stern

In der Stream-Ansicht findet man in der linken Seitenleiste den Eintrag "Markierte Beiträge". Klickt man darauf werden sämtliche markierte Postings in (umgekehrter) chronologischer Reihenfolge im Stream angezeigt.

Quellcode anzeigen

Mit dieser Funktion kann man sich den Quelltext eines Beitrags anzeigen lassen. Der Inhalt wird also nicht in formatierter Form gerendert, sondern umfasst den Text inklusive aller Auszeichnungs-Tags (Markdown, bbCode, HTML).

Die Funktion scheint deshalb eher etwas für fortgeschrittene oder sehr neugierige Nutzer zu sein.

Allerdings enthält sie ein Feature, das für jeden hilfreich sein kann.

Neben der internen Beitrags-Id findet man zwei Hyperlinks: "plink" und "llink".

Quellcode

"plink" bedeutet "Permalink" und entspricht dem Link zur Quelle.

"llink" bedeutet "lokaler Link" und verweist auf den Ort des Postings auf der eigenen Instanz (Hub). Ein Klick darauf führt nicht dazu, dass man seine eigene Instanz verlässt, sondern zeigt den Beitrag in der Einzelansicht an.

Unterhaltung folgen / nicht mehr folgen

Mittels Unterhaltung folgen / Unterhaltung nicht mehr folgen kann man umschalten, ob man einem Thread folgen möchte, also ob man Benachrichtigungen über Kommentare/Antworten, über Likes, Dislikes, Emoji-Reaktionen oder darüber, dass der Beitrag geteilt oder wiederhot wurde, erhalten möchte.

Löschen

Mit dieser Funktion kann man Beiträge aus dem Stream löschen. Ein normaler Nutzer hat diese Möglichkeit nicht beim globalen Stream. In diesem kann nur ein Administrator Beiträge entfernen.

Konversationsmerkmale

Über diesen Dialog ist es möglich, bestimmte Konversationsmerkmale für einen Beitrag festzulegen:

  • Zulassen von Emoji-Reaktionen
  • Zulassen von Dislikes
  • Zulassen des lokalen Markierens (Sternchen)
  • Zulassen von Antworten auf Kommentare

Öffentlicher Beitrags-Stream

Sofern der Administrator eines Hub den öffentlichen Beitrags-Stream aktiviert hat, können Sie als Nutzer die App "Öffentlicher Beitrags-Stream" installieren und aktivieren.

Während im "normalen" Stream alle Beiträge und Aktivitäten von Ihnen selbst und all Ihren Verbindungen erscheinen, ist der öffentliche Beitrags-Stream umfassender.

Es gibt zwei Möglichkeiten:

  1. Hat der Administrator den öffentlichen Beitrags-Stream auf den eigenen Hub beschränkt, so erscheinen dort sämtliche öffentlichen Beiträge und Aktivitäten aus den Streams aller Nutzer, die einen Account auf eben diesem Hub haben.
  2. Hat der Administrator den öffentlichen Beitrags-Stream nicht auf den eigenen Hub beschränkt, so werden alle öffentlichen Beiträge aller Kanäle des eigene Hub, öffentliche Inhalte, die beim eigenen Hub eintreffen (also .B. Kommentare auf Beiträge der Nutzer des Hubs, die von anderen Instanzen stammen), sowie zufällig eingesammelte Inhalte von Kanälen, die dem eigenen Hub bekannt sind (also alle Kontakte aller Kanäle auf dem eigenen Hub).

Der öffentliche Beitrags-Stream ist nicht unmoderiert. Der Administrator eines Hub hat die Möglichkeit, Beiträge aus dem öffentlichen Beitrags-Stream zu löschen ("Admin delete"). Diese Beiträge sind dann tatsächlich aus dem öffentlichen Beitragsstream des eigenen Hub gelöscht. Sie erscheinen auch nicht in der öffentlichen Stream-Ansicht anderer Kanäle des Hub.

Apps

Im frisch installierten Zustand verfügt eine Hubzilla-Instanz über etliche Grundfunktionalitäten. Es gibt jedoch viele Features, die nicht zur Basis-Installation gehören und auch nicht für einen neu erstellten Kanal sofort zur Verfügung stehen.

Die überwiegende Zahl der Funktionen sind als "Applikationen" (kurz "Apps") realisiert.

Die Apps erreichen Sie mit dem "Hamburger-Menü", das mit der Schaltfläche "☰" symbolisiert wird (und sich bei den meisten Hubs ganz rechts in der Navigationsleiste befindet). Häufig benutzte Appskönnen Sie auch an der Navigationsleiste anpinnen, so dass Sie nicht bei jedem Aufruf erst das Hamburger-Menü öffnen müssen.

Wie viele und welche Apps Ihnen zur Verfügung stehen, hängt davon ab, wie der Administrator den Hub konfiguriert hat.

Appverwaltung

Sie können die Apps für Ihren Kanal mit der Appverwaltung verwalten. Diese erreichen Sie ebenfalls im Hamburger-Menü unter dem untersten Menüpunkt "+ Apps"

Nach dem Aufrufen der Appverwaltung werden Ihnen die bereits installierten Apps angezeigt.

In der linken Seitenleiste können Sie nun zwischen "Installierte Apps" und "Verfügbare Apps" umschalten.

Verfügbare Apps

Bei den verfügbaren Apps finden Sie sämtliche auf Ihrem Hub zur Verfügung stehenden Apps. Einige davon sind bereits installiert. Über den Button neben der App kann man Apps installieren oder bereits installierte Apps aktualisieren.

verfügbare Apps

Installierte Apps

Im Tab der installierten Apps finden Sie sämtliche Apps, die für Ihren Kanal installiert sind. Rechts von jeder App befinden sich zwei oder drei Buttons mit Symbolen: ein Sternsymbol, ein Pinnadelsymbol und ggf. ein Zahnradsymbol.

verfügbare Apps

Das Sternsymbol dient dazu, die App im Hamburger-Menü als Menüeintrag zugänglich zu machen.

verfügbare Apps

verfügbare Apps

Mit dem Pinnadelsymbol kann man die App in der Navigationsleiste anpinnen.

verfügbare Apps

Gibt es für eine App einen Dialog für app-spezifische Einstellungen, so erreichen Sie diesen über den Button mit dem Zahnradsymbol.

verfügbare Apps

Apps verwalten

Im Tab der installierten Apps ist genz oben auch ein Button vorhanden, welcher mit "Apps verwalten" beschriftet ist. Mit diesem Button gelangen Sie auf die Seite "Apps verwalten", auf welcher Sie Apps wieder deinstallieren und installierte in gewissen Grenzen auch bearbeiten können.

verfügbare Apps

Dort ist es auch möglich eigene Apps zu erstellen (Nur für fortgeschrittene Nutzer!).

Apps im Menü sortieren

Die Apps, welche Sie dem Hamburger-Menü zugefügt haben, können sie dort ganz einfach per Drag-and-drop sortieren und Ihre bevorzugte Reihenfolge festlegen.

verfügbare Apps

Wichtige Apps

Wenn Sie Ihren Kanal hauptsächlich für social Networking nutzen möchten, gibt es einige Apps, die nicht als Standard installiert oder aktiviert sind, welche teilweise essenziell wichtig sind.

Um am gesamten Fediverse teilzunehmen, müssen Sie die App "ActivityPub-Protokoll" installieren.

Um einfacher lohnende Kontakte zu finden und zu erleben, was im Fediverse gerade passiert, kann man die App "Öffentlicher Beitragsstream" installieren und nutzen.

Ebenfalls sinnvoll und empfehlenswert ist die App "NSFW", mit welcher man eigenen Contentwarning-Filter erstellen und nutzen kann.

Außerdem sollten Sie die App "Superblock" installieren, welche es Ihnen ermöglicht, bestimmte Nutzer komplett zu blockieren.

Als ebenfalls wichtig ist die App "Privacy Groups" zu erachten. Mit dieser ist es möglich, Kontaktgruppen zu erstellen und sowohl nach diesen zu filtern, als auch mit den Kontakten aus den Gruppen geschossene Kommunikation zu betreiben.


Achtung: Die App "Öffentlicher Beitragsstream" steht zur Installation nur zur Verfügung, wenn der Administrator des Hub diesen Stream aktiviert hat.

Verbindungen

Mit der App "Verbindungen" können Sie sich alle Ihre Verbindungen anzeigen lassen.

Verbindungen 01

In der Übersicht kann man für jede Verbindung

  • den Kanalnamen
  • das Datum der Verbindung
  • die Kanaladresse (Handle)
  • das Netzwerk des Kontakts (ActivityPub, Zot, RSS, Diaspora...)
    • man kann sich über einen daneben stehenden Filter die kürzlichen Aktivitäten des Kanals im Stream anzeigen lassen
  • das Profilbild
  • und durch einen farbigen Punkt (Ampelfarben) die vom Kontakt eingeräumten Rechte (lassen Sie den Mauszeiger über dem farbigen Punkt ruhen, werden Ihnen die eingeräumten Rechte angezeigt)

sehen.

Außerdem ist wird ein Label angezeigt, welches den Typ der Verbindung anzeigt oder warnt, dass (bei Klonen) an diesem Ort noch keine Verbindung besteht.

Rechts befindet sich an jedem Kontakteintrag ein Button "Bearbeiten", mit welchem man die Verbindung mittels Verbindungs-Editor bearbeiten kann.

Verbindungs-Editor

Klicken Sie in der App "Verbindungen" auf den Button "Bearbeiten" an einem Kontakt, öffnet sich der Verbindungs-Editor.

Mit dem Editor können Sie einem Kontakt eine bestimmte Kontaktrolle zuweisen. Bei Bedarf können Sie sich über den Button "Contact Roles" die vorhandenen Rollen anzeigen lassen und auch neue Rollen erstellen. Ein weiterer Button (Berechtigungen vergleichen) können Sie die zugewiesenen Berechtigungen mit denen der Standard-Berechtigungsrolle vergleichen.

Verbindungen 02

Mit dem Tab "Privacy Gruppen" können Sie einen Kontakt einer oder mehreren Privacy-Gruppen zuordnen.

Verbindungen 06

Über den Tab "Profile" können Sie festlegen, welches Ihrer Profile (sofern Sie mehrere angelegt haben) dem Kontakt angezeigt wird.

Verbindungen 03

Mit den Inhaltsfiltern ist es Ihnen möglich, Beiträge eines Kontakts mit bestimmten Inhalten herauszufiltern bzw. über Filter festzulegen, dass nur Beiträge mit definierten Inhalten im Stream landen.

Verbindungen 04

Mit den Kontakt-Tools können sie den Kontakt

  • blockieren,
  • ignorieren,
  • archivieren,
  • verstecken

oder

  • löschen.

Verbindungen 05

Kanäle blockieren/ignorieren/archivieren/verstecken

Kanäle in Ihrem Adressbuch können den Status „ blockiert“, „ ignoriert“, „ archiviert“ oder „ versteckt“ haben. Auf Ihrer Verbindungsseite gibt es einen Filter, der die Kanäle mit diesen Status anzeigen.

Statusfilter

Auf den Seiten zum Bearbeiten von Verbindungen können Sie den Status eines Kanals ändern.

Die Bedeutung:

Blockiert: Der Kanal kann Ihre Elemente nicht lesen, unabhängig von den Berechtigungen, und er kann auch nicht in Ihren Kanal schreiben.

Ignoriert: Der Kanal kann Ihre Elemente lesen, wenn er dazu berechtigt ist, aber er kann nicht in Ihren Kanal schreiben.

Versteckt: Der Kanal wird nicht in der Verbindungsliste Ihres Profils angezeigt. Niemand kann sehen, dass Sie mit ihm verbunden sind. Beachte: Er ist trotzdem für deine anderen Verbindungen sichtbar, zum Beispiel in Antworten auf Beiträge.

Archiviert: Wenn ein Kanal 30 Tage lang nicht erreicht werden kann, wird er automatisch als archiviert markiert. Dadurch bleiben alle Daten erhalten, aber der Kanal wird nicht mehr nach neuen Informationen abgefragt und aus der automatischen Vervollständigung entfernt. Wenn Sie später erfahren, dass der Kanal wieder online ist, können Sie ihn manuell aus dem Archiv entfernen.

Superblock

Die App "Superblock" ist eine Moderationsmethode für den eigenen Stream. Während man mit der normalen Funktionalität von Hubzilla mittels Kontakt-Tool ausschließlich Nutzer, mit denen man verbunden ist, blockieren kann, funktioniert Superblock unabhängig davon, ob man mit einem Kontakt verbunden ist, oder nicht.

Bemerkt man im Stream einen Nutzer, mit welchem man nicht verbunden ist (weil dessen Beiträge von einem Kontakt aus dem eigenen Adressbuch geteilt werden), und möchte man - aus welchem Grund auch immer - keinerlei Beiträge von diesem Fediversenutzer im Stream haben, so kann man dies mit der App "Superblock" erreichen.

Dafür klicken Sie man auf das kleine weiße Dreieck im Avatar des zu blockenden Nutzers.

Es öffnet sich ein Pulldown-Menü, welches zu unterst den Menüpunkt "Vollständig blockieren" enthält. Mit einem Klick auf diesen Menüpunkt landet der Nutzer in der Superblock-Liste. Beiträge dieses Nutzers erscheinen künftig nicht mehr im eigenen Stream. Betroffene Beiträge werden sofort im Stream ausgeblendet. Außerdem ist es diesem Nutzer nicht mehr möglich, Ihre Beiträge zu lesen, unabhängig von den Berechtigungen, noch kann er in Ihren Kanal schreiben.

Wählt man im Hamburger-Menü (oben rechts ☰) die App "Superblock", so wird die Liste sämtlicher blockierter Kontakte angezeigt.

Neben jedem Kontakt ist ein "Mülltonnen-Icon" zu sehen. Ein Klick auf dieses Icon entfernt den Nutzer von der Blockliste. Anschließend kann der Nutzer Ihnen wieder folgen, Ihre Beiträge sehen und auch bei Ihnen kommentieren und seine Postings erscheinen (z.B. durch Teilen von einem Kontakt) auch wieder im Stream.

Superblock ist bei neuen Kanälen nicht per Standard installiert und aktiviert.

Berechtigungen

Berechtigungen sind ein Kernelement von Hubzilla. Sie erlauben sehr fein abgestufte Möglichkeiten, Inhalte zugänglich zu machen, zu verbergen oder in der Nutzung zu beschränken. So dienen sie auch dazu, Direktnachrichten möglich zu machen, indem über Berechtigungen festgelegt wird, wer den Beitrag (nichts anderes sind Direktnachrichten) sehen kann, und wer nicht.

Berechtigungen für Inhalte

Wenn Sie Inhalte bei Hubzilla teilen, also Postings veröffentlichen, Bilder oder Texte hochladen, Termine im Kalender eintragen, können Sie ganz exakt festlegen, wer Zugriff auf diese Inhalte hat.

Die Berechtigungs-Einstellungen für Inhalte erreichen Sie über einen Button ("Privacy Tool") mit einem Vorhangschloss-Symbol 🔒bzw.🔓.

Für das Teilen von Beiträgen: Beitragsberechtigung

Für das Erstellen von Ordnern/Verzeichnissen im Cloud-Speicher: Ordnerberechtigung

Für das Hochladen von Dateien: Dateiberechtigung

Für das Teilen von Terminen/Ereignissen: Terminberechtigung

Auch für Webseiten, Wikiseiten und verschiedene andere Inhalte gibt es entsprechende Einstellungsmöglichkeiten für die Berechtigung.

Wenn Sie auf das Symbol klicken, öffnet sich der Berechtigungsdialog, mit welchem Sie die Berechtigung für andere Nutzer festlegen können (hier geht es in der Regel um die Sichtbarkeit der Inhalte).

Berechtigungsdialog

Sie haben die Wahl zwischen

  • Öffentlich - Wie die Bezeichnung schon nahelegt, ist der Inhalt für jeden im Internet sichtbar. Also selbst für Nutzer, die gar keinen Fediverse-Dienst nutzen.

  • Nur ich - Hier kann nur der erstellende Nutzer den Inhalt sehen. Sie "teilen" ihn mit sich selbst.

  • Privacy Gruppen - Der Inhalt ist für alle Nutzer sichtbar, die sich in einer Ihrer Privacy Gruppen befinden.

  • Benutzerdefinierte Auswahl - Hier kann exakt festgelegt werden, wer den Inhalt sehen kann. Es sind auch Kobinationen von Privacy Gruppen und einzelnen Kontakten möglich, indem man bei dem jeweiligen Eintrag "Erlauben" oder "Verweigern" anwählt.

    Benutzerdefiniert


Wichtiger Hinweis:

Die einmal festgelegten Berechtigungen für Postings können nachträglich nicht mehr geändert werden! Ein Posting wird sofort an eine nicht wirklich bestimmbare Zahl von anderen Servern verteilt, so dass Berechtigungen nachträglich nicht erteilt oder entzogen werden können.Die Berechtigungen für andere Inhalte, wie Dateien, Bilder etc. können hingegen nachträglich bearbeitet werden, weil diese Inhalte nur auf der eigenen Instanz (Hub) gespeichert werden und beim Teilen lediglich die Referenz zum Inhalt weitergegeben wird.

Berechtigungen - Benutzerdefinierte Kanalrollen

Kanal-Rollen legen fest, welche Rechte bei der Interaktion mit einem Kanal gegeben sind. Sie sind unter "Einstellungen" → "Kanal Einstellungen" erreichbar.

Hier kann die Rolle für einen Kanal festgelegt werden. Kanal-Rollen haben auch Einfluss auf Kontakt-Rollen, weil individuelle Rechte, die von den Kanal-Rollen vorgegeben sind und vererbt werden, dort die eigenen Einstellungen überschreiben.

Für eine wirklich individuelle Anpassung der Rollenberechtigungen Ihres Kanals, müssen Sie als Kanal-Rolle "Benutzerdefiniert" auswählen. Die anderen Rollen ("Öffentlich", "Persönlich", "Community Forum") sind vordefinierte Berechtigungsrollen (siehe: Kanal-Rollen).

Mit den benutzerdefinierten Kanal-Rollen können Sie für folgende Interaktionen festlegen, wer sie wie ausüben kann:

  • Kann meinen Kanal-Stream und meine Beiträge sehen
  • Kann mir die Beiträge aus seinem Kanal schicken
  • Kann mein Standardprofil sehen
  • Kann meine Verbindungen sehen
  • Kann meine Datei- und Bilderordner sehen
  • Kann in meine Datei- und Bilderordner hochladen/ändern
  • Kann die Webseiten meines Kanals sehen
  • Kann meine Wiki-Seiten sehen
  • Kann Webseiten in meinem Kanal erstellen/ändern
  • Kann meine Wiki-Seiten bearbeiten
  • Kann auf meiner Kanal-Seite ("wall") Beiträge veröffentlichen
  • Kann mir direkte Nachrichten schicken
  • Kann Profile und Profilsachen mögen/nicht mögen
  • Kann mit mir chatten
  • Kann meine öffentlichen Beiträge in anderen Kanälen zitieren/spiegeln
  • Kann meinen Kanal administrieren

Für diese Interaktionen stehen dann folgende Berechtigungen zur Wahl:

  • Nur ich
  • Nur die, denen Du es explizit erlaubst
  • Angenommene Verbindungen
  • Beliebige Verbindungen
  • Jeder auf dieser Webseite
  • Alle Hubzilla-Mitglieder
  • Jeder authentifizierte
  • Jeder im Internet

Um die benutzerdefinierte Rolle zu bearbeiten, wählt man in den Einstellungen den Punkt "Privacy-Einstellungen". Rechts unten findet man den Button "Benutzerdefinierte Konfiguration der Channel Role". Klickt man darauf, erscheint ein Warn-Dialog, der auf die Risiken einer fehlerhaften Konfiguration aufmerksam macht. Bestätigt man, dass man die Rechte bearbeiten möchte, öffnet sich der Einstellungs-Dialog für die benutzerdefinierten Rollenrechte.


Wichtiger Hinweis:

Die benutzerdefinierten Rollen sollten mit Bedacht eingestellt werden und bergen die Gefahr, dass sich bei bestimmten Konfigurationen der Kanal nicht mehr wie gewünscht verhält.

Berechtigungen - Kontaktrollen

Kontakt-Rollen dient dazu Rollen (also eine Sammlung von Rechten und Möglichkeiten) für Kontakte zu erstellen. Diese Rollen können dann einem Kontakt oder allen Kontakten einer Privacy Gruppe (nicht der Gruppe selbst) zugewiesen werden. Damit werden die Möglichkeiten von Kontakten eingeschränkt oder erweitert.

Mittels der App "Kontakt-Rollen" kann man Rollen, die den Kanal-Rollen entsprechen, zusammenstellen. Im Kontakt-Editor oder im Privacy Gruppen Editor kann dann diese Berechtigungsrolle einzelnen Kontakten oder allen Kontakten einer Privacy Gruppe zuweisen.

Direktnachrichten

Direktnachrichten sind Nachrichten, die an eine oder mehrere Einzelverbindungen adressiert sind. Sie sind über den Netzwerkstream zugänglich. Ein Filter für Direktnachrichten wurde dem Stream-Filter-Widget für den schnellen Zugriff hinzugefügt.

Möchte man eine Direktnachricht an einen (oder mehrere) andere Nutzer versenden (Direktnachrichten können nur von den Adressaten und vom Versender gelesen werden), so verfasst man einen normalen Beitrag und adressiert diesen per spezieller Erwähnung ausschließlich an den / die Empfänger. Dies geschieht mit der privaten Erwähnung (Privacy-Tag). Ein Privacy-Tag ist ein Name, dem die beiden Zeichen @! vorangestellt sind und der zusätzlich zur Markierung dieser Kanäle auch die Datenschutzberechtigungen des Beitrags so ändert, dass nur diese berücksichtigt werden.

Um auf eine DN auch wieder "privat", also als DN zu antworten, muss man kein Privacy-Tag nutzen. Man antwortet einfach direkt auf die eingegangene DN, wodurch die Antwort an alle ursprünglichen Adressaten verteilt wird.

Alternativ zum Privacy-Tag kann man auch Kanäle oder Privacygruppen aus dem Privacy-Tool (🔒) auswählen. Dies ist der umständlichere Weg, der aber auch funktioniert. Die Nutzung eines Privacy-Tags überschreibt allerdings eine ggf. getroffene Auswahl im Privacy-Tool. Schreibt man also einen Beitrag, der als Direktnachricht verschickt werden soll, kann man den Privacy-Tag weglassen und stattdessen auf das Vorhangschloss-Symbol neben dem Button "Teilen" klicken, so dass man in die Berechtigungs-Einstellungen gelangt.

Erwähnungen

Kanäle (Nutzer) werden gekennzeichnet, indem ihrem Namen (Handle) einfach das @ -Zeichen vorangestellt wird. @Jack

Wenn Sie jemanden erwähnen, wird ein Feld für die automatische Vervollständigung erstellt, aus dem Sie Ihre unmittelbaren Verbindungen auswählen können. Wählen Sie entsprechend aus.

Ist der Kontakt berechtigt, Ihr Posting zu empfangen, erhält er eine Tagbenachrichtigung.

Befindet sich der Adressat nicht in Ihrer Kontaktliste, so müssen sie das Handle hinter dem "@"-Zeichen ausschreiben. Sofern der Empfänger auch Erwähnungen Fremder erlaubt, wird er ebenfalls über die Erwähnung benachrichtigt.

Tags

Tags (auch thematische Tags, Hashtags oder topical tags genannt) Tags werden angezeigt, indem Sie dem Tagnamen das Zeichen "# voranstellen. Dadurch wird im Beitrag ein Link zu einer verallgemeinerten Website-Suche nach dem angegebenen Begriff erstellt. Zum Beispiel, #cars stellt einen Suchlink für alle Beiträge bereit, die „Autos“ auf Ihrer Website erwähnen. Aktuelle Tags sind in der Regel mindestens drei Zeichen lang. Kürzere Suchbegriffe führen wahrscheinlich nicht zu Suchergebnissen, dies hängt jedoch von der Datenbankkonfiguration ab.

Thematische Tags werden normalerweise auch nicht verknüpft, wenn sie rein numerisch sind, z. #1. Wenn Sie einen numerischen Hashtag verwenden möchten, fügen Sie bitte einen beschreibenden Text wie z.B. #2012-Wahlen oder das gesamte Tag in doppelte Anführungszeichen setzen (z. B. #“2012″). Doppelte Anführungszeichen sind auch erforderlich, wenn das Tag Leerzeichen enthält (# „Mein Tag“) und möglicherweise erforderlich, wenn das Tag Satzzeichen enthält (# „EndsWithPeriod.“ Oder # „Exciting !!!“).

Bookmarks (Lesezeichen))

Lesezeichen geben einen Link an, der in Ihrem Lesezeichenordner gespeichert werden kann. Sie verwenden die Zeichenfolge #^ gefolgt von dem Link. Oft werden diese automatisch generiert. Wenn der Administrator des Hub das Addon "bookmarker" installiert hat, wird diese Sequenz beim Online-Ansehen des Beitrags oder Kommentars in ein Lesezeichensymbol konvertiert.

Bookmarks01

Bookmarks02

Wenn Sie auf das Symbol klicken, wird das Lesezeichen gespeichert. Wenn das Add-In für das Lesezeichen nicht installiert ist, enthält das Post-Dropdown-Menü einen Link zum Speichern des Lesezeichens oder der Lesezeichen.

Um Lesezeichen zu verwenden, müssen Sie die App "Lesezeichen" installieren.

Die App führt dann alle von Ihnen gesetzten Lesezeichen auf.

Suche

Um schnell Informationen zu finden, kann die Suche verwendet werden.

Eine Suche ist über das Symbol in der Navigationsleiste möglich.

Suche Nav-Leiste 01

Suche Nav-Leiste 02

Hier wird der gesamte Hub durchsucht. Es kann nach Hashtags, Handles und nach Texten gesucht werden.

In der Kanalansicht ist in der linken Seitenleiste ebenfalls ein Suchfeld vorhanden. Es durchsucht nur den Stream des eigenen Kanals. Suchen, welche in diesem Widget durchgeführt wurden, können auch gespeichert werden, indem man auf das Diskettensymbol neben dem Suchfeld klickt. Die gespeicherte Suche wird dann in einer iste von Suchbegriffen unter dem Suchfeld angezeigt und kann jederzeit durch einen einfachen Klick wiederholt werden.

Such-Widget

Artikel

Der Artikel ist eine Macroblogging-Beitragsform bei Hubzilla und z.B. geeignet für echte Blogbeiträge. Im Gegensatz zu normalen Beiträgen, die im gesamten Netzwerk (inklusive Fediverse) verteilt werden, verbleiben Artikel beim eigenen Hub. Sie sind für Nutzer anderer Instanzen und Nutzer, die keinen Account im Fediverse haben also nur über ihre URL erreichbar. Die URL kann selbstverständlich geteilt werden, so dass der Artikel trotzdem im Fediverse bekannt wird und abgerufen werden kann.

Einen Artikel erstellt man über die App (Hamburger-Menü ☰) "Artikel". Ruft man diese auf, werden sämtliche erstellten Artikel angezeigt und man hat die Möglichkeit, einen neuen Artikel anzulegen ("Artikel hinzufügen").

Artikel 01

Das Erstellen eines Artikels ähnelt dem Erstellen eines normalen Beitrags. Das Eingabe-Formular weist aber ein zusätzliches Feld auf: "Link zur Seite".

Hier kann man eine leicht lesbare Linkbezeichnung eingeben. Lässt man das Feld frei, wird eine Bezeichnung automatisch vergeben (länger und "kryptischer").

Artikel 02

Hat man das optionale Feld Summary ("Zusammenfassung") ausgefüllt, wird bei einem Artikel, genauso wie bei normalen Beiträgen, zunächst nur die Zusammenfassung angezeigt.

Artikel 03

Wenn Sie auf "Artikel ansehen" klicken, wir der Artikel selbst angezeigt.

Artikel 04

Der Direktlink zum Artikel setzt sich so zusammen:

URL-Ihres-Hubs/articles/Kanalname/Link-zurSeite

Artikel Link

Dateien

Hubzilla bietet Cloud-Funktionalität. Das bedeutet, dass man für jeden Kanal ein Verzeichnis besitzt, in dem man weitere Unterverzeichnisse erzeugen und Dateien ablegen kann. Für jedes Verzeichnis, ja sogar für jede einzelne Datei kann man genaue Zugriffsrechte festlegen. Das geht von einer Sichtbarkeit für die Allgemeinheit, eine Sichtbarkeit für Mitglieder bestimmter Gruppen bis hin zur einzelnen Freigabe für einzelne Mitglieder aus den eigenen Verbindungen. Es ist sogar möglich, Dateien mit Leuten zu teilen, die keine Hubzilla-Identität haben. Dazu verwendet man Gastzugangs-Token.

Das Anlegen und Löschen von Verzeichnissen und das Anlegen bzw. Löschen von Dateien ist wirklich einfach.

Seinen Cloudspeicher erreicht man über das „Hamburger-Menü“ (☰) → Dateien. Man kann auch Bilder über den Dateien-Bereich hochladen, was ebenfalls über den Bereich „Fotos“ möglich ist.

Die Dateien können in einer Listenansicht

Dateien - Listenansicht

oder einer Kachelansicht

Dateien - Kachelansicht

dargestellt werden.

Neue Verzeichnisse / Ordner erstellt man mit dem Button "Erstelle". Beim Erstellen kann man auch sofort die Berechtigungen für den neuen Ordner festlegen (🔓).

Mit dem Button "+ Dateien hinzufügen" kann man Dateien in seine Cloud hochladen. Auch hier ist es wieder möglich die Zugriffsberechtigungen direkt festzulegen.

Um Zugriffsrechte (Berechtigungen) für Verzeichnisse oder Dateien nachträglich festzulegen oder zu ändern, klickt man auf das Kontextmenü (︙) der Datei oder des Verzeichnisses. Hier lassen sich außerdem noch verschiedene Dateioperationen durchführen.

Dateioperationen

Fügt man beim Erstellen eines Beitrags oder eines Kommentars eine Datei mit dem Button "📎" an, so wird diese Datei in einem ggf. neu erstellten Verzeichnis (Muster: Jahr-Monat) in der Cloud abgelegt.

Fotos

Die App "Fotos" ist eine spezielle Verwaltung/Ansicht für in die eigene Cloud hochgeladene Bilder. Es werden Vorschaubilder, statt Kacheln oder Dateibezeichnungen angezeigt, was das Auffinden bestimmter Bilder einfacher macht.

Foto-App

Ein Klick auf das Bild führt zur Bildansicht. Hier gibt es zwei Steuerungssymbole, um zum nächsten oder vorherigen Foto zu wechseln.

Foto-App Steuerung

Außerdem gibt es einen Button "Fotowerkzeuge", der es mittels eines Menüs möglich macht, Das Bild als Profilbild oder Banner festzulegen, sowie das Bild zu bearbeiten.

Foto-App Bearbeiten

Ein weiterer Klick auf das Bild führt zur Vollansicht.

Foto-App Volansicht

Cloudspeicher

Ihre Dateien sind im Internet unter der Adresse <URL-Ihres-Hubs>/cloud/<Ihr-Kanalname> für jeden sichtbar, der sie einsehen darf. Wenn der Betrachter über ausreichende Berechtigungen verfügt, kann er auch neue Dateien und Ordner/Verzeichnisse erstellen. Diese Möglichkeit sollte nur für kleinere Dateien und Fotos (bis zu einigen Megabyte) genutzt werden, da sie den internen Speicher beansprucht. Größere Dateien (Videos, Musik usw.) laden Sie bitte mit WebDAV hoch. Diese Dateien können weiterhin über den Web-Zugang abgerufen werden.

Mit WebDAV können Sie Dateien direkt in das Betriebssystem Ihres Computers oder aus diesem heraus kopieren, wobei Ihre Cloud-Dateien wie ein virtuelles Laufwerk erscheinen. Dies sollte zum Hochladen großer Dateien wie Video- und Audiodateien verwendet werden.

Die URL für das Cloud-Verzeichnis lautet <URL-Ihres-Hubs>/dav/.

Sollte, je nach Einbindung des DAV-Dateisystems (abhängig vom verwendeten Betriebssystem und ggf. der Anwendung) die Angabe eine Benutzernamens erforderlich sein, so ist dies der Kanal-Kurzname (also ohne führendes "@" und ohne folgende "@Hub-Adresse"). Ein eventuell erforderliches Passwort entspricht Ihrem Login-Passwort.

Galerie

Bei der App "Galerie" handelt es sich um eine einfache Fotogalerie mit welcher alle Ihre Bilder aus dem Cloudspeicher dargestellt werden.

Die dargestellten Bilder werden passend skaliert, was bei kleineren Bildern zu einer etwas unscharfen Darstellung führen kann. Praktischer ist die Nutzung der App "Fotos".

Galerie

Chatäume

Die App "Chaträume" erlaubt es, Chaträume für Instant-Messaging innerhalb eines Hubs einzurichten und mit anderen Kanälen des Hubs zu chatten.

Ruft man die App aus dem Hamburgen-Menü auf, werden die eigenen Chaträume angezeigt.

Um einen neuen Chatraum anzulegen, kickt man auf den Button "Raum hinzufügen".

Chatraum anlegen

Hier muss man einen Namen für den Taum vergeben und man kann wählen, nach wie viel Minuten die Chatinhalte verfallen. Außerdem ist es möglich, über das Privacy-Tool (🔒) festzulegen, wer berechtigt ist, den Chatraum zu sehen und zu nutzen.

Die URL zum Chatraum wird im Browser angezeigt und ist auch über den Verweis auf den Chatraum in der linken Seitenleiste verfügbar. Nun kann man einem anderen Nutzer des eigenen Hubs die URL mitteilen und einen Chat mit diesem beginnen.

Chat Nutzer 1

Chat Nutzer 2

Privacy Gruppen

Die App "Privacy Gruppen" erlaubt Ihnen das Anlegen von Gruppen, denen Sie Kontakte zuordnen können. Sie dienen einerseits dem Filtern des Streams (so kann man sich nur Beiträge von Nutzern anzeigen lassen, welche sich in einer Privacy Gruppe befinden) und andererseits erlauben sie es, in Bezug auf Berechtigungen, bestimmten Gruppen Rechte an Inhalten einzuräumen.

Die erste Funktion ist einfach zu verstehen. Hat man Kontakte (ein Kontakt kann durchaus auch in mehreren Gruppen vorhanden sein) in einer Gruppe und wählt man in der linken Seitenleiste bei der Stream-Ansicht eine bestimmte Gruppe aus, so werden nur Beiträge von Kontakten angezeigt, die sich in der Gruppe befinden. Diese Funktion fungiert also als Stream-Filter.

Die zweite Funktion ist auch einfach zu begreifen, aber eher ungewohnt für viele Fediverse-Nutzer, da es sie in dieser Form nur bei Hubzilla und verwandten Diensten (Streams, Friendica etc.) gibt. Wie die Bezeichnung "Privacy Gruppen" nahelegt, geht es hier auch um eine beschränkte Kommunikation. Wählt man beim Verfassen eines Beitrags als Berechtigung eine Gruppe aus, so wird das Posting nur an die Kontakte, die in dieser Gruppe enthalten sind, verteilt und nur diese können es sehen. Es ist den Empfängern (Gruppenmitglieder) auch nicht möglich, ein solches Posting öffentlich zu teilen. Damit kann eine geschlossene Gruppenkommunikation reaisiert werden.

Ruft man die App auf, werden in der linken Seitenleiste bereits vorhandene Gruppen angezeigt und in der Hauptansicht das Eingabeformular zum Erstellen einer neuen Gruppe.

Privacy Gruppen 01

Wählt man in der Seitenleiste eine der Gruppen auf, so kann man diese bearbeiten.

Privacy Gruppen 02

Hier kann auch die Mitgliedschaft für Kontakte festgelegt werden. Ein Klick auf einen Eintrag wechselt die Mitgliedschaft zwischen "Nicht in der Gruppe" und "Gruppenmitgliedschaft". So kann man Mitglieder aus einer Gruppe entfernen oder Nutzer als Gruppenmitglieder hinzufügen.

Das Hinzufügen eines Kontakt zu einer Gruppe kann auch in der App "Verbindungen" mit dem Kontakt-Tool erfolgen:

Privacy Gruppen 03

Um eine neue Gruppe hinzuzufügen, klickt man in der Seitenleiste auf den Eintrag "+ Neue Gruppe hinzufügen".

Kalender

Mit der App "Kalender" kann man seine Termine verwalten.

Nach Aufruf der App erscheint eine Kalender-Übersicht (ein Monat).

Kalender 01

Durch Klicken auf einen Tag können Sie ein Ereignis erzeugen. In der Eingabemaske (verkürzte Ansicht, lässt sich durch Klicken auf "mehr" erweitern) kann man nun die wesentlichen Inhalte eingeben.

Kalender 02

Kalender 03

Kalender 04

Für diese Einträge können Sie ebenfalls wieder detaillierte Berechtigungen festlegen, so dass man private Termine und öffentliche / gemeinsame Termine in ein und demselben Kalender erfassen kann.

Kalender 05

CalDAV-Zugang mit Android

Sie können Ihren Kalender auf Android mit Ihrem Hub synchronisieren.

Verwenden Sie "URL" und "Benutzername" zur Anmeldung. Die Basis-URL ist <URL-Ihres-Hubs>/cdav, der Benutzername ist Ihr Kanalname (ohne führendes"@" und ohne Hub-Adresse "@<Ihr-Hub>").

Um Ihren Kalender zu teilen, besuchen Sie <URL-Ihres-Hubs>/cdav/calendar.

Wikis

Die App "Wiki" ermöglicht es, im eigenen Kanal Wikis anzulegen.

Wiki-Seiten werden nicht föderiert und verbleiben auf dem eigenen Hub.

Daie Wiki-App bietet eine einfache, klassische Wiki-Funktionalität. Wiki-Beiträge können als reiner Text, als Markdown-Text oder als BBcode-Text erstellt werden.

Wikis 01

Um ein Wiki anzuschauen (oder zu bearbeiten), wählt man auf dieser Seite das entsprechende Wiki aus der Liste.

Möchte man ein neues Wiki erstellen, klickt man auf den Button "+ Neu anlegen".

Es öffnet sich ein Eingabe-Formular, in welchem man den Namen des Wiki eingibt und den Inhaltstyp (als Standard) festlegt. Man kann über einen Schalter bestimmen, dass nur der gewählte Inhaltstyp (Text, Markdown, BBcode) für alle Wiki-Einträge verwendet werden muss. Außerdem kann man per Schalter die Erzeugung eines Statusbeitrags über die Wikierstellung ein- oder ausschalten.

Wikis 02

Auch für ein Wiki kann man detaillierte Berechtigungen festlegen.

Klickt man auf "Absenden", wird das Wiki erstellt und die Startseite (Home) geöffnet.

Die Standard-Ansicht einer Wiki-Seite ist immer "Ansicht", bei welcher der Text gemäß dem Quelltext gerendert wird. Über Reiter (Tabs) am oberen Rand kann man in die Ansicht "Bearbeiten" wechseln, um in den Editor-Modus zu gelangen.

Haben Sie die Seite bearbeitet und schalten Sie dann wieder auf Ansicht, werden die Änderungen sofort angezeigt.

Wenn Sie die Seite speichern möchten, geben Sie das Eingabefeld unter dem Text eine passende Bemerkung ein und klicken auf "Save". Die Wiki-Seite ist erstellt.

Über den dritten Reite mit der Bezeichnung "Historie" können Sie sich den Änderungsverlauf der Wiki-Seite anschauen und, sofern gewünscht, Änderungen rückgängig machen. Es handelt sich also um eine wiki-typische Form der Versionskontrolle.

Wikis 03

Wenn Sie weitere Wiki-Seiten erstellen, werden diese in der linken Seitenleiste aufgeführt, von wo aus sie auch aufrufbar sind.

Wikis 04

Inhaltswarnung/NSFW

Inhaltswarnungen bzw. das Verbergen von bestimmten Inhalten wird bei Hubzilla mit der App "NSFW" realisiert.

Während Sie bei anderen Diensten im Fediverse darauf angewiesen sind, dass die Verfasser von Postings möglicherweise "sensible" Inhalte hinter einem Contentwarning (einer Inhalts- bzw. Triggerwarnung) verbergen, haben Sie bei Hubzilla diese Funktionalität als Rezipient selbst in der Hand. Mit der App NSFW können Sie Filter erstellen, die dafür sorgen, dass Beiträge, die unter die Filterregeln fallen, eingeklappt angezeigt werden. Erst ein Klick auf den Button zeigt den Inhalt des Postings.

Starten Sie die App, so erscheint die Eingabemaske für die Filter.

NSFW 01

Hier können Sie nun Schlüsselwörter und sogar reguläre Ausdrücke eingeben, auf welche das Posting durchsucht wird. Wird eines der Wörter oder ein Textmuster gefunden, so wird der Inhalt im Stream zugeklappt angezeigt.

Es ist auch möglich, nach Sprachen zu filtern (lang=xx oder lang!=xx).

Findet sich nun ein Ausdruck, welcher zu einem der eingegebenen Filtern passt, in einem Posting, so wird das Posting für Sie hinter einer Inhaltswarnung zunächst verborgen.

NSFW 02

NSFW 03

NSFW 04

Klonen

Hubzilla-Kanäle verfügen über eine sogenannten "nomadische Identität". Das ist eine Spezialität des Zot-Protokolls, auf welchem Hubzilla basiert und mit welchem Hubzilla-Hubs untereinander kommunizieren.

Durch die nomadische Identität ist es möglich, Klone des eigenen Kanals zu erzeugen, was die Zensur- und Ausfallresistenz enorm erhöht.

Wenn Sie Ihren Kanal geklont haben, ist es kein Problem, wenn Ihr "Heimat-Hub" einmal ausfällt oder nicht korrekt funktioniert. Sie können übergangslos mit einem Kanal-Klon, welcher auf einem anderen Hub liegt, weiter am Fediverse teilnehmen.

Sämtliche Kanal-Klone werden automatisch im Hintergrund synchronisiert.

Um einen Klon Ihres Kanals anzulegen, benötigen sie einen Account auf einem weiteren (anderen) Hubzilla-Hub.

Es gibt nun mehrere Möglichkeiten, auf diesem anderen Hub, einen Klon Ihres Kanals anzulegen.

Sie können mit der App "Kanalexport" den Kanal auf Ihrem "Heimat-Hub" exportieren.

Klone 01

Durch einen Klick auf den Button "Kanal exportieren", exportieren Sie Ihre Identität und Ihren sozialen Graph in eine Datei, welche sie herunterladen können.

Da Dateien, Webseiten, Wikis, Kalender und Chaträume immer lokal auf den eigenen Hub (also den jeweiligen Server) beschränkt sind, können sie mit der App "Kanalexport" auch Archive dieser Daten lokal herunterladen.

Loggen Sie sich nun auf dem neuen Hub ein und wählen Sie entweder im Hauptmenü (Ihr Profilbild; links oben) den Menüpunkt "Kanäle" und auf der erscheinenden Kanalauswahl-Seite den Button "+ Neu anlegen" oder rufen Sie direkt die Kanalerstellungs-Seite unter <URL-Ihres-Hubs>/new_channel auf.

Klone 02

Klone 03

Auf dieser Seite geben Sie nun aber keine Informationen für das Erstellen eines neuen Kanals ein, sondern wählen am unteren Ende des Dialogs den Link "importiere einen bestehenden Kanal von einem anderen Server".

Klone 04

Nun öffnet sich der Dialog für den Kanal-Import.

Klone 05

Mit dem Button "Hochzuladende Datei: Durchsuchen..." öffnen Sie einen Dateidialog, mit welchem Sie die zuvor gespeicherte Kanal-Datei auswählen können.

Alternativ zu dieser Methode können Sie Ihren Kanal auch direkt von der Quelle, also dem Ursprungs-Hub klonen. Dafür müssen Sie im Kanal-Import-Dialog das Handle des zu klonenden Kanals, die Mailadresse für den Login beim Ursprungs-Hub, sowie das dazugehörige Passwort angeben. Zusätzlich können sie per Schalter auswählen, ob Dateien und Objekte des Ursprungs-Hubs mit importiert werden sollen (sofern Ihr neuer Hub das zulässt und das Speicherlimit ausreicht).

Im Dialog können Sie außerdem noch festlegen, ob der neue Hub Ihr "primärer Hub sein soll". Das bedeutet, dass der neue Kanal (also der nun anzulegende) Ihr primärer Kanal wird. Das hat Auswirkungen auf das Handle Ihres Kanals, welches damit künftig mit der URL des neuen Hubs endet.

In der Regel, sofern man nicht komplett auf einen anderen Hub umziehen möchte, lässt man den Schalter bei "Nein" und der Primäre Hub bleibt derjenige, der es aktuell ist (das Handle bleibt unverändert).

Sollten Sie eine veränderte Kanalbezeichnung (Kurzname) wünschen, können Sie diese in einem weiteren Eingabefeld eingeben. Lassen Sie das Feld leer, bleibt der Kanal-Kurzname unverändert.

Hinweis: Sollte der Kanal-Kurzname auf dem neuen Hub bereits vergeben sein (oder gesperrt, weil ein gleichlautender Kanal dort bereits existierte, aber wieder gelöscht wurde), wird der Kurzname vom System automatisch modifiziert.

Schließlich klicken Sie auf "Absenden" und verlassen Sie die Seite NICHT, bis der Import abgeschlossen ist. Dies kann, je nach Umfang des Ursprungskanals einige Zeit in Anspruch nehmen.

Über Einstellungen → Klon-Adressen verwalten können Sie jederzeit Ihre Klone verwalten. Sie können festlegen, welches der "primäre Hub" ist und Sie können Klone löschen, wobei empfohlen wird, geklonte Kanäle besser direkt auf dem jeweiligen Hub zu löschen.

Klone 06

Webseiten

Mit der App "Webseiten" ist es Ihnen möglich, statische Webseiten in Ihrem Kanal zu erstellen. Webseiten verbleiben auf Ihren Hub und werden nicht föderiert. Sie können aber den Link zur Webseite teilen und es allen Nutzern im Fediverse ermöglichen, Ihre Webseite zu besuchen.

Wenn Sie die App aufrufen, gelangen Sie zur Webseiten-Übersicht. Die Seiten werden unter <URL-Ihrer-Instanz>/page/<Ihr-Kanalname>/<Seiten-Link-Titel> zugänglich sein.

Webseiten 01

In der linken Seitenleiste befindet sich ein Widget mit den Gestaltungswerkzeugen für "Blöcke", "Menüs", "Layouts" und "Seiten".

Darunter ist ein weiteres Widget vorhanden, mit der Möglichkeit Webseiten zu ex- und importieren.

In der Mitte werden die vorhandenen Webseiten aufgeführt. Sie können diese bearbeiten, teien und löschen. Außerdem ist dort ein Button vorhanden, um eine neue Webseite zu erstellen: "Erstelle".

Wenn Sie auf diesen Button klicken, öffnet sich der Webseiten-Editor.

Webseiten 02

Sie haben nun die Wahl, auf welche Art Sie die Webseite gestalten wollen: mit bbCode, mit HTML, mit Markdown, mit reinem Text oder mit der Comanche-Layout-Sprache.

Sie können außerdem festlegen, welches Layout (sofern Sie eines oder Mehrere mit dem Layout-Gestaltungswerkzeug erstellt haben) für die Darstellung der Webseite verwendet werden soll.

Es folgt das Eingabefeld für den optionalen Seitentitel, sowie (ebenfalls optional) eine Zusammenfassung, sowie (Pflichtfeld) die Seiten-URL.

Darunter befindet sich der Texteditor für den Inhalt der Webseite.

Möchte man lediglich eine ganz einfache Webseite mit Formatierungen und anderen Auszeichnungselementen erstellen, genügt es, diese im Website-Editor mittel reinem Text, HTML, bbCode oder Markdown zu erstellen. Sie erhalten damit eine Webseite ohne besonderes Layout (ohne Seitenleisten, ohne Menüs etc.).

Für anspruchsvollere Webseiten, empfiehlt es sich, dass Sie mit Blöcken, Layouts und Menüs arbeiten.

Blöcke

Blöcke können Teile von Webseiten sein. Der grundlegende HTML-Code eines Blocks sieht wie folgt aus

    <div>
        Block-Inhalt
    </div>

Wenn ein Block den Inhaltstyp text/html hat, kann er auch Menüelemente enthalten. Der Beispielinhalt von

    <p>HTML Block-Inhalt</p> 
    [menu]menuname[/menu]

wird HTML wie dieses erzeugen

    <div>
        <p>HTML Block-Inhalt</p>
        <div>
            <ul>
                <li><a href="#">Link 1</a></li>
                <li><a href="#">Link 2</a></li>
                <li><a href="#">Link 3</a></li>
            </ul>
        </div>
    </div>

Über das Makro $content kann ein Block auch den eigentlichen Inhalt der Webseite enthalten.

Erstellen Sie dazu einen Block nur mit

    $content

als Inhalt.

Damit ein Block auf der Webseite erscheint, muss er im Seitenlayout innerhalb einer Region definiert werden.

    [region=aside]
        [block]blockname[/block]
    [/region]

Das Aussehen des Blocks kann im Seitenlayout manipuliert werden.

Es können eigene Klassen zugewiesen werden

    [region=aside]
        [block=myclass]blockname[/block]
    [/region]

wird folgendes HTML erzeugen

    <div class="myclass">
        Block Content
    </div>

Über die wrap-Variable kann ein Block von seinem umschließenden <div></div>-Tag befreit werden

    [region=aside]
        [block][var=wrap]none[/var]blockname[/block]
    [/region]

wird dieses HTML erzeugt

Blockinhalt

Mit dem Block-Editor können Blöcke ebenso einfach erzeugt werden, wie Webseiten.

Webseiten 03

Menüs

Der Menüeditor dient zum einfachen Erstellen von Navigations-Menüs.

Webseiten 04

Dem Menü muss ein eindeutiger Name gegeben werden (mit diesem kann es später in der Webseite und in Blöcken referenziert werden). Die Vergabe des Titels ist optional. Außerdem kann man wählen, ob das Menü für das Hinzufügen von Bookmarks zur Verfügung steht. Mit diesem Feature ist es möglich, als Bookmarks markierte Links aus dem Stream mit einem Klick zum Menü hinzuzufügen.

Klicken Sie auf "Absenden und fortfahren", wird das Menü erstellt.

Webseiten 05

Nun öffnet sich der Dialog für das Hinzufügen eines Menüeintrags. Es muss eine Bezeichnung für den Menüeintrag eingegeben werden ("Name des Links") und das Ziel des Links. Dies kann eine URL oder der Name eines anderen Menüs sein (welches dann als Untermenü eingebunden wird).

Über die Eingabe einer Zahl bei "Reihenfolge in der Liste" kann man die Sortierung der Menüeinträge beeinflussen.

Handelt es sich bei der URL um einen externen Link zu einer Quelle auf einem anderen Hub, so kann durch setzen des Schalters "Magic-Auth verwenden, falls verfügbar" dafür gesorgt werden, dass man beim Ziel authentifiziert wird und ggf. eingeschränkte Inhalte verfügbar sind.

Außerdem können Sie festlegen, ob Links in einem neuen Fenster/Tab geöffnet werden sollen.

Mit Klick auf "Absenden und fortfahren" kann man weitere Einträge erstellen. "Absenden und fertigstellen" beendet die Eingabe von Menüeinträgen. Menüs können aber jederzeit nachträglich bearbeitet und ergänzt werden.

Layouts

Mit den Layouts kann man den generellen Aufbau von Webseiten festlegen. Die Gestaltung erfolgt mit der Comanche Seitenbeschriebungssprache, einer Variante von bbCode. Man muss einen Namen für das Layout vergeben. Im Textfeld erfolgt dann die Definition des Layouts. Hier können auch die Inhalte der verschiedenen Regionen festgelegt werden.

Webseiten 06

Comanche Seitenbeschreibungssprache

Comanche ist eine bbCode-ähnliche Auszeichnungssprache, mit der aufwendige und komplexe Webseiten erstellt werden können, indem sie aus einer Reihe von Komponenten zusammengesetzt werden, von denen einige vorgefertigt sind und andere spontan definiert werden können. Comanche verwendet eine Seitenbeschreibungssprache, um diese Seiten zu erstellen.

Comanche wählt in erster Linie aus, welche Inhalte in den verschiedenen Bereichen der Seite erscheinen sollen. Die verschiedenen Bereiche haben Namen, und diese Namen können sich je nach gewählter Layoutvorlage ändern.

Seitenvorlagen

Derzeit gibt es fünf Layout-Vorlagen, es sei denn, Ihre Website bietet zusätzliche Layouts.

Standardvorlage

Die Standardvorlage definiert einen "nav"-Bereich am oberen Rand, "aside" als Seitenleiste mit fester Breite, "content" für den Hauptinhaltsbereich und "footer" für einen Seitenfuß.

Vollständig

Die vollständige Vorlage entspricht der Standardvorlage mit der Ausnahme, dass es keinen "aside"-Bereich gibt.

Choklet

Die Choklet-Vorlage bietet eine Reihe von fließenden Layoutstilen, die nach Geschmack festgelegt werden können:

  • (default flavour) - ein zweispaltiges Layout, das der "default"-Vorlage ähnelt, aber flexibler ist
  • bannertwo - ein zweispaltiges Layout mit einem Bannerbereich, kompatibel mit der "default"-Vorlage auf kleinen Displays
  • three - dreispaltiges Layout (ergänzt die Standardvorlage um einen "right_aside"-Bereich)
  • edgestwo - zweispaltiges Layout mit festen Seitenrändern
  • edgesthree - dreispaltiges Layout mit festen Seitenrändern
  • full - dreispaltiges Layout mit festen Seitenrändern und Hinzufügen eines "Header"-Bereichs unter der Navigationsleiste

Redable

Eine Vorlage zum Lesen längerer Texte im Vollbildmodus (also ohne Navigationsleiste). Drei Spalten: aside, content und right_aside.

Für maximale Lesbarkeit ist es ratsam, nur die mittlere Inhaltsspalte zu verwenden.

Zen

Gibt Ihnen die Freiheit, alles selbst zu machen. Nur eine leere Seite mit einem Inhaltsbereich.

Um eine Layout-Vorlage auszuwählen, verwenden Sie den Tag 'template'.

[template]full[/template]

So wählen Sie die Vorlage "choklet" mit der Geschmacksrichtung "three":

[template=three]choklet[/template]

Die Standardvorlage wird verwendet, wenn keine andere Vorlage angegeben wird. Die Vorlage kann beliebige Namen für die Inhaltsbereiche verwenden. Sie werden "region"-Tags verwenden, um zu entscheiden, welche Inhalte in den jeweiligen Regionen platziert werden sollen.

Es wurden drei "Makros" für Ihre Verwendung definiert.

$htmlhead - replaced with the site head content.
$nav - replaced with the site navigation bar content.
$content - replaced with the main page content.

Standardmäßig wird $nav in den Seitenbereich "nav" und $content in den Bereich "content" eingefügt. Sie brauchen diese Makros nur zu verwenden, wenn Sie die Reihenfolge der Elemente ändern oder sie in andere Bereiche verschieben möchten.

Um ein Thema für Ihre Seite auszuwählen, verwenden Sie den Tag "theme".

[theme]suckerberg[/theme]

Dadurch wird das Thema "suckerberg" ausgewählt. Standardmäßig wird das von Ihrem Kanal bevorzugte Thema verwendet.

[theme=passion]suckerberg[/theme]

Dadurch wird das Thema mit dem Namen "suckerberg" ausgewählt und das Schema "passion" (Themenvariante) gewählt. Alternativ ist es auch möglich, eine komprimierte Themennotation zu verwenden.

[theme]suckerberg:passion[/theme]

Die komprimierte Notation ist nicht Teil von Comanche selbst, wird aber von der Hubzilla-Plattform als Themenspezifizierer erkannt.

Navbar

[navbar]tucson[/navbar]

Verwenden Sie die Vorlage "tucson" für die Navigationsleiste und die CSS-Regeln. Standardmäßig wird die Vorlage "default" für die Navigationsleiste verwendet.

Regions

Jede Region hat, wie oben erwähnt, einen Namen. Sie spezifizieren die Region, die Sie interessiert, mit einem "region"-Tag, der den Namen enthält. Alle Inhalte, die Sie in diesem Bereich platzieren möchten, sollten zwischen dem öffnenden Region-Tag und dem schließenden Tag platziert werden.

[region=htmlhead]....content goes here....[/region]
[region=aside]....content goes here....[/region]
[region=nav]....content goes here....[/region]
[region=content]....content goes here....[/region]

CSS und Javascript

Wir haben die Möglichkeit, Javascript- und CSS-Bibliotheken in den htmlhead-Bereich einzubinden. Zurzeit verwenden wir jquery (js), bootstrap (css/js) und foundation (css/js).

Dies überschreibt den htmlhead des ausgewählten Themas.

[region=htmlhead]
    [css]bootstrap[/css]
    [js]jquery[/js]
    [js]bootstrap[/js]
[/region]

Menüs und Blöcke

Mit den Werkzeugen zur Erstellung von Webseiten können Sie neben dem Seiteninhalt auch Menüs und Blöcke erstellen. Diese bieten einen Teil des vorhandenen Inhalts, der in den von Ihnen festgelegten Bereichen und in der von Ihnen festgelegten Reihenfolge platziert werden kann. Jedes dieser Elemente hat einen Namen, den Sie bei der Erstellung des Menüs oder Blocks festlegen.

[menu]mymenu[/menu]

Dadurch wird das Menü "mymenu" an dieser Stelle auf der Seite platziert, die sich innerhalb eines Bereichs befinden muss.

[menu=horizontal]mymenu[/menu]

Dadurch wird das Menü mit dem Namen "mymenu" an dieser Stelle auf der Seite platziert, die sich innerhalb eines Bereichs befinden muss. Außerdem wird dem Menü die Klasse "horizontal" zugewiesen. Die Klasse "horizontal" ist im redbasic-Theme definiert. Sie kann in anderen Themes verfügbar sein, muss es aber nicht.

[menu][var=wrap]none[/var]mymenu[/menu]

Die Variable [var=wrap]none[/var] in einem Block entfernt das umschließende div-Element aus dem Menü.

[block]contributors[/block]

Dadurch wird ein Block mit dem Namen "contributors" in dieser Region platziert.

[block=someclass]contributors[/block]

Dadurch wird ein Block mit dem Namen "contributors" in dieser Region platziert. Zusätzlich wird die Klasse "someclass" auf den Block angewendet. Dies ersetzt die Standard-Blockklassen "bblock widget".

[block][var=wrap]none[/var]contributors[/block]

Die Variable [var=wrap]none[/var] in einem Block entfernt das umschließende div-Element aus dem Block.

Widgets

Widgets sind ausführbare Anwendungen, die vom System bereitgestellt werden und die Sie auf Ihrer Seite platzieren können. Einige Widgets benötigen Argumente, mit denen Sie das Widget an Ihren Zweck anpassen können. System-Widgets sind hier aufgelistet. Widgets können auch von Plugins, Themes oder Ihrem Website-Administrator erstellt werden, um zusätzliche Funktionen bereitzustellen.

Widgets und Argumente werden mit den Tags "widget" und "var" angegeben.

[widget=recent_visitors][var=count]24[/var][/widget]

Damit wird das Widget "recent_visitors" geladen und mit dem Argument "count" auf "24" gesetzt.

Kommentare

Das Tag "comment" wird zur Abgrenzung von Kommentaren verwendet. Diese Kommentare werden auf der gerenderten Seite nicht angezeigt.

[comment]This is a comment[/comment]

Bedingte Ausführung

Sie können ein 'if'-Konstrukt verwenden, um Entscheidungen zu treffen. Diese basieren derzeit auf der Systemkonfigurationsvariable oder dem aktuellen Beobachter.

[if $config.system.foo]
    ... the configuration variable system.foo evaluates to 'true'.
[else]
    ... the configuration variable system.foo evaluates to 'false'.
[/if]

[if $observer]
    ... this content will only be show to authenticated viewers
[/if]

Die 'else'-Klausel ist optional.

Neben der booleschen Auswertung werden mehrere Tests unterstützt.

[if $config.system.foo == bar]
    ... the configuration variable system.foo is equal to the string 'bar'
[/if]
[if $config.system.foo != bar]
    ... the configuration variable system.foo is not equal to the string 'bar'
[/if]
[if $config.system.foo {} bar ]
    ... the configuration variable system.foo is a simple array containing a value 'bar'
[/if]
[if $config.system.foo {*} bar]
    ... the configuration variable system.foo is a simple array containing a key named 'bar'
[/if]

Komplexes Beispiel

[comment]use an existing page template which provides a banner region plus 3 columns beneath it[/comment]

[template]3-column-with-header[/template]

[comment]Use the "darknight" theme[/comment]

[theme]darkknight[/theme]

[comment]Use the existing site navigation menu[/comment]

[region=nav]$nav[/region]

[region=side]

    [comment]Use my chosen menu and a couple of widgets[/comment]

    [menu]myfavouritemenu[/menu]

    [widget=recent_visitors]
        [var=count]24[/var]
        [var=names_only]1[/var]
    [/widget]

    [widget=tagcloud][/widget]
    [block]donate[/block]

[/region]



[region=middle]

    [comment]Show the normal page content[/comment]

    $content

[/region]



[region=right]

   [comment]Show my condensed channel "wall" feed and allow interaction if the observer is allowed to interact[/comment]

    [widget]channel[/widget]

[/region]

Kanal löschen

Möchten Sie Ihren Kanal löschen, nutzen Sie die Einstellungen im Hauptmenü (oben links; Pofilbild): Einstellungen → Kanal-Einstellungen.

Dort befindet sich ganz oben ein Button mit der Beschriftung "Kanal löschen". Ein Klick darauf und Ihr Kanal wird, nach Eingabe Ihres Account-Passworts (zur Absicherung) inklusive aller Inhalte gelöscht.

Kanal löschen

Beachte: Es ist nun nicht mehr möglich, einen neuen Kanal mit der selben Kanalbezeichnung auf diesem Hub anzulegen. Der Grund dafür ist, dass der Kanal-Kurzname in der Datenbank gesperrt ist, um eine Identitätsübernahme durch dritte zu erhindern. Sollte es aber dennoch erforderlich sein, den alten Kanal (durch Klonen) auf dem Hub wiederherzustellen, müssen Sie den Administrator darum bitte, den gesperrten Kurznamen aus der Hubzilla-Datenbank zu löschen.

Account löschen

Möchten Sie Ihren Account, also den gesamten Zugang zum Hub, löschen, nutzen Sie die Einstellungen im Hauptmenü (oben links; Pofilbild): Einstellungen → Konto-Einstellungen.

Dort befindet sich ganz oben ein Button mit der Beschriftung "Konto entfernen". Ein Klick darauf und Ihr Account (Konto) wird, nach Eingabe Ihres Account-Passworts (zur Absicherung) inklusive aller Inhalte gelöscht.

Account löschen

Tutorials

Hubzilla optisch anpassen

Mit Hubzilla Schritt für Schritt ins Fediverse

Mit Hubzilla Schritt für Schritt ins Fediverse

Der Einstieg

Wie bei jedem anderen Fediverse-Dienst steht am Anfang die Wahl des Servers (Hub). Das ist im Fediverse so und essenzieller Teil der dortigen Freiheit.

Um Hubs zu finden können Sie die üblichen Wege beschreiben: dieNutzung entsprechende Datenbanken oder Listen.

Z.B.

FediDB

FediDB

Fediverse Observer

Fedieverse Observer

Liste öffentlicher Hubs bei einem Hubzilla-Server

Pubsites

Haben Sie sich für einen Hub entschieden, dann rufen Sie die URL auf. Damit gelangen Sie auf eine Standard-Seite. Diese kann von Hub zu Hub etwas variieren, aber in der Regel finden Sie am oberen Rand des Bildschirms zwei Menüeinträge: „Anmelden“ und „Registrieren“.

Registrierung 1

Registrierung 2

Ein Klick auf den Link führt zu einem Registrierungsformular. Hier gibt es mehrere mögliche Szenarien. Manche Hubs sind so eingestellt, dass man schon bei der Registrierung gleich einen Kanal mit erstellt (man kann – noch so eine Besonderheit von Hubzilla – mit einem Account mehrere Kanäle betreiben). Bei anderen Hubs legt man mit dem Formular zunächst nur einen Account an. Wenn man diesen erstellt hat und sich erstmalig einloggt, dann wird man auf das Formular zur Kanalerstellung geleitet.

Registrierung 3

Registrierung 4

Um einen Account anzulegen, brauchen Sie eine (funktionierende) E-Mail-Adresse und Sie müssen sich ein Passwort ausdenken. Außerdem müssen Sie noch Ihr Alter bestätigen und können dann die eingegebenen Informationen abschicken.

Nun landen Sie (meist, es soll auch Hubs geben, die diesen Schritt aussparen… halte ich für riskant) bei einer Eingabemaske, bei welcher man einen Verifizierungscode eingeben muss. Den bekommen Sie nach dem Absenden des Registrierungs-Formulars per E-Mail zugeschickt.

Registrierung 5

Mussten Sie bei der Registrierung noch keinen Kanal anlegen, so werden Sie zu diesem Zeitpunkt zur Seite „Erstelle einen Kanal“ weitergeleitet. Hier müssen Sie sich nun einen Namen für die eigene Identität ausdenken. Und zusätzlich eine Kurzbezeichnung („Spitzname“) für den Kanal (ein Vorschlag wird automatisch aus dem Kanalnamen erzeugt). Diese Kurzbezeichnung wird der wesentliche Bestandteil des Fediverse-Handles (also der eigenen „Fediverse-Adresse“).

Registrierung 6

Hinweis zum Handle bei Hubzilla:
Hubzilla macht beim Handle im Vergleich zu anderen Fediverse-Diensten eine Ausnahme. Während beinahe überall vor das Handle ein „@“ gesetzt wird, entfällt dies bei Hubzilla. Das verinnerlicht man aber schnell. Sucht man mit Hubzilla z.B. einen Nutzer, der ein Mastodon-Konto hat, über dessen Handle, dann lässt man das führende „@“ einfach weg. Will man hingegen von einem anderen Fediverse-Dienst aus einem Hubzilla-Nutzer folgen oder diesen suchen, stellt man dem Hubzilla-Handle einfach ein „@“ voran.

Nach dem Anlegen das Kanals sind Sie dann auch endlich „drin“. Als Standard landet man bei Hubzilla im „Headquarter“ („HQ“), einer Übersichtsseite über den eigenen Kanal.

HQ

Und es ist, wie immer beim Einstieg im Fediverse, ziemlich leer dort. In der linken Seitenleiste finden Sie Tabs mit verschiedenen Informationen:

  • Öffentliche (oder eingeschränkte) Nachrichten: Das ist eine kompakte Ansicht der persönlichen Timeline (bei Hubzilla „Stream“ genannt)
  • Direktnachrichten: Postings, die nur unter ausgewählten Teilnehmern ausgetauscht werden.
  • Favorisierte Postings: Man kann ein Posting mit einem „Sternchen“ versehen, um sie zu markieren. Solchermaßen markierte Beiträge landen hier.
  • Benachrichtigungen

In der Mitte wird der persönliche Stream (Timeline) angezeigt. In der rechten Seitenleiste werden wichtige Informationen (Mitteilung über neue Kontakte, neue Beiträge etc.) angezeigt. Bei einem neu erzeugten Kanal erscheint hier auch eine Auflistung für die ersten Schritte bei Hubzilla und Links, die zu den entsprechenden Funktionen führen.

Benötigt man diese Einsteiger-Hilfe nicht mehr, lässt sie sich unter Einstellungen → Anzeige-Einstellungen → Inhaltseinstellungen per Schalter abschalten.

erste Schritte 1

erste Schritte 2

erste Schritte 3

erste Schritte 4

Zunächst sollten Sie Ihr Profil sinnvoll befüllen… wie bei jedem Fediverse-Dienst. Keine schwarze Magie!

Am oberen Bildschirmrand befindet sich die Navigationsleiste. Links ist das Menü zur Kanalauswahl, für das eigene Profil und für die Einstellungen zu sehen. Rechts befinden sich Icons für einige Funktionen und das sogenannte „Hamburger-Menü“ (☰), über welches man zu den installierten Apps gelangt. Als Standard werden dort die wichtigsten Anwendungen bereits zur Verfügung gestellt:

  • Dateien: Zugang zur eigenen Cloud
  • Fotos: Zugang zum eigenen Fotoalbum
  • Hilfe
  • Kalender
  • Kanal: Die Seite des eigenen Kanals mit den Kanalinformationen. Hier werden im Stream nur die eigenen Beiträge angezeigt.
  • Stream: Es wird zur föderierten Streamansicht gewechselt.
  • Verbindungen: Hier werden die vorhandenen Verbindungen aufgeführt („Follower“ und „Gefolgte“). Außerdem kann man im Verbindungsverzeichnis neue Verbindungen hinzufügen.
  • Verzeichnis: Das Benutzerverzeichnis wird angezeigt. Beachte: Man kann das globale Verzeichnis anschauen oder auch nur ein Verzeichnis mit den Nutzern der eigenen Instanz. Auch hier kann man neue Verbindungen herstellen.

Ich empfehle dringend, noch einige weitere Apps zu installieren und zu aktivieren: ActivityPub, Superblock und Öffentlicher Beitragsstream.

Die App ActivityPub ist essenziell, wenn man am Fediverse teilnehmen möchte. Diese App ist ein MUSS und erfordert lediglich die Installation und Aktivierung. Weitere Einstellungen sind nicht erforderlich.

Superblock ist ebenfalls sehr wichtig, denn damit ist es möglich, Postings von (auch nicht gefolgten) Nutzern aus dem Stream auszuschließen.

Bei vielen (leider, aber auch verständlicher Weise, nicht bei allen) Hubs steht außerdem die App „Öffentlicher Beitragsstream“ zur Verfügung. Diese stellt die öffentliche Zeitleiste aller Fediverse-Instanzen, die mit dem eigenen Hub föderieren, zur Verfügung. Ein guter Ort, sich zu orientieren und neue Kontakte zu finden.

Apps zu installieren und zu aktivieren ist kein Problem. Man wählt im Hamburger-Menü den letzten Eintrag „+ Apps“ um zur App-Verwaltung zu gelangen.

Apps installieren 1

Hier können Sie sich die installierten Apps (also die voreingestellten Apps) und die generell verfügbaren Apps (alle, auch die nicht installierten) anzeigen lassen.

Apps installieren 2

ActivityPub, Superblock und Öffentlicher Beitragsstream befinden sich noch ausschließlich unter „Verfügbare Apps“. Ein Klick auf „Installieren“ installiert diese und sie stehen dann auch bei „Installierte Apps“ zur Verfügung.

Apps installieren 3

Apps installieren 4

Die neu installierten Apps müssen noch „aktiviert“, also auch durch das Menü nutzbar gemacht werden. Man findet in der Box der App ein „Sternchen-Symbol“. Klickt man darauf, färbt sich der Stern gelb und die App ist aktiv und erscheint nun auch im Hamburger-Menü.

Apps installieren 5

Apps installieren 6

Es gibt auch noch ein Pinnadel-Symbol. Klicken Sie dies an, so erscheint die App dauerhaft auch in der Navigationsleiste oben rechts.Apps installieren 7

Apps installieren 8

Es ist außerdem empfehlenswert, bei dieser Gelegenheit die Apps“Kanal“ und „Stream“ an die Navigationsleiste anzupinnen, weil diese oft benötigt werden.

Wichtig noch, wie man Kontakte hinzufügt…

Haben Sie z.B. im öffentlichen Stream einen interessanten Nutzer gefunden, können Sie einfach auf das Profilbild des Nutzers klicken und im aufklappenden Menü „Verbinden“ auswählen. Sie können aber auch auf das Handle des Nutzer klicken worauf Sie auf eine Seite mit einem Button „Verbinden“ geleitet werden..

Kennt man das Handle eines Fediverse-Nutzers, dann kann man auch einfach auf die App „Verbindungen“ klicken. Es öffnet sich das Verbindungs-Verzeichnis. Ganz oben befindet sich ein Button „+ Add“. Klicken Sie auf diesen, öffnet sich ein Eingabefeld, in welches Sie das Handle eingeben können (dran denken: ohne führendes „@“). Ein Klick auf das daneben befindliche „+“ und der Kontakt wird hinzugefügt.

Verbindungen 01

Verbindungen 02

Verbindungen 03

Verbindungen 04

Schließlich können Sie auch das Verzeichnis aufrufen (am besten „nur dieser Hub“ in der linken Seitenleiste deaktivieren, um das globale Verzeichnis zu nutzen). Hier können Sie einfach durchscrollen oder auch gezielt nach Namen oder Interessen suchen, oder auch nach Tags (Schnellzugriff auch über eine Schlagwörterwolke in der linken Seitenleiste). Das Verbinden erfolgt hier durch Klick auf den Button „Verbinden“.

Verbindungen 05

Verbindungen 06

Haben Sie Kontakte, die Apps installiert und Ihr Profil vervollständigt, können Sie Hubzilla nun ganz einfach wie jeden anderen Fediversedienst nutzen.

Gibt es eine App?

Jein…

Grundsätzlich benötigt man keine. Man kann auf dem mobilen Endgerät einfach im Webbrowser den Hub aufrufen. Das responsive Design erlaubt eine ordentliche Bedienung.

Allerdings gibt es für Android eine ältere App, die aber auch heute noch sehr gut funktioniert. Man findet sie z.B. bei F-Droid unter dem Namen Nomad. Ich verwende sie noch immer, wenn ich mal (was selten ist) auf dem Smartphone mit Hubzilla arbeiten möchte.

Nomad App

Hubzilla optisch anpassen

Nach dem Anlegen eines Kanals, ist dessen Optik nicht besonders ansprechend.

Opt 01

Apps anpinnen

Als erstes pinnen Sie die wichtigsten Apps an die obere Navigationsleiste: „Beitrag schreiben“, „Kanal“, „Stream“, „Verbindungen“ und „Öffentlicher Beitrags-Stream“.

Dazu wählen Sie im Hamburger-Menü (☰ oben rechts) den untersten Menüeintrag „+ Apps“. Damit gelangen Sie in die App-Einstellung und sofort bei den bereits installierten Apps. Auf dieser Seite klicken Sie nun bei jeder gewünschten App auf das kleine Pin-Nadel-Symbol und sehen dann auch sofort, wie das jeweilige Icon oben in der Navigationsleiste erscheint.

Opt 02

Opt 03

Opt 04

Anzeige-Einstellungen

Jetzt geht es an die Einstellungen für die Anzeige. Dafür klicken Sie im Hauptmenü (oben links, wo das eigene Avatarbild zu sehen ist) auf den Eintrag „Einstellungen“. In der linken Seitenleiste sind nun die verschiedenen Einstellungskategorien zu sehen. Hier wählen Sie „Anzeige-Einstellungen“.

Opt 05

Opt 05a

Die Seite für die Anzeige-Einstellungen wird angezeigt. Da Sie das Design anpassen wollen, ist der Tab „Benutzerdefinierte Design-Einstellungen“ die richtige Wahl.

Opt 06

Opt 07

Die Eingabemaske weist zunächst aber nur wenige Möglichkeiten auf (fünf Einstellungen). Die letzte Einstellung ist diejenige, bei der Sie den Schalter als erstes einschalten müssen: „Erweiterte Einstellungen anzeigen“. Auf „Absenden“ klicken und erneut den Tab „Benutzerdefinierte Design-Einstellungen“ aufrufen. Nun sind viel mehr Einstellungen zu sehen.

Opt 08

Opt 09

Als Beispiel werden hier einmal die Farben abgeändert, die Größe der Avatare im Stream angepasst und ein Hintergrundbild festgelegt.

Unter den Haupteinstellungen finden Sie die Einstellungen für die Farben des Farbschemas. Unter jedem Eingabefeld ist als kleiner Kreis die Standard-Farbe angezeigt. Bei der Wahl einer eigenen Farbe, ist es sinnvoll sich zumindest bezüglich der Helligkeit ungefähr an der Standard-Farbe zu orientieren. Klickt man in eines der Eingabefelder, öffnet sich ein Farbwahl-Dialog, über welchen man nun die Farbe festlegen kann. Als Beispiel hier ein grünes Farbschema bei welchem die grundlegenden Farben geändert werden: „Primary theme color“, also die Grundfarbe des Themes, „Success theme color“, das ist die Farbe z.B. für anklickbare Links, „Info theme color“, die z.B. als Farbe für markierte Menüeinträge als Hintergrundfarbe angezeigt wird, sowie die „Hintergrundfarbe der Navigationsleiste“. Alle anderen Farben werden im Beispiel nicht verändert. Die Farbwahl ist natürlich jedem selbst überlassen.

Opt 10

Opt 11

Opt 12

Opt 13

Schließlich die „Größe der Avatare von Themenstartern“ auf 48 Pixel festlegen.

Opt 14

Fehlt noch das Hintergrundbild. Dieses sollte relativ groß sein, ungefähr der Größe des hauptsächlich genutzten Bildschirms entsprechend. Außerdem ist es empfehlenswert, ein eher helles bzw. blasses Bild zu verwenden (ggf. mit dem Grafikprogramm aufhellen und den Kontrast verringern), damit es die eigentlichen Inhalte nicht „erschlägt“.

Das Hintergrundbild muss irgendwo über eine URL erreichbar sein. Da bietet es sich an, das Bild in die Dateien (Cloud) des eigenen Kanals hochzuladen und von dort aus zu verwenden.

Dafür öffnet man im Hamburger-Menü die App „Dateien“. Hier kann man sich, wenn man mag, einen extra Ordner anlegen (bitte beachten, dass der Ordner und auch das dort hochgeladene Bild öffentlich zugreifbar sind… dafür die Zugriffsrechte mit dem kleinen Vorhangschloss, dem Privacy Tool, evtl. anpassen) und anschließend das Bild hochladen.

Opt 15

Opt 16

Opt 17

Opt 18

Opt 19

Opt 20

Opt 21

Opt 22

Opt 23

Opt 24

Nach dem Hochladen wird das Bild in der Dateiliste angezeigt. Ein Rechtsklick auf den Eintrag und die Auswahl, die URL zu kopieren befördert die URL für das Bild in die Zwischenablage.

Opt 25

Zurück bei „Benutzerdefinierte Design-Einstellungen“ kann man nun die URL in das Eingabefeld „Hintergrundbild“ einfügen.

Opt 26

Opt 27

Ein letzter Klick und Hubzilla erstrahlt in der neuen Optik.

Opt 28

Opt 29

PDL-Editor

Grundlagen

Verschiedene Apps und Grundfunktionen von Hubzilla basieren auf eigens dafür gestalteten Webseiten. Der Nutzer kommt mit den dahinter liegenden Mechanismen nicht in Berührung, er nutzt diese Seiten einfach.

Ruft man beispielsweise die App „Kanal“ auf, so wird einem der eigene Kanal angezeigt.

PDL 01

Ganz oben kann man das Banner des Kanals sehen. In dieses Banner sind der Kanalname und die Kanaladresse (Handle) eingebettet.

Darunter befindet sich die Navigationsleiste mit dem Hauptmenü, dem Titel des Hub, ggf. angepinnten Apps und dem Hamburger-Menü.

Interessant wird es dann aber im Bereich unter der Navigationsleiste. Hier sind bei den verschiedenen Apps die größten Unterschiede festzustellen. Bei der Kanal-Seite findet sich in der linken Seitenleiste (im unveränderten Standard-Zustand) zuoberst eine Karte mit den Kanalinformationen (Banner, Profilbild, Kurzbeschreibung, Profilinfos).

In der Mitte, im Inhaltsbereich, werden die von diesem Kanal erstellten Inhalte angezeigt.

Unter der Profilinfo-Karte befindet sich in der linken Seitenleiste eine Karte mit einem Teil der Verbindungen (beim Aufruf fremder Kanäle werden hier die gemeinsamen Kontakte angezeigt).

Darunter wiederum befindet sich eine Karte mit den Archiven der Inhalte (oberste Ebene sind die Jahre, eine Gliederungsebene darunter die Monate). Wählt man ein Archiv aus, so werden im Inhaltsbereich nur die Inhalte angezeigt, die im gewählten Archivzeitraum veröffentlicht wurden.

Unter der Archivkarte befindet sich dann die Karte der Kategorien. Hier werden sämtliche Kategorien, unter welchen Inhalte veröffentlicht wurden, aufgeführt. Ein Klick auf eine solche Kategorie führt dazu, dass im Inhaltsbereich sämtliche Inhalte angezeigt werden, die von dem Kanal unter der entsprechenden Kategorie veröffentlicht wurden.

Unter der Archiv-Karte befindet sich die Karte mit der Schlagwörter-Wolke, welche die genutzten Hashtags anzeigt und mit denen man den Inhalt des Inhaltsbereichs (Artikel des Kanals) filtern kann.

In der rechten Seitenleiste werden, sofern ungesehene Benachrichtigungen vorhanden sind, diese in einer weiteren Karte gezeigt.

So ist der "Normalzustand".

Module mit dem PDL-Editor bearbeiten

Die verschiedenen Seiten, die man über Apps erreichen kann, werden auch als "Module" bezeichnet.

Das Aussehen dieser Seiten kann man nun als Nutzer in großen Teilen anpassen und gestalten. Intern wird der Aufbau einer solchen Seite durch eine PDL-Datei bestimmt. Diese Dateien sind Layout-Dateien, welche die Comanche Seitenbeschreibungssprache nutzen.

Damit sich der Nutzer nicht mit einer solchen Sprache auseinandersetzen muss, gibt es die App "PDL Editor", mit welchem man den Seitenaufbau mit einem GUI verändern / erstellen kann.

Die App muss man zunächst installieren und aktivieren. Dann kann man sie aus dem Hamburger-Menü heraus aufrufen.

Ruft man den PDL-Editor auf, so wird als Standard die Seitenstruktur des HQ angezeigt.

Zentral am unteren Bildschirmrand findet man das Hauptmenü des PDL-Editors. Hier gibt es die Einträge

"MODULES", "TEMPLATES", "ITEMS", "SOURCE" und "APPLY".

Aus dem Menü "MODULES" kann man das zu bearbeitende Modul (das entspricht der zu bearbeitenden Seite) auswählen.

Angenommen, Sie möchten die Kanal-Seite (wie sie einem selbst, aber auch Besuchern angezeigt wird) anpassen, so wählt man hier das Modul "channel" aus.

PDL 02

Die PDL-Datei für die Kanalseite wird geladen und man sieht die entsprechenden, gerade beschriebenen Bestandteile ("ITEMS") dieser Seite.

PDL 03

Angenommen, Sie möchten nun unsere Kanalseite mit einer Anzeige der Uhrzeit in der rechten Seitenleiste "verfeinern", so wählt man unter "ITEMS" das Item "CLOCK" aus, "ergreift" es mit dem Mauszeiger am Kreuzpfeil-Symbol und zieht es nach rechts in die Seitenleiste.

PDL 04

PDL 05

Damit die Änderungen auch übernommen werden, klickt man anschließend auf "APPLY" im Hauptmenü.

PDL 06

Ruft man nun die Kanalseite auf, so erscheint eine Karte mit der aktuellen Uhrzeit in der rechten Seitenleiste.

PDL 07

Auf diese Weise kann man alle Seiten, die man unter "MODULES" findet, nach dem eigenen Geschmack anpassen.

Hat man seine Seite angepasst und sie ist irgendwie "so völlig zerhackstückt": Kein Grund zur Panik! Im Hauptmenü findet man bei geänderten Layoutseiten den zusätzlichen Eintrag "RESET". Ein Klick darauf setzt das Seitenlayout auf den Hubzilla-Standard zurück.

Hier werden jetzt aber nicht sämtliche Items vorgestellt... jeder darf ein wenig experimentieren. Die meisten haben einen erklärenden Titel.

Klickt man im PDL-Hauptmenü auf "SOURCE", so wird einem der Quelltext des aktuellen Layouts angezeigt. Ein Blick hier hinein hilft, mit PDL vertraut zu werden. Außerdem sind hier auch Änderungen direkt im Quelltext möglich... falls irgendwas nicht über die "ITEMS" erreichbar ist. Hierfür sollte man sich aber mit der Seitenauszeichnungssprache, den Blöcken und Modulen vorher vertraut machen.

PDL 08

PDL-Editor für Fortgeschrittene

Angenommen, man hat ein paar Artikel erstellt und möchte einige davon über ein Menü in der rechten Seitenleiste der Kanalseite zugänglich machen.

Das ist durchaus machbar.

Doch dafür benötigt man zunächst einmal ein Menü. Um Menüs zu erstellen, muss man allerdings die App "Webseiten" installieren und aktivieren, denn das Erstellen von Menüs ist Teil der Webseiten-Funktionalität. Also selbst wenn man keine Webseiten in seinem Kanal erstellen möchte, braucht man zum Erstellen von Menüs die App "Webseiten". Wobei... so ganz stimmt das nicht. Man kann den Menüeditor auch anders erreichen, als über die App "Webseiten". Dafür gibt man <url-des-hub>/menu/<kanalname> ein. Nun landet man auch in der Menü-"App". Einfacher ist es allerdings mit der Webseiten-App.

PDL 09

Ein Klick auf "Erstelle" öffnet den Menü-Editor.

PDL 10

Hier muss man nun einen passenden Namen (über den man das Menü später ansprechen kann) und (optional) einen Titel für das Menü eingeben (dieser ist später auf der Webseite zu sehen).

Danach klickt man auf "Absenden und fortfahren".

Nun landet man im Link-Editor des gerade erstellten Menüs. Hier gibt man den Titel des Menüeintrags und die dazugehörige URL ein. Man kann auch die Reihenfolge der Sortierung der Menüeinträge über das Feld "Reihenfolge in der Liste" festlegen. Hat man die Eingabe erledigt und klickt auf "Absenden und fortfahren", kann man anschließend einen weiteren Menüeintrag eingeben. Ein Klick auf "Absenden und fertigstellen", fügt den Eintrag hinzu und beendet den Menüeditor (man kann Menüs selbstverständlich auch im nachhinein noch bearbeiten).

Jetzt erscheint das neue Menü in der Liste der Menüs.

PDL 11

Jetzt zurück zum PDL-Editor und dort das Kanal-Modul aufrufen.

Nun gibt es wieder zwei Möglichkeiten. Entweder, man öffnet den Quelltexteditor "SOURCE" und gibt den Eintrag für die Menükarte an der passenden Stelle per Hand ein...

Hier wählt man, wenn das Menü in der rechten Seitenleiste erscheinen soll, die Region "right_aside" und gibt dort als neue Zeile [menu]artikelmenu[/menu] ein.

PDL 12

Nun noch auf "Submit" klicken und schon erscheint die neue Karte im visuellen PDL-Editor.

PDL 13

Mit "APPLY" übernehmen... und dann ist das Menü auf der Kanal-Webseite.

PDL 14

Die zweite Methode (mit der man nicht die richtige Stelle im Quelltext suchen muss) ist es, im PDL-Editor einfach ein beliebiges Item an die Stelle zu ziehen, wo das Menü erscheinen soll. Dann klickt man auf den "Edit"-Button bei diesem Item, ändert den vorhandenen Eintrag auf [menu]artikelmenu[/menu] und klickt auf "Submit". Dann noch ein "APPLY" und man hat das selbe Ergebnis.

PDL 15

Viel Spaß beim Experimentieren!

Handbuch für Administratoren

Hubzilla ist mehr als eine einfache Webanwendung. Es handelt sich um ein komplexes Kommunikationssystem, das eher einem E-Mail-Server als einem Webserver ähnelt. Aus Gründen der Zuverlässigkeit und Leistung werden Nachrichten im Hintergrund zugestellt und für eine spätere Zustellung in eine Warteschlange gestellt, wenn Websites nicht erreichbar sind. Diese Art von Funktionalität erfordert etwas mehr vom Hostsystem als der typische Blog. Nicht jeder PHP/MySQL-Hosting-Anbieter ist in der Lage, Hubzilla zu unterstützen. Viele können es, aber bitte prüfen Sie die Anforderungen und bestätigen Sie diese mit Ihrem Hosting-Anbieter vor der Installation.

Wir haben uns sehr bemüht, sicherzustellen, dass Hubzilla auf Standard-Hosting-Plattformen läuft, wie sie für Wordpress-Blogs und Drupal-Websites verwendet werden. Es läuft auf den meisten Linux-Systemen.

Wo Sie weitere Hilfe finden

Wenn Sie auf Probleme stoßen oder Fragen haben, die in dieser Dokumentation nicht behandelt werden, lassen Sie es uns bitte über den Github Issue Tracker wissen. Bitte beschreiben Sie Ihre Betriebsumgebung so genau wie möglich und geben Sie so viele Details wie möglich zu den Fehlermeldungen an, die Sie sehen, damit wir diese in Zukunft vermeiden können. Aufgrund der großen Vielfalt an Betriebssystemen und PHP-Plattformen haben wir nur begrenzte Möglichkeiten, Ihre PHP-Installation zu debuggen oder fehlende Module zu beschaffen, aber wir werden unser Bestes tun, um allgemeine Code-Probleme zu lösen.

Bevor Sie beginnen

Wählen Sie einen Domänennamen oder einen Subdomänennamen für Ihren Server.

Die Software kann nur im Stammverzeichnis einer Domäne oder Subdomäne installiert werden und kann nicht über alternative TCP-Ports installiert werden. Diese Beschränkungen können in Zukunft gelockert werden, sind aber unbequem, so dass wir Ihnen weiterhin DRINGEND empfehlen, sich daran zu halten.

Entscheiden Sie, ob Sie SSL verwenden wollen, und besorgen Sie sich vor der Softwareinstallation ein SSL-Zertifikat. Sie SOLLTEN SSL verwenden. Wenn Sie SSL verwenden, MÜSSEN Sie ein „browsergültiges“ Zertifikat verwenden. Sie KÖNNEN KEINE selbstsignierten Zertifikate verwenden!

Bitte testen Sie Ihr Zertifikat vor der Installation. Ein Webtool zum Testen Ihres Zertifikats finden Sie unter „http://www.digicert.com/help/“. Wenn Sie Ihre Website zum ersten Mal besuchen, verwenden Sie bitte die SSL-URL („https://“), wenn SSL verfügbar ist. Dadurch werden spätere Probleme vermieden. Die Installationsroutine erlaubt es Ihnen nicht, ein nicht browsergültiges Zertifikat zu verwenden.

Diese Einschränkung wird vorgenommen, weil öffentliche Beiträge von Ihnen Verweise auf Bilder in Ihrem eigenen Hub enthalten können. Andere Mitglieder, die ihren Stream auf anderen Hubs betrachten, erhalten Warnungen, wenn Ihr Zertifikat von ihrem Webbrowser nicht als vertrauenswürdig eingestuft wird. Dies wird viele Leute verwirren, da es sich um ein dezentralisiertes Netzwerk handelt, und sie werden die Warnung über Ihren Hub erhalten, während sie ihren eigenen Hub ansehen, und könnten denken, dass ihr eigener Hub ein Problem hat. Diese Warnungen sind sehr technisch und beängstigend für einige Leute, von denen viele nicht wissen, wie sie weiter vorgehen sollen, außer den Ratschlägen des Browsers zu folgen. Das ist für die Gemeinschaft störend. Abgesehen davon erkennen wir die Probleme im Zusammenhang mit der derzeitigen Zertifikatsinfrastruktur an und stimmen zu, dass es viele Probleme gibt, aber das ändert nichts an der Anforderung.

Kostenlose „browsergültige“ Zertifikate gibt es von Anbietern wie ZeroSSL, LetsEncrypt und einigen anderen.

Wenn Sie NICHT SSL verwenden, kann es beim ersten Installationsskript zu einer Verzögerung von bis zu einer Minute kommen - während wir den SSL-Port überprüfen, um zu sehen, ob dort etwas antwortet. Bei der Kommunikation mit neuen Sites versucht Hubzilla immer zuerst eine Verbindung über den SSL-Port herzustellen, bevor es auf eine weniger sichere Verbindung zurückgreift. Wenn Sie kein SSL verwenden, MUSS Ihr Webserver überhaupt nicht auf Port 443 lauschen.

Wenn Sie LetsEncrypt für die Bereitstellung von Zertifikaten verwenden und eine Datei unter .well-known/acme-challenge erstellen, damit LetsEncrypt Ihre Domaineigentümerschaft überprüfen kann, entfernen Sie bitte das Verzeichnis .well-known oder benennen Sie es um, sobald das Zertifikat generiert wurde. Die Software stellt bei der Installation einen eigenen Handler für „.well-known“-Dienste zur Verfügung, und ein bestehendes Verzeichnis an diesem Ort kann verhindern, dass einige dieser Dienste korrekt funktionieren. Dies sollte bei Apache kein Problem sein, kann aber bei nginx oder anderen Webserver-Plattformen ein Problem darstellen.

Installation

Es gibt mehrere Möglichkeiten, einen neuen Hub zu installieren.

  • Manuelle Installation auf einem bestehenden Server
  • Automatisierte Installation auf einem bestehenden Server mit einem Shell-Skript
  • Automatisierte Bereitstellung über einen OpenShift Virtual Private Server (VPS)

Anforderungen

  • Apache mit aktiviertem mod-rewrite und „AllowOverride All“, damit Sie eine lokale .htaccess-Datei verwenden können. Einige Leute haben erfolgreich nginx und lighttpd verwendet. Beispielkonfigurations-Skripte sind für diese Plattformen in doc/install verfügbar. Apache und nginx haben die meiste Unterstützung.
  • PHP 8.1 oder höher. Beachten Sie, dass in einigen Shared-Hosting-Umgebungen die Kommandozeilenversion von PHP von der Webserverversion abweichen kann
  • PHP-Befehlszeilenzugriff, wenn register_argc_argv in der Datei php.ini auf true gesetzt ist und der Hosting-Provider keine Einschränkungen für die Verwendung von exec() und proc_open() hat.
  • curl, gd (mit mindestens jpeg und png Unterstützung), pdo-mysql (oder pdo-postgres), mbstring, zip und openssl Erweiterungen. Die imagick-Erweiterung ist nicht erforderlich, wird aber empfohlen.
  • Die xml-Erweiterung ist erforderlich, wenn Sie webdav verwenden möchten.
  • eine Art von E-Mail-Server oder E-Mail-Gateway, so dass PHP mail() funktioniert.
  • Ein unterstützter Datenbankserver. Die unterstützten Datenbanken sind:
    • Mysql Version 8.0.22 oder höher
    • MariaDB Version 10.4 oder höher
    • PostgreSQL Version 12 oder höher
  • Fähigkeit, Aufträge mit Cron zu planen.
  • Die Installation in einer Top-Level-Domain oder Sub-Domain (ohne Verzeichnis/Pfad-Komponente in der URL) ist ERFORDERLICH.

Manuelle Installation

Entpacken Sie die Hubzilla-Dateien in das Stammverzeichnis Ihres Webserver-Dokumentbereichs

Wenn Sie den Verzeichnisbaum auf Ihren Webserver kopieren, stellen Sie sicher, dass Sie die versteckten Dateien wie .htaccess mit einbeziehen.

Wenn Sie dazu in der Lage sind, empfehlen wir, das Quellcode-Repository mit git zu klonen, anstatt eine gepackte tar- oder zip-Datei zu verwenden. Dadurch lässt sich die Software viel einfacher aktualisieren. Der Linux-Befehl zum Klonen des Repositorys in ein Verzeichnis „mywebsite“ lautet wie folgt:

git clone https://framagit.org/hubzilla/core.git mywebsite

und dann können Sie die neuesten Änderungen jederzeit mit:

git pull

Stellen Sie sicher, dass die Ordner store/[data]/smarty3 und store existieren und vom Webserver beschreibbar sind:

mkdir -p „store/[data]/smarty3“
chmod -R 777 store

Diese Berechtigung (777) ist sehr gefährlich und wenn Sie über ausreichende Privilegien und Kenntnisse haben, sollten Sie diese Verzeichnisse nur für den Webserver und, falls abweichend, für den Benutzer, der den cron-Job ausführt (siehe unten). In vielen Shared-Hosting-Umgebungen kann dies schwierig sein, ohne ein Trouble-Ticket bei Ihrem Provider zu eröffnen. Die obigen Berechtigungen ermöglichen das Funktionieren der Software, sind aber nicht optimal.

Die folgenden Verzeichnisse müssen ebenfalls vom Webserver beschreibbar sein, damit bestimmte webbasierte Verwaltungstools funktionieren:

  • addon
  • extend
  • view/theme
  • widget

Offizielle Addons

Installation

Navigieren Sie zu Ihrer Website. Dann sollten Sie das Addon-Repository klonen (separat). Wir geben diesem Repository den Spitznamen 'hzaddons'. Du kannst andere Hubzilla-Addon-Repositories einbinden, indem du ihnen andere Nicknames gibst:

cd mywebsite
util/add_addon_repo https://framagit.org/hubzilla/addons.git hzaddons
Aktualisieren

Um den Addon-Baum auf dem neuesten Stand zu halten, sollten Sie sich auf der obersten Ebene des Website-Verzeichnisses befinden und einen Update-Befehl für dieses Repository eingeben::

cd mywebsite
util/update_addon_repo hzaddons

Erstellen Sie durchsuchbare Darstellungen der Online-Dokumentation. Sie können dies jedes Mal tun, wenn die Dokumentation aktualisiert wird:

cd mywebsite
util/importdoc

Automatisierte Installation über das Shell-Skript .homeinstall

Es gibt ein Shell-Skript in (.homeinstall/hubzilla-setup.sh), das Hubzilla und seine Abhängigkeiten auf einer frischen Installation von Debian stable installiert. Es sollte auf ähnlichen Linux-Systemen funktionieren, aber Ihre Ergebnisse können variieren.

Anforderungen

Das Installationsskript wurde ursprünglich für einen kleinen Hardwareserver hinter Ihrem Heimrouter entwickelt. Es wurde jedoch auf mehreren Systemen mit Debian 9 getestet:

  • Home-PC (Debian-9.2-amd64) und Rapberry-Pi 3 (Rasbian = Debian 9.3)
    • Internetanschluss und Router zu Hause
    • Mini-PC / Raspi an den Router angeschlossen
    • USB-Laufwerk für Backups
    • Frische Installation von Debian auf Ihrem Mini-PC
    • Router mit offenen Ports 80 und 443 für Ihr Debian

Überblick über die Installationsschritte

  1. apt-get install git
  2. mkdir -p /var/www/html
  3. cd /var/www/html
  4. git clone https://framagit.org/hubzilla/core.git .
  5. nano .homeeinstall/hubzilla-config.txt
  6. cd .homeeinstall/
  7. ./hubzilla-setup.sh
  8. service apache2 neu laden
  9. Öffnen Sie Ihre Domain mit einem Browser und gehen Sie durch die anfängliche Konfiguration von Hubzilla.

Empfohlene Addons

Wir empfehlen, die folgenden Addons auf allen öffentlichen Seiten zu installieren:

nsfw - unangemessene Beiträge/Kommentare ausblenden

superblock - blockiert Inhalte von anstößigen Kanälen

Föderations Addons

Verschiedene Web-Communities haben begonnen, sich unter Verwendung gemeinsamer Protokolle zusammenzuschließen. Die beteiligten Protokolle sind in ihren Möglichkeiten etwas eingeschränkt. Das Diaspora-Protokoll ist etwas restriktiv, was die erlaubten Kommunikationsarten angeht. Alle Kommentare müssen vom ursprünglichen Autor auf eine sehr eindeutige Weise signiert werden. Das ActivityPub-Protokoll wird ebenfalls unterstützt. Kein anderes existierendes Protokoll unterstützt nomadische Standorte (es gibt inzwischen die Unterstützung nomadischer Identitäten bei ActivityPub), wie sie in diesem Projekt verwendet werden. Dies stellt einige Herausforderungen an die Unterstützung, da einige Funktionen mit einigen Netzen funktionieren und mit anderen nicht. Nichtsdestotrotz ermöglichen die Föderationsprotokolle die Herstellung von Verbindungen zu einer viel größeren Gemeinschaft von Menschen weltweit. Sie werden als Addons bereitgestellt.

  • Diaspora Protocol - Das Diaspora-Protokoll wird von Diaspora und Friendica verwendet. Sie sollten zuerst 'Diaspora Statistics' (Statistiken) aktivieren, um alle verfügbaren Funktionen zu nutzen.
  • PubCrawl - Das ActivityPub-Protokoll, das von Mastodon, MIsskey, Friendica und allen Fediverse-Diensten unterstützt wird.

Jedes Mitglied Ihrer Website muss selbst entscheiden, ob es diese Protokolle zulassen will oder nicht, da sie mit einigen wünschenswerten Kernfunktionen und Fähigkeiten dieser Software (wie z.B. Channel-Migration und Klonen) in Konflikt geraten können. Sie tun dies auf ihrer Seite „Einstellungen -> Feature/Addon-Einstellungen“.

Service-Klassen

Mit Hilfe von Dienstklassen können Sie die Systemressourcen begrenzen, indem Sie die Möglichkeiten einzelner Konten einschränken, z. B. die Speicherung von Dateien und die Begrenzung von Posts auf der obersten Ebene. Definieren Sie benutzerdefinierte Serviceklassen entsprechend Ihren Anforderungen in der Datei .htconfig.php. Erstellen Sie zum Beispiel eine Standard- und eine Premiumklasse mit den folgenden Zeilen:

// Dienstklassen

App::$config['system']['default_service_class']='standard'; // dies ist die Standard-Serviceklasse, die mit jedem neuen Konto verbunden wird

// Konfiguration für die Standard-Serviceklasse
App::$config['service_class']['standard'] =
array('photo_upload_limit'=>2097152, // Gesamtspeichergrenze für Fotos pro Kanal (hier 2MB)
'total_identities' =>1, // Anzahl der Kanäle, die ein Konto erstellen kann
'total_items' =>0, // Anzahl der Beiträge der obersten Ebene, die ein Kanal erstellen kann. Gilt nur für Top-Level-Posts des Channel-Benutzers, andere Posts und Kommentare sind davon nicht betroffen
'total_pages' =>100, // Anzahl der Seiten, die ein Channel erstellen kann
'total_channels' =>100, // Anzahl der Channels, die der Benutzer hinzufügen kann, andere Benutzer können diesen Channel immer noch hinzufügen, auch wenn das Limit erreicht ist
attach_upload_limit' =>2097152, // Gesamtspeicherplatz für Anhänge pro Kanal (hier 2MB)
'chatters_inroom' =>20);

// Konfiguration für Premium-Dienstklasse
App::$config['service_class']['premium'] =
array('photo_upload_limit'=>20000000000, // Gesamtspeichergrenze für Fotos pro Kanal (hier 20GB)
'total_identities' =>20, // Anzahl der Kanäle, die ein Konto erstellen kann
'total_items' =>20000, // Anzahl der Beiträge der obersten Ebene, die ein Kanal erstellen kann. Gilt nur für Beiträge der obersten Ebene des Kanalbenutzers, andere Beiträge und Kommentare sind davon nicht betroffen
'total_pages' =>400, // Anzahl der Seiten, die ein Channel erstellen kann
'total_channels' =>2000, // Anzahl der Channels, die der Nutzer hinzufügen kann, andere Nutzer können diesen Channel immer noch hinzufügen, auch wenn das Limit erreicht ist
attach_upload_limit' =>20000000000, // Gesamtspeicherplatz für Anhänge pro Kanal (hier 20GB)
'chatters_inroom' =>100);

Um eine Serviceklasse auf ein bestehendes Konto anzuwenden, verwenden Sie das Befehlszeilendienstprogramm aus dem Web-Root:

util/service_class list service classes

util/config system default_service_class firstclass setzt die Standarddienstklasse auf 'firstclass'

util/service_class firstclass listet die Dienste auf, die Teil der Dienstklasse „firstclass“ sind

util/service_class firstclass photo_upload_limit 10000000 setzt die gesamte Fotoplattennutzung der firstclass auf 10 Millionen Bytes

util/service_class --account=5 firstclass setzt die Konto-ID 5 auf die Serviceklasse 'firstclass' (mit Bestätigung)

util/service_class --channel=blogchan firstclass setzt das Konto, dem der Kanal „blogchan“ gehört, auf die Serviceklasse „firstclass“ (mit Bestätigung)

Optionen zur Begrenzung der Dienstklasse

  • photo_upload_limit - maximale Gesamtzahl an Bytes für Fotos
  • total_items - maximale Gesamtzahl an Beiträgen auf oberster Ebene
  • total_pages - maximale Anzahl von Seiten für Comanche
  • total_identities - maximale Anzahl von Kanälen im Besitz des Kontos
  • total_channels - maximale Anzahl von Verbindungen
  • total_feeds - Maximale Anzahl von RSS-Feed-Verbindungen
  • attach_upload_limit - maximaler Datei-Upload-Speicherplatz (Bytes)
  • minimum_feedcheck_minutes - niedrigste zulässige Einstellung für die Abfrage von RSS-Feeds
  • chatrooms - maximale Anzahl von Chaträumen
  • chatters_inroom - maximale Anzahl Chatter pro Raum
  • access_tokens - maximale Anzahl von Gastzugangstoken pro Kanal

Verwaltung der Themen

Beispiel für die Repo-Verwaltung

  1. Navigieren Sie zu Ihrem Hub-Web rootroot@hub:/root# cd /var/www

  2. Fügen Sie das Theme-Repo hinzu und geben Sie ihm einen nameroot@hub:/var/www# util/add_theme_repo https://github.com/DeadSuperHero/redmatrix-themes.git DeadSuperHero

Kanal-Verzeichnis

Schlüsselwörter

Es gibt eine „Schlagwortwolke“ mit Schlüsselwörtern, die auf der Kanalverzeichnisseite erscheinen können. Wenn Sie diese Schlüsselwörter, die vom Verzeichnisserver bezogen werden, ausblenden möchten, können Sie das Konfigurationswerkzeug verwenden:

util/config system disable_directory_keywords 1

Wenn sich Ihr Hub im Standalone-Modus befindet, weil Sie sich nicht mit dem globalen Netz verbinden möchten, können Sie stattdessen sicherstellen, dass die Option directory_server system leer ist:

util/config system directory_server „“

Administration

Website-Verwaltung

Die Verwaltung der Website erfolgt in der Regel über die Verwaltungsseite, die sich unter /admin auf Ihrer Website befindet. Um auf diese Seite zugreifen zu können, müssen Sie über Verwaltungsrechte für den Server verfügen. Administrationsrechte werden dem ersten Konto gewährt, das sich auf Ihrer Website registriert, vorausgesetzt, die E-Mail-Adresse dieses Kontos stimmt genau mit der E-Mail-Adresse überein, die Sie bei der Einrichtung als E-Mail-Adresse des Administrators angegeben haben.

Es gibt mehrere Möglichkeiten, wie dies fehlschlagen und das System ohne ein Administratorkonto bleiben kann, z. B. wenn das erste Konto, das erstellt wurde, eine andere E-Mail-Adresse als die bei der Einrichtung angegebene Administrator-E-Mail-Adresse angegeben hat.

Aus Sicherheitsgründen gibt es auf dem System keine Webseite oder Schnittstelle, die Ihnen Administratorrechte verleiht. Wenn Sie eine Situation korrigieren müssen, in der ein System kein Administratorkonto hat, muss dies durch Bearbeiten der Kontotabelle in der Datenbank geschehen. Es gibt keine andere Möglichkeit. Dazu müssen Sie den Eintrag in der Kontotabelle finden, der zu dem gewünschten Administrator gehört, und „account_roles“ für diesen Eintrag auf 4096 setzen. Anschließend können Sie die Administratorseite über das Profilmenü Ihres Systems oder direkt über /admin aufrufen.

Ein Hub kann mehrere Administratoren haben und die Anzahl der Administratoren ist nicht begrenzt. Wiederholen Sie den obigen Vorgang für jedes Konto, das Sie mit Administrationsrechten ausstatten möchten.

Fehlersuche

Logdateien

Die Systemprotokolldatei ist eine äußerst nützliche Ressource, um Fehler aufzuspüren. Dies kann auf der Konfigurationsseite admin/log aktiviert werden. Eine Loglevel-Einstellung von LOGGER_DEBUG wird für stabile Produktionsstandorte bevorzugt. Die meisten Probleme bei der Kommunikation oder der Speicherung werden hier aufgelistet. Eine Einstellung von LOGGER_DATA bietet viel mehr Details, kann aber Ihre Festplatte füllen. In jedem Fall empfehlen wir die Verwendung von logrotate auf Ihrem Betriebssystem, um die Protokolle zu überprüfen und ältere Einträge zu löschen.

Am Ende der Datei .htconfig.php befinden sich mehrere (auskommentierte) Zeilen, die die PHP-Fehlerprotokollierung aktivieren. Dies meldet Probleme mit der Codesyntax und der Ausführung des Codes und ist die erste Stelle, an der Sie nach Problemen suchen sollten, die zu einem „weißen Bildschirm“ oder einer leeren Seite führen. Dies ist in der Regel das Ergebnis von Code-/Syntaxproblemen. Datenbankfehler werden in der Systemprotokolldatei gemeldet, aber wir haben es als nützlich empfunden, in Ihrem Hauptverzeichnis eine Datei namens dbfail.out anzulegen, in der nur datenbankbezogene Probleme gesammelt werden. Wenn die Datei existiert und beschreibbar ist, werden Datenbankfehler sowohl in dieser Datei als auch in der Systemprotokolldatei protokolliert.

Im Falle von „500“-Fehlern werden die Probleme oft in den Protokollen Ihres Webservers protokolliert, oft in /var/log/apache2/error.log oder ähnlichem. Konsultieren Sie die Dokumentation Ihres Betriebssystems.

Es gibt drei verschiedene Protokollierungsmöglichkeiten.

Die erste ist das Datenbankfehlerprotokoll. Dieses wird nur verwendet, wenn Sie eine Datei mit dem Namen dbfail.out im Stammverzeichnis Ihrer Website anlegen und sie für den Webserver schreibbar machen. Wenn Datenbankabfragen fehlgeschlagen sind, werden sie hier gemeldet. Sie weisen im Allgemeinen auf Tippfehler in unseren Abfragen hin, treten aber auch auf, wenn der Datenbankserver die Verbindung unterbricht oder Tabellen beschädigt werden. In seltenen Fällen werden hier Race Conditions angezeigt, wenn zwei Prozesse versuchen, einen xchan- oder Cache-Eintrag mit derselben ID zu erstellen. Alle anderen Fehler (insbesondere anhaltende Fehler) sollten untersucht werden.

Der zweite Bereich ist das PHP-Fehlerprotokoll. Dieses wird vom Sprachprozessor erstellt und meldet nur Probleme in der Sprachumgebung. Auch hier kann es sich um Syntax- oder Programmierfehler handeln, die jedoch in der Regel fatal sind und zu einem „weißen Bildschirm des Todes“ führen, d. h. PHP wird beendet. Sie sollten sich diese Datei ansehen, wenn etwas schief läuft, das nicht zu einem weißen Bildschirm führt, aber es ist nicht ungewöhnlich, dass diese Datei tagelang leer ist.

Am Ende der mitgelieferten Datei .htconfig.php befinden sich einige Zeilen, die, wenn sie nicht auskommentiert werden, ein PHP-Fehlerprotokoll aktivieren (äußerst nützlich, um die Ursache von Fehlern beim weißen Bildschirm zu finden). Dies ist standardmäßig nicht der Fall, da es Probleme mit dem Eigentum an der Logdatei und den Schreibrechten geben könnte und die Logdatei standardmäßig nicht rotiert.

Die dritte Datei ist das „Anwendungsprotokoll“. Dieses wird von Hubzilla verwendet, um zu berichten, was im Programm vor sich geht und meldet normalerweise alle Schwierigkeiten oder unerwarteten Daten, die wir erhalten haben. Gelegentlich werden auch „Heartbeat“-Statusmeldungen ausgegeben, um anzuzeigen, dass wir einen bestimmten Punkt in einem Skript erreicht haben. Dies ist die wichtigste Protokolldatei für uns, da wir sie selbst nur zu dem Zweck erstellen, den Status von Hintergrundaufgaben und alles, was seltsam oder fehl am Platz erscheint, zu melden. Es muss nicht unbedingt etwas Schlimmes sein, aber vielleicht einfach nur unerwartet. Wenn Sie eine Aufgabe ausführen und ein Problem auftritt, lassen Sie uns wissen, was in dieser Datei steht, wenn das Problem auftritt. (Bitte schicken Sie mir keine 100M-Dumps, das würde mich nur verärgern). Nur ein paar relevante Zeilen, damit ich ein paar hunderttausend Codezeilen ausschließen und mich darauf konzentrieren kann, wo das Problem auftritt.

Dies sind Ihre Website-Protokolle, nicht meine. Wir melden ernsthafte Probleme auf jeder Protokollebene. Für die meisten Websites empfehle ich die Log-Ebene DEBUG - sie liefert ein paar zusätzliche Informationen und erzeugt keine riesigen Logdateien. Wenn ein Problem auftritt, das sich allen Versuchen entzieht, es zu verfolgen, sollten Sie für einen kurzen Zeitraum die Protokollebene DATA verwenden, um alle Details der Strukturen zu erfassen, mit denen wir es zu diesem Zeitpunkt zu tun hatten. Diese Protokollebene verbraucht sehr viel Speicherplatz und wird daher nur für kurze Zeiträume oder für Test-Sites von Entwicklern empfohlen.

Ich empfehle die Konfiguration von logrotate sowohl für das php-Protokoll als auch für das Anwendungsprotokoll. Normalerweise werfe ich alle ein bis zwei Wochen einen Blick auf dbfail.out, behebe alle gemeldeten Probleme und beginne dann mit einer neuen Datei. Das Gleiche gilt für die PHP-Protokolldatei. Ich schaue darin ab und zu nach, ob es etwas gibt, das behoben werden muss.

Wenn etwas schief läuft und es sich nicht um einen schwerwiegenden Fehler handelt, schaue ich mir die Anwendungsprotokolldatei an. Oft werde ich

tail -f logfile.out

während ich einen Vorgang wiederhole, bei dem es Probleme gibt. Oft füge ich zusätzliche Logging-Anweisungen in den Code ein, wenn es keinen Hinweis darauf gibt, was schief läuft. Selbst so etwas Einfaches wie „got here“ oder der Ausdruck des Wertes einer Variable, die verdächtig sein könnte. Auch das können Sie tun - ich möchte Sie sogar dazu ermutigen, dies zu tun. Sobald Sie gefunden haben, was Sie suchen müssen, können Sie

git checkout file.php

um sofort alle zusätzlichen Protokollierungsdaten, die Sie hinzugefügt haben, zu löschen. Verwenden Sie die Informationen aus diesem Protokoll und alle Details, die Sie aus Ihrer Untersuchung des Problems liefern können, um Ihren Fehlerbericht einzureichen - es sei denn, Ihre Analyse weist auf die Quelle des Problems hin. In diesem Fall beheben Sie es einfach.

Rotierende Protokolldateien
  1. Aktiviere das logrot Addon im offiziellen hubzilla-addons repo
  2. Legen Sie in Ihrem Web-Root ein Verzeichnis namens log mit Schreibrechten für den Webserver an
  3. Gehen Sie zu den logrot-Administrationseinstellungen und geben Sie diesen Ordnernamen sowie die maximale Größe und Anzahl der aufbewahrten Protokolldateien ein.

Probleme melden

Wenn Sie Probleme melden, versuchen Sie bitte, so viele Details wie nötig anzugeben, damit die Entwickler das Problem reproduzieren können, und geben Sie den vollständigen Text aller Fehlermeldungen an.

Wir ermutigen Sie, diese Protokolle zusammen mit dem Quellcode, den Sie besitzen, so gut wie möglich zu nutzen, um Probleme zu beheben und ihre Ursache zu finden. Die Community kann oft helfen, aber nur Sie haben Zugang zu den Logdateien Ihrer Website, und es wird als Sicherheitsrisiko angesehen, sie weiterzugeben.

Wenn ein Code-Problem aufgedeckt wurde, melden Sie es bitte im Bugtracker des Projekts (https://framagit.org/hubzilla/core/issues). Geben Sie auch hier so viele Details wie möglich an, damit wir nicht immer wieder Fragen zu Ihrer Konfiguration stellen oder das Problem duplizieren müssen, damit wir das Problem direkt angehen und herausfinden können, was zu tun ist. Sie können auch gerne Ihre eigenen Lösungen anbieten und Patches einreichen. Wir ermutigen Sie sogar dazu, da wir alle Freiwillige sind und nur wenig Zeit zur Verfügung haben. Je mehr Leute mithelfen, desto leichter wird die Arbeit für alle. Es ist in Ordnung, wenn Ihre Lösung nicht perfekt ist. Jedes bisschen hilft, und vielleicht können wir es ja noch verbessern.

Hub-Snapshot-Tools

Hubzilla-Entwickler müssen häufig zwischen Zweigen wechseln, die möglicherweise inkompatible Datenbankschemata oder Inhalte haben. Die folgenden beiden Skripte erstellen und restaurieren komplette Snapshots einer Hubzilla-Instanz, einschließlich des Hub-Web-Root und des gesamten Datenbankstatus. Jedes Skript benötigt eine Konfigurationsdatei namens hub-snapshot.conf, die sich im selben Ordner befindet und die spezifischen Verzeichnisse und Datenbankdetails Ihres Hubs enthält.

Konfiguration

Das Format der Konfigurationsdatei ist sehr streng. Es dürfen keine Leerzeichen zwischen dem Variablennamen und dem Wert stehen. Ersetzen Sie nur den Inhalt innerhalb der Anführungszeichen durch Ihre Konfiguration. Speichern Sie diese Datei als hub-snapshot.conf zusammen mit den Skripten.

# Ort des Hub-Root. Normalerweise ist dies der Speicherort des Hubzilla Repo-Klons.
HUBROOT=„/var/www/“
# Name der MySQL-Datenbank
DBNAME=„hubzilla“
# MySQL-Datenbank-Benutzer
DBUSER=„hubzilla“
# MySQL-Datenbank-Passwort
DBPWD=„akeufajeuwfb“
# Der Ziel-Snapshot-Ordner, in dem das Git-Repository initialisiert werden soll
SNAPSHOTROOT=„/root/snapshots/hubzilla/“

Snapshot

Beispiel für die Verwendung:

sh hub-snapshot.sh my-hub.conf „Commit-Meldung für den Snapshot“ 

hub-snapshot.sh:

#!/bin/bash

if ! [ -f "$1" ]; then
    echo "$1 is not a valid file. Aborting..."
    exit 1
fi
source "$1"
#echo "$DBNAME"
#echo "$DBUSER"
#echo "$DBPWD"
#echo "$HUBROOT"
#echo "$SNAPSHOTROOT"
MESSAGE="snapshot: $2"

if [ "$DBPWD" == "" -o "$SNAPSHOTROOT" == "" -o "$DBNAME" == "" -o "$DBUSER" == "" -o "$HUBROOT" == "" ]; then
    echo "Required variable is not set. Aborting..."
    exit 1
fi

if [ ! -d "$SNAPSHOTROOT"/db/ ]; then
    mkdir -p "$SNAPSHOTROOT"/db/
fi
if [ ! -d "$SNAPSHOTROOT"/www/ ]; then
    mkdir -p "$SNAPSHOTROOT"/www/
fi

if [ ! -d "$SNAPSHOTROOT"/www/ ] || [ ! -d "$SNAPSHOTROOT"/db/ ]; then
    echo "Error creating snapshot directories. Aborting..."
    exit 1
fi

echo "Export database..."
mysqldump -u "$DBUSER" -p"$DBPWD" "$DBNAME" > "$SNAPSHOTROOT"/db/"$DBNAME".sql
echo "Copy hub root files..."
rsync -va --delete --exclude=.git* "$HUBROOT"/ "$SNAPSHOTROOT"/www/

cd "$SNAPSHOTROOT"

if [ ! -d ".git" ]; then
    git init
fi
if [ ! -d ".git" ]; then
    echo "Cannot initialize git repo. Aborting..."
    exit 1
fi

git add -A
echo "Commit hub snapshot..."
git commit -a -m "$MESSAGE"

exit 0

Restore

#!/bin/bash
# Restore hub to a previous state. Input hub config and commit hash

if ! [ -f "$1" ]; then
        echo "$1 is not a valid file. Aborting..."
        exit 1
fi
source "$1"
COMMIT=$2

if [ "$DBPWD" == "" -o "$SNAPSHOTROOT" == "" -o "$DBNAME" == "" -o "$DBUSER" == "" -o "$HUBROOT" == "" ]; then
        echo "Required variable is not set. Aborting..."
        exit 1
fi
RESTOREDIR="$(mktemp -d)/"

if [ ! -d "$RESTOREDIR" ]; then
    echo "Cannot create restore directory. Aborting..."
    exit 1
fi
echo "Cloning the snapshot repo..."
git clone "$SNAPSHOTROOT" "$RESTOREDIR"
cd "$RESTOREDIR"
echo "Checkout requested snapshot..."
git checkout "$COMMIT"
echo "Restore hub root files..."
rsync -a --delete --exclude=.git* "$RESTOREDIR"/www/ "$HUBROOT"/
echo "Restore hub database..."
mysql -u "$DBUSER" -p"$DBPWD" "$DBNAME" < "$RESTOREDIR"/db/"$DBNAME".sql

chown -R www-data:www-data "$HUBROOT"/{store,extend,addon,.htlog,.htconfig.php}

echo "Restored hub to snapshot $COMMIT"
echo "Removing temporary files..."

rm -rf "$RESTOREDIR"

exit 0

Datenbank

Datenbank-Updates

Auf der Seite https://hub.hubzilla.hu/admin/dbsync kann der Administrator überprüfen, ob eine Aktualisierung fehlgeschlagen ist, und sie gegebenenfalls erneut versuchen.

Wenn eine Aktualisierung fehlgeschlagen ist, aber aus irgendeinem Grund nicht als fehlgeschlagen registriert wird, kann der Administrator versuchen, die Aktualisierung erneut auszuführen. Zum Beispiel für die DB-Aktualisierung #1999, indem er die Webseite besucht:

https://hubzilla.com.bradmin/dbsync/1999

Datenbank-Tabellen

TabelleBeschreibung
abconfigbeliebiger Speicherplatz für Verbindungen von lokalen Kanälen
abookVerbindungen der lokalen Kanäle
accountDienstanbieterkonto
addonregistrierte Plugins
apppersönliche App-Daten
attachDateianhänge
auth_codesOAuth Benutzung
cacheOEmbed Cache
calCalDAV-Container für Ereignisse
channellokale Kanäle
chatChatraum-Inhalte
chatpresenceKanalpräsenzinformationen für den Chat
chatroomDaten für den eigentlichen Chatraum
clientsOAuth Benutzung
configHauptkonfigurationsspeicher
convMeta-Konversationsstruktur für private Nachrichten in Diaspora
eventEvents
pgrp_memberDatenschutzgruppen (Sammlungen), Gruppeninformationen
pgrpDatenschutzgruppen (Sammlungen), Mitgliederinformationen
hookPlugin-Hook-Register
hublocxchan-Standortspeicher, verknüpft einen Hub-Standort mit einem xchan
iconfigerweiterbarer, beliebiger Speicher für Elemente
issuekünftige Fehler-/Problemdatenbank
itemalle Beiträge und Webseiten
item_id(veraltet durch iconfig) andere Identifikatoren in anderen Diensten für Beiträge
likes"Dinge“ mögen
mailprivate Nachrichten
menuWebseiten-Menü-Daten
menu_itemEinträge für Menüs auf Webseiten
notifyBenachrichtigungen
objObjektdaten für Dinge (x hat y)
outqAusgangswarteschlange
pconfigpersönlicher (pro Kanal) Konfigurationsspeicher
photoFotospeicher
pollDaten für Umfragen
poll_elmDaten für Abfrageelemente
profdefDefinitionen für benutzerdefinierte Profilfelder
profextbenutzerdefinierte Profilfelddaten
profileKanalprofile
profile_checkDFRN-Fernautorisierung, kann veraltet sein
registerRegistrierungen, die eine Verwaltungsgenehmigung erfordern
sessionSpeicherung von Websitzungen
sharesInformationen über gemeinsame Elemente
signDiaspora-Unterschriften. Wird schrittweise abgebaut.
siteStandorttabelle zum Auffinden von Verzeichnis-Peers
sourceDaten aus Kanalquellen
sys_permserweiterbare Berechtigungen für OAuth
termTabelle der Artikeltaxonomie (Kategorien, Tags usw.)
tokensOAuth Benutzung
updatesVerzeichnis-Synchronisations-Updates
verifyallgemeine Verifikationsstruktur
voteAbstimmungsdaten für Umfragen
xchanListe der bekannten Kanäle im Universum
xchatChaträume mit Lesezeichen
xconfigwie pconfig, aber für Kanäle ohne lokales Konto
xignvon Freundschaftsvorschlägen ignorierte Kanäle
xlinkvon poco abgeleitete „Freunde von Freunden“-Verknüpfungen, auch Speicherung von Bewertungen
xpermOAuth/OpenID-Connect erweiterbare Berechtigungen Berechtigungsspeicher
xprofwenn dieser Knotenpunkt ein Verzeichnisserver ist, enthält er grundlegende öffentliche Profilinformationen über jeden im Netz
xtagwenn dieser Hub ein Verzeichnisserver ist, enthält er Tags oder Interessen von jedem im Netzwerk

Erweiterte Konfigurationen für Administratoren

Dieses Dokument setzt voraus, dass Sie ein Administrator sind.

Hubzilla enthält viele Konfigurationsoptionen, die im Hauptverwaltungsbereich verborgen sind. Im Allgemeinen handelt es sich dabei um Optionen, die als zu nischenartig, fortgeschritten oder verwirrend angesehen werden.

Diese Einstellungen können über die Shell vom Webverzeichnis der obersten Ebene aus mit folgender Syntax geändert werden

util/config cat key value für eine Website-Konfiguration, oder

util/pconfig channel_id cat key value für eine Mitgliedskonfiguration.

Für eine Site-Konfiguration ist eine weitere Möglichkeit, eine Zeile in .htconfig.php einzufügen, mit der Syntax: App::$config['cat']['Schlüssel'] = 'Wert';

Mitgliederkonfiguration (pconfig)

  • system.always_my_theme

    Verwende immer dein eigenes Theme, wenn du Kanäle im selben Hub anschaust. Dies führt zu einigen recht einfallsreichen Problemen, wenn Kanäle mit themenabhängigen Comanche angezeigt werden.

  • system.blocked

    Ein Array von Xchans, die von diesem Channel blockiert werden. Technisch gesehen ist dies eine versteckte Konfiguration und gehört hierher, aber Addons (insbesondere Superblock) haben dies in der Benutzeroberfläche verfügbar gemacht.

  • system.default_cipher

    Setzt den Standardchiffre, der für E2EE-Elemente verwendet wird.

  • system.display_friend_count

    Legt die Anzahl der Verbindungen fest, die im Widget des Verbindungsprofils angezeigt werden sollen.

  • system.do_not_track

    Wie der Browser-Header. Dies wird viele identitätsbasierte Funktionen unterbrechen. Sie sollten wirklich nur Berechtigungen setzen, die Sinn machen.

  • system.forcepublicuploads

    Erzwingt, dass hochgeladene Fotos öffentlich sind, wenn sie als Wandelemente hochgeladen werden. Es ist viel sinnvoller, die Berechtigungen von vornherein richtig zu setzen. Tun Sie das stattdessen.

  • system.network_page_default

    Legt die Standardparameter für die Anzeige der Netzwerkseite fest. Dies sollte den gleichen Querystring enthalten wie die manuelle Filterung.

  • system.paranoia

    Legt die Sicherheitsstufe der IP-Überprüfung fest. Wenn sich die IP-Adresse einer angemeldeten Sitzung ändert, wird diese Stufe angewendet, um festzustellen, ob das Konto als Sicherheitsverletzung abgemeldet werden sollte. Die Optionen sind: 0 - keine IP-Überprüfung 1 - 3 Oktette prüfen 2 - 2 Oktette prüfen 3 - Prüfung auf alle Unterschiede

  • system.prevent_tag_hijacking

    Verhindert, dass fremde Netzwerke Hashtags in Ihren Beiträgen klauen und sie auf ihre eigenen Ressourcen leiten.

  • system.startpage

    Eine weitere dieser technisch versteckten Konfigurationen, die von Addons zur Verfügung gestellt werden. Legt die Standardseite fest, die beim Einloggen angezeigt wird. Diese wird der Benutzeroberfläche durch das startpage-Addon zur Verfügung gestellt.

  • system.taganyone

    Erfordert, dass die gleichnamige Konfiguration aktiviert ist. Erlaubt das @mention tagging von jedem, egal ob man verbunden ist oder nicht. Dies skaliert nicht.

  • system.anonymous_kommentare

    Standardmäßig oder wenn auf 1 gesetzt, können benutzerdefinierte Berechtigungen gesetzt werden, um anonyme (moderierte) Kommentare wie bei WordPress zu erlauben, die vom Channel-Besitzer moderiert werden. Ist der Wert auf 0 gesetzt, kann kein Mitglied Ihrer Website dies auswählen oder aktivieren.

  • system.user_scalable

    Bestimmt, ob die App auf Touchscreens skalierbar ist. Standardmäßig auf on, zum Deaktivieren auf zero setzen - real zero, nicht nur false.

Konfiguration der Website

  • randprofile.check

    Bei der Anforderung eines Zufallsprofils zuerst prüfen, ob es tatsächlich existiert

  • randprofile.retry

    Anzahl der Versuche, ein zufälliges Profil zu erhalten

  • system.admin_email

    Gibt die E-Mail-Adresse des Administrators für diese Site an. Diese wird bei der Installation festgelegt.

  • system.authlog

    Logdatei, die für die Protokollierung von Authentifizierungsfehlern verwendet wird. Wird verwendet, um eine Verbindung zu serverseitiger Software wie fail2ban herzustellen. Auth-Fehler werden auch in den Hauptprotokollen protokolliert.

  • system.auto_channel_create

    Fügt die notwendigen Formularelemente hinzu, um den ersten Kanal auf der Kontoregistrierungsseite zu erstellen, und erstellt ihn (möglicherweise nach einer E-Mail-Validierung oder der Genehmigung des Administrators). Dies schließt die Möglichkeit aus, einen Channel von einer anderen Website als ersten auf dieser Website für ein neues Konto erstellten Channel zu importieren. Verwendung mit system.default_permissions_role zur Rationalisierung der Registrierung.

  • system.auto_follow

    Der erste Channel eines Accounts folgt automatisch den hier aufgelisteten Channels - kommagetrennte Liste von Webbies (member@hub Adressen).

  • system.blacklisted_sites

    Ein Array spezifischer Hubs, die von diesem Hub komplett blockiert werden sollen.

  • system.block_public_search

    Ähnlich wie block_public, mit dem Unterschied, dass nur der öffentliche Zugang zu den Suchfunktionen blockiert wird. Nützlich für Seiten, die öffentlich sein wollen, aber von Suchmaschinen überrannt werden.

  • system.cron_hour

    Geben Sie eine Stunde an, in der cron_daily ausgeführt werden soll. Standardmäßig, ohne Konfiguration, wird dies um Mitternacht UTC ausgeführt.

  • system.default_permissions_role

    Wenn dieser Wert auf einen gültigen Namen für eine Berechtigungsrolle gesetzt ist, wird diese Rolle für den ersten Channel verwendet, der von einem neuen Konto erstellt wird, und es wird nicht nach dem „Channel-Typ“ im Formular zur Channel-Erstellung gefragt. Beispiele für gültige Namen sind: 'social', 'social_restricted', 'social_private', 'forum', 'forum_restricted' und 'forum_private'. Lesen Sie hier mehr über Berechtigungsrollen.

  • system.default_profile_photo

    Legt das Profilfoto fest, mit dem neue Channels beginnen. Dies sollte den Namen eines Verzeichnisses enthalten, das sich unter images/default_profile_photos/ befindet, oder es sollte nicht gesetzt werden. Wenn es nicht gesetzt ist, wird 'rainbow_man' angenommen.

  • system.directorytags

    Legt die Anzahl der Schlüsselwort-Tags fest, die auf der Verzeichnisseite angezeigt werden. Die Voreinstellung ist 50, wenn sie nicht auf eine positive ganze Zahl gesetzt wird.

  • system.disable_directory_keywords

    Wenn '1', werden keine Verzeichnisschlüsselwörter angezeigt. Wenn der Hub ein Verzeichnisserver ist, verhindern Sie die Rückgabe von Schlüsselwörtern an alle Verzeichnis-Clients. Bitte setzen Sie dies nicht für Verzeichnisserver im Bereich RED_GLOBAL.

  • system.disable_discover_tab

    Hiermit können Sie die Fähigkeit, öffentliche Inhalte von externen Sites zu entdecken, vollständig deaktivieren.

  • system.disable_dreport

    Wenn '1', werden keine Zustellungsberichte gespeichert oder verlinkt.

  • system.dlogfile

    Logdatei, die für die Protokollierung von Entwicklungsfehlern verwendet wird. Genau dasselbe wie logger sonst. Dies ist keine Magie und erfordert Ihre eigenen Logging-Anweisungen. Entwickler-Tool.

  • system.email_notify_icon_url

    URL des Bildes (32x32), das in E-Mail-Benachrichtigungen (HTML-Bodies) angezeigt werden soll.

  • system.expire_delivery_reports

    Verfallsdatum in Tagen für Zustellungsberichte - Standardwert 10

  • system.expire_limit

    Nicht mehr als diese Anzahl von Beiträgen pro Kanal pro Ablauflauf ablaufen lassen, um den Speicher nicht zu erschöpfen. Voreinstellung 5000.

  • system.photo_storage_type

    Wenn '1', wird das Dateisystem anstelle der SQL-Datenbank zum Speichern der Thumbnails verwendet. Voreinstellung ist '0'. Eingeführt in 4.2

  • system.hidden_version_siteinfo

    Wenn 'true', wird die Softwareversion nicht auf den Seiten von siteinfo angezeigt (system.hide_version verbirgt die Version auch auf diesen Seiten, diese Einstellung verbirgt nur die Version auf den Seiten von siteinfo).

  • system.hide_help

    Link zur Hilfedokumentation nicht in der Navigationsleiste anzeigen

  • system.hide_in_statistiken

    Weist die roten Statistikserver an, diesen Hub in Hublisten komplett auszublenden.

  • system.hide_version

    Wenn true, wird die Softwareversion auf Webseiten und Tools nicht angezeigt. (*) Muss in .htconfig.php eingestellt werden.

  • system.ignore_imagick

    Ignoriert imagick und verwendet GD, auch wenn imagick auf dem Server installiert ist. Verhindert einige Probleme mit PNG-Dateien in älteren Versionen von imagick.

  • system.max_daily_registrations

    Legt die maximale Anzahl der an einem Tag erlaubten Neuanmeldungen fest. Nützlich, um eine Überzeichnung zu verhindern, wenn das Projekt in der Öffentlichkeit bekannt gemacht wird.

  • system.max_import_size

    Falls konfiguriert, die maximale Länge einer importierten Textnachricht. Diese wird normalerweise auf 200 KByte oder mehr belassen, um private Friendica-Fotos, die eingebettet sind, unterzubringen.

  • system.max_tagged_forums

    Spam-Schutz. Begrenzt die Anzahl der getaggten Foren, die in jedem Beitrag erkannt werden. Standard ist 2. Nur die ersten 'n' Tags werden als Foren zugestellt, die anderen verursachen keine Zustellung.

  • system.minimum_feedcheck_minutes

    Das minimale Intervall zwischen der Abfrage von RSS-Feeds. Wenn dieses Intervall kleiner als das Cron-Intervall ist, werden die Feeds bei jedem Cronjob abgefragt. Der Standardwert ist 60, wenn er nicht festgelegt wurde. Die Site-Einstellung kann auch für jeden einzelnen Kanal durch eine Serviceklassen-Einstellung mit dem treffenden Namen „minimum_feedcheck_minutes“ außer Kraft gesetzt werden.

  • system.no_age_restriction

    Beschränken Sie die Registrierung nicht auf Personen über 13 Jahren. In vielen Ländern ist es gesetzlich vorgeschrieben, dass das Alter angegeben werden muss und dass alle persönlichen Daten von Minderjährigen gesperrt werden müssen.

  • system.object_cache_days

    Legt fest, wie lange zwischengespeicherte eingebettete Inhalte ohne erneutes Abrufen verwendet werden können. Die Voreinstellung ist 30 Tage.

  • system.openssl_conf_file

    Geben Sie eine Datei an, die die OpenSSL-Konfiguration enthält. Wird in einigen Windows-Installationen benötigt, um die openssl-Konfigurationsdatei auf dem System zu finden. Lesen Sie zuerst den Code. Wenn Sie den Code nicht lesen können, spielen Sie nicht mit ihm.

  • system.openssl_encrypt

    Verschlüsselungs-Engine von openssl verwenden, Standard ist false (verwendet mcrypt für AES-Verschlüsselung)

  • system.optimize_items

    Führt optimise_table während einiger Aufgaben aus, um Ihre Datenbank sauber und defragmentiert zu halten. Dies geht zu Lasten der Leistung, während die Operationen laufen, sorgt aber auch dafür, dass die Dinge etwas schneller laufen, wenn sie nicht laufen. Es gibt auch CLI-Hilfsprogramme zur Durchführung dieser Operation, die Sie vielleicht bevorzugen, besonders wenn Sie eine große Site haben.

  • system.override_poll_lockfile

    Ignoriert die Sperrdatei im Poller-Prozess, damit mehr als ein Prozess gleichzeitig laufen kann.

  • system.paranoia

    Wie pconfig, aber auf einer site-weiten Basis. Kann durch Mitgliedereinstellungen überschrieben werden.

  • system.pin_types

    Array der zulässigen Elementtypen für die Anheftung. Die Standardwerte hängen vom Modul ab, können aber hier geändert werden.

  • system.photo_cache_time

    Wie lange die Fotos zwischengespeichert werden sollen, in Sekunden. Standardwert ist 86400 (1 Tag). Eine längere Zeit erhöht die Leistung, bedeutet aber auch, dass es länger dauert, bis geänderte Berechtigungen gelten.

  • system.plattform_name

    Was als Plattformname auf Webseiten und in Statistiken angezeigt werden soll. (*) Muss in .htconfig.php eingestellt werden.

  • system.rating_enabled

    Verteilte Reputationsberichte und Datenerfassung. Diese Funktion wird derzeit überarbeitet.

  • system.poke_basic

    Reduziert die Anzahl der poke-Verben auf genau 1 („poke“). Deaktivieren Sie andere Verben.

  • system.proc_run_use_exec

    Wenn 1, wird der Systemaufruf exec in proc_run verwendet, um Hintergrundaufgaben auszuführen. Standardmäßig verwenden wir proc_open und proc_close. Auf einigen (derzeit seltenen) Systemen funktioniert dies nicht gut.

  • system.projecthome

    Zeigt die Projektseite auf Ihrer Homepage für abgemeldete Betrachter an.

  • system.projekthome

    Legt die Projekthomepage als Startseite des Hubs fest. (Veraltet)

  • system.pubstream_bestellung

    Legt die Pubstream-Reihenfolge fest. Mögliche Werte 'commented' (Standard), 'created' und 'edited'.

  • system.register_link

    Pfad, auf den der „register“-Link im Anmeldeformular verweisen soll. Bei geschlossenen Sites wird dies auf 'pubsites' verweisen. Bei offenen Sites wird er normalerweise auf 'register' umgeleitet, aber Sie können dies auf eine benutzerdefinierte Site-Seite ändern, die Abonnements oder ähnliches anbietet.

  • system.reserved_channels

    Erlaube den Mitgliedern nicht, Kanäle mit dieser durch Kommata getrennten Liste von Namen (keine Leerzeichen) zu registrieren.

  • system.sellpage

    Eine URL, die in der Liste der öffentlichen Sites angezeigt wird, um Ihren Hub zu verkaufen - Serviceklassen anzeigen, usw.

  • system.startpage

    Legt die Standardseite fest, die nach einer Anmeldung für alle Channels auf dieser Website angezeigt wird. Kann durch Benutzereinstellungen überschrieben werden.

  • system.sys_expire_days

    Wie viele Tage sollen entdeckte öffentliche Inhalte von anderen Websites aufbewahrt werden?

  • system.taganyone

    Erlaubt das @mention-Tagging von jedem, egal ob Sie verbunden sind oder nicht.

  • system.tempdir

    Ort, an dem temporäre Dateien gespeichert werden (derzeit unbenutzt), Standard ist in der PHP-Konfiguration definiert.

  • system.tos_url

    Setzt einen alternativen Link für den ToS-Speicherort.

  • system.transport_security_header

    wenn ungleich Null und SSL verwendet wird, wird ein strict-transport-security-Header auf den Webseiten eingefügt

  • system.uploaddir

    Speicherort für das Hochladen von Dateien (Standard ist system.tempdir, derzeit nur vom js_upload-Plugin verwendet)

  • system.workflow_channel_next

    Die Seite, zu der neue Mitglieder unmittelbar nach der Erstellung eines Channels weitergeleitet werden sollen.

  • system.arbeitsablauf_register_next

    Die Seite, auf die Mitglieder direkt nach dem Erstellen eines Kontos geleitet werden (nur wenn auto_channel_create oder UNO aktiviert ist).

Verzeichnis-Konfiguration

Standardwerte für die Verzeichnissuche
  • directory.globaldir

    0 oder 1. Standardwert 0. Wenn Sie das Verzeichnis auf einer Site besuchen, sehen Sie standardmäßig nur die Mitglieder dieser Site. Man muss einen zusätzlichen Schritt machen, um die Leute im Rest des Netzwerks zu sehen; und indem man das tut, gibt es eine klare Abgrenzung, dass diese Leute nicht Mitglieder dieser Site sind, sondern eines größeren Netzwerks.

  • directory.pubforums

    0 oder 1. Öffentliche Foren sollten standardmäßig 0 sein.

  • directory.safemode

    0 oder 1.

Konfiguration des Verzeichnisservers
  • system.directory_mode
  • system.directory_primary
  • system.directory_realm
  • system.verzeichnis_server
  • system.realm_token

Entwicklerhandbuch

Informationen für Hubzilla-Entwickler

Wer ist ein Hubzilla-Entwickler? Sollte ich das lesen?

Jeder, der dazu beiträgt, Hubzilla besser zu machen, ist ein Entwickler. Es gibt viele verschiedene und wichtige Möglichkeiten, wie Sie zu dieser erstaunlichen Technologie beitragen können, auch wenn Sie nicht wissen, wie man Code schreibt. Die Software selbst ist nur ein Teil des Hubzilla-Projekts. Sie können beitragen durch

  • den Text in Ihre Sprache übersetzen, damit Menschen auf der ganzen Welt die Möglichkeit haben, Hubzilla zu nutzen
  • für Hubzilla werben und das Bewusstsein für die Plattform durch Blogbeiträge, Artikel und Mundpropaganda verbreiten
  • Erstellung von Kunstwerken und Grafiken für Projektressourcen wie Icons und Marketingmaterial
  • Unterstützung der Projektinfrastruktur wie der Projektwebsite und der Demoserver

Softwareentwickler sind natürlich willkommen; es gibt so viele großartige Ideen, die umgesetzt werden können, und nicht genug Leute, um sie alle zu verwirklichen! Die Hubzilla-Codebasis ist ein fortschrittliches und ausgereiftes System, aber die Plattform ist immer noch sehr flexibel und offen für neue Ideen.

Wir sind ziemlich entspannt, wenn es um Entwickler geht. Bei uns gibt es nicht viele Regeln. Einige von uns sind überlastet, und wenn Sie helfen wollen, lassen wir Sie gerne helfen. Wenn Sie sich jedoch an ein paar Richtlinien halten, wird der Prozess reibungsloser und die Zusammenarbeit einfacher. Von allen Entwicklern wird erwartet, dass sie sich an unseren Verhaltenskodex halten. Wir haben Entwickler aus der ganzen Welt mit unterschiedlichen Fähigkeiten, unterschiedlichen kulturellen Hintergründen und unterschiedlich viel Geduld. Unsere oberste Regel ist es, andere zu respektieren. Manchmal ist das schwierig, und manchmal haben wir sehr unterschiedliche Ansichten darüber, wie die Dinge funktionieren sollten, aber wenn sich jeder bemüht, werden wir gut miteinander auskommen.

Dieses Dokument wird Ihnen dabei helfen, Hubzilla kennenzulernen und mitzugestalten.

Versionen und Releases

Hubzilla verwendet derzeit eine Standard-Versionsnummerierungssequenz von $x.$y(.$z), zum Beispiel '1.12' oder '1.12.1'. Die erste Ziffer ist die Hauptversionsnummer. Hauptversionen werden „ungefähr“ einmal pro Jahr veröffentlicht, oft im Dezember.

Die zweite Ziffer ist die Nummer der Nebenversion. Wenn diese Zahl ungerade ist, handelt es sich um eine Entwicklungsversion. Ist die Zahl gerade, handelt es sich um eine freigegebene Version. Nebenversionen werden in der Regel einmal pro Monat freigegeben (von der Entwicklungs- in die Hauptversion verschoben), wenn die Entwicklung „stabil“ ist, aber das wird wahrscheinlich zunehmen. Zukünftig werden kleinere Versionen zwischen einem und drei Monaten veröffentlicht; das entspricht einem stabilen Codepunkt und wenn es einen allgemeinen Konsens in der Gemeinschaft gibt, dass die aktuelle Codebasis stabil genug ist, um eine Veröffentlichung in Betracht zu ziehen.

Die letzte Ziffer ist eine Schnittstellen- oder Patch-Kennung.

Der Freigabeprozess beinhaltet die Änderung der Versionsnummer (per Definition ist die Minor-Versionsnummer ungerade, und die Minor-Nummer wird erhöht). Einmal im Jahr wird bei einer Hauptversion die Hauptversionsnummer erhöht und die Nebenversionsnummer auf 0 zurückgesetzt.

Der Versionskandidat wird in einen neuen Zweig verschoben und die Tests beginnen bzw. werden für einen Zeitraum von 1-2 Wochen fortgesetzt, oder bis alle wichtigen Probleme behoben sind. Dieser Zweig wird in der Regel mit RC (Release Candidate) bezeichnet; beispielsweise steht 1.8RC für die bevorstehende Veröffentlichung der Version 1.8. Zu diesem Zeitpunkt wird die Versionsnummer des Entwicklungszweigs auf die nächsthöhere ungerade Zahl erhöht. (Zum Beispiel 1.9). Neue Entwicklungen können dann im Entwicklungszweig stattfinden.

Fehlerkorrekturen sollten immer auf „dev“ angewendet werden und von dort aus (in der Regel mit git cherry-pick) auf den RC-Zweig und, falls erforderlich, auf den Master- oder offiziellen Release-Zweig übertragen werden.

Zum Zeitpunkt der Erstellung eines Release Candidate wird die Sprachstring-Datei eingefroren, bis eine neue Version veröffentlicht wird. Die Übersetzungsarbeit kann fortgesetzt werden, aber alle Übersetzungen sollten an „dev“ übermittelt und in RC zusammengeführt werden.

Sobald die RC-Tests abgeschlossen sind, wird RC mit 'master' zusammengeführt und der RC-Versionsbezeichner entfernt; dies führt zu einem letzten Checkin, um die Versionsnummer zu ändern. Die CHANGELOG-Datei sollte ebenfalls zu diesem Zeitpunkt oder kurz davor aktualisiert werden. Wenn es während dieser letzten Zusammenführung Konflikte gibt, wird die Zusammenführung abgebrochen und „git merge -s ours“ angewendet. Dies führt dazu, dass der Master-Zweig durch den Inhalt des RC-Zweigs ersetzt wird. Konflikte entstehen oft durch String-Updates, die nach der letzten Veröffentlichung an master vorgenommen wurden und nicht einfach ohne manuelle Bearbeitung gelöst werden können. Da es sich hier um eine Veröffentlichung von getesteten Code handelt, wird von einer manuellen Bearbeitung abgeraten und stattdessen sollte die Strategie des Replacement Merge verwendet werden. Es wird davon ausgegangen, dass RC nun den neuesten, gut getesteten Code enthält.

Sobald die Veröffentlichung live ist und in den Master-Zweig überführt wurde, kann der RC-Zweig entfernt werden.

Nach der Veröffentlichung können Korrekturen an Master vorgenommen werden. Wenn möglich, sollten diese in dev vorgenommen werden und „git cherry-pick“ zum Zusammenführen verwendet werden; dadurch bleiben die Commit-Informationen erhalten und Konflikte beim Zusammenführen im nächsten Zyklus werden vermieden. Nur selten gilt ein Patch nur für den Master-Zweig. Falls nötig, kann das gemacht werden. Wenn die Änderung schwerwiegend ist, sollte die Versionsnummer der Schnittstelle erhöht werden. Dies liegt im Ermessen der Gemeinschaft. In jedem Fall sollte ein „git pull“ des Master-Zweigs immer zur neuesten Version führen, auf die alle Patches nach der Veröffentlichung angewendet werden.

Die Schnittstellennummer (das $z in $x.$y.$z) sollte in dev immer dann erhöht werden, wenn eine Änderung vorgenommen wird, die die Schnittstellen oder die API in inkompatibler Weise verändert, so dass alle externen Pakete (insbesondere Addons und API-Clients), die sich auf das aktuelle Verhalten verlassen, ihre eigenen Schnittstellen an dem Punkt, an dem es sich geändert hat, entdecken und entsprechend ändern können.

Git-Repository-Zweige

Es gibt zwei offizielle Zweige des Hubzilla-Git-Projektarchivs.

  • Die stabile Version wird im Master-Zweig gepflegt. Die letzte Übertragung in diesem Zweig gilt als geeignet für Produktions-Hubs.
  • Die experimentelle Entwicklung findet im dev-Zweig statt, der in den master-Zweig überführt wird, sobald er als getestet und stabil genug erachtet wird.

Tools und Arbeitsabläufe für Entwickler

Hub-Snapshots

Die Seite mit den Hub-Snapshots enthält Anweisungen und Skripte für die Erstellung vollständiger Snapshots eines Hubs, um den Wechsel zwischen konsistenten und vollständig bekannten Zuständen zu unterstützen. Dies ist nützlich, um Situationen zu vermeiden, in denen der Inhalt oder das Datenbankschema mit dem Code inkompatibel sein könnte.

Übersetzungen

Unsere Übersetzungen werden über Transifex verwaltet. Wenn Sie bei der Übersetzung von Hubzilla in eine andere Sprache helfen möchten, melden Sie sich auf transifex.com an, besuchen Sie Transifex und beantragen Sie die Mitgliedschaft in einem der bestehenden Sprachteams oder erstellen Sie ein neues. Benachrichtigen Sie einen der Hauptentwickler, wenn Sie ein Übersetzungsupdate haben, das zusammengeführt werden muss, oder fragen Sie, ob Sie es selbst zusammenführen können, wenn Sie mit Git und PHP vertraut sind. Wir haben eine Zeichenkettendatei namens 'messages.po', die gettext-kompatibel ist, und eine Handvoll E-Mail-Vorlagen, aus denen wir automatisch die Sprachdateien der Anwendung generieren.

Der Übersetzungsprozess

Die in der Benutzeroberfläche von Hubzilla verwendeten Strings werden bei Transifex übersetzt und dann in das Git-Repository auf github aufgenommen. Wenn Sie bei der Übersetzung helfen möchten einer Sprache helfen wollen, sei es bei der Korrektur von Begriffen oder bei der Übersetzung von Hubzilla in eine derzeit nicht unterstützte Sprache übersetzen möchten, registrieren Sie bitte ein Konto auf transifex.com und kontaktieren Sie dort das Übersetzungsteam.

Hubzilla zu übersetzen ist ganz einfach. Verwenden Sie einfach das Online-Tool auf transifex. Wenn Sie Wenn Sie sich nicht mit Git & Co. herumschlagen wollen, ist das kein Problem, wir überprüfen den Status der Übersetzungen regelmäßig und importieren sie in den Quellbaum auf github, damit andere sie nutzen können.

Wir nehmen nicht jede Übersetzung von transifex in den Quellbaum auf, um eine eine verstreute und gestörte Gesamterfahrung zu vermeiden. Als ungefähre Schätzung haben wir eine Untergrenze von 50% übersetzter Strings, bevor wir die Sprache einbeziehen. Diese Grenze richtet sich nur nach der Menge der übersetzten Zeichenfolgen, wobei wir davon ausgehen dass die wichtigsten Zeichenfolgen für die Benutzeroberfläche zuerst von einem Übersetzungsteam übersetzt Team übersetzt werden. Wenn Sie der Meinung sind, dass Ihre Übersetzung vor dieser Grenze brauchbar ist, kontaktieren Sie uns bitte und wir werden die Arbeit Ihres Teams wahrscheinlich in den Quellbaum aufnehmen.

Wenn Sie Ihre Arbeit selbst in den Quellbaum aufnehmen möchten, können Sie dies gerne tun und kontaktieren Sie uns bei allen Fragen, die sich ergeben. Der Prozess ist einfach und Hubzilla wird mit allen notwendigen Werkzeugen geliefert.

Der Speicherort der übersetzten Dateien im Quellbaum ist

/Ansicht/LNG-CODE/

wobei LNG-CODE der Code der verwendeten Sprache ist, z. B. de für Deutsch oder fr für Französisch. Für die E-Mail-Vorlagen (die *.tpl-Dateien) legen Sie sie einfach in das Verzeichnis und Sie sind fertig. Die übersetzten Strings kommen als „hmessages.po“-Datei von Transifex, die in die PHP-Datei übersetzt werden muss, die Hubzilla verwendet. Dazu Sie die Datei in das oben genannte Verzeichnis und verwenden Sie das Dienstprogramm „po2php“ aus dem aus dem Verzeichnis util Ihrer Hubzilla-Installation.

Angenommen, Sie möchten die deutsche Lokalisierung konvertieren, die sich in view/de/hmessages.po steht, würden Sie wie folgt vorgehen.

  1. Navigieren Sie an der Eingabeaufforderung in das Basisverzeichnis Ihrer

Hubzilla-Installation

  1. Führen Sie das po2php-Skript aus, das die Übersetzung

in die Datei hstrings.php einfügt, die von Hubzilla verwendet wird.

$> php util/po2php.php view/de/hmessages.po

Die Ausgabe des Skripts wird in der Datei view/de/hstrings.php platziert, wo froemdoca es erwartet, so dass Sie Ihre Übersetzung sofort testen können.

  1. Besuchen Sie Ihre Hubzilla-Seite und überprüfen Sie, ob sie in der Sprache, die Sie

Sprache, die Sie gerade übersetzt haben. Wenn nicht, versuchen Sie, den Fehler zu finden, wahrscheinlich gibt PHP Ihnen einen Hinweis im Log/Warnings.über den Fehler.

Zur Fehlersuche können Sie auch versuchen, die Datei mit PHP „auszuführen“. Dies sollte keine Ausgabe geben, wenn die Datei in Ordnung ist, aber vielleicht einen Hinweis für die Fehler in der Datei zu finden.

$> php view/de/hstrings.php

  1. Übertragen Sie die beiden Dateien mit einer aussagekräftigen Commit-Nachricht in Ihr Git Repository, pushen Sie es zu Ihrem Fork des Hubzilla Repository auf github und stellen einen Pull Request für diesen Commit.

Dienstprogramme

Zusätzlich zum po2php-Skript gibt es einige weitere Hilfsprogramme für die Übersetzung im Verzeichnis „util“ des Hubzilla-Quellbaums. Wenn Sie nur Hubzilla in eine andere Sprache übersetzen wollen, werden Sie wahrscheinlich keines dieser Werkzeuge aber es gibt Ihnen eine Vorstellung davon, wie der Übersetzungsprozess von Hubzilla funktioniert.

Weitere Informationen finden Sie in der Datei utils/README.

Bekannte Probleme

* Hubzilla verwendet die Spracheinstellung des Browsers des Besuchers, um die Sprache für die Benutzeroberfläche. Meistens funktioniert dies, aber es gibt einige bekannte Macken. * die frühen Übersetzungen basieren auf den friendica-Übersetzungen, wenn Sie einige grobe Übersetzungen finden, lassen Sie es uns bitte wissen oder korrigieren Sie sie bei Transifex.

Lizenzvergabe

Der gesamte zum Projekt beigetragene Code unterliegt der MIT-Lizenz, sofern nicht anders angegeben. Wir akzeptieren Code von Drittanbietern, der unter MIT, BSD und LGPL fällt, aber Copyleft-Lizenzen (GPL und AGPL) sind nur in Addons erlaubt. Es muss möglich sein, den GPL-(Copyleft-)Code vollständig aus dem Hauptprojekt zu entfernen, ohne etwas zu zerstören.

Codierungsstil

Im Interesse der Konsistenz verwenden wir den folgenden Code-Stil. Wir akzeptieren auch Patches, die andere Stile verwenden, aber bitte versuchen Sie, wenn möglich, einen einheitlichen Code-Stil zu verwenden. Wir werden nicht über die Vorzüge dieses Stils streiten oder diskutieren, und es ist irrelevant, was Projekt „xyz“ verwendet. Dies ist nicht Projekt „xyz“. Dies ist eine Grundlinie, um zu versuchen, den Code jetzt und in Zukunft lesbar zu halten.

  • Alle Kommentare sollten in Englisch sein.
  • Wir verwenden Doxygen, um Dokumentation zu erstellen. Dies wurde nicht konsequent angewandt, aber es wird dringend empfohlen, es zu lernen und zu benutzen.
  • Die Einrückung erfolgt hauptsächlich durch Tabulatoren mit einer Tabulatorbreite von 4.
  • String-Verkettungen und Operatoren sollten durch Leerzeichen getrennt werden. z.B. „$foo = $bar . 'abc';„ anstelle von ‚$foo=$bar.‘abc';“
  • Im Allgemeinen verwenden wir einfache Anführungszeichen für String-Variablen und doppelte Anführungszeichen für SQL-Anweisungen. „Hier Dokumente“ sollten vermieden werden. Manchmal ist die Verwendung von Strings in doppelten Anführungszeichen mit Variablenersetzung das effizienteste Mittel zur Erstellung des Strings. In den meisten Fällen sollten Sie einfache Anführungszeichen verwenden.
  • Verwenden Sie Leerzeichen großzügig, um die Lesbarkeit zu verbessern. Bei der Erstellung von Arrays mit vielen Elementen wird oft ein Schlüssel/Wert-Paar pro Zeile gesetzt, das entsprechend von der übergeordneten Zeile eingerückt wird. Das Aneinanderreihen der Zuweisungsoperatoren erfordert etwas mehr Arbeit, erhöht aber auch die Lesbarkeit.
  • Im Allgemeinen werden öffnende geschweifte Klammern in dieselbe Zeile gesetzt wie das, was die Klammer öffnet. Sie sind das letzte Zeichen in der Zeile. Schließende Klammern stehen in einer eigenen Zeile.
  • Einige Funktionen nehmen Argumente im argc/argv-Stil entgegen, wie main() in C oder Funktions-Args in Bash oder Perl. Urls werden innerhalb eines Moduls aufgeteilt. z.B. bei „http://example.com/module/arg1/arg2“ ist $this->argc 3 (integer) und $this->argv enthält: [0] => 'module', [1] => 'arg1', [2] => 'arg2'. Es wird immer nur ein Argument angegeben. Wenn eine nackte Domain-URL angegeben wird, wird $this->argv[0] auf „home“ gesetzt.

Dateisystem-Layout

DirectoryDescription
addonoptionale Addons/Plugins
boot.phpJeder Prozess verwendet dies, um die Anwendungsstruktur zu booten
docHilfedateien
imageserforderliche Bilder
includeDas „Modell“ in MVC - (Back-End-Funktionen), enthält auch PHP „Executables“ für die Hintergrundverarbeitung
index.phpDer Front-End-Controller für den Webzugang
installInstallations- und Upgrade-Dateien und DB-Schema
libraryModule von Drittanbietern (müssen lizenzkompatibel sein)
modSteuerungsmodule basierend auf URL-Pfadnamen (z.B. http://sitename/foo lädt mod/foo.php)
mod/site/Site-spezifische Mod-Overrides, die von Git ausgeschlossen sind
utilÜbersetzungstools, Hauptdatenbank für englische Zeichenketten und andere verschiedene Dienstprogramme
version.incenthält die aktuelle Version (die automatisch über cron für das Haupt-Repository aktualisiert und über git verteilt wird)
viewThemen- und Sprachdateien
view/(css,js,img,php,tpl)Standard-Theme-Dateien
view/(en,it,es ...)Sprachstrings und Ressourcen
view/theme/Einzelne benannte Themen, die (css,js,img,php,tpl) Overrides enthalten

Verhaltenskodex für Mitwirkende

Unser Versprechen

Im Interesse der Förderung eines offenen und einladenden Umfelds verpflichten wir uns als Mitwirkende und Betreuer, die Teilnahme an unserem Projekt und unserer Gemeinschaft zu einer belästigungsfreien Erfahrung für jeden zu machen, unabhängig von Alter, Körpergröße, Behinderung, ethnischer Zugehörigkeit, Geschlechtsidentität und -ausdruck, Erfahrungsniveau, Nationalität, persönlichem Aussehen, Ethnie, Religion oder sexueller Identität und Orientierung.

Unsere Standards

Beispiele für Verhaltensweisen, die zur Schaffung eines positiven Umfelds beitragen umfassen:

  • Eine einladende und integrative Sprache verwenden

  • Respekt vor unterschiedlichen Standpunkten und Erfahrungen

  • Konstruktive Kritik anständig annehmen

  • Sich auf das konzentrieren, was für die Gemeinschaft am besten ist

  • Einfühlungsvermögen gegenüber anderen Mitgliedern der Gemeinschaft zeigen

Beispiele für inakzeptables Verhalten von Teilnehmern sind:

  • Die Verwendung sexualisierter Sprache oder Bilder und unerwünschte sexuelle Aufmerksamkeit oder Annäherungsversuche
  • Trolling, beleidigende/abwertende Kommentare und persönliche oder politische Angriffe
  • Öffentliche oder private Belästigung
  • Veröffentlichung privater Informationen anderer, wie z. B. einer physischen oder elektronischen Adresse, ohne ausdrückliche Erlaubnis
  • sonstiges Verhalten, das in einem beruflichen Umfeld als unangemessen angesehen werden könnte

Unsere Verantwortlichkeiten

Die Projektbetreuer sind dafür verantwortlich, die Standards für akzeptables Verhalten zu klären, und es wird von ihnen erwartet, dass sie angemessene und faire Korrekturmaßnahmen ergreifen, wenn ein inakzeptables Verhalten festgestellt wird. Die Projektbetreuer haben das Recht und die Verantwortung, Kommentare, Commits, Code, Wiki-Edits, Issues und andere Beiträge, die nicht mit diesem Verhaltenskodex übereinstimmen, zu entfernen, zu bearbeiten oder abzulehnen, oder Beiträge, die sie als unangemessen, bedrohlich, beleidigend oder schädlich erachten, vorübergehend oder dauerhaft zu verbieten.

Geltungsbereich

Dieser Verhaltenskodex gilt sowohl innerhalb der Projektbereiche als auch im öffentlichen Umfeld, wenn eine Person das Projekt oder seine Gemeinschaft vertritt. Beispiele für das Repräsentieren eines Projekts oder einer Gemeinschaft sind die Verwendung einer offiziellen Projekt-E-Mail-Adresse, das Posten über ein offizielles Social-Media-Konto oder das Handeln als ernannter Vertreter bei einer Online- oder Offline-Veranstaltung. Die Repräsentation eines Projekts kann von den Projektbetreuern weiter definiert und präzisiert werden.

Durchsetzung

Fälle von beleidigendem, belästigendem oder anderweitig inakzeptablem Verhalten können beim Projektteam unter project@hubzilla.org gemeldet werden. Alle Beschwerden werden geprüft und untersucht und führen zu einer Reaktion, die als notwendig und den Umständen angemessen erachtet wird. Das Projektteam ist zur Vertraulichkeit gegenüber der Person, die einen Vorfall meldet, verpflichtet. Weitere Einzelheiten zu spezifischen Durchsetzungsrichtlinien können separat veröffentlicht werden.

Projektbetreuer, die den Verhaltenskodex nicht in gutem Glauben befolgen oder durchsetzen, können mit vorübergehenden oder dauerhaften Konsequenzen rechnen, die von anderen Mitgliedern der Projektleitung festgelegt werden.

Namensnennung

Dieser Verhaltenskodex ist eine Anpassung des Contributor Covenant, Version 1.4, verfügbar unter http://contributor-covenant.org/version/1/4.

Das Zot Protokoll

Was ist Zot?

Zot ist das revolutionäre Protokoll, das Hubzilla antreibt und die Kommunikation, das Identitätsmanagement und die Zugangskontrolle in einem vollständig dezentralisierten Netzwerk unabhängiger Websites, oft als „das Grid“ bezeichnet, ermöglicht. Die daraus resultierende Plattform ist ein robustes System, das den Datenschutz und die Sicherheit unterstützt und gleichzeitig die Art von umfangreichen Webdiensten ermöglicht, die normalerweise nur in zentralisierten, proprietären Lösungen zu finden sind.

Betrachten Sie dieses typische Szenario:

Jaquelina möchte Fotos von ihrem Blog unter jaquelina.org mit Roberto teilen, aber mit niemandem sonst. Roberto unterhält seinen eigenen Familien-Hub unter roberto.net auf einem völlig unabhängigen Server. Zot erlaubt Jaquelina, ihre Fotos mit einer Zugriffskontrollliste (ACL) zu veröffentlichen, die nur Roberto einschließt. Das bedeutet, dass Roberto die Fotos zwar sehen kann, wenn er ihren Blog besucht, sein Bruder Marco jedoch nicht, und auch kein anderes Familienmitglied, das ein Konto auf roberto.net hat.

Der Clou an diesem Szenario ist die Tatsache, dass Roberto sich nie auf Jaquelinas Website angemeldet hat. Stattdessen musste er sich nur einmal mit seinem Passwort auf seiner eigenen Website roberto.net anmelden. Wenn Roberto jaquelina.org besucht, wird er von ihrem Hub nahtlos authentifiziert, indem sein Server im Hintergrund abgefragt wird.

Es ist nicht ungewöhnlich, dass Server technische Probleme haben oder aus verschiedenen Gründen unzugänglich werden. Zot bietet Robustheit für Robertos Online-Aktivitäten, indem es ihm erlaubt, Klone seiner Online-Identität oder seines Kanals auf mehreren unabhängigen Hubs zu haben. Stellen Sie sich vor, dass Robertos Server aus irgendeinem Grund zusammenbricht und er sich dort nicht mehr einloggen kann. Er meldet sich einfach bei einem seiner Klone auf gadfly.com an, einer Website, die von seinem Freund Peter betrieben wird. Sobald er sich bei gadfly.com authentifiziert hat, kann Roberto Jaquelinas Blog wie zuvor ansehen, ohne dass Jaquelina zusätzlichen Zugang gewähren muss!

Kommunikation

Kommunikation und soziale Netzwerke sind ein wesentlicher Bestandteil des Grids. Jeder Kanal (und jeder Dienst, der von diesem Kanal bereitgestellt wird) kann die funktionsreiche soziale Kommunikation auf globaler Ebene in vollem Umfang nutzen. Diese Kommunikation kann öffentlich oder privat sein - und private Kommunikation umfasst nicht nur einen vollständig verschlüsselten Transport, sondern auch eine verschlüsselte Speicherung zum Schutz vor versehentlichem Schnüffeln und Offenlegung durch unseriöse Systemadministratoren und Internetdienstanbieter.

Zot unterstützt eine breite Palette von Hintergrunddiensten im Grid, von Freundschaftsvorschlägen bis hin zu Verzeichnisdiensten. Neue Inhalte und Datenaktualisierungen werden im Hintergrund zwischen den Hubs im gesamten Grid gemäß den Zugriffskontrolllisten und den von den Sender- und Empfängerkanälen festgelegten Berechtigungen weitergegeben. Die Daten werden auch zwischen einer beliebigen Anzahl von Kanalklonen synchronisiert, so dass Hub-Mitglieder auch dann auf Daten zugreifen und nahtlos weiter zusammenarbeiten können, wenn ihr primärer Hub nicht erreichbar oder offline ist.

Identität

Die Identitätsschicht von Zot ist einzigartig. Sie bietet ein unsichtbares Single Sign-On für alle Standorte im Grid.

Sie bietet auch eine nomadische Identität, so dass Ihre Kommunikation mit Freunden, Familie oder anderen Personen, mit denen Sie kommunizieren, nicht durch den Verlust Ihres primären Kommunikationsknotens beeinträchtigt wird - weder vorübergehend noch dauerhaft.

Die wichtigen Teile Ihrer Identität und Ihrer Beziehungen können auf einem USB-Stick oder Ihrem Laptop gesichert werden und jederzeit an einem beliebigen Knoten im Netz erscheinen - mit all Ihren Freunden und Vorlieben.

Entscheidend ist, dass diese nomadischen Instanzen synchron gehalten werden, so dass jede Instanz übernehmen kann, wenn eine andere gefährdet oder beschädigt ist. Dies schützt Sie nicht nur vor größeren Systemausfällen, sondern auch vor vorübergehender Überlastung der Website und staatlicher Manipulation oder Zensur.

Wir sind der Meinung, dass die nomadische Identität, die einmalige Anmeldung und die Dezentralisierung von Hubzilla ein hohes Maß an Widerstandsfähigkeit und Beständigkeit in die Internetkommunikation einbringen, die angesichts der weltweiten Tendenzen zur Zentralisierung von Unternehmen sowie der massenhaften und wahllosen staatlichen Überwachung und Zensur dringend benötigt werden.

Beim Durchsuchen des Netzes, beim Anzeigen von Kanälen und deren einzigartigen Inhalten, werden Sie nahtlos authentifiziert, sogar über völlig unterschiedliche Server-Hubs hinweg. Sie müssen keine Passwörter eingeben. Sie müssen nichts eintippen. Sie werden auf jeder neuen Seite, die Sie besuchen, einfach mit Ihrem Namen begrüßt.

Wie funktioniert das bei Zot? Wir nennen es „magic-auth“, weil Hubzilla die Details der Komplexität von Single-Sign-On-Logins und nomadischen Identitäten vor dem Surfen im Netz verbirgt. Dies ist eines der Designziele von Hubzilla: die Privatsphäre und die Freiheit im Internet zu erhöhen und gleichzeitig die Komplexität und die Langeweile zu reduzieren, die durch die Notwendigkeit entstehen, für jeden Besuch im Internet neue Passwörter und Anmeldenamen einzugeben. Sie melden sich nur einmal auf Ihrem Home-Hub (oder einem von Ihnen gewählten nomadischen Backup-Hub) an. Dadurch können Sie auf alle authentifizierten Dienste zugreifen, die überall im Netz angeboten werden - wie Einkaufen, Blogs, Foren und Zugang zu privaten Informationen. Ihr Passwort wird nicht auf tausend verschiedenen Websites gespeichert, sondern auf Servern, die Sie kontrollieren oder denen Sie vertrauen.

Sie können nicht zum Schweigen gebracht werden. Sie können nicht aus dem Netz entfernt werden, es sei denn, Sie selbst entscheiden sich dafür, es zu verlassen.

Zugangskontrolle

Die Identitätsschicht von Zot ermöglicht es Ihnen, fein abgestufte Berechtigungen für jeden Inhalt zu vergeben, den Sie veröffentlichen möchten - und diese Berechtigungen erstrecken sich über das gesamte Grid. Das ist so, als hätte man eine riesige Website, die aus einer Armee kleiner individueller Websites besteht - und bei der jeder Kanal im Grid seine Datenschutz- und Freigabepräferenzen für alle von ihm erstellten Webressourcen vollständig kontrollieren kann.

Derzeit unterstützt Hubzilla die Zugriffskontrolle für viele Datentypen, darunter Diskussionsbeiträge und -kommentare, Fotoalben, Veranstaltungen, Cloud-Dateien, Webseiten, Wikis und mehr. Jedes Objekt und die Art und Weise, wie und mit wem es geteilt wird, unterliegt vollständig Ihrer Kontrolle.

Diese Art der Kontrolle ist bei großen Unternehmensanbietern trivial, da sie die Benutzerdatenbank besitzen. Im Grid brauchen Sie keine riesige Benutzerdatenbank auf Ihrem Rechner - denn das Grid ist Ihre Benutzerdatenbank. Sie verfügt über eine im Grunde unendliche Kapazität (begrenzt durch die Gesamtzahl der Hubs, die im Internet online sind) und ist auf Hunderte, möglicherweise sogar Millionen von Computern verteilt.

Der Zugang kann für jede Ressource, jeden Kanal oder jede Gruppe von Kanälen gewährt oder verweigert werden - überall im Grid. Andere können auf Ihre Inhalte zugreifen, wenn Sie es ihnen erlauben, und sie müssen nicht einmal ein Konto in Ihrem Hub haben.

Technische Einführung

Zot ist ein JSON-basiertes Web-Framework zur Implementierung sicherer dezentraler Kommunikation und Dienste. Um diese Funktionalität bereitzustellen, erstellt Zot eine dezentralisierte, weltweit eindeutige Kennung für jeden Knotenpunkt im Netz. Dieser globale Identifikator ist nicht untrennbar mit dem DNS verbunden, wodurch die erforderliche Mobilität gewährleistet wird. Viele der bestehenden dezentralen Kommunikationsrahmen bieten zwar den Kommunikationsaspekt, aber keine Fernzugriffskontrolle und Authentifizierung. Außerdem basieren die meisten dieser Systeme auf dem „Webfinger“, der die Identität immer noch an Domänennamen bindet und keine nomadische Identität unterstützen kann.

Die Hauptprobleme, die Zot angeht, sind

  • vollständig dezentralisierte Kommunikation
  • Unabhängigkeit von DNS-basierter Identität
  • Knotenmobilität
  • nahtlose Fernauthentifizierung
  • hohe Leistung

Wir werden uns auf DNS-basierte user@host-Adressen als „benutzerfreundlichen“ Mechanismus stützen, um anderen mitzuteilen, wo man sich befindet, nämlich auf einem benannten Host mit einem bestimmten Benutzernamen, und die Kommunikation mit DNS-Entitäten wird über TCP und das Web abgewickelt.

Das zugrundeliegende Protokoll bietet jedoch eine Abstraktionsschicht darüber, so dass ein Kommunikationsknoten (z. B. „Identität“) zu einem anderen DNS-Standort wechseln kann und sich (nach bestem Wissen und Gewissen) von Standortwechseln erholt und/oder bereits bestehende Kommunikationsbeziehungen aufrechterhält. Ein Nebeneffekt dieser Anforderung ist die Möglichkeit, von alternativen/mehreren DNS-Standorten und Dienstanbietern aus zu kommunizieren und dennoch eine einzige Online-Identität beizubehalten.

Wir nennen dieses Overlay-Netz das „Grid“. Die an dieses Netz angeschlossenen Server werden als „Hubs“ bezeichnet und können eine beliebige Anzahl von individuellen Identitäten unterstützen.

Eine Identität muss nicht unbedingt mit einer Person übereinstimmen. Sie ist lediglich etwas, das die Fähigkeit erfordert, innerhalb des Netzes zu kommunizieren.

Die Fähigkeit zur Wiederherstellung wird durch Kommunikation mit dem ursprünglichen Standort erreicht, wenn eine neue oder Ersatzidentität erstellt wird, oder als Rückgriff auf eine gespeicherte Datei, die die Identität und ihre Kontakte beschreibt, für den Fall, dass der alte Standort nicht mehr antwortet.

Zumindest kurzfristig hat die Mobilität bestehender Inhalte nicht die höchste Priorität. Dies kann zu einem späteren Zeitpunkt geschehen oder auch nicht. Die wichtigsten Dinge, die wir behalten wollen, sind Ihre Identität und Ihre Freunde.

Adressen, die von mehreren Personen gemeinsam genutzt werden, sind user@host und beschreiben die aktuellen lokalen Zugangsdaten für eine bestimmte Identität. Es handelt sich um DNS-basierte Adressen, die als Seed verwendet werden, um eine bestimmte Identität innerhalb des Netzes zu lokalisieren. Die Maschinenkommunikation bindet diese Adresse an eine weltweit eindeutige ID. Eine einzelne, weltweit eindeutige ID kann an eine beliebige Anzahl von DNS-Standorten angehängt oder gebunden werden. Sobald eine Identität einem DNS-Standort zugeordnet oder an diesen gebunden ist, besteht die Kommunikation nur noch aus der Kenntnis der weltweit eindeutigen Adresse und des derzeit verwendeten DNS (url) (um die aktuelle Kommunikation zurückzurufen und zu überprüfen/abzuschließen). Diese Konzepte werden in Zukunft noch genauer spezifiziert.

Damit eine Identität über Standorte hinweg bestehen bleibt, muss man in der Lage sein, Folgendes bereitzustellen oder wiederherzustellen

  • die weltweit eindeutige ID für diese Identität
  • den dieser Identität zugewiesenen privaten Schlüssel
  • (falls der ursprüngliche Server nicht mehr existiert) ein Adressbuch mit Kontakten für diese Identität.

Diese Informationen können vom ursprünglichen Server über eine API exportiert und/oder auf eine Festplatte oder einen USB-Stick heruntergeladen werden.

Wir können auch versuchen, die Identität mit noch weniger Informationen wiederherzustellen, aber dies ist anfällig für Account-Hijacking und erfordert, dass Ihre Kontakte die Änderung bestätigen.

Um eine hochleistungsfähige Kommunikation zu ermöglichen, ist das Datenübertragungsformat für alle Aspekte von Zot JSON. XML-Kommunikation erfordert viel zu viel Overhead.

Die bidirektionale Verschlüsselung basiert auf RSA-Schlüsseln mit 4096 Bit, die im DER/ASN.1-Format unter Verwendung der PKCS#8-Kodierungsvariante ausgedrückt werden, mit AES-Verschlüsselung von Elementen mit variabler Länge oder großen Elementen. Die genauen Verschlüsselungsalgorithmen sind zwischen den Standorten verhandelbar.

Einige Aspekte der bekannten „Föderationsprotokolle“ (Webfinger, Salmon, Activitystreams, Portablecontacts usw.) können in zot verwendet werden, aber wir sind nicht an sie gebunden und werden auch nicht an sie gebunden sein. Das Hubzilla-Projekt versucht einige ziemlich neuartige Entwicklungen im Bereich der dezentralen Kommunikation, und wenn es notwendig sein sollte, von solchen „Standardprotokollen“ abzuweichen, werden wir dies ohne Fragen oder Zögern tun.

Um eine weltweit eindeutige ID zu erstellen, werden wir sie auf einem Whirlpool-Hash der Identitäts-URL des Ursprungsknotens und einer Pseudo-Zufallszahl basieren, was uns eine 256-Bit-ID mit einer extrem geringen Kollisionswahrscheinlichkeit liefern sollte (256 Bits entsprechen ungefähr 115 Quattuorviginitillionen oder 1,16 X 10^77 eindeutigen Zahlen). Diese wird in der Kommunikation als base64url-kodierte Zeichenfolge dargestellt. Wir werden uns jedoch nicht auf Wahrscheinlichkeiten verlassen, und die ID muss auch mit einem öffentlichen Schlüssel verbunden sein, wobei die Kryptographie mit öffentlichem Schlüssel verwendet wird, um eine Identitätsgarantie zu bieten, die nicht kopiert oder irgendwie im Whirlpool-Hash-Raum kollidiert wurde.

Durch die Verwendung der DNS als Grundlage für die ID wird ein weltweit eindeutiger Seed bereitgestellt, was nicht der Fall wäre, wenn die ID vollständig auf einer Pseudo-Zufallszahlengenerierung basieren würde.

Wir bezeichnen die kodierte, weltweit eindeutige uid-Zeichenkette als zot_uid

Da es mehr als einen DNS-Standort geben kann, der mit einer bestimmten zot_uid-Identität verknüpft/verbunden ist, sollten die Zustellungsprozesse an alle diese Standorte liefern, da wir nicht mit Sicherheit wissen, auf welche Hub-Instanz zu einem bestimmten Zeitpunkt zugegriffen werden kann. Wir werden jedoch einen DNS-Standort als „primär“ bezeichnen, der der bevorzugte Standort für die Anzeige von Webprofilinformationen sein wird.

Wir müssen auch die Möglichkeit bieten, den primären Standort auf einen neuen Standort zu ändern. Ein Nachschlagen von Informationen über den aktuellen primären Standort kann einen „Weiterleitungszeiger“ liefern, der uns anweist, unsere Einträge zu aktualisieren und alles an den neuen Standort zu verschieben. Es besteht auch die Möglichkeit, dass der Hauptstandort nicht mehr existiert und nicht mehr antwortet. In diesem Fall kann ein Ort, der bereits dieser zot_uid zugeordnet ist, die Kontrolle übernehmen und sich selbst als primär deklarieren. In beiden Fällen wird die primäre Bezeichnung automatisch bestätigt und verschoben. Es kann auch ein Antrag von einem primären Standort gestellt werden, der die Entfernung eines anderen Standorts verlangt.

Um eine zot_uid einem zweiten (oder tertiären) Standort zuzuordnen, ist ein sicherer Austausch erforderlich, bei dem überprüft wird, ob der neue Standort im Besitz des privaten Schlüssels für diese zot_uid ist. Die Sicherheit des privaten Schlüssels ist daher von grundlegender Bedeutung, um ein Hijacking von Identitäten zu verhindern.

Die Kommunikation erfordert dann

  • zot_uid (Zeichenfolge)
  • uid_sig
  • callback (aktueller Standort Zot-Endpunkt url)
  • callback_sig
  • spec (int)

wird mit jeder Mitteilung übergeben. Bei spec handelt es sich um eine Revisionsnummer der geltenden Zot-Spezifikation, damit die Kommunikation mit Hubs, die ältere und möglicherweise inkompatible Protokollspezifikationen verwenden, aufrechterhalten werden kann. Die Kommunikation wird mit Hilfe eines gespeicherten öffentlichen Schlüssels verifiziert, der beim ersten Aufbau der Verbindung zu dieser zot_uid kopiert wurde.

Der Widerruf und Ersatz des Schlüssels muss vom primären Hub aus erfolgen. Die genaue Form hierfür wird noch ausgearbeitet, wird aber wahrscheinlich eine Benachrichtigung an alle anderen gebundenen Hubs sein, um „nach Hause zu telefonieren“ (zum primären Hub) und eine Kopie des neuen Schlüssels anzufordern. Diese Mitteilung sollte mit einem Standort- oder Hub-Schlüssel verifiziert werden, da der ursprüngliche Identitätsschlüssel kompromittiert worden sein könnte und nicht vertrauenswürdig ist.

Um Verwirrung zu vermeiden, sollte es für jeden Hub genau eine kanonische Url geben, damit diese indiziert und eindeutig referenziert werden kann.

Um Mehrdeutigkeit des Schemas zu vermeiden, wird dringend empfohlen, dass alle Adressen https mit einem „browser valid“-Zertifikat und einer einzigen gültigen Host-Komponente (entweder www.domain.ext oder domain.ext, aber nicht beides) sein sollten, die in der gesamten Kommunikation verwendet wird. Es können mehrere URLs lokal angegeben werden, aber es sollte nur eine einzige URL für die gesamte Zot-Kommunikation innerhalb des Grids verwendet werden.

Testinstallationen, die nicht mit dem öffentlichen Netz verbunden sind, können Nicht-SSL verwenden, aber der gesamte Datenverkehr, der über öffentliche Netze fließt, sollte vor Session-Hijacking geschützt sein, vorzugsweise mit einem „browsererkannten“ Zertifikat.

Wenn möglich, empfiehlt das Zot die Verwendung von „Batching“, um den Netzwerkverkehr zwischen zwei Hubs zu minimieren. Dies bedeutet, dass Standort A„ mehrere Nachrichten an Standort B“ in einer einzigen Transaktion senden kann und auch die Zustellung identischer Nachrichten an mehrere Empfänger im selben Hub konsolidiert werden kann.

Die Nachrichten selbst können während der Übertragung verschlüsselt werden oder auch nicht, je nach der privaten Natur der Nachrichten. SSL (dringend empfohlen) bietet eine bedingungslose Verschlüsselung des Datenstroms, allerdings macht es wenig Sinn, öffentliche Mitteilungen zu verschlüsseln, die als uneingeschränkt sichtbar eingestuft wurden. Die Verschlüsselung der Datenspeicherung und die sogenannte „Ende-zu-Ende-Verschlüsselung“ liegen außerhalb des Anwendungsbereichs des zot. Es wird davon ausgegangen, dass die Betreiber von Knotenpunkten angemessene Sicherheitsvorkehrungen treffen, um die Sicherheit ihrer Datenspeicher zu gewährleisten, und diese sind Funktionen der Anwendungs- und Standortintegrität im Gegensatz zur Protokollintegrität.

Nachrichten

In Anbetracht der zuvor aufgeführten Einschränkungen sollte eine Zot-Mitteilung daher ein json-Array aus einzelnen Nachrichten sein. Diese können innerhalb der gleichen Übertragung gemischt und kombiniert werden.

Jede Nachricht erfordert dann:

  • Typ
  • (optional) Empfängerliste

Das Fehlen einer Empfängerliste würde auf eine unverschlüsselte öffentliche Nachricht oder eine Nachricht auf Standortebene hinweisen. Die Empfängerliste würde ein Array von zot_uid mit einem individuellen Entschlüsselungsschlüssel und einer gemeinsamen iv enthalten. Der Entschlüsselungsschlüssel ist mit dem öffentlichen Schlüssel der Empfängeridentität verschlüsselt. Die iv wird mit dem privaten Schlüssel des Absenders verschlüsselt.

Alle Nachrichten sollten vom Absender digital signiert werden.

Der Typ kann einer der folgenden sein (diese Liste ist erweiterbar):

  • Post (oder Aktivität)
  • Mail
  • Identität
  • authentifizieren

Identitätsnachrichten haben keine Empfänger und benachrichtigen den sozialen Graphen des Systems über eine Identitätsaktualisierung, bei der es sich um eine neue oder gelöschte Identität, einen neuen oder gelöschten Standort oder eine Änderung des primären Hubs handeln kann. Die Signatur für diese Nachrichten verwendet Systemschlüssel im Gegensatz zu identitätsspezifischen Schlüsseln.

Posts umfassen viele verschiedene Arten von Aktivitäten, wie z. B. Top-Level-Posts, Likes/Dislikes, Kommentare, Tagging-Aktivitäten usw. Diese Typen werden in der Nachrichtenstruktur angegeben.

Authentifizierungsnachrichten führen zu einer gegenseitigen Authentifizierung und einer Browserumleitung zu geschützten Ressourcen auf dem entfernten Hub, wie z. B. die Möglichkeit, Nachrichten von Wand zu Wand zu posten und private Fotoalben und Ereignisse einzusehen, usw.

Erkundung

Eine bekannte URL wird verwendet, um einen Hub auf Zot-Fähigkeiten und Identitätsabfragen zu untersuchen, einschließlich der Ermittlung von öffentlichen Schlüsseln, Profilstandorten, Profilfotos und dem primären Hub-Standort.

Der Speicherort für diesen Dienst ist /.well-known/zot-info - und muss im Stammverzeichnis der gewählten Domain verfügbar sein.

Um eine Abfrage durchzuführen, wird eine POST-Anfrage mit den folgenden Parametern an den Erkennungsort gestellt:

Erforderlich:

Adresse => eine Adresse auf dem Zielsystem wie „john“

Optional:

target => die Zot „guid“ des Beobachters für die Auswertung der Berechtigungen

target_sig => eine RSA-Signatur (base64url-kodiert) der guid

key => Der öffentliche Schlüssel, der zur Verifizierung der Signatur benötigt wird

token => eine vom anfragenden Dienst gewählte Zeichenfolge (möglicherweise zufällig). Falls vorhanden, wird ein Eintrag im entdeckten Paket mit der Bezeichnung „signed_token“ bereitgestellt, der aus der base64url_kodierten RSA-Signatur der Verkettung der Zeichenkette „token.“ und dem bereitgestellten Token unter Verwendung des privaten Schlüssels des entdeckten Kanals besteht. Dies kann mit dem bereitgestellten „key“-Eintrag verifiziert werden und bietet die Sicherheit, dass der Server im Besitz des privaten Schlüssels für die ermittelte Identität ist. Nach dem 01.01.2017 ist es erforderlich, dass ein Server ein signed_token bereitstellt , wenn ein Token in der Anfrage angegeben wurde.

Wenn kein Ziel angegeben wird, sind die zurückgegebenen Berechtigungen generische Berechtigungen für unbekannte oder unauthentifizierte Beobachter

Beispiel eines Erkennungspakets für 'mike@zothub.com'

    {

    "success": true,
    "signed_token": "KBJrKTq1qrctNuxF3GwVh3GAGRqmgkirlXANPcJZAeWlvSt_9TMV097slR4AYnYCBEushbVqHEJ9Rb5wHTa0HzMbfRo8cRdl2yAirvvv5d98dtwHddQgX1jB0xEypXtmIYMdPGDLvhI1RNdIBhHkkrRcNreRzoy4xD--HM6m1W0-A8PJJJ9BcNxmGPcBtLzW08wzoP9trJ3M7DQ6Gkk6j7iwVsyApw1ZBaDvabGTdc_SFV-Iegtqw3rjzT_xXWsfzMlKBy-019MYn_KS-gu23YzjvGu5tS_zDfkQb8DMUlPLz5yyxM0yOMlUDtG2qQgIJAU2O0X6T5xDdJ6mtolNyhepg845PvFDEqBQGMIH1nc47CNumeudDi8IWymEALhjG_U8KAK7JVlQTJj2EKUb0au1g6fpiBFab5mmxCMtZEX3Jreyak5GOcFFz-WpxuXJD9TdSoIvaBfBFOoJnXkg2zE4RHXeQzZ2FotmrbBG5dm8B-_6byYGoHBc08ZsWze1K96JIeRnLpBaj6ifUDcVHxZMPcGHHT27dvU2PNbgLiBjlAsxhYqkhN5qOHN8XBcg2KRjcMBaI3V0YMxlzXz5MztmZq3fcB1p-ccIoIyMPMzSj3yMB7J9CEU2LYPSTHMdPkIeDE6GaCkQKviaQQJQde346tK_YjA2k7_SOBmvPYE",
    "guid": "sebQ-IC4rmFn9d9iu17m4BXO-kHuNutWo2ySjeV2SIW1LzksUkss12xVo3m3fykYxN5HMcc7gUZVYv26asx-Pg",
    "guid_sig": "Llenlbl4zHo6-g4sa63MlQmTP5dRCrsPmXHHFmoCHG63BLq5CUZJRLS1vRrrr_MNxr7zob_Ykt_m5xPKe5H0_i4pDj-UdP8dPZqH2fqhhx00kuYL4YUMJ8gRr5eO17vsZQ3XxTcyKewtgeW0j7ytwMp6-hFVUx_Cq08MrXas429ZrjzaEwgTfxGnbgeQYQ0R5EXpHpEmoERnZx77VaEahftmdjAUx9R4YKAp13pGYadJOX5xnLfqofHQD8DyRHWeMJ4G1OfWPSOlXfRayrV_jhnFlZjMU7vOdQwHoCMoR5TFsRsHuzd-qepbvo3pzvQZRWnTNu6oPucgbf94p13QbalYRpBXKOxdTXJrGdESNhGvhtaZnpT9c1QVqC46jdfP0LOX2xrVdbvvG2JMWFv7XJUVjLSk_yjzY6or2VD4V6ztYcjpCi9d_WoNHruoxro_br1YO3KatySxJs-LQ7SOkQI60FpysfbphNyvYMkotwUFI59G08IGKTMu3-GPnV1wp7NOQD1yzJbGGEGSEEysmEP0SO9vnN45kp3MiqbffBGc1r4_YM4e7DPmqOGM94qksOcLOJk1HNESw2dQYWxWQTBXPfOJT6jW9_crGLMEOsZ3Jcss0XS9KzBUA2p_9osvvhUKuKXbNztqH0oZIWlg37FEVsDs_hUwUJpv2Ar09k4",
    "key": "-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA7QCwvuEIwCHjhjbpz3Oc\ntyei/Pz9nDksNbsc44Cm8jxYGMXsTPFXDZYCcCB5rcAhPPdZSlzaPkv4vPVcMIrw\n5cdX0tvbwa3rNTng6uFE7qkt15D3YCTkwF0Y9FVZiZ2Ko+G23QeBt9wqb9dlDN1d\nuPmu9BLYXIT/JXoBwf0vjIPFM9WBi5W/EHGaiuqw7lt0qI7zDGw77yO5yehKE4cu\n7dt3SakrXphL70LGiZh2XGoLg9Gmpz98t+gvPAUEotAJxIUqnoiTA8jlxoiQjeRK\nHlJkwMOGmRNPS33awPos0kcSxAywuBbh2X3aSqUMjcbE4cGJ++/13zoa6RUZRObC\nZnaLYJxqYBh13/N8SfH7d005hecDxWnoYXeYuuMeT3a2hV0J84ztkJX5OoxIwk7S\nWmvBq4+m66usn6LNL+p5IAcs93KbvOxxrjtQrzohBXc6+elfLVSQ1Rr9g5xbgpub\npSc+hvzbB6p0tleDRzwAy9X16NI4DYiTj4nkmVjigNo9v2VPnAle5zSam86eiYLO\nt2u9YRqysMLPKevNdj3CIvst+BaGGQONlQalRdIcq8Lin+BhuX+1TBgqyav4XD9K\nd+JHMb1aBk/rFLI9/f2S3BJ1XqpbjXz7AbYlaCwKiJ836+HS8PmLKxwVOnpLMbfH\nPYM8k83Lip4bEKIyAuf02qkCAwEAAQ==\n-----END PUBLIC KEY-----\n",
    "name": "Mike Macgirvin",
    "name_updated": "2012-12-06 04:59:13",
    "address": "mike@zothub.com",
    "photo_mimetype": "image/jpeg",
    "photo": "https://zothub.com/photo/profile/l/1",
    "photo_updated": "2012-12-06 05:06:11",
    "url": "https://zothub.com/channel/mike",
    "connections_url": "https://zothub.com/poco/mike",
    "target": "",
    "target_sig": "",
    "searchable": false,
    "permissions": {
        "view_stream": true,
        "view_profile": true,
        "view_photos": true,
        "view_contacts": true,
        "view_storage": true,
        "view_pages": true,
        "send_stream": false,
        "post_wall": false,
        "post_comments": false,
        "post_mail": false,
        "post_photos": false,
        "tag_deliver": false,
        "chat": false,
        "write_storage": false,
        "write_pages": false,
        "delegate": false
    },
    "profile": {
        "description": "Freedom Fighter",
        "birthday": "0000-05-14",
        "next_birthday": "2013-05-14 00:00:00",
        "gender": "Male",
        "marital": "It's complicated",
        "sexual": "Females",
        "locale": "",
        "region": "",
        "postcode": "",
        "country": "Australia"
    },
    "locations": [
        {
            "host": "zothub.com",
            "address": "mike@zothub.com",
            "primary": true,
            "url": "https://zothub.com",
            "url_sig": "eqkB_9Z8nduBYyyhaSQPPDN1AhSm5I4R0yfcFxPeFpuu17SYk7jKD7QzvmsyahM5Kq7vDW6VE8nx8kdFYpcNaurqw0_IKI2SWg15pGrhkZfrCnM-g6A6qbCv_gKCYqXvwpSMO8SMIO2mjQItbBrramSbWClUd2yO0ZAceq3Z_zhirCK1gNm6mGRJaDOCuuTQNb6D66TF80G8kGLklv0o8gBfxQTE12Gd0ThpUb5g6_1L3eDHcsArW_RWM2XnNPi_atGNyl9bS_eLI2TYq0fuxkEdcjjYx9Ka0-Ws-lXMGpTnynQNCaSFqy-Fe1aYF7X1JJVJIO01LX6cCs-kfSoz29ywnntj1I8ueYldLB6bUtu4t7eeo__4t2CUWd2PCZkY3PKcoOrrnm3TJP5_yVFV_VpjkcBCRj3skjoCwISPcGYrXDufJxfp6bayGKwgaCO6QoLPtqqjPGLFm-fbn8sVv3fYUDGilaR3sFNxdo9mQ3utxM291XE2Pd0jGgeUtpxZSRzBuhYeOybu9DPusID320QbgNcbEbEImO8DuGIxuVRartzEXQF4WSYRdraZzbOqCzmU0O55P836JAfrWjgxTQkXlYCic-DBk-iE75JeT72smCtZ4AOtoFWCjZAABCw42J7JELY9APixZXWriKtjy6JI0G9d3fs6r7SrXr1JMy0",
            "callback": "https://zothub.com/post",
            "sitekey": "-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA1IWXwd/BZuevq8jzNFoR\n3VkenduQH2RpR3Wy9n4+ZDpbrUKGJddUGm/zUeWEdKMVkgyllVA/xHdB7jdyKs1X\nuIet9mIdnzvhdLO/JFD5hgbNG2wpSBIUY6aSNeCFTzszqXmuSXMW5U0Ef5pCbzEA\nnhoCoGL1KAgPqyxnGKUlj7q2aDwC9IRNtAqNyFQL67oT91vOQxuMThjlDhbR/29Q\ncYR4i1RzyahgEPCnHCPkT2GbRrkAPjNZAdlnk9UesgP16o8QB3tE2j50TVrbVc/d\nYRbzC56QMPP9UgUsapNeSJBHji75Ip/E5Eg/kfJC/HEQgyCqjCGfb7XeUaeQ7lLO\nqc7CGuMP+Jqr/cE54/aSHg8boTwxkMp11Ykb+ng17fl57MHTM2RJ99qZ1KBkXezR\nuH1lyvjzeJPxEFr9rkUqc4GH74/AgfbgaFvQc8TS7ovEa5I/7Pg04m7vLSEYc6UF\nYJYxXKrzmZT2TDoKeJzaBBx5MFLhW19l68h9dQ8hJXIpTP0hJrpI+Sr6VUAEfFQC\ndIDRiFcgjz6j7T/x8anqh63/hpsyf2PMYph1+4/fxtSCWJdvf+9jCRM8F1IDfluX\n87gm+88KBNaklYpchmGIohbjivJyru41CsSLe0uinQFvA741W00w6JrcrOAX+hkS\nRQuK1dDVwGKoIY85KtTUiMcCAwEAAQ==\n-----END PUBLIC KEY-----\n"
        }
    ],
    "site": {
        "url": "https://zothub.com",
        "directory_mode": "primary",
        "directory_url": "https://zothub.com/dirsearch"
    }

    }

Discovery gibt ein JSON-Array mit den folgenden Komponenten zurück:

'success' => (true oder false) Operation war erfolgreich, wenn true. Andernfalls kann eine optionale 'message' vorhanden sein, die die Fehlerursache angibt.

'signed_token' => Wenn ein Token-Parameter in der Anfrage angegeben wurde, wird ihm der Text 'token.' vorangestellt und dann mit dem privaten Schlüssel des Kanals RSA-signiert und base64url-kodiert und als 'signed_token' zurückgegeben.

guid' => die guid der Adresse auf dem Zielsystem

guid_sig“ => die mit base64url kodierte RSA-Signatur der guid, signiert mit dem mit dieser guid verbundenen privaten Schlüssel.

'key' => der öffentliche Schlüssel, der mit dieser guid verknüpft ist

name“ => Name des Kanals

name_updated' => Zeitstempel im MySQL-Stil '2012-01-01 00:00:00', als der Name zuletzt geändert wurde (UTC)

address' => „webbie“ oder user@host-Adresse, die mit diesem Kanal verbunden ist

photo' => URL eines Profilfotos für diesen Kanal (idealerweise 175x175)

photo_mimetype“ => Inhaltstyp des Profilfotos

photo_updated' => Zeitstempel im MySQL-Stil, wann das Foto zuletzt aktualisiert wurde (UTC)

'url' => Standort der Kanal-Homepage

'connections_url' => Speicherort der URL für tragbare Kontakte (erweitert für zot) für diesen Kanal

target' => wenn ein Berechtigungsziel angegeben wurde, wird es gespiegelt

'target_sig' => wenn ein Berechtigungsziel angegeben wurde, wird die Signatur gespiegelt.

'searchable' => (true oder false) true bedeutet, dass dieser Eintrag in einem Verzeichnis gesucht werden kann

Berechtigungen

'permissions' => erweiterbares Array von Berechtigungen, die für dieses Ziel geeignet sind, Werte sind true oder false

Berechtigungen können beinhalten:

  • view_stream
  • view_profile
  • view_photos
  • view_contacts
  • view_storage
  • view_pages
  • send_stream
  • post_wall
  • post_comments
  • post_mail
  • post_photos
  • tag_deliver
  • chat
  • write_storage
  • write_pages
  • delegate
Profil

'Profil' => Array mit wichtigen Profilfeldern

  • description
  • birthday YYYY-MM-DD , all fields are optional, any field (such as year) may be zero
  • next_birthday => MySQL datetime string representing the next upcoming birthday, converted from the channel's default timezone to UTC.
  • gender (free form)
  • marital (marital status)
  • sexual (preference)
  • locale (city)
  • region (state)
  • postcode
  • country
Standorte

'locations' => Array der registrierten Standorte (DNS-Standorte), von denen aus dieser Kanal sichtbar sein kann oder gebucht werden kann

Jeder Standort ist ein Array aus

'host' => DNS-Hostname, z.B. example.com

'address' => die Webbie- oder user@host-Kennung, die mit diesem Standort verbunden ist

'primary' => (true oder false), ob dies der primäre Ort für diesen Kanal ist, an dem Dateien und Webseiten im Allgemeinen zu finden sind

url“ => Url des Stammverzeichnisses dieses DNS-Speicherorts, z. B. https://example. com

url_sig' => base64url kodierte RSA-Signatur der URL, signiert mit dem privaten Schlüssel des Kanals

'callback' => Zot-Kommunikationsendpunkt auf dieser Site, normalerweise https://example.com/post

sitekey' => öffentlicher Schlüssel dieser Seite/Host

Standort

'site' => Array, das die Verzeichnisrolle der Site angibt, die auf diese Anfrage antwortet

url' => url dieser Site z.B. https://example. com

directory_mode' => eines von 'primary', 'secondary', 'normal' oder 'standalone'

directory_url' => wenn es sich um einen Verzeichnisserver oder einen Einzelplatz handelt, die URL für das Verzeichnissuchmodul

Magic Auth

Der so genannte „magic auth“ erfolgt durch einen speziellen Austausch. Auf dem entfernten Computer wird eine Umleitung zum Zot-Endpunkt mit speziellen GET-Parametern vorgenommen.

Endpunkt: https://example.com/post/name

wobei 'name' die linke Seite des Kanal-Webbies ist, zum Beispiel 'mike', wenn der Webbie 'mike@zothub.com' ist.

Zusätzlich werden vier Parameter übergeben:

  • auth => die Webbie der Person, die den Zugang beantragt
  • dest => die gewünschte Ziel-URL (urlencodiert)
  • sec => eine zufällige Zeichenkette, die auch lokal gespeichert wird, um sie während der Verifizierungsphase zu verwenden.
  • version => die Zot-Revision

Wenn dieses Paket empfangen wird, wird eine Zot-Nachricht an die auth-Identität gesendet:

    {
      "type":"auth_check",
      "sender":{
        "guid":"kgVFf_1_SSbyqH-BNWjWuhAvJ2EhQBTUdw-Q1LwwssAntr8KTBgBSzNVzUm9_RwuDpxI6X8me_QQhZMf7RfjdA",
        "guid_sig":"PT9-TApzpm7QtMxC63MjtdK2nUyxNI0tUoWlOYTFGke3kNdtxSzSvDV4uzq_7SSBtlrNnVMAFx2_1FDgyKawmqVtRPmT7QSXrKOL2oPzL8Hu_nnVVTs_0YOLQJJ0GYACOOK-R5874WuXLEept5-KYg0uShifsvhHnxnPIlDM9lWuZ1hSJTrk3NN9Ds6AKpyNRqf3DUdz81-Xvs8I2kj6y5vfFtm-FPKAqu77XP05r74vGaWbqb1r8zpWC7zxXakVVOHHC4plG6rLINjQzvdSFKCQb5R_xtGsPPfvuE24bv4fvN4ZG2ILvb6X4Dly37WW_HXBqBnUs24mngoTxFaPgNmz1nDQNYQu91-ekX4-BNaovjDx4tP379qIG3-NygHTjFoOMDVUvs-pOPi1kfaoMjmYF2mdZAmVYS2nNLWxbeUymkHXF8lT_iVsJSzyaRFJS1Iqn7zbvwH1iUBjD_pB9EmtNmnUraKrCU9eHES27xTwD-yaaH_GHNc1XwXNbhWJaPFAm35U8ki1Le4WbUVRluFx0qwVqlEF3ieGO84PMidrp51FPm83B_oGt80xpvf6P8Ht5WvVpytjMU8UG7-js8hAzWQeYiK05YTXk-78xg0AO6NoNe_RSRk05zYpF6KlA2yQ_My79rZBv9GFt4kUfIxNjd9OiV1wXdidO7Iaq_Q",
        "url":"http:\/\/podunk.edu",
        "url_sig":"T8Bp7j5DHHhQDCFcAHXfuhUfGk2P3inPbImwaXXF1xJd3TGgluoXyyKDx6WDm07x0hqbupoAoZB1qBP3_WfvWiJVAK4N1FD77EOYttUEHZ7L43xy5PCpojJQmkppGbPJc2jnTIc_F1vvGvw5fv8gBWZvPqTdb6LWF6FLrzwesZpi7j2rsioZ3wyUkqb5TDZaNNeWQrIEYXrEnWkRI_qTSOzx0dRTsGO6SpU1fPWuOOYMZG8Nh18nay0kLpxReuHCiCdxjXRVvk5k9rkcMbDBJcBovhiSioPKv_yJxcZVBATw3z3TTE95kGi4wxCEenxwhSpvouwa5b0hT7NS4Ay70QaxoKiLb3ZjhZaUUn4igCyZM0h6fllR5I6J_sAQxiMYD0v5ouIlb0u8YVMni93j3zlqMWdDUZ4WgTI7NNbo8ug9NQDHd92TPmSE1TytPTgya3tsFMzwyq0LZ0b-g-zSXWIES__jKQ7vAtIs9EwlPxqJXEDDniZ2AJ6biXRYgE2Kd6W_nmI7w31igwQTms3ecXe5ENI3ckEPUAq__llNnND7mxp5ZrdXzd5HHU9slXwDShYcW3yDeQLEwAVomTGSFpBrCX8W77n9hF3JClkWaeS4QcZ3xUtsSS81yLrp__ifFfQqx9_Be89WVyIOoF4oydr08EkZ8zwlAsbZLG7eLXY"
      },
      "recipients":{
        {
        "guid":"ZHSqb3yGar3TYV_o9S-JkD-6o_V4DhUcxtv0VeyX8Kj_ENHPI_M3SyAUucU835-mIayGMmTpqJz3ujPkcavVhA",
        "guid_sig":"JsAAXigNghTkkbq8beGMJjj9LBKZn28hZ-pHSsoQuwYWvBJ2lSnfc4r9l--WgO6sucH-SR6RiBo78eWn1cZrh_cRMu3x3LLx4y-tjixg-oOOgtZakkBg4vmOhkKPkci0mFtzvUrpY4YHySqsWTuPwRx_vOlIYIGEY5bRXpnkNCoC8J4EJnRucDrgSARJvA8QQeQQL0H4mWEdGL7wlsZp_2VTC6nEMQ48Piu6Czu5ThvLggGPDbr7PEMUD2cZ0jE4SeaC040REYASq8IdXIEDMm6btSlGPuskNh3cD0AGzH2dMciFtWSjmMVuxBU59U1I6gHwcxYEV6BubWt_jQSfmA3EBiPhKLyu02cBMMiOvYIdJ3xmpGoMY1Cn__vhHnx_vEofFOIErb6nRzbD-pY49C28AOdBA5ffzLW3ss99d0A-6GxZmjsyYhgJu4tFUAa7JUl84tMbq28Tib0HW6qYo6QWw8K1HffxcTpHtwSL5Ifx0PAoGMJsGDZDD1y_r9a4vH5pjqmGrjL3RXJJUy-m4eLV5r7xMWXsxjqu3D8r04_dcw4hwwexpMT1Nwf8CTB0TKb8ElgeOpDFjYVgrqMYWP0XdhatcFtAJI7gsS-JtzsIwON9Kij66-VAkqy_z1IXI0ziyqV1yapSVYoUV1vMScRZ_nMqwiB5rEDx-XLfzko"
        }
      }
      "callback":"\/post",
      "version":1,
      "secret":"1eaa6613699be6ebb2adcefa5379c61a3678aa0df89025470fac871431b70467",
      "secret_sig":"eKV968b1sDkOVdSMi0tLRtOhQw4otA8yFKaVg6cA4I46_zlAQGbFptS-ODiZlSAqR7RiiZQv4E2uXCKar52dHo0vvNKbpOp_ezWYcwKRu1shvAlYytsflH5acnDWL-FKOOgz5zqLLZ6cKXFMoR1VJGG_Od-DKjSwajyV9uVzTry58Hz_w0W2pjxwQ-Xv11rab5R2O4kKSW77YzPG2R5E6Q7HN38FrLtyWD_ai3K9wlsFOpwdYC064dk66X7BZtcIbKtM6zKwMywcfJzvS5_0U5yc5GGbIY_lY6SViSfx9shOKyxkEKHfS29Ynk9ATYGnwO-jnlMqkJC7t149H-sI9hYWMkLuCzaeLP56k2B2TmtnYvE_vHNQjzVhTwuHCIRVr-p6nplQn_P3SkOpYqPi3k_tnnOLa2d3Wtga8ClEY90oLWFJC3j2UkBf_VEOBNcg-t5XO3T-j9O4Sbk96k1Qoalc-QlznbGx4bOVsGkRBBMiH4YUqiiWB_OkFHtdqv7dqGeC-u-B4u9IxzYst46vvmyA3O-Q4APSZ1RY8ITUH0jLTbh6EAV7Oki8pIbOg0t56p-8RlanOZqmFvR-grVSc7Ak1ZcD8NACmvidUpa1B7WEvRcOeffx9lype0bt5XenDnMyx6szevwxZIiM8qGM2lsSk4fu8HI9cW0mLywzZT0"
    }

auth_check-Nachrichten MÜSSEN verschlüsselt werden. Diese Nachricht wird an die Herkunftsseite gesendet, die prüft, ob das „secret“ mit dem „sec“ übereinstimmt, das sie ursprünglich übermittelt hat. Sie prüft auch secret_sig, das mit dem privaten Schlüssel des Zielkanals signiert und mit base64url kodiert ist. Wenn alles in Ordnung ist, wird ein json-Paket zurückgegeben:

    { 
      "success":1, 
      "confirm":"q0Ysovd1uQRsur2xG9Tg6bC23ynzw0191SkVd7CJcYoaePy6e_v0vnmPg2xBUtIaHpx_aSuhgAkd3aVjPeaVBmts6aakT6a_yAEy7l2rBydntu2tvrHhoVqRNOmw0Q1tI6hwobk1BgK9Pm0lwOeAo8Q98BqIJxf47yO9pATa0wktOg6a7LMogC2zkkhwOV5oEqjJfeHeo27TiHr1e2WaphfCusjmk27V_FAYTzw05HvW4SPCx55EeeTJYIwDfQwjLfP4aKV-I8HQCINt-2yxJvzH7Izy9AW-7rYU0Il_gW5hrhIS5MTM12GBXLVs2Ij1CCLXIs4cO0x6e8KEIKwIjf7iAu60JPmnb_fx4QgBlF2HLw9vXMwZokor8yktESoGl1nvf5VV5GHWSIKAur3KPS2Tb0ekNh-tIk9u-xob4d9eIf6tge_d3aq1LcAtrDBDLk8AD0bho5zrVuTmZ9k-lBVPr_DRHSV_dlpu088j3ThaBsuV1olHK3vLFRhYCDIO0CqqK5IuhqtRNnRaqhlNN6fQUHpXk2SwHiJ2W36RCYMTnno6ezFk_tN-RA2ly-FomNZoC5FPA9gFwoJR7ZmVFDmUeK3bW-zYTA5vu15lpBPnt7Up_5rZKkr0WQVbhWJmylqOuwuNWbn3SrMQ8rYFZ23Tv300cOfKVgRBaePWQb4" 
    }

"confirm“ ist in diesem Fall die base64url-kodierte RSA-Signatur der Verkettung von ‚secret‘ mit dem base64url-kodierten Whirlpool-Hash der Quellguid und guid_sig; signiert mit dem privaten Schlüssel des Quellkanals. Dies verhindert, dass ein Manin-the-Middle ein betrügerisches Erfolgspaket einfügt. Nach Empfang und erfolgreicher Überprüfung dieses Pakets wird die Zielseite zur ursprünglichen Ziel-URL umgeleitet und zeigt eine erfolgreiche Fernanmeldung an.

Zot-Strukturen

Zot-Signaturen

Alle signierten Daten in Zot werden durch eine RSA-Signaturoperation mit dem privaten Schlüssel des Initiators erzeugt. Das binäre Ergebnis wird dann für den Transport mit base64url kodiert.

Zot-Verschlüsselung

Die Verschlüsselung erfolgt derzeit mit AES256CTR. Weitere Algorithmen KÖNNEN unterstützt werden. Ein 32-Oktett-Schlüssel und ein 16-Oktett-Initialisierungsvektor werden nach dem Zufallsprinzip erzeugt. Die gewünschten Daten werden dann mit diesen generierten Zeichenketten verschlüsselt und das Ergebnis base64url-kodiert. Dann wird ein Array erstellt:

  • data

    Die base64url-kodierten verschlüsselten Daten

  • alg

    Der gewählte Algorithmus, in diesem Fall die Zeichenkette „aes256ctr“.

  • key

    Der zufällig erzeugte Schlüssel, RSA-verschlüsselt mit dem öffentlichen Schlüssel des Empfängers, und das Ergebnis base64url-kodiert

  • iv

    Der zufällig erzeugte Initialisierungsvektor, RSA-verschlüsselt mit dem öffentlichen Schlüssel des Empfängers, und das Ergebnis base64url-kodiert

Grundlegendes Zot-Paket

Wird verwendet, um einen Dialog mit einer anderen Zot-Site einzuleiten. Dieses Paket KANN verschlüsselt sein. Das Vorhandensein eines Array-Elements 'iv' zeigt an, dass eine Verschlüsselung vorgenommen wurde. Beim Senden eines 'auth_check'-Pakets MUSS dieses Paket verschlüsselt werden, wobei der öffentliche Schlüssel der Zielsite (der Site-Schlüssel, im Gegensatz zu einem Absenderschlüssel) verwendet wird.

    {
      "type":"notify",
      "sender":{
        "guid":"kgVFf_1_SSbyqH-BNWjWuhAvJ2EhQBTUdw-Q1LwwssAntr8KTBgBSzNVzUm9_RwuDpxI6X8me_QQhZMf7RfjdA",
        "guid_sig":"PT9-TApzpm7QtMxC63MjtdK2nUyxNI0tUoWlOYTFGke3kNdtxSzSvDV4uzq_7SSBtlrNnVMAFx2_1FDgyKawmqVtRPmT7QSXrKOL2oPzL8Hu_nnVVTs_0YOLQJJ0GYACOOK-R5874WuXLEept5-KYg0uShifsvhHnxnPIlDM9lWuZ1hSJTrk3NN9Ds6AKpyNRqf3DUdz81-Xvs8I2kj6y5vfFtm-FPKAqu77XP05r74vGaWbqb1r8zpWC7zxXakVVOHHC4plG6rLINjQzvdSFKCQb5R_xtGsPPfvuE24bv4fvN4ZG2ILvb6X4Dly37WW_HXBqBnUs24mngoTxFaPgNmz1nDQNYQu91-ekX4-BNaovjDx4tP379qIG3-NygHTjFoOMDVUvs-pOPi1kfaoMjmYF2mdZAmVYS2nNLWxbeUymkHXF8lT_iVsJSzyaRFJS1Iqn7zbvwH1iUBjD_pB9EmtNmnUraKrCU9eHES27xTwD-yaaH_GHNc1XwXNbhWJaPFAm35U8ki1Le4WbUVRluFx0qwVqlEF3ieGO84PMidrp51FPm83B_oGt80xpvf6P8Ht5WvVpytjMU8UG7-js8hAzWQeYiK05YTXk-78xg0AO6NoNe_RSRk05zYpF6KlA2yQ_My79rZBv9GFt4kUfIxNjd9OiV1wXdidO7Iaq_Q",
        "url":"http:\/\/podunk.edu",
        "url_sig":"T8Bp7j5DHHhQDCFcAHXfuhUfGk2P3inPbImwaXXF1xJd3TGgluoXyyKDx6WDm07x0hqbupoAoZB1qBP3_WfvWiJVAK4N1FD77EOYttUEHZ7L43xy5PCpojJQmkppGbPJc2jnTIc_F1vvGvw5fv8gBWZvPqTdb6LWF6FLrzwesZpi7j2rsioZ3wyUkqb5TDZaNNeWQrIEYXrEnWkRI_qTSOzx0dRTsGO6SpU1fPWuOOYMZG8Nh18nay0kLpxReuHCiCdxjXRVvk5k9rkcMbDBJcBovhiSioPKv_yJxcZVBATw3z3TTE95kGi4wxCEenxwhSpvouwa5b0hT7NS4Ay70QaxoKiLb3ZjhZaUUn4igCyZM0h6fllR5I6J_sAQxiMYD0v5ouIlb0u8YVMni93j3zlqMWdDUZ4WgTI7NNbo8ug9NQDHd92TPmSE1TytPTgya3tsFMzwyq0LZ0b-g-zSXWIES__jKQ7vAtIs9EwlPxqJXEDDniZ2AJ6biXRYgE2Kd6W_nmI7w31igwQTms3ecXe5ENI3ckEPUAq__llNnND7mxp5ZrdXzd5HHU9slXwDShYcW3yDeQLEwAVomTGSFpBrCX8W77n9hF3JClkWaeS4QcZ3xUtsSS81yLrp__ifFfQqx9_Be89WVyIOoF4oydr08EkZ8zwlAsbZLG7eLXY"
        "sitekey":"-----BEGIN PUBLIC KEY-----
MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxTeIwXZWrw/S+Ju6gewh
LgkKnNNe2uCUqCqMZoYgJar3T5sHCDhvXc4dDCbDkxVIaA/+V1mURtBV60a3IGjn
OAO0W0XGGLe2ED7G5o9U8T9mVGq8Mauv0v1oQ5wIR1gEAhBavkQ2OUGuF/YKn2nj
HlKsv9HzUAHpcDMUe3Uklc2RhQbMcnJxEgkyjCkDyrTtCZzISkTAocHvpCG1KSog
njUZdiz9UWxvM4rCFkCJvQU4RwRZJb7GA9ul+9JrF7NvUQTx8csRP2weBk1E9yyj
wbe187E0eVj9RXX2Mx3mYhgrTdodxLOVMSXZLg1/SMpeFFl7QBhuM0SiOPg8a7Et
e2iNA/RD4WiUFqCDfafasRa1TOozOm7LA+08lkAh5PeQPJsJbrX0wVVft++Y+5/z
BvcUOP73vcbz7j5hJ7HLsbQtye/UUCfODBFybuDqRM84Aet8rjZohX7vukXdMD4I
2HuB7pjR4uIfyYr0J63ANkvbsn8LR+RnirmHrK5H/OgxxjXcfYbGEQgFxvxhF6lA
FpMu6Do4dx3CIb6pRmZ8bjSImXexJ0BSo9n3gtrz0XYLecsYFlQ9+QQjm83qxyLb
M23in0xqMVsyQvzjNkpImrO/QdbEFRIIMee83IHq+adbyjQR49Z2hNEIZhkLPc3U
2cJJ2HkzkOoF2K37qwIzk68CAwEAAQ==
-----END PUBLIC KEY-----
"
      },
      "recipients":{
         {
            "guid":"lql-1VnxtiO4-WF0h72wLX1Fu8szzHDOXgQaTbELwXW77k8AKFfh-hYr70vqMrc3SSvWN-Flrc5HFhRTWB7ICw",
            "guid_sig":"PafvEL0VpKfxATxlCqDjfOeSIMdmpr3iU7X-Sysa1h5LzDpjSXsjO37tYZL-accb1M5itLlfnW5epkTa5I4flsW21zSY1A2jCuBQUTLLGV7rNyyBy7lgqJUFvAMRx0TfXzP9lcaPqlM9T1tA6jfWOsOmkdzwofGeXBnsjGfjsO2xdGYe6vwjOU0DSavukvzDMnOayB9DekpvDnaNBTxeGLM45Skzr7ZEMcNF7TeXMbnvpfLaALYEKeQs9bGH-UgAG8fBWgzVAzeBfx_XSR1rdixjyiZGP0kq0h35SlmMPcEjliodOBFwMXqpXFB7Ibp4F6o6te2p2ErViJccQVG8VNKB6SbKNXY6bhP5zVcVsJ-vR-p4xXoYJJvzTN7yTDsGAXHOLF4ZrXbo5yi5gFAlIrTLAF2EdWQwxSGyLRWKxG8PrDkzEzX6cJJ0VRcLh5z6OI5QqQNdeghPZbshMFMJSc_ApCPi9_hI4ZfctCIOi3T6bdgTNKryLm5fhy_eqjwLAZTGP-aUBgLZpb1mf2UojBn6Ey9cCyq-0T2RWyk-FcIcbV4qJ-p_8oODqw13Qs5FYkjLr1bGBq82SuolkYrXEwQClxnrfKa4KYc2_eHAXPL01iS9zVnI1ySOCNJshB97Odpooc4wk7Nb2Fo-Q6THU9zuu0uK_-JbK7IIl6go2qA"
         },
      },
      "callback":"\/post",
      "version":"1.2",
      "encryption":{
        "aes256ctr"
      },
      "secret":"1eaa6613699be6ebb2adcefa5379c61a3678aa0df89025470fac871431b70467",
      "secret_sig":"0uShifsvhHnxnPIlDM9lWuZ1hSJTrk3NN9Ds6AKpyNRqf3DUdz81-Xvs8I2kj6y5vfFtm-FPKAqu77XP05r74vGaWbqb1r8zpWC7zxXakVVOHHC4plG6rLINjQzvdSFKCQb5R_xtGsPPfvuE24bv4fvN4ZG2ILvb6X4Dly37WW_HXBqBnUs24mngoTxFaPgNmz1nDQNYQu91-ekX4-BNaovjDx4tP379qIG3-NygHTjFoOMDVUvs-pOPi1kfaoMjmYF2mdZAmVYS2nNLWxbeUymkHXF8lT_iVsJSzyaRFJS1Iqn7zbvwH1iUBjD_pB9EmtNmnUraKrCU9eHES27xTwD-yaaH_GHNc1XwXNbhWJaPFAm35U8ki1Le4WbUVRluFx0qwVqlEF3ieGO84PMidrp51FPm83B_oGt80xpvf6P8Ht5WvVpytjMU8UG7-js8hAzWQeYiK05YTXk-78xg0AO6NoNe_RSRk05zYpF6KlA2yQ_My79rZBv9GFt4kUfIxNjd9OiV1wXdidO7Iaq_Q"
    }

type

Der Nachrichtentyp: notify, purge, refresh, force_refresh, auth_check, ping oder pickup. Der Inhalt der Pakete variiert je nach Nachrichtentyp. Hier wird das notify-Paket beschrieben.

callback

Eine Zeichenkette, die an die URL angehängt wird und den Zot-Kommunikationsendpunkt auf diesem System identifiziert. In der Regel ist dies die Zeichenfolge „/post“.

version

Die Kennung des Zot-Protokolls, damit künftige Protokollrevisionen nebeneinander bestehen können.

encryption

Array der unterstützten Verschlüsselungsalgorithmen, geordnet nach abnehmender Präferenz. Wenn keine kompatiblen Verschlüsselungsmethoden angegeben sind, MÜSSEN Anwendungen „aes256cbc“ verwenden.

secret

Eine 64-stellige Zeichenkette, die von der sendenden Seite zufällig generiert wird.

secret_sig

Die RSA-Signatur des Geheimnisses, signiert mit dem privaten Schlüssel des Absenders.

sender

Ein Array aus vier Komponenten, die eine tragbare Identität liefern. Wir können die angegebene URL kontaktieren und ein Zot-Infopaket herunterladen, um den öffentlichen Schlüssel des Absenders zu erhalten, und diesen zur Überprüfung der Absender-Guid und der Signaturen der Entsende-URL verwenden.

  • guid

    In der Regel eine 64 Zeichen lange base64url-kodierte Zeichenfolge. Sie wird erzeugt, wenn eine Identität erstellt wird, und es wird versucht, dass sie eindeutig ist; dies ist jedoch nicht erforderlich.

  • guid_sig

    Die RSA-Signatur der guid, signiert mit dem privaten Schlüssel des Absenders und base64url-kodiert.

  • url

    Die Basis-URL des Ortes, von dem dieser Beitrag stammt.

  • url_sig

    Die RSA-Signatur der url, signiert mit dem privaten Schlüssel des Absenders und base64url kodiert.

  • sitekey

    Der öffentliche Schlüssel der in der Url angegebenen Website

recipients

Wird nur für private Nachrichten verwendet. Ein Array von Umschlag-Empfängern. Jeder Empfänger wird durch ein Array aus guid und guid_sig dargestellt. Wenn Empfänger angegeben sind, wird das gesamte Paket auch mit einem ausgehandelten kryptografischen Algorithmus oder 'aes256cbc' gekapselt, wenn keiner ausgehandelt werden konnte.

  • guid

    Die guid eines privaten Empfängers.

  • guid_sig

    Die RSA-Signatur der guid, signiert mit dem privaten Schlüssel des Empfängers und base64url-kodiert

Zot API

Many existing social applications and tools can interface directly using the Twitter/StatusNet API, which is available using the 'twitter_api' addon.

This document describes the native API; which allows direct programmatic access to several internal data structures and libraries extending beyond the basic social interface.

The API endpoints detailed below are relative to api/z/1.0, meaning that if an API is listed as channel/stream the full API URL is https://hub.hubzilla.hu/api/z/1.0/channel/stream.

channel/export/basic

Export basic channel data

Options: - sections comma-separated list of data types to export

- posts if true, return default sections plus 3 months of posts

If no sections are requested, the following sections are returned: channel, connections, config, apps, chatrooms, events, webpages, mail, wikis

Files and large collections of posts may run into memory limits; these must generally be requested separately.

channel/stream

Fetch channel conversation items

network/stream

Fetch network conversation items

files

List file storage (attach DB)

GET /api/z/1.0/files

Options:

- filehash return only entries matching hash (exactly)

- filename return only entries matching filename (substring)

- filetype return only entries matching filetype/mimetype (substring)

- start start at record (default 0)

- records number of records to return or 0 for unlimited

Example:

curl -u mychannel:mypassword https://xyz.macgirvin.com/api/z/1.0/files -d filetype=multipart/mixed

Returns:

    {
    
        "success": true,
        "results": [
            {
                "id": "1",
                "aid": "1",
                "uid": "2",
                "hash": "44ee8b2a1a7f36dea07b93b7747a2383a1bc0fdd08339e8928bfcbe45f65d939",
                "filename": "Profile Photos",
                "filetype": "multipart/mixed",
                "filesize": "0",
                "revision": "0",
                "folder": "",
                "os_storage": "1",
                "is_dir": "1",
                "is_photo": "0",
                "flags": "0",
                "created": "2016-01-02 21:51:17",
                "edited": "2016-01-02 21:51:17",
                "allow_cid": "",
                "allow_gid": "",
                "deny_cid": "",
                "deny_gid": ""
            },
            {
                "id": "12",
                "aid": "1",
                "uid": "2",
                "hash": "71883f1fc64af33889229cbc79c5a056deeec5fc277d765f182f19073e1b2998",
                "filename": "Cover Photos",
                "filetype": "multipart/mixed",
                "filesize": "0",
                "revision": "0",
                "folder": "",
                "os_storage": "1",
                "is_dir": "1",
                "is_photo": "0",
                "flags": "0",
                "created": "2016-01-15 00:24:33",
                "edited": "2016-01-15 00:24:33",
                "allow_cid": "",
                "allow_gid": "",
                "deny_cid": "",
                "deny_gid": ""
            },
            {
                "id": "16",
                "aid": "1",
                "uid": "2",
                "hash": "f48f7ec3278499d1dd86b72c3207beaaf4717b07df5cc9b373f14d7aad2e1bcd",
                "filename": "2016-01",
                "filetype": "multipart/mixed",
                "filesize": "0",
                "revision": "0",
                "folder": "",
                "os_storage": "1",
                "is_dir": "1",
                "is_photo": "0",
                "flags": "0",
                "created": "2016-01-22 03:24:55",
                "edited": "2016-01-22 03:26:57",
                "allow_cid": "",
                "allow_gid": "",
                "deny_cid": "",
                "deny_gid": ""
            }
        ]
    }

filemeta

Export file metadata for any uploaded file

filedata

Provides the ability to download a file from cloud storage in chunks

GET /api/z/1.0/filedata

Required:

- file_id attach.hash of desired file ('begins with' match)

Optional:

- start starting byte of returned data in file (counting from 0)

- length length (prior to base64 encoding) of chunk to download

Returns:

attach (DB) structure with base64 encoded 'content' comprised of the desired chunk

Example:

https://xyz.macgirvin.com/api/z/1.0/filedata?f=&file_id=9f5217770fd&start=0&length=48

Returns:

    {
    
        "attach": {
            "id": "107",
            "aid": "1",
            "uid": "2",
            "hash": "9f5217770fd55d563bd77f84d534d8e119a187514bbd391714626cd9c0e60207",
            "creator": "pgcJx1IQjuPkx8aI9qheJlBMZzJz-oTPjHy3h5pWlOVOriBO_cSiUhhqwhuZ74TYJ8_ECO3pPiRMWC0q8YPCQg",
            "filename": "pcxtopbm.c",
            "filetype": "application/octet-stream",
            "filesize": "3934",
            "revision": "0",
            "folder": "",
            "flags": "0",
            "is_dir": "0",
            "is_photo": "0",
            "os_storage": "1",
            "os_path": "",
            "display_path": "",
            "content": "LyogcGN4dG9wYm0uYyAtIGNvbnZlcnQgUEMgcGFpbnRicnVzaCAoLnBjeCkgZmls",
            "created": "2016-07-24 23:13:01",
            "edited": "2016-07-24 23:13:01",
            "allow_cid": "",
            "allow_gid": "",
            "deny_cid": "",
            "deny_gid": "",
            "start": 0,
            "length": 48
        }
    
    }

file/export

file

albums

Description: list photo albums

GET /api/z/1.0/albums

Output:

text - textual name

total - number of photos in this album

url - web URL

urlencode - textual name, urlencoded

bin2hex - textual name using bin2hex (which is used in the web URL link)

Example:

    {
    
        "success": true,
        "albums": [
            {
                "text": "/",
                "total": "2",
                "url": "https://xyz.macgirvin.com/photos/hubzilla/album/",
                "urlencode": "",
                "bin2hex": ""
            },
                {
                "text": "2016-01",
                "total": "6",
                "url": "https://xyz.macgirvin.com/photos/hubzilla/album/323031362d3031",
                "urlencode": "2016-01",
                "bin2hex": "323031362d3031"
            },
            {
                "text": "2016-02",
                "total": "7",
                "url": "https://xyz.macgirvin.com/photos/hubzilla/album/323031362d3032",
                "urlencode": "2016-02",
                "bin2hex": "323031362d3032"
            },
            {
                "text": "Cover Photos",
                "total": "5",
                "url": "https://xyz.macgirvin.com/photos/hubzilla/album/436f7665722050686f746f73",
                "urlencode": "Cover+Photos",
                "bin2hex": "436f7665722050686f746f73"
            },
            {
                "text": "Profile Photos",
                "total": "26",
                "url": "https://xyz.macgirvin.com/photos/hubzilla/album/50726f66696c652050686f746f73",
                "urlencode": "Profile+Photos",
                "bin2hex": "50726f66696c652050686f746f73"
            }
        ]
    
    }

photos

list photo metadata

photo

group

GET /api/z/1.0/group

Description: list privacy groups

Returns: DB tables of all privacy groups.

To use with API group_members, provide either 'group_id' from the id element returned in this call, or 'group_name' from the gname returned in this call.

    [
    
        {
            "id": "1",
            "hash": "966c946394f3e2627bbb8a55026b5725e582407098415c02f85232de3f3fde76Friends",
            "uid": "2",
            "visible": "0",
            "deleted": "0",
            "gname": "Friends"
        },
        {
            "id": "2",
            "hash": "852ebc17f8c3ed4866f2162e384ded0f9b9d1048f93822c0c84196745f6eec66Family",
            "uid": "2",
            "visible": "1",
            "deleted": "0",
            "gname": "Family"
        },
        {
            "id": "3",
            "hash": "cc3cb5a7f9818effd7c7c80a58b09a189b62efa698a74319117babe33ee30ab9Co-workers",
            "uid": "2",
            "visible": "0",
            "deleted": "0",
            "gname": "Co-workers"
        }
    ]

group_members

GET /api/z/1.0/group_members

Required:

group_id or group_name

Returns:

group_member+abook+xchan (DB join) for each member of the privacy group

    [
    
        {
            "id": "1",
            "uid": "2",
            "gid": "1",
            "xchan": "pgcJx1IQjuPkx8aI9qheJlBMZzJz-oTPjHy3h5pWlOVOriBO_cSiUhhqwhuZ74TYJ8_ECO3pPiRMWC0q8YPCQg",
            "abook_id": "2",
            "abook_account": "1",
            "abook_channel": "2",
            "abook_xchan": "pgcJx1IQjuPkx8aI9qheJlBMZzJz-oTPjHy3h5pWlOVOriBO_cSiUhhqwhuZ74TYJ8_ECO3pPiRMWC0q8YPCQg",
            "abook_my_perms": "218555",
            "abook_their_perms": "0",
            "abook_closeness": "0",
            "abook_created": "2016-01-02 21:16:26",
            "abook_updated": "2016-01-02 21:16:26",
            "abook_connected": "0000-00-00 00:00:00",
            "abook_dob": "0000-00-00 00:00:00",
            "abook_flags": "0",
            "abook_blocked": "0",
            "abook_ignored": "0",
            "abook_hidden": "0",
            "abook_archived": "0",
            "abook_pending": "0",
            "abook_unconnected": "0",
            "abook_self": "1",
            "abook_feed": "0",
            "abook_profile": "",
            "abook_incl": "",
            "abook_excl": "",
            "abook_instance": "",
            "xchan_hash": "pgcJx1IQjuPkx8aI9qheJlBMZzJz-oTPjHy3h5pWlOVOriBO_cSiUhhqwhuZ74TYJ8_ECO3pPiRMWC0q8YPCQg",
            "xchan_guid": "lql-1VnxtiO4-WF0h72wLX1Fu8szzHDOXgQaTbELwXW77k8AKFfh-hYr70vqMrc3SSvWN-Flrc5HFhRTWB7ICw",
            "xchan_guid_sig": "PafvEL0VpKfxATxlCqDjfOeSIMdmpr3iU7X-Sysa1h5LzDpjSXsjO37tYZL-accb1M5itLlfnW5epkTa5I4flsW21zSY1A2jCuBQUTLLGV7rNyyBy7lgqJUFvAMRx0TfXzP9lcaPqlM9T1tA6jfWOsOmkdzwofGeXBnsjGfjsO2xdGYe6vwjOU0DSavukvzDMnOayB9DekpvDnaNBTxeGLM45Skzr7ZEMcNF7TeXMbnvpfLaALYEKeQs9bGH-UgAG8fBWgzVAzeBfx_XSR1rdixjyiZGP0kq0h35SlmMPcEjliodOBFwMXqpXFB7Ibp4F6o6te2p2ErViJccQVG8VNKB6SbKNXY6bhP5zVcVsJ-vR-p4xXoYJJvzTN7yTDsGAXHOLF4ZrXbo5yi5gFAlIrTLAF2EdWQwxSGyLRWKxG8PrDkzEzX6cJJ0VRcLh5z6OI5QqQNdeghPZbshMFMJSc_ApCPi9_hI4ZfctCIOi3T6bdgTNKryLm5fhy_eqjwLAZTGP-aUBgLZpb1mf2UojBn6Ey9cCyq-0T2RWyk-FcIcbV4qJ-p_8oODqw13Qs5FYkjLr1bGBq82SuolkYrXEwQClxnrfKa4KYc2_eHAXPL01iS9zVnI1ySOCNJshB97Odpooc4wk7Nb2Fo-Q6THU9zuu0uK_-JbK7IIl6go2qA",
            "xchan_pubkey": "-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA18JB76lyP4zzL/y7BCej\neJnfZIWZNtM3MZvI1zEVMWmmwOS+u/yH8oPwyaDk4Y/tnj8GzMPj1lCGVRcd8EJa\nNrCMd50HODA5EsJtxpsOzRcILYjOcTtIAG1K4LtKqELi9ICAaFp0fNfa+Jf0eCek\nvPusx2/ORhy+o23hFoSMhL86o2gmaiRnmnA3Vz4ZMG92ieJEDMXt9IA1EkIqS4y5\nBPZfVPLD1pv8iivj+dtN1XjwplgjUbtxmU0/Ej808nHppscRIqx/XJ0XZU90oNGw\n/wYoK2EzJlPbRsAkwNqoFrAYlr5HPpn4BJ2ebFYQgWBUraD7HwS5atsQEaxGfO21\nlUP0+lDg9t3CXvudDj0UG1jiEKbVIGA+4aG0GN2DSC5AyRq/GRxqyay5W2vQbAZH\nyvxPGrZFO24I65g3pjhpjEsLqZ4ilTLQoLMs0drCIcRm5RxMUo4s/LMg16lT4cEk\n1qRtk2X0Sb1AMQQ2uRXiVtWz77QHMONEYkf6OW4SHbwcv5umvlv69NYEGfCcbgq0\nAV7U4/BWztUz/SWj4r194CG43I9I8dmaEx9CFA/XMePIAXQUuABfe1QMOR6IxLpq\nTHG1peZgHQKeGz4aSGrhQkZNNoOVNaZoIfcvopxcHDTZLigseEIaPPha4WFYoKPi\nUPbZ5o8gTLc750uzrnb2jwcCAwEAAQ==\n-----END PUBLIC KEY-----\n",
            "xchan_photo_mimetype": "image/png",
            "xchan_photo_l": "https://xyz.macgirvin.com/photo/profile/l/2",
            "xchan_photo_m": "https://xyz.macgirvin.com/photo/profile/m/2",
            "xchan_photo_s": "https://xyz.macgirvin.com/photo/profile/s/2",
            "xchan_addr": "teller@xyz.macgirvin.com",
            "xchan_url": "https://xyz.macgirvin.com/channel/teller",
            "xchan_connurl": "https://xyz.macgirvin.com/poco/teller",
            "xchan_follow": "https://xyz.macgirvin.com/follow?f=&url=%s",
            "xchan_connpage": "",
            "xchan_name": "Teller",
            "xchan_network": "zot",
            "xchan_instance_url": "",
            "xchan_flags": "0",
            "xchan_photo_date": "2016-10-19 01:26:50",
            "xchan_name_date": "2016-01-02 21:16:26",
            "xchan_hidden": "0",
            "xchan_orphan": "0",
            "xchan_censored": "0",
            "xchan_selfcensored": "0",
            "xchan_system": "0",
            "xchan_pubforum": "0",
            "xchan_deleted": "0"
        },
        {
            "id": "12",
            "uid": "2",
            "gid": "1",
            "xchan": "xuSMUYxw1djBB97qXsbrBN1nzJH_gFwQL6pS4zIy8fuusOfBxNlMiVb4h_q5tOEvpE7tYf1EsryjNciMuPIj5w",
            "abook_id": "24",
            "abook_account": "1",
            "abook_channel": "2",
            "abook_xchan": "xuSMUYxw1djBB97qXsbrBN1nzJH_gFwQL6pS4zIy8fuusOfBxNlMiVb4h_q5tOEvpE7tYf1EsryjNciMuPIj5w",
            "abook_my_perms": "218555",
            "abook_their_perms": "218555",
            "abook_closeness": "80",
            "abook_created": "2016-01-27 00:48:43",
            "abook_updated": "2016-12-04 17:16:58",
            "abook_connected": "2016-12-04 17:16:58",
            "abook_dob": "0001-01-01 00:00:00",
            "abook_flags": "0",
            "abook_blocked": "0",
            "abook_ignored": "0",
            "abook_hidden": "0",
            "abook_archived": "0",
            "abook_pending": "0",
            "abook_unconnected": "0",
            "abook_self": "0",
            "abook_feed": "0",
            "abook_profile": "debb5236efb1626cfbad33ccb49892801e5f844aa04bf81f580cfa7d13204819",
            "abook_incl": "",
            "abook_excl": "",
            "abook_instance": "",
            "xchan_hash": "xuSMUYxw1djBB97qXsbrBN1nzJH_gFwQL6pS4zIy8fuusOfBxNlMiVb4h_q5tOEvpE7tYf1EsryjNciMuPIj5w",
            "xchan_guid": "d5EMLlt1tHHZ0dANoA7B5Wq9UgXoWcFS9-gXOkL_AAejcPApoQRyxfHTuu8DoTbUaO-bYmX5HPuWuK9PHyqNmA",
            "xchan_guid_sig": "CVWEMRPtzI1YcHfnnWHTuv3H964OAmSElgUfxMoX6RdQdxNpqb_POirpVuyP8s3W17mVCfO5V9IAjkg5iKcqCk6YcvOD_egmMy-AnM9TC1kKndQHw55CunD82Q8K_xBNSXkSROizcNkKh9DVLjJPFjW1AqtI4njkZ3EMgrWqnbFRM1qPToUoCY9zM3tEMHoAD9YX1zP90wl40LzfN-dtcNWpSBbiz9owou62uzLbN7mrCwKOMlXLjwwGswRnxIsEnb3O-FXOs8hs0mArKe9snq1-BKeD16LyzxgwlpVLElzIJZGEZGtMdIJgeRzKuBvPjsOIpQ1yAkuOpFJ3nGCM-IPOIIjAmyVl5zD3xPVcxxpZlJRn5fG1Y-gnqTgsrEQCA7M6XPWQdrdHU4akZfyUyFJDhv3uM-jon9VzrYTBw68R0WA-1Z8WafEHA4qh5OWAj85lUarwhr7iTiEckH51ypPCPs6VbT6Pw7yMaxfjFOcipashQagx0tfOlDhE5dQANOXKASFtH1J9-CZY2MQdLPQ6u54d5whuHKMGaJ0V68pnmZ2rOn7g344Ah2WCJrm17jj60QsRMorqRFj7GMdPIA1XB8Wrk88MuYOe3Dhyuu6ZWKI7YTWJS690ZVkKUqAiNHqj0W86DtaiPUc_mmGR0fHl4Gksnko3WmCFv9q2X2E",
            "xchan_pubkey": "-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAoj2xCJktBA8Ww7Hp+ZNL\nrNuQpo8UB/bfvRkIy+yua3xpF1TuXcnAH61kyRz8vXgOu/l2CyxQbIoaGslCV5Sy\n8JKeNXe+IilUdSSEjMIwCPfSPsYnMHsSnHWmPmclvJwEtQUKOZmW5mMuVBvXy7D2\njomFwc69AYphdyys6eQ7Dcn6+FRBiQbyMprZ5lxyVW+O4DuXVNa3ej2ebx0gCJZ4\ntTIlBoKwEey91dY+FyKVFjdwfNczpmL7LgmZXqcVx+MG3mYgibwdVMiXVj5X06cs\nV9hJ5Xi+Aklsv/UWJtjw9FVt7y9TLptnhh4Ra6T/MDmnBBIAkOR7P/X8cRv078MT\nl0IMsP0RJcDEtTLtwHFVtDs6p52KDFqclKWbqmxmxqV3OTPVYtArRGIzgnJi/5ur\nHRr5G6Cif7QY3UowsIOf78Qvy28LwSbdymgBAWwPPKIviXWxGO+9kMWdmPSUQrWy\nK0+7YA9P9fBUFfn9Hc+p8SJQmQ6OAqLwrDGiPSOlGaNrbEqwqLGgIpXwK+lEFcFJ\n3SPOjJRWdR2whlMxvpwX+39+H7dWN3vSa3Al4/Sq7qW8yW2rYwf+eGyp4Z0lRR+8\nJxFMCwZkSw5g14YdlikAPojv5V1c6KuA5ieg8G1hwyONV7A4JHPyEdPt0W0TZi6C\nCOVkPaC3xGrguETZpJfVpwUCAwEAAQ==\n-----END PUBLIC KEY-----\n",
            "xchan_photo_mimetype": "image/png",
            "xchan_photo_l": "https://xyz.macgirvin.com/photo/9da63aa910ea14e1501ee1a749d181a6-4",
            "xchan_photo_m": "https://xyz.macgirvin.com/photo/9da63aa910ea14e1501ee1a749d181a6-5",
            "xchan_photo_s": "https://xyz.macgirvin.com/photo/9da63aa910ea14e1501ee1a749d181a6-6",
            "xchan_addr": "cloner@xyz.macgirvin.com",
            "xchan_url": "http://abc.macgirvin.com/channel/cloner",
            "xchan_connurl": "http://abc.macgirvin.com/poco/cloner",
            "xchan_follow": "https://xyz.macgirvin.com/follow?f=&url=%s",
            "xchan_connpage": "",
            "xchan_name": "Karen",
            "xchan_network": "zot",
            "xchan_instance_url": "",
            "xchan_flags": "0",
            "xchan_photo_date": "2016-03-31 19:59:20",
            "xchan_name_date": "2016-01-26 23:23:42",
            "xchan_hidden": "0",
            "xchan_orphan": "0",
            "xchan_censored": "0",
            "xchan_selfcensored": "0",
            "xchan_system": "0",
            "xchan_pubforum": "0",
            "xchan_deleted": "0"
        }

    ]

xchan

An xchan is a global location independent channel and is the primary record for a network identity. It may refer to channels on other websites, networks, or services.

GET /api/z/1.0/xchan

Required: one of [ address, hash, guid ] as GET parameters

Returns a portable xchan structure

Example: https://xyz.macgirvin.com/api/z/1.0/xchan?f=&address=mike@macgirvin.com

Returns:

    {
        "hash": "jr54M_y2l5NgHX5wBvP0KqWcAHuW23p1ld-6Vn63_pGTZklrI36LF8vUHMSKJMD8xzzkz7s2xxCx4-BOLNPaVA",
        "guid": "sebQ-IC4rmFn9d9iu17m4BXO-kHuNutWo2ySjeV2SIW1LzksUkss12xVo3m3fykYxN5HMcc7gUZVYv26asx-Pg",
        "guid_sig": "Llenlbl4zHo6-g4sa63MlQmTP5dRCrsPmXHHFmoCHG63BLq5CUZJRLS1vRrrr_MNxr7zob_Ykt_m5xPKe5H0_i4pDj-UdP8dPZqH2fqhhx00kuYL4YUMJ8gRr5eO17vsZQ3XxTcyKewtgeW0j7ytwMp6-hFVUx_Cq08MrXas429ZrjzaEwgTfxGnbgeQYQ0R5EXpHpEmoERnZx77VaEahftmdjAUx9R4YKAp13pGYadJOX5xnLfqofHQD8DyRHWeMJ4G1OfWPSOlXfRayrV_jhnFlZjMU7vOdQwHoCMoR5TFsRsHuzd-qepbvo3pzvQZRWnTNu6oPucgbf94p13QbalYRpBXKOxdTXJrGdESNhGvhtaZnpT9c1QVqC46jdfP0LOX2xrVdbvvG2JMWFv7XJUVjLSk_yjzY6or2VD4V6ztYcjpCi9d_WoNHruoxro_br1YO3KatySxJs-LQ7SOkQI60FpysfbphNyvYMkotwUFI59G08IGKTMu3-GPnV1wp7NOQD1yzJbGGEGSEEysmEP0SO9vnN45kp3MiqbffBGc1r4_YM4e7DPmqOGM94qksOcLOJk1HNESw2dQYWxWQTBXPfOJT6jW9_crGLMEOsZ3Jcss0XS9KzBUA2p_9osvvhUKuKXbNztqH0oZIWlg37FEVsDs_hUwUJpv2Ar09k4",
        "pubkey": "-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA7QCwvuEIwCHjhjbpz3Oc\ntyei/Pz9nDksNbsc44Cm8jxYGMXsTPFXDZYCcCB5rcAhPPdZSlzaPkv4vPVcMIrw\n5cdX0tvbwa3rNTng6uFE7qkt15D3YCTkwF0Y9FVZiZ2Ko+G23QeBt9wqb9dlDN1d\nuPmu9BLYXIT/JXoBwf0vjIPFM9WBi5W/EHGaiuqw7lt0qI7zDGw77yO5yehKE4cu\n7dt3SakrXphL70LGiZh2XGoLg9Gmpz98t+gvPAUEotAJxIUqnoiTA8jlxoiQjeRK\nHlJkwMOGmRNPS33awPos0kcSxAywuBbh2X3aSqUMjcbE4cGJ++/13zoa6RUZRObC\nZnaLYJxqYBh13/N8SfH7d005hecDxWnoYXeYuuMeT3a2hV0J84ztkJX5OoxIwk7S\nWmvBq4+m66usn6LNL+p5IAcs93KbvOxxrjtQrzohBXc6+elfLVSQ1Rr9g5xbgpub\npSc+hvzbB6p0tleDRzwAy9X16NI4DYiTj4nkmVjigNo9v2VPnAle5zSam86eiYLO\nt2u9YRqysMLPKevNdj3CIvst+BaGGQONlQalRdIcq8Lin+BhuX+1TBgqyav4XD9K\nd+JHMb1aBk/rFLI9/f2S3BJ1XqpbjXz7AbYlaCwKiJ836+HS8PmLKxwVOnpLMbfH\nPYM8k83Lip4bEKIyAuf02qkCAwEAAQ==\n-----END PUBLIC KEY-----\n",
        "photo_mimetype": "image/jpeg",
        "photo_l": "https://xyz.macgirvin.com/photo/350b74555c04429148f2e12775f6c403-4",
        "photo_m": "https://xyz.macgirvin.com/photo/350b74555c04429148f2e12775f6c403-5",
        "photo_s": "https://xyz.macgirvin.com/photo/350b74555c04429148f2e12775f6c403-6",
        "address": "mike@macgirvin.com",
        "url": "https://macgirvin.com/channel/mike",
        "connurl": "https://macgirvin.com/poco/mike",
        "follow": "https://macgirvin.com/follow?f=&url=%s",
        "connpage": "https://macgirvin.com/connect/mike",
        "name": "Mike Macgirvin",
        "network": "zot",
        "instance_url": "",
        "flags": "0",
        "photo_date": "2012-12-06 05:06:11",
        "name_date": "2012-12-06 04:59:13",
        "hidden": "1",
        "orphan": "0",
        "censored": "0",
        "selfcensored": "0",
        "system": "0",
        "pubforum": "0",
        "deleted": "0"
    }

item/update

Create or update an item (post, activity, webpage, etc.)

Usage: POST /api/z/1.0/item/update

Description: item/update posts an item (typically a conversation item or post, but can be any item) using form input.

Required:

- body

text/bbcode contents by default.

Optional:

- $_FILES['media']

uploaded media file to include with post

- title

title of post/item

- contact_allow

array of xchan.xchan_hash allowed to view this item

- group_allow

array of group.hash allowed to view this item

- contact_deny

array of xchan.xchan_hash not allowed to view this item

- group_deny

array of group.hash not allowed to view this item

- coord

geographic coordinates

- location

freefrom location

- expire

datetime this post will expire or be removed

- mimetype

mimetype if not text/bbcode

- parent

item.id of parent to this post (makes it a comment)

- parent_mid

alternate form of parent using message_id

- remote_xchan

xchan.xchan_hash of this message author if not the channel owner

- consensus

boolean set to true if this is a consensus or voting item (default false)

- nocomment

boolean set to true if comments are to be disabled (default false)

- origin

do not use this without reading the code

- namespace

persistent identity for a remote network or service

- remote_id

message_id of this resource on a remote network or service

- message_id

message_id of this item (leave unset to generate one)

- created

datetime of message creation

- post_id

existing item.id if this is an edit operation

- app

application or network name to display with item

- category

comma separated categories for this item

- webpage

item.page_type if not 0

- pagetitle

for webpage and design elements, the 'page name'

- layout_mid

item.mid of layout for this design element

- plink

permalink for this item if different than the default

- verb

activitystream verb for this item/activity

- obj_type

activitystream object type for this item/activity

Example:

curl -u mychannel:mypassword https://xyz.macgirvin.com/api/z/1.0/item/update -d body="hello world"

Returns:

    {

        "success": true,
        "item_id": "2245",
        "item": {
            "id": "2245",
            "mid": "14135cdecf6b8e3891224e4391748722114da6668eebbcb56fe4667b60b88249@xyz.macgirvin.com",
            "aid": "1",
            "uid": "2",
            "parent": "2245",
            "parent_mid": "14135cdecf6b8e3891224e4391748722114da6668eebbcb56fe4667b60b88249@xyz.macgirvin.com",
            "thr_parent": "14135cdecf6b8e3891224e4391748722114da6668eebbcb56fe4667b60b88249@xyz.macgirvin.com",
            "created": "2016-12-03 20:00:12",
            "edited": "2016-12-03 20:00:12",
            "expires": "0001-01-01 00:00:00",
            "commented": "2016-12-03 20:00:12",
            "received": "2016-12-03 20:00:12",
            "changed": "2016-12-03 20:00:12",
            "comments_closed": "0001-01-01 00:00:00",
            "owner_xchan": "pgcJx1IQjuPkx8aI9qheJlBMZzJz-oTPjHy3h5pWlOVOriBO_cSiUhhqwhuZ74TYJ8_ECO3pPiRMWC0q8YPCQg",
            "author_xchan": "pgcJx1IQjuPkx8aI9qheJlBMZzJz-oTPjHy3h5pWlOVOriBO_cSiUhhqwhuZ74TYJ8_ECO3pPiRMWC0q8YPCQg",
            "source_xchan": "",
            "mimetype": "text/bbcode",
            "title": "",
            "body": "hello world",
            "html": "",
            "app": "",
            "lang": "",
            "revision": "0",
            "verb": "http://activitystrea.ms/schema/1.0/post",
            "obj_type": "http://activitystrea.ms/schema/1.0/note",
            "obj": "",
            "tgt_type": "",
            "target": "",
            "layout_mid": "",
            "postopts": "",
            "route": "",
            "llink": "https://xyz.macgirvin.com/display/14135cdecf6b8e3891224e4391748722114da6668eebbcb56fe4667b60b88249@xyz.macgirvin.com",
            "plink": "https://xyz.macgirvin.com/channel/mychannel/?f=&mid=14135cdecf6b8e3891224e4391748722114da6668eebbcb56fe4667b60b88249@xyz.macgirvin.com",
            "resource_id": "",
            "resource_type": "",
            "attach": "",
            "sig": "sa4TOQNfHtV13HDZ1tuQGWNBpZp-nWhT2GMrZEmelXxa_IvEepD2SEsCTWOBqM8OKPJLfNy8_i-ORXjrOIIgAa_aT8cw5vka7Q0C8L9eEb_LegwQ_BtH0CXO5uT30e_8uowkwzh6kmlVg1ntD8QqrGgD5jTET_fMQOIw4gQUBh40GDG9RB4QnPp_MKsgemGrADnRk2vHO7-bR32yQ0JI-8G-eyeqGaaJmIwkHoi0vXsfjZtU7ijSLuKEBWboNjKEDU89-vQ1c5Kh1r0pmjiDk-a5JzZTYShpuhVA-vQgEcADA7wkf4lJZCYNwu3FRwHTvhSMdF0nmyv3aPFglQDky38-SAXZyQSvd7qlABHGCVVDmYrYaiq7Dh4rRENbAUf-UJFHPCVB7NRg34R8HIqmOKq1Su99bIWaoI2zuAQEVma9wLqMoFsluFhxX58KeVtlCZlro7tZ6z619-dthS_fwt0cL_2dZ3QwjG1P36Q4Y4KrCTpntn9ot5osh-HjVQ01h1I9yNCj6XPgYJ8Im3KT_G4hmMDFM7H9RUrYLl2o9XYyiS2nRrf4aJHa0UweBlAY4zcQG34bw2AMGCY53mwsSArf4Hs3rKu5GrGphuwYX0lHa7XEKMglwBWPWHI49q7-oNWr7aWwn1FnfaMfl4cQppCMtKESMNRKm_nb9Dsh5e0",
            "diaspora_meta": "",
            "location": "",
            "coord": "",
            "public_policy": "",
            "comment_policy": "contacts",
            "allow_cid": "",
            "allow_gid": "",
            "deny_cid": "",
            "deny_gid": "",
            "item_restrict": "0",
            "item_flags": "0",
            "item_private": "0",
            "item_origin": "1",
            "item_unseen": "0",
            "item_starred": "0",
            "item_uplink": "0",
            "item_consensus": "0",
            "item_wall": "1",
            "item_thread_top": "1",
            "item_notshown": "0",
            "item_nsfw": "0",
            "item_relay": "0",
            "item_mentionsme": "0",
            "item_nocomment": "0",
            "item_obscured": "0",
            "item_verified": "1",
            "item_retained": "0",
            "item_rss": "0",
            "item_deleted": "0",
            "item_type": "0",
            "item_hidden": "0",
            "item_unpublished": "0",
            "item_delayed": "0",
            "item_pending_remove": "0",
            "item_blocked": "0"
        }

    }

item/full

Get all data associated with an item

abook

Connections

abconfig

Connection metadata (such as permissions)

perm_allowed

Check a permission for a given xchan

Hooks

Hooks ermöglichen es Plugins/Addons, sich an vielen Stellen in den Code „einzuhaken“ und das Verhalten zu ändern oder anderweitig unabhängige Aktionen durchzuführen, wenn eine Aktivität stattfindet oder auf bestimmte Datenstrukturen zugegriffen wird. Es gibt viele Hooks, die es Ihnen ermöglichen, sich an fast jeder Stelle in die Software einzuklinken und etwas anderes zu tun als das, was standardmäßig vorgesehen ist. Diesen Hooks werden zwei Variablen übergeben. Die erste ist die App-Struktur, die Details über den gesamten Zustand der Seitenanforderung enthält, während wir die resultierende Seite aufbauen. Die zweite ist eindeutig für den spezifischen Hook, der aufgerufen wird, und liefert spezifische Details darüber, was in der Software zum Zeitpunkt des Aufrufs des Hooks passiert.

Erstellter Index aller Hooks und der Dateien, die sie aufrufen

module_mod_aftercontent Allgemeiner Hook für jedes Modul, ausgeführt nach mod_content(). Ersetzen Sie „module“ durch den Namen des Moduls, z. B. „photos_mod_aftercontent“.

module_mod_content Allgemeiner Hook für ein beliebiges Modul, wird vor mod_content() ausgeführt. Ersetzen Sie 'module' durch den Modulnamen, z. B. 'photos_mod_content'.

module_mod_init Allgemeiner Hook für ein beliebiges Modul, wird vor mod_init() ausgeführt. Ersetzen Sie 'module' durch den Modulnamen, z. B. 'photos_mod_init'.

module_mod_post Allgemeiner Hook für ein beliebiges Modul, der vor mod_post() ausgeführt wird. Ersetzen Sie 'module' durch den Namen des Moduls, z. B. 'photos_mod_post'.

about_hook Aufgerufen von der Seite siteinfo

accept_follow Wird aufgerufen, wenn eine Verbindung akzeptiert wird (Freundschaftsanfrage)

account_downgrade Wird aufgerufen, wenn ein Konto abgelaufen ist, was auf eine mögliche Herabstufung auf die Serviceklasse „basic“ hinweist

Konto_Einstellungen Wird bei der Erstellung des Formulars für die Kontoeinstellungen aufgerufen

account_settings_post Wird bei der Buchung aus dem Kontoeinstellungsformular aufgerufen

tätigkeit_filter Wird bei der Erstellung der Liste der Filter für die Netzwerkseite aufgerufen

activity_mapper Wird bei der Bestimmung der Vorgangsart für die Übertragung aufgerufen.

activity_decode_mapper Wird aufgerufen, wenn die Vorgangsart für die Übertragung bestimmt wird.

activity_obj_mapper Wird aufgerufen, wenn der Objekttyp für die Übertragung bestimmt wird.

activity_obj_decode_mapper Wird bei der Bestimmung des Objekttyps für die Übertragung aufgerufen.

activity_order Wird bei der Generierung der Liste der Bestelloptionen für die Netzseite aufgerufen

addon_app_installed_filter Wird aufgerufen, wenn festgestellt wird, ob eine addon_app installiert ist

activity_received Wird aufgerufen, wenn eine Aktivität (Beitrag, Kommentar, Like, etc.) von einer zot-Quelle empfangen wurde

admin_aside Wird aufgerufen, wenn das Seitenleisten-Widget der Verwaltungsseite erzeugt wird

affinity_labels Wird verwendet, um alternative Beschriftungen für den Affinitätsslider zu generieren.

api_perm_is_allowed Wird aufgerufen, wenn perm_is_allowed() von einem API-Aufruf ausgeführt wird.

app_destroy Wird aufgerufen, wenn eine App gelöscht wird.

app_installed_filter Wird aufgerufen, wenn festgestellt wird, ob eine App installiert ist

app_menu Wird bei der Erstellung des app_menu Dropdowns aufgerufen (kann veraltet sein)

attach_delete Wird aufgerufen, wenn Anhänge aus der Tabelle attach gelöscht werden

atom_author Wird aufgerufen, wenn ein Autor- oder Eigentümer-Element für einen Atom ActivityStream-Feed erzeugt wird

atom_entry Wird bei der Erzeugung jedes Eintrags eines Atom ActivityStreams Feeds aufgerufen

atom_feed Wird bei der Generierung eines Atom ActivityStreams Feeds aufgerufen

atom_feed_end Wird aufgerufen, wenn die Erzeugung eines Atom ActivityStreams Feeds abgeschlossen ist

attach_upload_file Wird beim Hochladen einer Datei aufgerufen

authentifizieren Kann alternative Authentifizierungsmechanismen bereitstellen

author_is_pmable Wird aus dem Aktionsmenü des Threads aufgerufen, um festzustellen, ob wir dem Verfasser des Beitrags eine private E-Mail schicken können

bb2diaspora Wird bei der Umwandlung von bbcode in Markdown aufgerufen

bbcode Wird am Ende der Konvertierung von bbcode in HTML aufgerufen

bbcode_filter Wird zu Beginn der Umwandlung von bbcode in HTML aufgerufen

bb_translate_video Wird aufgerufen, wenn eingebettete Dienste aus bbcode-Videoelementen extrahiert werden (wird selten verwendet)

build_pagehead Wird bei der Erstellung des HTML-Seitenkopfes aufgerufen

can_comment_on_post Wird aufgerufen, wenn entschieden wird, ob ein Kommentarfeld für einen Beitrag angezeigt werden soll oder nicht

change_channel Wird aufgerufen, wenn man sich bei einem Channel anmeldet (entweder während des Logins oder danach über den Channelmanager)

channel_remove Wird aufgerufen, wenn ein Channel entfernt wird

channel_links Wird bei der Generierung des Link: HTTP-Header für einen Kanal

channel_settings Wird aufgerufen, wenn die Seite mit den Channel-Einstellungen angezeigt wird

chat_message Wird aufgerufen, um eine Chat-Nachricht zu erstellen.

chat_post Wird aufgerufen, wenn eine Chat-Nachricht gepostet wurde.

check_account_email Überprüft die bei einer Kontoregistrierung angegebene E-Mail

check_account_invite Validierung eines Einladungscodes bei der Verwendung von Website-Einladungen

check_account_password Dient der Kontrolle von Kontopasswörtern (Mindestlänge, Einbeziehung von Zeichensätzen usw.)

check_channelallowed Wird verwendet, um die Sperrlisten für schwarze und weiße Kanäle außer Kraft zu setzen oder zu umgehen.

check_siteallowed Wird verwendet, um die schwarzen/weißen Sperrlisten für Websites außer Kraft zu setzen oder zu umgehen.

collect_public_recipients Wird verwendet, um eine Liste von Empfängern zu erstellen, an die eine öffentliche Nachricht gesendet werden soll.

comment_buttons Wird aufgerufen, wenn die Bearbeitungsschaltflächen für Kommentare angezeigt werden.

comments_are_now_closed Wird aufgerufen, wenn entschieden wird, ob ein Kommentarfeld für einen Beitrag angezeigt werden soll oder nicht

connect_premium Wird aufgerufen, wenn eine Verbindung zu einem Premium-Kanal hergestellt wird

connection_remove Wird aufgerufen, wenn eine Verbindung gelöscht/entfernt wird

connector_settings Wird aufgerufen, wenn die Seite mit den Features/Addon-Einstellungen aufgerufen wird

construct_page Allgemeiner Hook zur Bereitstellung von Inhalten für bestimmte Seitenbereiche. Wird aufgerufen, wenn die Comanche-Seite erstellt wird.

kontakt_block_ende Wird bei der Erstellung des „Connections“-Widgets in der Seitenleiste aufgerufen

kontakt_edit Wird bei der Bearbeitung einer Verbindung über connedit aufgerufen

kontakt_edit_post Wird aufgerufen, wenn ein Beitrag an connedit gesendet wird

Kontakt_Auswahl_Optionen Veraltet/unbenutzt

content_security_policy Wird vor der Ausgabe des Content-Security-Policy-Headers aufgerufen

conversation_start Wird zu Beginn des Renderns einer Konversation (Nachricht oder Nachrichtensammlung oder Stream) aufgerufen

cover_photo_content_end Wird aufgerufen, nachdem ein Titelbild hochgeladen wurde

create_identity Wird bei der Erstellung eines Channels aufgerufen

cron Wird aufgerufen, wenn eine geplante Aufgabe (Poller) ausgeführt wird

cron_daily Wird aufgerufen, wenn täglich geplante Aufgaben ausgeführt werden

cron_weekly Wird aufgerufen, wenn wöchentlich geplante Aufgaben ausgeführt werden

crypto_methods Wird aufgerufen, wenn eine Liste von Kryptoalgorithmen in der lokal bevorzugten Reihenfolge erstellt wird

daemon_addon Wird aufgerufen, wenn der erweiterbare Hintergrund-Daemon aufgerufen wird

daemon_master_release Wird zu Beginn der Verarbeitung von \Zotlabs\Daemon\Master::Release() aufgerufen

directory_item Wird beim Erzeugen einer Verzeichnisliste für die Anzeige aufgerufen

discover_channel_webfinger Wird aufgerufen, wenn ein Webfinger-Lookup durchgeführt wird

display_item Wird für jedes Element aufgerufen, das in einem Gesprächsfaden angezeigt wird

display_settings Wird vom Einstellungsmodul aufgerufen, wenn der Abschnitt 'Anzeigeeinstellungen' angezeigt wird

display_settings_post Wird aufgerufen, wenn ein Beitrag aus dem Formular „Einstellungen anzeigen“ des Einstellungsmoduls angezeigt wird

donate_contributors Wird vom 'donate'-Addon aufgerufen, wenn eine Liste von Spendenempfängern erstellt wird

donate_plugin wird vom 'donate'-Addon aufgerufen

donate_sponsoren aufgerufen durch das 'donate'-Addon

dreport_ist_storable wird vor dem Speichern eines Dreport-Datensatzes aufgerufen, um festzustellen, ob er gespeichert werden soll

dreport_process wird für jeden gültigen Lieferbericht aufgerufen

dropdown_extras Hinzufügen zusätzlicher Elemente zum Dropdown-Menü, wenn Element/Threads angezeigt werden.

drop_item wird aufgerufen, wenn ein 'item' entfernt wird

encode_object wird aufgerufen, wenn ein Objekt für die Übertragung kodiert wird.

enotify wird vor jeder Benachrichtigung aufgerufen

enotify_mail wird aufgerufen, wenn eine Benachrichtigungs-E-Mail gesendet wird

enotify_store wird beim Speichern eines Benachrichtigungsdatensatzes aufgerufen

enotify_store_end wird aufgerufen, nachdem ein Benachrichtigungsdatensatz gespeichert wurde

event_created wird aufgerufen, wenn ein Ereignisdatensatz erstellt wird

event_store_event wird aufgerufen, wenn ein Ereignisdatensatz erstellt oder aktualisiert wird

event_updated wird aufgerufen, wenn ein Ereignisdatensatz geändert wird

externals_url_select wird aufgerufen, wenn eine Liste mit zufälligen Websites erstellt wird, von denen öffentliche Beiträge abgerufen werden sollen

feature_enabled wird aufgerufen, wenn 'feature_enabled()' verwendet wird

merkmal_settings wird von der Einstellungsseite aufgerufen, wenn man 'addon/feature settings' besucht

feature_settings_post wird von der Einstellungsseite aufgerufen, wenn von 'addon/feature settings' aus gepostet wird

fetch_and_store wird aufgerufen, um das Filtern von 'entschlüsselten' Elementen vor der Speicherung zu ermöglichen.

file_thumbnail wird aufgerufen, wenn Miniaturbilder für die Wolkenseite im Modus „Kacheln anzeigen“ erzeugt werden

folgen wird aufgerufen, wenn eine Follow-Operation stattfindet

follow_from_feed wird aufgerufen, wenn eine Follow-Operation in einem RSS-Feed stattfindet

follow_allow wird aufgerufen, bevor die Ergebnisse einer Follow-Operation gespeichert werden

gender_selector wird bei der Erstellung der Dropdown-Liste „Geschlecht“ aufgerufen (erweitertes Profil)

gender_selector_min wird bei der Erstellung der Dropdown-Liste „Geschlecht“ aufgerufen (normales Profil)

generate_map wird aufgerufen, um den HTML-Code für die Anzeige eines Orts auf der Karte nach Koordinaten zu erzeugen

generate_named_map wird aufgerufen, um die HTML-Datei für die Anzeige eines Kartenorts anhand eines Textes zu erzeugen

get_all_api_perms Wird aufgerufen, wenn die Berechtigungen für API-Verwendungen abgerufen werden

get_all_perms wird aufgerufen, wenn get_all_perms() verwendet wird

get_best_language wird aufgerufen, wenn die bevorzugte Sprache für die Seite ausgewählt wird

get_default_export_sections Wird aufgerufen, um die Standardliste der zu exportierenden Funktionsdatengruppen in identity_basic_export() zu erhalten

get_features Wird aufgerufen, wenn get_features() aufgerufen wird

get_photo Wird aufgerufen, wenn Fotoinhalte (außer Profilfotos) in mod_photo abgerufen werden

get_profile_photo Wird aufgerufen, wenn der Inhalt des lokalen Profilfotos in mod_photo abgerufen wird

get_role_perms Wird aufgerufen, wenn get_role_perms() aufgerufen wird, um Berechtigungen für benannte Berechtigungsrollen zu erhalten

global_permissions Wird aufgerufen, wenn die globale Berechtigungsliste erstellt wird

home_content Wird von mod_home aufgerufen, um den Inhalt der Home-Seite zu ersetzen

home_init Wird von der Funktion home_init() der Homepage aufgerufen

hostxrd Wird bei der Erzeugung von .well-known/hosts-meta für „old webfinger“ aufgerufen (wird vom Diaspora-Protokoll verwendet)

html2bb_video Wird aufgerufen, wenn die html2bbcode-Übersetzung verwendet wird, um eingebettete Medien zu behandeln

html2bbcode Wird bei der Verwendung der html2bbcode-Übersetzung aufgerufen

identität_basic_export Wird aufgerufen, wenn die Basisinformationen eines Channels zur Sicherung oder Übertragung exportiert werden.

import_autor_xchan Wird aufgerufen, wenn ein Autor eines Beitrags mit xchan_hash gesucht wird, um sicherzustellen, dass er einen xchan-Eintrag auf unserer Website hat

import_channel Wird aufgerufen, wenn ein Kanal aus einer Datei oder einer API-Quelle importiert wird

import_directory_profile Wird aufgerufen, wenn die Lieferung einer Profilstruktur aus einer externen Quelle verarbeitet wird (normalerweise für die Speicherung in Verzeichnissen)

import_xchan Wird bei der Verarbeitung des Ergebnisses von zot_finger() aufgerufen, um das Ergebnis zu speichern

item_photo_menu Wird aufgerufen, wenn die Liste der Aktionen erzeugt wird, die mit einem angezeigten Konversationselement verbunden sind

item_store Wird aufgerufen, wenn item_store() einen Datensatz vom Typ item speichert

item_stored Wird aufgerufen, nachdem item_store() einen Datensatz des Typs item in der Datenbank gespeichert hat.

item_custom Wird aufgerufen, bevor item_store() einen Datensatz des Typs item speichert (damit Addons ITEM_TYPE_CUSTOM-Elemente verarbeiten können).

item_store_update Wird aufgerufen, wenn item_store_update() aufgerufen wird, um einen gespeicherten Eintrag zu aktualisieren.

item_stored_update Wird aufgerufen, nachdem item_store_update() ein gespeichertes Element aktualisiert hat.

item_translate Wird von item_store und item_store_update aufgerufen, nachdem die Sprache des Beitrags automatisch erkannt wurde.

jot_networks Wird aufgerufen, um die Liste der zusätzlichen Post-Plugins zu generieren, die aus dem ACL-Formular aktiviert werden sollen

jot_tool Veraltet und möglicherweise überflüssig. Ermöglicht das Hinzufügen von Aktionsschaltflächen zum Beitragseditor.

jot_tpl_filter Wird aufgerufen, um Vorlagenvariablen vor der Ersetzung in jot.tpl zu filtern.

jot_header_tpl_filter Wird aufgerufen, um Vorlagenvariablen vor der Ersetzung in jot_header.tpl zu filtern.

legal_webbie Wird aufgerufen, um eine Kanaladresse zu validieren

legal_webbie_text Bietet eine Erklärung der Text-/Zeichenbeschränkungen für legal_webbie()

load_pdl Wird aufgerufen, wenn wir eine PDL-Datei oder eine Beschreibung laden

local_dir_update Wird aufgerufen, wenn eine Verzeichnisaktualisierung von einem Channel auf dem Verzeichnisserver verarbeitet wird

location_move Wird aufgerufen, wenn einem UNO-Channel ein neuer Standort mitgeteilt wurde (was auf eine Verschiebung und nicht auf einen Klon hinweist)

protokolliert Wird aufgerufen, wenn die Authentifizierung auf irgendeine Weise erfolgreich war

Logger Wird aufgerufen, wenn ein Eintrag in die Logdatei der Anwendung gemacht wird

logging_out Wird bei der Abmeldung aufgerufen

login_hook Wird bei der Generierung des Anmeldeformulars aufgerufen

magic_auth Wird bei der Verarbeitung einer magic-auth-Sequenz aufgerufen

markdown_to_bb Wird bei der Verarbeitung der Markdown-Konvertierung aufgerufen

match_webfinger_location Wird bei der Verarbeitung von Webfinger-Anfragen aufgerufen

magic_auth_openid_success Wird aufgerufen, wenn ein magic-auth aufgrund von openid-Anmeldedaten erfolgreich war

magic_auth_success Wird aufgerufen, wenn ein magic-auth erfolgreich war

main_slider Wird bei der Generierung des Affinitätswerkzeugs aufgerufen

marital_selector Wird aufgerufen, wenn die Auswahlliste für das Dropdown-Menü des Profils „Familienstand“ erstellt wird (erweitertes Profil)

marital_selector_min Wird bei der Erstellung der Auswahlliste für das Dropdown-Profil „Familienstand“ aufgerufen (normales Profil)

module_loaded Wird aufgerufen, wenn ein Modul erfolgreich für eine URL-Anfrage auf dem Server lokalisiert wurde.

mood_verbs Wird bei der Erstellung der Liste der Stimmungen aufgerufen

nav Wird bei der Erstellung der Navigationsleiste aufgerufen

network_content_init Wird beim Laden des Inhalts für die Netzwerkseite aufgerufen

netzwerk_ping Wird bei einer Ping-Anfrage aufgerufen

netzwerk_zu_name Veraltet

notifier_end Wird aufgerufen, wenn eine Zustellschleife abgeschlossen ist

notifier_hub Wird aufgerufen, wenn ein Hub zugestellt wurde

notifier_normal Wird aufgerufen, wenn der Notifizierer für eine 'normale' Zustellung aufgerufen wird

notifier_process Wird aufgerufen, wenn der Notifizierende eine Nachricht/Ereignis verarbeitet

obj_verbs Wird bei der Erstellung der Liste der für das Profil „Dinge“ verfügbaren Verben aufgerufen.

oembed_action Wird aufgerufen, wenn entschieden wird, ob eine Oembed-Url gefiltert, blockiert oder genehmigt werden soll

oembed_probe Wird aufgerufen, wenn eine Suche nach Oembed-Inhalten durchgeführt wird.

other_encapsulate Wird aufgerufen, wenn Inhalte verschlüsselt werden, für die der Algorithmus unbekannt ist (siehe auch crypto_methods)

other_unencapsulate Wird aufgerufen, wenn Inhalte entschlüsselt werden, deren Algorithmus unbekannt ist (siehe auch crypto_methods)

page_content_top Wird aufgerufen, wenn wir eine Webseite generieren (vor dem Aufruf der Modul-Content-Funktion)

page_end Wird aufgerufen, nachdem wir den Seiteninhalt generiert haben

page_header Wird bei der Generierung der Navigationsleiste aufgerufen

page_meta Wird bei der Generierung der Metadaten im Seitenkopf aufgerufen.

parse_atom Wird aufgerufen, wenn ein Atom/RSS-Feed-Element geparst wird.

parse_link Wird aufgerufen, wenn eine URL abgefragt wird, um daraus einen Beitrag zu generieren

pdl_selector Wird bei der Erstellung einer Layoutauswahl in einem Formular aufgerufen

perm_is_allowed Wird während perm_is_allowed() aufgerufen, um festzustellen, ob eine Berechtigung für diesen Kanal und Beobachter erlaubt ist

permissions_create Wird aufgerufen, wenn ein Bucheintrag (Verbindung) erstellt wird

permissions_update Wird aufgerufen, wenn eine Berechtigungsaktualisierung übertragen wird

permit_hook Wird aufgerufen, bevor ein registrierter Hook tatsächlich ausgeführt wird, um festzustellen, ob er erlaubt oder blockiert werden soll

personal_xrd Wird bei der Generierung der persönlichen XRD für „old webfinger“ (Diaspora) aufgerufen

photo_post_end Wird nach dem Hochladen eines Fotos aufgerufen

photo_upload_begin Wird aufgerufen, wenn versucht wird, ein Foto hochzuladen

photo_upload_end Wird aufgerufen, wenn ein Foto-Upload verarbeitet wurde

photo_upload_file Wird aufgerufen, um alternative Dateinamen für einen Upload zu generieren

photo_upload_form Wird aufgerufen, wenn ein Foto-Upload-Formular generiert wird

photo_view_filter Wird aufgerufen, bevor die Daten an die photo_view-Vorlage übergeben werden

poke_verbs Wird bei der Erstellung der Liste der Aktionen für das Modul „poke“ aufgerufen

post_local Wird aufgerufen, wenn ein Artikel auf diesem Rechner über mod/item.php eingestellt wurde (auch über API)

post_local_end Wird aufgerufen, wenn ein lokaler Postvorgang abgeschlossen ist

post_local_start Wird aufgerufen, wenn ein lokaler Postvorgang beginnt

post_mail Wird aufgerufen, wenn eine Mail-Nachricht verfasst wurde

post_mail_end Wird aufgerufen, wenn eine Mail-Nachricht zugestellt wurde

post_remote Wird aufgerufen, wenn eine Aktivität von einem anderen Standort eintrifft

post_remote_end Wird nach der Verarbeitung einer Remote-Post aufgerufen

post_remote_update Wird bei der Verarbeitung eines entfernten Beitrags aufgerufen, der eine Bearbeitung oder Aktualisierung beinhaltet

post_remote_update_end Wird nach der Verarbeitung eines entfernten Beitrags aufgerufen, der eine Bearbeitung oder Aktualisierung beinhaltete

prepare_body Wird aufgerufen, wenn der HTML-Code für ein angezeigtes Konversationsobjekt generiert wird.

prepare_body_final Wird nach der Generierung des HTML für ein angezeigtes Konversationselement aufgerufen

prepare_body_init Wird vor der Generierung des HTML für ein angezeigtes Konversationselement aufgerufen

privacygroup_extras Wird vor der Generierung des HTML für die Bearbeitungsoptionen der Privacy Group aufgerufen

privacygroup_extras_delete Wird aufgerufen, nachdem die Privatsphärengruppe gelöscht wurde.

privacygroup_extras_post Wird aufgerufen, wenn das Formular zur Bearbeitung der Privatsphärengruppe abgeschickt wird.

proc_run Wird beim Aufruf von PHP-Unterprozessen aufgerufen

process_channel_sync_delivery Wird aufgerufen, wenn ein 'Sync-Paket' mit Struktur- und Tabellenaktualisierungen von einem Channel-Clone angenommen wird.

profile_advanced Wird bei der Generierung einer erweiterten Profilseite aufgerufen

profil_edit Wird bei der Bearbeitung eines Profils aufgerufen

profil_foto_inhalt_ende Wird bei der Änderung eines Profilfotos aufgerufen

profil_post Wird beim Posten eines bearbeiteten Profils aufgerufen

profile_sidebar Wird aufgerufen, wenn die „Kanal-Seitenleiste“ oder das Miniprofil erstellt wird

profile_sidebar_enter Wird vor der Erstellung der 'Channel Sidebar' oder des Miniprofils aufgerufen

queue_deliver Wird aufgerufen, wenn eine Nachricht in der Warteschlange zugestellt wird

register_account Wird aufgerufen, wenn ein Konto erstellt worden ist

render_location Wird aufgerufen, um eine ineraktive Inline-Map zu erzeugen

replace_macros Wird vor dem Aufrufen des Vorlagenprozessors aufgerufen

reverse_magic_auth Wird vor dem Aufruf von reverse magic auth aufgerufen, um Sie auf Ihre eigene Website zu schicken, damit Sie sich auf dieser Website authentifizieren können

Einstellungen_Konto Wird bei der Erstellung des Formulars für die Kontoeinstellungen aufgerufen

einstellungen_form Wird bei der Erstellung des Formulars für die Channel-Einstellungen aufgerufen

einstellungen_post Wird bei der Buchung aus dem Formular für die Kanaleinstellungen aufgerufen

sexpref_selector Wird aufgerufen, wenn ein Dropdown-Menü für sexuelle Präferenzen erstellt wird (erweitertes Profil)

sexpref_selector_min Wird aufgerufen, wenn eine Auswahlliste der sexuellen Präferenzen erstellt wird (normales Profil)

smilie Wird beim Übersetzen von Emoticons aufgerufen

status_editor Wird bei der Erstellung des status_editor aufgerufen.

stream_item Wird für jedes Element aufgerufen, das über conversation() zur Anzeige gerendert wird

system_app_installed_filter Wird aufgerufen, wenn festgestellt wird, ob eine System-App installiert ist.

tagged Wird aufgerufen, wenn eine Lieferung verarbeitet wird, die dazu führt, dass Sie getaggt werden

thumbnail Wird beim Erzeugen von Miniaturbildern für die Kachelansicht des Cloud-Speichers aufgerufen

update_unseen Wird vor dem automatischen Markieren von im Browser geladenen Sendungen, die gesehen wurden, aufgerufen

validate_channelname Wird verwendet, um die von einem Kanal verwendeten Namen zu validieren

webfinger Wird beim Besuch des Dienstes webfinger (RFC7033) aufgerufen

well_known Wird beim Zugriff auf die speziellen '.well-known'-Site-Adressen aufgerufen

wiki_preprocess Wird aufgerufen, bevor Markdown-/Bbcode-Prozessoren für Wikiseiten ausgeführt werden

zot_best_algorithm Wird bei der Aushandlung von Verschlüsselungsalgorithmen mit entfernten Sites aufgerufen

zid Wird aufgerufen, wenn die zid des Beobachters zu einer URL hinzugefügt wird

zid_init Wird bei der Authentifizierung eines Besuchers aufgerufen, der zid verwendet hat

zot_finger Wird aufgerufen, wenn ein zot-Infopaket angefordert wurde (dies ist unser Webfinger-Erkennungsmechanismus)

Das Hubzilla-Projekt

Hubzilla Verwaltung

Governance bezieht sich auf die Verwaltung eines Projekts und insbesondere darauf, wie diese mit der Konfliktlösung zusammenhängt.

Gemeinschaftliche Verwaltung

Das Projekt wird von der „Gemeinschaft“ verwaltet und Entscheidungen werden von ihr getroffen. Die Governance-Struktur ist noch in der Entwicklung begriffen. Bis zur endgültigen Festlegung der Struktur werden Entscheidungen in der folgenden Reihenfolge getroffen:

  1. Fauler Konsens

    Wenn ein Projektvorschlag in einem der Community-Governance-Foren unterbreitet wird und innerhalb einer „angemessenen“ Zeitspanne ab dem Datum des Vorschlags (wir geben in der Regel allen interessierten Parteien 2 bis 3 Tage Zeit, sich zu äußern) keine ernsthaften Einwände erhoben werden, muss nicht abgestimmt werden und der Vorschlag gilt als angenommen. Zu diesem Zeitpunkt können zwar Bedenken geäußert werden, aber wenn diese in der Diskussion ausgeräumt werden und Lösungsmöglichkeiten angeboten werden, gilt der Vorschlag dennoch als genehmigt.

  2. Veto

    Erfahrene Entwickler, die bereits viele Projekte zugesagt haben, können gegen jede Entscheidung ein Veto einlegen. Die Entscheidung kann nicht weitergeführt werden, bis das Veto aufgehoben oder ein alternativer Vorschlag vorgelegt wird.

  3. Gemeinschaftsabstimmung

    Eine Entscheidung, für die es kein klares Mandat oder keinen klaren Konsens gibt, gegen die aber kein Veto eingelegt wurde, kann der Gemeinschaft zur Abstimmung vorgelegt werden. Zurzeit ist dies eine einfache Volksabstimmung in einem der entsprechenden Gemeinschaftsforen. Zurzeit entscheidet das Volk über das Ergebnis. Dies kann sich in Zukunft ändern, wenn die Gemeinschaft ein „Rats“-Verwaltungsmodell einführt. Dieses Dokument wird zu diesem Zeitpunkt mit den aktualisierten Verwaltungsregeln aktualisiert werden.

Die Abstimmung in der Gemeinschaft führt nicht immer zu einem angenehmen Ergebnis und kann zu polarisierten Fraktionen in der Gemeinschaft führen (daher werden auch andere Modelle in Betracht gezogen). Wenn der Vorschlag abgelehnt wird, gibt es immer noch verschiedene Möglichkeiten, den Vorschlag mit leicht veränderten Parametern erneut einzureichen (Umwandlung in ein Addon, Umwandlung in eine optionale Funktion, die standardmäßig deaktiviert ist, usw.). Wenn das Interesse an der Funktion groß ist und die Abstimmung „knapp“ ausfällt, kann dies bei den unterlegenen Wählern viele schlechte Gefühle hervorrufen. Bei solchen knappen Abstimmungen wird dringend empfohlen, dass der Antragsteller Maßnahmen ergreift, um alle Bedenken auszuräumen, und den Antrag erneut einreicht.

Datenschutz

F: Wer kann meinen Inhalt sehen?

A: Standardmäßig JEDER im Internet, es sei denn, Sie schränken dies ein. Bei Hubzilla können Sie die von Ihnen gewünschte Datenschutzstufe wählen. Eingeschränkte Inhalte sind für „Spionagenetzwerke“ und Werbetreibende NICHT sichtbar. Sie werden gegen das Abhören durch Außenstehende geschützt - so gut es eben geht. Hub-Administratoren mit ausreichenden Kenntnissen und Geduld können möglicherweise einige private Kommunikationen abhören, aber sie müssen sich dafür anstrengen. Innerhalb von Hubzilla gibt es Privatsphären-Modi, die selbst für erfahrene und entschlossene Hub-Administratoren abhörsicher sind.

F: Kann mein Inhalt zensiert werden?

A: Hubzilla (das Netzwerk) kann Ihre Inhalte NICHT zensieren. Server- und Hub-Administratoren unterliegen den örtlichen Gesetzen und KÖNNEN anstößige Inhalte von ihrer Site/ihrem Hub entfernen. Jeder KANN Hub-Administrator werden, auch Sie, und daher Inhalte veröffentlichen, die andernfalls zensiert werden könnten. Sie KÖNNEN immer noch den örtlichen Gesetzen unterliegen.

Definitionen

Hubzilla*

Hubzilla, auch als „das Netzwerk“ bezeichnet, ist eine Sammlung von einzelnen Computern/Servern (auch Hubs genannt), die miteinander verbunden sind und ein größeres kooperatives Netzwerk bilden.

Hub

Ein einzelner Computer oder Server, der mit Hubzilla verbunden ist. Diese werden von einem Hub-Administrator bereitgestellt und können öffentlich oder privat, bezahlt oder kostenlos sein.

Hub-Administrator

Der Systembetreiber eines einzelnen Hubs.

Richtlinien

Öffentliche Informationen

Alle von Ihnen innerhalb von Hubzilla eingestellten Informationen oder Inhalte KÖNNEN öffentlich oder für jeden im Internet sichtbar sein. Soweit dies möglich ist, erlaubt Hubzilla Ihnen, Inhalte zu schützen und einzuschränken, wer sie sehen kann.

Ihr Profilfoto, Ihr Channelname und der Standort (URL oder Netzwerkadresse) Ihres Channels sind für jedermann im Internet sichtbar, und Datenschutzkontrollen haben keinen Einfluss auf die Anzeige dieser Elemente.

Du KANNST zusätzlich andere Profilinformationen zur Verfügung stellen. Alle Informationen, die Sie in Ihrem „Standard“- oder öffentlichen Profil angeben, KÖNNEN an andere Hubs in Hubzilla übermittelt werden und zusätzlich im Channel-Verzeichnis angezeigt werden. Sie können die Einsicht in diese Profilinformationen einschränken. Sie können es nur auf Mitglieder Ihres Hubs, nur auf Verbindungen (Freunde) oder auf andere begrenzte Gruppen von Betrachtern beschränken, wie Sie es wünschen. Wenn Sie möchten, dass Ihr Profil eingeschränkt wird, müssen Sie die entsprechenden Datenschutzeinstellungen vornehmen oder einfach KEINE zusätzlichen Informationen angeben.

Inhalt

Die von Ihnen bereitgestellten Inhalte (Statusmeldungen, Fotos, Dateien usw.) gehören Ihnen. Die Standardeinstellung von Hubzilla ist, dass Inhalte offen und für jeden im Internet sichtbar veröffentlicht werden (PUBLIC). Sie KÖNNEN dies in Ihren Channel-Einstellungen steuern und die Standardberechtigungen einschränken oder Sie KÖNNEN die Sichtbarkeit jedes einzelnen veröffentlichten Elements separat einschränken (PRIVAT). Die Hubzilla-Entwickler stellen sicher, dass eingeschränkte Inhalte NUR für diejenigen sichtbar sind, die in der Einschränkungsliste aufgeführt sind - so gut sie können.

Inhalte (insbesondere Statusmeldungen), die Sie mit anderen Netzwerken teilen oder die Sie für jeden im Internet sichtbar gemacht haben (PUBLIC), können nicht einfach zurückgenommen werden, nachdem sie veröffentlicht wurden. Sie KÖNNEN mit anderen Netzwerken geteilt und über RSS/Atom-Feeds verfügbar gemacht werden. Sie können auch auf anderen Hubzilla-Sites syndiziert werden. Sie KÖNNEN in anderen Netzwerken und Websites erscheinen und in der Internetsuche sichtbar sein. Wenn Sie dieses Standardverhalten nicht wünschen, passen Sie bitte Ihre Kanaleinstellungen an und schränken Sie ein, wer Ihre Inhalte sehen kann.

Kommentare und Forenbeiträge

Kommentare zu Beiträgen, die von anderen erstellt wurden, und Beiträge, die als Forenbeiträge gekennzeichnet sind, gehören Ihnen als Ersteller/Autor, aber die Verbreitung dieser Beiträge unterliegt nicht Ihrer direkten Kontrolle, und Sie geben EINIGE Rechte an diesen Elementen ab. Diese Beiträge/Kommentare KÖNNEN an andere weitergegeben werden und KÖNNEN für jeden im Internet sichtbar sein. Im Falle von Kommentaren kontrolliert der Ersteller der „ersten Nachricht“ in dem Thread (Gespräch), auf den Sie antworten, die Verbreitung aller Kommentare und Antworten auf diese Nachricht. Er ist „Eigentümer“ und hat daher bestimmte Rechte in Bezug auf die gesamte Unterhaltung (einschließlich aller darin enthaltenen Kommentare). Sie können den Kommentar immer noch bearbeiten oder löschen, aber der Eigentümer der Konversation hat auch das Recht, den gesamten Inhalt der Konversation zu bearbeiten, zu löschen, weiterzuverteilen und zu sichern/wiederherzustellen.

Private Informationen

Die Hubzilla-Entwickler stellen sicher, dass alle von Ihnen bereitgestellten Inhalte, die als PRIVAT gekennzeichnet sind, nach bestem Wissen und Gewissen gegen Abhören geschützt werden. Private Channel-Inhalte KÖNNEN in der Datenbank jedes beteiligten Hub-Administrators gesehen werden, aber private Nachrichten werden in der Datenbank unkenntlich gemacht. Letzteres bedeutet, dass es sehr schwierig, aber NICHT unmöglich ist, dass diese Inhalte von einem Hub-Administrator gesehen werden können. Private Kanalinhalte und private Nachrichten werden auch aus den E-Mail-Benachrichtigungen entfernt. Die Ende-zu-Ende-Verschlüsselung ist eine optionale Funktion, die selbst von einem entschlossenen Administrator NICHT eingesehen werden kann.

Identitätsschutz

Der Schutz Ihrer Identität ist ein weiterer Aspekt. Da Sie in Hubzilla eine dezentrale Identität haben, geht Ihre Privatsphäre über Ihren Home Hub hinaus. Wenn Sie die vollständige Kontrolle über Ihre Privatsphäre und Sicherheit haben möchten, sollten Sie Ihren eigenen Hub auf einem eigenen Server betreiben. Für viele Menschen ist dies kompliziert und kann ihre technischen Fähigkeiten überfordern. Lassen Sie uns daher einige Vorsichtsmaßnahmen auflisten, die Sie ergreifen können, um Ihre Privatsphäre so gut wie möglich zu schützen.

Eine dezentralisierte Identität hat viele Vorteile und bietet Ihnen viele interessante Funktionen, aber Sie sollten sich der Tatsache bewusst sein, dass Ihre Identität anderen Hubs im Hubzilla-Netzwerk bekannt ist. Einer dieser Vorteile ist, dass andere Kanäle Ihnen maßgeschneiderte Inhalte anbieten und Ihnen erlauben können, private Dinge zu sehen (wie z.B. private Fotos, die andere mit Ihnen teilen möchten). Aus diesem Grund müssen diese Kanäle wissen, wer Sie sind. Aber wir verstehen, dass diese anderen Kanäle manchmal mehr von Ihnen wissen, als Sie vielleicht wünschen. Zum Beispiel das Plug-in Visage, das einem Kanalbesitzer mitteilen kann, wann du das letzte Mal sein Profil besucht hast. Sie können sich ganz einfach von dieser geringen und, wie wir meinen, harmlosen Verfolgung abmelden.

* Sie können [Do Not Track (DNT)](http://donottrack.us/)?f=&zid=pepecyb@hub.hubzilla.hu) in Ihrem Webbrowser aktivieren. Wir respektieren diesen neuen Vorschlag zum Datenschutz. Alle modernen Browser unterstützen DNT. Sie finden es in den Datenschutzeinstellungen Ihres Browsers oder Sie können das Handbuch Ihres Webbrowsers konsultieren. Die Funktionalität von Hubzilla wird dadurch nicht beeinträchtigt. Diese Einstellung ist wahrscheinlich für die meisten Menschen ausreichend.

*Sie können die Veröffentlichung Ihres Channels in unserem Channel-Verzeichnis deaktivieren. Wenn Sie möchten, dass andere Ihren Channel finden, sollten Sie ihnen Ihre Channel-Adresse direkt mitteilen. Wir denken, dass dies ein guter Hinweis darauf ist, dass du zusätzliche Privatsphäre bevorzugst und aktivieren automatisch „Do Not Track“, wenn dies der Fall ist.

* Sie können einen blockierten Hub haben. Das bedeutet, dass alle Kanäle und Inhalte in diesem Hub nicht öffentlich und für die Außenwelt nicht sichtbar sind. Dies kann nur Ihr Hub-Administrator tun. Wir respektieren dies ebenfalls und aktivieren automatisch „Do Not Track“, wenn es eingestellt ist.

Zensur

Hubzilla ist ein globales Netzwerk, das alle Religionen und Kulturen einschließt. Das bedeutet nicht, dass jedes Mitglied des Netzwerks in Bezug auf strittige Themen genauso denkt wie Sie, und einige Leute könnten sich den von Ihnen geposteten Inhalten GEGENWINDLICH widersetzen. Wenn Sie etwas posten möchten, von dem Sie wissen, dass es möglicherweise nicht von allen akzeptiert wird, ist es am besten, wenn Sie die Öffentlichkeit mit Hilfe der Privatsphäre-Kontrollen auf einen kleinen Freundeskreis beschränken.

Hubzilla als Netzwerkanbieter kann keine Inhalte zensieren. Hub-Administratoren KÖNNEN jedoch Inhalte, die auf ihrem Hub erscheinen, zensieren, um lokalen Gesetzen oder sogar persönlichem Urteilsvermögen zu entsprechen. Ihre Entscheidung ist endgültig. Wenn Sie Probleme mit einem Hub-Administrator haben, können Sie Ihr Konto und Ihre Beiträge auf eine andere Seite verschieben, die Ihren Erwartungen besser entspricht. Bitte überprüfen Sie (regelmäßig) die Terms of Service Ihres Hubs, um sich über etwaige Regeln oder Richtlinien zu informieren. Wenn Ihr Inhalt aus illegalem oder problematischem Material besteht, empfehlen wir Ihnen DRINGEND, Ihren eigenen Hub zu betreiben (werden Sie Hub-Administrator). Es kann sein, dass Ihre Inhalte auf einigen Hubs blockiert werden, aber Hubzilla als Netzwerk kann nicht verhindern, dass sie veröffentlicht werden.

Hubzilla EMPFIEHLT, dass Hub-Administratoren eine Frist von 1-2 Tagen zwischen der Warnung eines Account-Inhabers über zu entfernende Inhalte und der physischen Entfernung oder Deaktivierung des Accounts einräumen. Dies gibt dem Inhaltsinhaber die Möglichkeit, seine Channel-Metadaten zu exportieren und auf eine andere Site zu importieren. In seltenen Fällen kann der Inhalt so beschaffen sein, dass die sofortige Kündigung des Kontos gerechtfertigt ist. Dies ist eine Hub-Entscheidung, nicht eine Hubzilla-Entscheidung.

Wenn Sie typischerweise und regelmäßig Inhalte jugendgefährdender oder anstößiger Natur posten, wird Ihnen DRINGEND empfohlen, Ihr Konto als „NSFW“ (Not Safe For Work) zu kennzeichnen. Dadurch wird die Anzeige Ihres Profilfotos im Verzeichnis verhindert, außer für Betrachter, die den „sicheren Modus“ deaktiviert haben. Wenn Ihr Profilfoto von den Verzeichnisadministratoren als nicht jugendfrei oder anstößig eingestuft wird, KANN der Verzeichnisadministrator Ihr Profilfoto als NSFW kennzeichnen. Derzeit gibt es keinen offiziellen Mechanismus, um diese Entscheidung anzufechten oder rückgängig zu machen. Deshalb SOLLTEN Sie Ihr eigenes Konto als NSFW markieren, wenn es für ein allgemeines Publikum unangemessen sein könnte.

Credits

Vielen Dank an alle, die im Laufe der Jahre zu diesem Projekt und seinen Vorgängern beigetragen haben. Es ist möglich, dass wir Ihren Namen nicht erwähnt haben, aber das ist nicht beabsichtigt. Wir danken auch der Gemeinschaft und ihren Mitgliedern, die uns wertvolle Beiträge geliefert haben und ohne die diese ganze Arbeit sinnlos wäre.

Es lohnt sich auch, die Beiträge und Problemlösungen zu würdigen, die sich aus Diskussionen zwischen Mitgliedern und Entwicklern anderer, in gewisser Weise verwandter und konkurrierender Projekte; auch wenn wir gelegentlich Meinungsverschiedenheiten hatten.

  • Mike Macgirvin
  • Fabio Comuni
  • Simon L'nu
  • marijus
  • Tobias Diekershoff
  • fabrixxm
  • tommy tomson
  • Simon
  • zottel
  • Christian Vogeley
  • jeroenpraat
  • Michael Vogel
  • erik
  • Zach Prezkuta
  • Paolo T
  • Michael Meer
  • Michael
  • Abinoam P. Marques Jr
  • Tobias Hößl
  • Alexander Kampmann
  • Olaf Conradi
  • Paolo Tacconi
  • tobiasd
  • Devlon Duthie
  • Zvi ben Yaakov (a.k.a rdc)
  • Alexandre Hannud Abdo
  • Olivier Migeot
  • Chris Case
  • Klaus Weidenbach
  • Michael Johnston
  • olivierm
  • Vasudev Kamath
  • pixelroot
  • Max Weller
  • duthied
  • Martin Schmitt
  • Sebastian Egbers
  • Erkan Yilmaz
  • sasiflo
  • Stefan Parviainen
  • Haakon Meland Eriksen
  • Oliver Hartmann (23n)
  • Erik Lundin
  • habeascodice
  • sirius
  • Charles
  • Tony Baldwin
  • Hauke Zuehl
  • Keith Fernie
  • Anne Walk
  • toclimb
  • Daniel Frank
  • Matthew Exon
  • Michal Supler
  • Tobias Luther
  • U-SOUND\mike
  • mrjive
  • nostupidzone
  • tonnerkiller
  • Antoine G
  • Christian Drechsler
  • Ludovic Grossard
  • RedmatrixCanada
  • Stanislav Lechev [0xAF]
  • aweiher
  • bufalo1973
  • dsp1986
  • felixgilles
  • ike
  • maase2
  • mycocham
  • ndurchx
  • pafcu
  • Simó Albert i Beltran
  • Manuel Reva
  • Manuel Jiménez Friaza
  • Gustav Wall aka "neue medienordnung plus"

Platzhalter