Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Manuelle Installation

Hubzilla läuft auf gängigen Hosting-Plattformen – wie beispielsweise denen, die für WordPress-Blogs und Drupal-Websites verwendet werden. Es läuft auf fast jedem Linux-VPS-System. Windows-LAMP-Plattformen wie XAMPP und WAMP werden derzeit nicht offiziell unterstützt – wir freuen uns jedoch über Patches, falls es Ihnen gelingt, die Software zum Laufen zu bringen.

Beachten Sie, dass diese Software mehr ist als eine einfache Webanwendung. Es handelt sich um ein komplexes Kommunikations- und Content-Management-System, das eher einem E-Mail-Server als einem Webserver ähnelt. Aus Gründen der Zuverlässigkeit und Leistung werden Nachrichten im Hintergrund übermittelt und für die spätere Zustellung in eine Warteschlange gestellt, wenn Websites nicht erreichbar sind. Diese Art von Funktionalität stellt etwas höhere Anforderungen an das Host-System als ein typischer Blog. Nicht jeder PHP/MySQL-Hosting-Anbieter wird Hubzilla unterstützen können. Viele werden es jedoch tun – bitte prüft jedoch die Anforderungen und klärt diese vor der Installation mit eurem Hosting-Anbieter ab. (Und vorzugsweise, bevor ihr einen langfristigen Vertrag abschließt.)

Solltet ihr Probleme bei der Installation haben, teilt uns dies bitte über den Issue-Tracker unter https://framagit.org/hubzilla mit, wo ihr die Software heruntergeladen habt. Bitte beschreiben Sie Ihre Betriebsumgebung so genau wie möglich und geben Sie möglichst viele Details zu eventuell angezeigten Fehlermeldungen an, damit wir solche Probleme in Zukunft vermeiden können. Aufgrund der großen Vielfalt an Betriebssystemen und PHP-Plattformen sind unsere Möglichkeiten, Ihre PHP-Installation zu debuggen oder fehlende Module zu beschaffen, möglicherweise begrenzt – wir werden jedoch unser Bestes tun, um allgemeine Probleme mit dem Code zu beheben.

Bevor Sie beginnen

Wählen Sie einen Domainnamen oder Subdomainnamen für Ihren Server aus.

Die Software kann nur im Stammverzeichnis einer Domain oder Subdomain installiert werden und lässt sich nicht über alternative TCP-Ports installieren. Diese Einschränkungen werden möglicherweise in Zukunft gelockert, würden jedoch die Arbeit erschweren, daher empfehlen wir Ihnen nach wie vor dringend, sich daran zu halten.

Sie sollten SSL verwenden. Wenn Sie SSL verwenden, müssen Sie ein „browser-gültiges“ Zertifikat verwenden. Sie dürfen keine selbstsignierten Zertifikate verwenden!

Bitte testen Sie Ihr Zertifikat vor der Installation. Ein Web-Tool zum Testen Ihres Zertifikats finden Sie unter „http://www.digicert.com/help/“. Wenn Sie Ihre Seite zum ersten Mal besuchen, verwenden Sie bitte die SSL-URL („https://“). Dadurch lassen sich spätere Probleme vermeiden. Die Installationsroutine lässt die Verwendung eines nicht browser-gültigen Zertifikats nicht zu.

Diese Einschränkung wurde eingeführt, da öffentliche Beiträge von Ihnen Verweise auf Bilder auf Ihrem eigenen Hub enthalten können. Andere Mitglieder, die ihren Stream auf anderen Hubs ansehen, erhalten Warnungen, wenn Ihr Zertifikat von ihrem Webbrowser nicht als vertrauenswürdig eingestuft wird. Dies wird viele Nutzer verwirren, da es sich um ein dezentrales Netzwerk handelt und sie die Warnung bezüglich Ihres Hubs erhalten, während sie ihren eigenen Hub betrachten, und möglicherweise denken, dass ihr eigener Hub ein Problem aufweist. Diese Warnungen sind sehr technisch und wirken auf manche Nutzer beängstigend; viele von ihnen wissen nicht, wie sie vorgehen sollen, außer den Anweisungen des Browsers zu folgen. Dies wirkt sich störend auf die Community aus. Wir sind uns zwar der Probleme im Zusammenhang mit der aktuellen Zertifikatsinfrastruktur bewusst und stimmen zu, dass es viele Schwierigkeiten gibt, doch das ändert nichts an dieser Anforderung.

Kostenlose „browserkonforme“ Zertifikate sind bei Anbietern wie ZeroSSL, LetsEncrypt und einigen anderen erhältlich.

Wenn Sie kein SSL verwenden (ausdrücklich nicht empfohlen), kann es bei der Ausführung des ersten Installationsskripts zu einer Verzögerung von bis zu einer Minute kommen – während wir den SSL-Port überprüfen, um festzustellen, ob dort eine Antwort erfolgt.

Bei der Kommunikation mit neuen Websites versucht Hubzilla immer zuerst, eine Verbindung über den SSL-Port herzustellen, bevor auf eine weniger sichere Verbindung zurückgegriffen wird. Wenn Sie kein SSL verwenden, darf Ihr Webserver auf keinen Fall auf Port 443 lauschen.

Wenn Sie LetsEncrypt zur Bereitstellung von Zertifikaten nutzen und eine Datei unter .well-known/acme-challenge erstellen, damit LetsEncrypt Ihre Domain-Inhaberschaft überprüfen kann, entfernen oder benennen Sie bitte das Verzeichnis .well-known um, sobald das Zertifikat generiert ist.

Die Software stellt bei der Installation einen eigenen Handler für „.well-known“-Dienste bereit, und ein bereits vorhandenes Verzeichnis an diesem Speicherort kann dazu führen, dass einige dieser Dienste nicht korrekt funktionieren. Bei Apache sollte dies kein Problem darstellen, bei nginx oder anderen Webserver-Plattformen kann es jedoch zu Problemen kommen.

Anforderungen

  • Apache mit aktiviertem mod_rewrite und „AllowOverride All“, damit Sie eine lokale .htaccess-Datei verwenden können. Einige Nutzer haben nginx und lighttpd erfolgreich eingesetzt. Beispielkonfigurationsskripte für diese Plattformen finden Sie im Installationsverzeichnis. Apache und nginx werden am besten unterstützt.
  • PHP 8.2 oder höher.
  • Zugriff auf PHP über die Befehlszeile mit der Einstellung „register_argc_argv“ auf „true“ in der Datei „php.ini“ – und ohne Einschränkungen des Hosting-Anbieters hinsichtlich der Verwendung von „exec()“ und „proc_open()“.
  • Die Erweiterungen curl, gd (mit mindestens JPEG- und PNG-Unterstützung), mysqli, mbstring, xml, xmlreader (FreeBSD), zip, openssl, iconv, intl, sodium und gmp. Die Erweiterung imagick KANN anstelle von gd verwendet werden, ist jedoch nicht erforderlich und KANN auch über eine Konfigurationsoption deaktiviert werden.
  • Eine Form von E-Mail-Server oder E-Mail-Gateway, damit PHP mail() funktioniert.
  • MySQL-Version >= 8.0.22 oder MariaDB-Version >= 10.6 oder PostgreSQL-Version >= 12 als Datenbankserver
  • Möglichkeit, Jobs mit cron zu planen.
  • Die Installation in einer Top-Level-Domain oder einer Subdomain (ohne Verzeichnis-/Pfadkomponente in der URL) ist erforderlich.

Installation

  1. Entpacken Sie die Projektdateien in das Stammverzeichnis des Dokumentbereichs Ihres Webservers.

    Wenn Sie die Verzeichnisstruktur auf Ihren Webserver kopieren, achten Sie darauf, dass Sie auch die Datei „.htaccess“ kopieren – da Dateien mit einem „Punkt“ im Namen oft versteckt sind und normalerweise nicht kopiert werden.

    Wenn möglich, empfehlen wir, das Quell-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

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

    ​

    Anschließend können Sie jederzeit die neuesten Änderungen mit

    git pull

    abrufen bzw. ./util/udall verwenden (dieses nutzt ebenfalls Git).

  2. Stellen Sie sicher, dass die Ordner store/[data]/smarty3 und store vorhanden und für den Webserver beschreibbar sind

    mkdir -p „store/[data]/smarty3“

    chmod -R 777 store

    Diese Berechtigung (777) ist sehr gefährlich. Wenn Sie über ausreichende Berechtigungen und Kenntnisse verfügen, sollten Sie diese Verzeichnisse so einrichten, dass nur der Webserver und – falls abweichend – der Benutzer, der den Cron-Job ausführt (siehe unten), Schreibzugriff darauf haben. In vielen Shared-Hosting-Umgebungen kann dies schwierig sein, ohne ein Support-Ticket bei Ihrem Provider zu eröffnen. Die oben genannten Berechtigungen ermöglichen zwar den Betrieb der Software, sind jedoch nicht optimal.

  3. Installation von Add-ons

    • Zunächst sollten Sie sich in Ihrem Website-Ordner befinden

    ​ cd mywebsite

    • Anschließend sollten Sie das Add-on-Repository (separat) klonen. Wir geben diesem Repository den Spitznamen „hzaddons“. Sie können weitere Hubzilla-Add-on-Repositories einbinden, indem Sie ihnen unterschiedliche Spitznamen zuweisen.

    ​ util/add_addon_repo https://framagit.org/hubzilla/addons.git hzaddons

    • Um den Add-on-Baum auf dem neuesten Stand zu halten, sollten Sie sich in Ihrem obersten Website-Verzeichnis befinden und einen Aktualisierungsbefehl für dieses Repository ausführen.

    ​ cd mywebsite

    ​ util/update_addon_repo hzaddons

  4. Sobald die Software konfiguriert und die Datenbank installiert ist, erstellen Sie durchsuchbare Darstellungen der Online-Dokumentation. Dies können Sie jederzeit tun, wenn die Dokumentation aktualisiert wird.

    cd mywebsite

    util/importdoc

  5. Erstellen Sie eine leere Datenbank und notieren Sie sich die Zugangsdaten (Hostname, Benutzername, Passwort, Datenbankname). Die PDO-Datenbankbibliotheken greifen auf die Socket-Kommunikation zurück, wenn der Hostname „localhost“ lautet, und es wurden bereits Probleme mit der Socket-Implementierung gemeldet. Verwenden Sie diese Option nur, wenn Ihre Anforderungen dies erfordern. Andernfalls, wenn die Datenbank auf dem lokalen Server bereitgestellt wird, verwenden Sie „127.0.0.1“ als Hostname.

    Intern verwenden wir nun die PDO-Bibliothek für Datenbankverbindungen. Sollten Sie auf eine Datenbankkonfiguration stoßen, die sich nicht über das Einrichtungsformular angeben lässt (beispielsweise bei der Verwendung von MySQL mit einem ungewöhnlichen Socket-Speicherort), können Sie die PDO-Verbindungszeichenfolge als Datenbank-Hostnamen angeben. Zum Beispiel

    /path/to/socket.file

    Sie sollten dennoch alle anderen zutreffenden Formularwerte nach Bedarf ausfüllen.

  6. Wenn Sie bereits im Voraus wissen, dass der Webserver keine Dateien in Ihrem Webverzeichnis schreiben oder erstellen kann, erstellen Sie eine leere Datei mit dem Namen .htconfig.php und machen Sie diese für den Webserver beschreibbar.

  7. Rufen Sie Ihre Website mit einem Webbrowser auf und befolgen Sie die Anweisungen. Notieren Sie sich etwaige Fehlermeldungen und beheben Sie diese, bevor Sie fortfahren. Wenn Sie SSL mit einer bekannten Zertifizierungsstelle verwenden, nutzen Sie den https:-Link zu Ihrer Website.

  8. Falls die automatische Installation aus irgendeinem Grund fehlschlägt, überprüfen Sie Folgendes:

    • „.htconfig.php“ ist vorhanden
    • Falls nicht, bearbeiten Sie die Datei „htconfig.php“ und ändern Sie die Systemeinstellungen. Benennen Sie die Datei anschließend in „.htconfig.php“ um
    • Die Datenbank ist gefüllt.
    • Falls nicht, importieren Sie den Inhalt von „install/schema_xxxxx.sql“ mit phpMyAdmin oder über die MySQL-Befehlszeile (ersetzen Sie „xxxxx“ durch Ihren Datenbanktyp).
    • Erstellen Sie den sys-Kanal manuell, indem Sie util/init_sys_channel ausführen.
  9. Rufen Sie nun Ihre Website erneut auf und registrieren Sie Ihr persönliches Konto. Registrierungsfehler sollten alle automatisch behoben werden. Sollte an dieser Stelle ein kritischer Fehler auftreten, deutet dies in der Regel darauf hin, dass die Datenbank nicht korrekt installiert wurde. Sie sollten die Datei „.htconfig.php“ möglicherweise in einen anderen Ordner verschieben oder umbenennen und die Datenbanktabellen leeren (sogenanntes „Dropping“), damit Sie von vorne beginnen können.

    Damit Ihr Konto Administratorrechte erhält, muss es das erste erstellte Konto sein, und die bei der Registrierung angegebene E-Mail-Adresse muss mit der „Administrator-E-Mail“-Adresse übereinstimmen, die Sie während der Installation angegeben haben. Um einem Konto Administratorrechte zu gewähren, fügen Sie andernfalls 4096 zu den „account_roles“ für dieses Konto in der Datenbank hinzu.

    Aus Sicherheitsgründen für Ihre Website ist es nicht möglich, Administratorrechte über Webformulare zu vergeben.

  10. DER NÄCHSTE SCHRITT IST WICHTIG!!!!

    Richten Sie einen Cron-Job oder eine geplante Aufgabe ein, damit der Cron-Manager alle 10–15 Minuten ausgeführt wird, um Hintergrundprozesse und Wartungsarbeiten durchzuführen. Beispiel:

    cd /base/directory; /path/to/php Zotlabs/Daemon/Master.php Cron

    Passen Sie „/base/directory“ und „/path/to/php“ entsprechend Ihrer Situation an.

    Wenn Sie einen Linux-Server verwenden, führen Sie „crontab -e“ aus und fügen Sie eine Zeile wie die unten gezeigte hinzu, wobei Sie die Pfade und Einstellungen durch Ihre eigenen ersetzen:

    */10 * * * * cd /home/myname/mywebsite; /usr/bin/php Zotlabs/Daemon/Master.php Cron > /dev/null 2>&1

    Den Speicherort von PHP können Sie in der Regel mit dem Befehl „which php“ ermitteln. Sollten Sie bei diesem Abschnitt Probleme haben, wenden Sie sich bitte an Ihren Hosting-Anbieter, um Unterstützung zu erhalten. Hubzilla funktioniert nicht ordnungsgemäß, wenn Sie diesen Schritt nicht ausführen können.

    Sie sollten außerdem sicherstellen, dass App::$config['system']['php_path'] in Ihrer .htconfig.php-Datei korrekt gesetzt ist; es sollte etwa so aussehen (ersetzen Sie den Pfad durch den korrekten PHP-Pfad):

    App::$config['system']['php_path'] = '/usr/local/php80/bin/php';

Falls es nicht klappt…

  • Wenn Sie folgende Meldung erhalten “System is currently unavailable. Please try again later”

    Überprüfen Sie Ihre Datenbankeinstellungen. In der Regel bedeutet dies, dass die Datenbank nicht geöffnet oder nicht darauf zugegriffen werden konnte. Befindet sich die Datenbank auf demselben Rechner, überprüfen Sie, ob der Name des Datenbankservers „127.0.0.1“ oder „localhost“ lautet.

  • Wenn Sie folgende Meldung erhalten “500 Internal Error”

    Dies könnte daran liegen, dass eine unserer Apache-Anweisungen von Ihrer Apache-Version nicht unterstützt wird. Überprüfen Sie die Protokolldateien Ihres Apache-Servers. Überprüfen Sie außerdem die Dateiberechtigungen. Ihre Website und alle Inhalte müssen in der Regel für alle lesbar sein.

    Wahrscheinlich hat Ihr Webserver die Ursache des Problems in seinen Fehlerprotokolldateien gemeldet. Bitte überprüfen Sie diese Systemfehlerprotokolle, um festzustellen, was das Problem verursacht hat. Oft muss dies mit Ihrem Hosting-Anbieter oder (bei eigenem Hosting) über die Konfiguration Ihres Webservers behoben werden.

  • Wenn Sie 400 and 4xx “File not found” errors erhalten

    Überprüfen Sie zunächst Ihre Dateiberechtigungen. Ihre Website und alle Inhalte müssen grundsätzlich für alle lesbar sein.

    Stellen Sie sicher, dass mod_rewrite installiert ist und funktioniert und dass Ihre .htaccess-Datei verwendet wird. Um Letzteres zu überprüfen, erstellen Sie im Stammverzeichnis von Hubzilla eine Datei namens „test.out“, die das Wort „test“ enthält, machen Sie sie für alle lesbar und rufen Sie in Ihrem Webbrowser die Adresse http://yoursitenamehere.com/test.out auf.

    Diese Datei sollte blockiert werden. Du solltest eine Meldung erhalten, dass der Zugriff verweigert wurde.

    Wenn du das Wort „test“ siehst, lässt deine Apache-Konfiguration die Verwendung deiner .htaccess-Datei nicht zu (diese Datei enthält Regeln, die den Zugriff auf alle Dateien mit der Endung .out blockieren, da diese typischerweise für Systemprotokolle verwendet werden).

    Stellen Sie sicher, dass die .htaccess-Datei vorhanden und für alle lesbar ist, und suchen Sie dann in der Apache-Serverkonfiguration Ihrer Website nach dem Eintrag „AllowOverride None“. Dieser muss in „AllowOverride All“ geändert werden.

    Wenn das Wort „test“ nicht erscheint, funktioniert Ihre .htaccess-Datei, aber es ist wahrscheinlich, dass mod_rewrite auf Ihrem Webserver nicht installiert ist oder nicht funktioniert.

    Auf den meisten Linux-Distributionen

    % a2enmod rewrite

    % /etc/init.d/apache2 restart

    Wenden Sie sich an Ihren Hosting-Anbieter, an Experten für Ihre jeweilige Linux-Distribution oder (im Falle von Windows) an den Anbieter Ihrer Apache-Server-Software, falls Sie eine dieser Einstellungen ändern müssen und nicht wissen, wie das geht. Im Internet gibt es zahlreiche Hilfestellungen. Googeln Sie „mod-rewrite“ zusammen mit dem Namen Ihrer Betriebssystem-Distribution oder Ihres Apache-Pakets.

  • Wenn während der Datenbankeinrichtung die Fehlermeldung „DNS-Abfrage fehlgeschlagen“ angezeigt wird

    Dies ist ein bekanntes Problem bei einigen Versionen von FreeBSD, da dns_get_record() bei bestimmten Abfragen fehlschlägt. Erstellen Sie in Ihrem obersten Webserver-Ordner eine Datei mit dem Namen „.htpreconfig.php“ und fügen Sie darin Folgendes ein:

    <?php
    
    App::$config['system']['do_not_check_dns'] = 1;
    

    Dadurch sollte die Installation fortgesetzt werden können. Sobald die Datenbank installiert ist, fügen Sie dieselbe Konfigurationsanweisung (jedoch ohne die Zeile „<?php“) in die Datei „.htconfig.php“ ein, die während der Installation erstellt wurde.

  • Falls Sie die Datei „.htconfig.php“ während der Installation aufgrund von Berechtigungsproblemen nicht schreiben können

    Erstellen Sie eine leere Datei mit diesem Namen und weisen Sie ihr Schreibrechte für alle Benutzer zu.

    Unter Linux:

    % touch .htconfig.php % chmod 777 .htconfig.php

    Versuchen Sie die Installation erneut. Sobald die Datenbank erstellt wurde,

    Das ist wichtig:

    % chmod 755 .htconfig.php

  • Apache-Prozesse hängen sich auf und beanspruchen so viel CPU-Leistung wie möglich

    Dies scheint gelegentlich aufzutreten, wenn Sie „mpm_prefork“ verwenden und der von Apache gestartete PHP-Prozess keinen Zugriff auf die Datenbank erhält.

    Beachten Sie die folgenden Einstellungen:

    Legen Sie in der Datei /etc/apache2/mods-enabled/mpm_prefork.conf (Debian; Pfad und Dateiname können je nach Betriebssystem und Distribution variieren) Folgendes fest:

    GracefulShutdownTimeout 300

    Dadurch wird sichergestellt, dass Apache-Prozesse, die unkontrolliert laufen, nicht ewig weiterlaufen, sondern beendet werden, wenn sie fünf Minuten nach dem Senden eines Beendigungsbefehls an den Prozess noch nicht gestoppt wurden.

    Wenn Sie eine hohe Auslastung Ihres Servers erwarten (z. B. bei öffentlichen Servern), stellen Sie außerdem sicher, dass Apache nicht mehr Prozesse startet, als MySQL Verbindungen akzeptieren kann.

    In der Standardkonfiguration von Debian ist in der Datei /etc/apache2/mods-enabled/mpm_prefork.conf die maximale Anzahl an Workern auf 150 festgelegt:

    MaxRequestWorkers 150

    In der Datei /etc/mysql/my.cnf ist die maximale Anzahl an Verbindungen jedoch auf 100 festgelegt:

    max_connections = 100

    150 Worker sind eine große Zahl und für kleine Server wahrscheinlich zu viel. Wie auch immer Sie diese Werte einstellen, stellen Sie sicher, dass die Anzahl der Apache-Worker kleiner ist als die Anzahl der Verbindungen, die MySQL akzeptiert, um etwas Spielraum für andere Dienste auf Ihrem Server zu lassen, die möglicherweise auf MySQL zugreifen, sowie für den Hubzilla-Poller, der ebenfalls Zugriff auf MySQL benötigt. Eine gute Einstellung für einen mittelgroßen Hub könnte sein, den Wert für max_connections in MySQL bei 100 zu belassen und den Wert für MaxRequestWorkers von mpm_prefork auf 70 festzulegen.

    Hier erfährst du mehr über die Leistungsoptimierung von Apache:

    https://httpd.apache.org/docs/2.4/misc/perf-tuning.html

    Es gibt unzählige Skripte, die Ihnen bei der Feinabstimmung Ihrer Apache-Installation helfen. Suchen Sie einfach mit Ihrer bevorzugten Suchmaschine nach „apache fine-tuning script“.