Friendica Installation

Wir haben versucht, dass Friendica auf den unterschiedlichsten Hosting-Plattformen installierbar ist. Gute Chance bestehen, wenn auf dem Server eine Wordpress oder Drupal Installation möglich ist. Um Friendica zu installieren, bieten wir einen manuellen und einen voll automatischen Weg an. Aber bedenke, dass Friendica mehr als eine einfache Webanwendung ist. Es handelt sich um ein komplexes Kommunikationssystem, das eher an einen Email-Server erinnert als an einen Webserver.

Um die Verfügbarkeit und Performance zu gewährleisten, werden Nachrichten im Hintergrund verschickt und gespeichert, um sie später zu verschicken, wenn eine Webseite gerade nicht erreichbar ist. Diese Funktionalität benötigt ein wenig mehr als die normalen Blogs. Nicht jeder PHP/MySQL-Hosting-Anbieter kann Friendica unterstützen. Viele hingegen können es. Aber bitte prüfe die Voraussetzungen deines Servers vor der Installation.

Wenn dir Fehler während der Installation auffallen, sag uns bitte über helper oder das Entwickler Forum Bescheid oder erstelle ein Issue.

Gib uns bitte so viele Infos zu deinem System, wie du kannst, und beschreibe den Fehler mit allen Details und Fehlermeldungen, so dass wir den Fehler zukünftig verhindern können. Aufgrund der großen Anzahl an verschiedenen Betriebssystemen und PHP-Plattformen haben wir nur geringe Kapazitäten, um deine PHP-Installation zu debuggen oder fehlende Module zu ersetzen, aber wir tun unser Bestes, um allgemeine Code-Fehler zu beheben.

Falls du noch keinen eigenen Friendica Account hast, kannst du dir einen temporäre Account auf einem der öffentlichen Server erstellen.Darüber kannst du den genannten Forum beitreten. Der Account wird nach 7 Tagen ablaufen, aber du kannst einen Server-Admin fragen, diesen Account länger zu erhalten, sollte das Problem nicht innerhalb dieser Zeit gelöst sein.

  • Wähle einen Domain-Namen oder eine Sub-Domain für deinen Friendica Server aus. Du solltest dir diesen Namen gut überlegen, es ist zwar möglich ihn nach der Installation noch zu ändern, aber es kann nach der Änderung dennoch zu Problemen bei der Kommunikation mit deinen Kontakten kommen.
  • Ein funktionierendes Mail Setup (lokaler oder externer Server)
  • Richte HTTPS für diese Domain ein1).
  • Apache mit einer aktiverten mod-rewrite-Funktion und dem Eintrag “Options All”, so dass du die lokale .htaccess-Datei nutzen kannst
  • PHP 7+ (PHP 7.1+ wird für Performance und offiziellen Support empfohlen)
    • PHP Kommandozeilen-Zugang mit register_argc_argv auf “true” gesetzt in der php.ini-Datei
    • Curl, GD, PDO, GMP, mbstrings, MySQLi, hash, xml, zip and OpenSSL Erweiterung
    • Das POSIX Modul muss aktiviert sein (z.B. RHEL, CentOS haben dies z.B. deaktiviert)
    • etwas in der Art eines Email-Servers oder eines Gateways wie PHP mail()
    • Unter FreeBSD müssen folgende PHP Extensionen aktiviert werden: curl gd pdo_mysql mbstring xml iconv zip openssl pecl-mcrypt posix dom json fileinfo pecl-imagick session filter ctype simplexml zlib
  • Ein Mysql Server, der InnoDB und Barracuda unterstützt (wir empfehlen MariaDB, da die Entwicklung auf Server stattfindet, die MariaDB verwenden. Andere MySQL Server sollten aber auch funktionieren)
  • die Möglichkeit, wiederkehrende Aufgaben mit cron (Linux/Mac) oder “Scheduled Tasks” einzustellen
  • Installation in einer Top-Level-Domain oder Subdomain (ohne eine Verzeichnis/Pfad-Komponente in der URL) wird bevorzugt. Verzeichnispfade sind für diesen Zweck nicht so günstig und wurden auch nicht ausführlich getestet.

Solltest du keinen Zugriff auf die Kommandozeile auf deinem Server haben (z.B. via SSH) wirst du voraussichtlich Probleme bekommen die nötigen Server-Einstellungen einzurichten.

Für alternative Server-Konfigurationen (z.B. mit Nginx und MariaDB) wirf bitte einen Blick in das ``mods`` Verzeichnis des Repositories.

Optional

  • PHP ImageMagick Erweiterung (php-imagick) für die Unterstützung von animierten GIF Bildern.

Diese Anleitung wird dir Schritt-für-Schritt zeigen wie du Friendica auf deinem Server installieren kannst. Falls du an automatischen Möglichkeiten Interesse hast, wirf doch einen Blick auf

Entpacke die Friendica-Daten in das Quellverzeichnis (root) des Dokumentenbereichs deines Webservers. Wenn du die Möglichkeit hierzu hast, empfehlen wir dir “git” zu nutzen, um die Daten direkt von der Quelle zu klonen, statt die gepackte .tar- oder .zip-Datei zu nutzen. Das macht die Aktualisierung wesentlich einfacher. Der Linux-Code, mit dem man die Dateien direkt in ein Verzeichnis wie “meinewebseite” kopiert, ist

git clone https://github.com/friendica/friendica.git -b stable mywebsite
cd mywebsite
bin/composer.phar install

Stelle sicher, dass der Ordner view/smarty3 existiert and von dem Webserver-Benutzer (z.B. www-data) beschreibbar ist

mkdir view/smarty3
chmod 755 view/smarty3

Falls Addons installiert werden sollen: Gehe in den Friendica-Ordner

cd mywebsite

Und die Addon Repository klonst:

git clone https://github.com/friendica/friendica-addons.git -b stable addon

Um das Addon-Verzeichnis aktuell zu halten, solltest du in diesem Pfad ein “git pull”-Befehl eintragen

cd meinewebseite/addon
git pull

Wenn du den Verzeichnispfad auf deinen Webserver kopierst, dann stelle sicher, dass du auch die .htaccess kopierst, da “Punkt”-Dateien oft versteckt sind und normalerweise nicht direkt kopiert werden.

Wenn du die Entwickler Version von Friendica verwenden möchtest kannst du auf den develop Branch im git Repository wechseln. Dies tust du mit den folgenden Befehlen

git checkout develop
bin/composer.phar install
cd addon
git checkout develop

Die Entwickler Version kann nach einem fehlerhaften Commit vorübergehend Probleme haben oder gar nicht mehr funktionieren. Sollte dir so etwas passieren, lass es uns bitte wissen, damit der Fehler behoben werden kann.

Erstelle eine leere Datenbank und notiere alle Zugangsdaten (Adresse der Datenbank, Nutzername, Passwort, Datenbankname).

Friendica benötigt die Berechtigungen um neue Felder in dieser Datenbank zu erstellen (create) und zu löschen (delete).

Mit neueren Versionen von MySQL (5.7.17+) musst du den sql_mode zu “” (blank) setzen. Benutze diese Einstellung, wenn der Installer nicht in der Lage ist, die Tabellen aufgrund eines Timestamp-Format Problems zu erstellen. Falls dem so ist, finde den [mysqld] Bereich in deiner my.conf Datei und füge diese Zeile hinzu:

sql_mode = ''

Starte MySQL dann neu und es sollte klappen.

Besuche deine Webseite mit deinem Browser und befolge die Anleitung. Bevor du dies tust, kopiere die Datei .htaccess-dist nach .htaccess, wenn du den Apache Webserver verwendest. Bitte beachte jeden Fehler und korrigiere diese, bevor du fortfährst.

Falls du einen Port für die Datenbankverbindung angeben musst, kannst du diesen in der Host-Eingabe Zeile angeben.

Wenn die manuelle Installation aus irgendeinem Grund fehlschlägt, dann prüfe das Folgende:

  • “config/local.config.php” existiert … wenn nicht, bearbeite die „config/local-sample.config.php“ und ändere die Systemeinstellungen. Benenne sie um in „config/local.config.php”.
  • die Datenbank beinhaltet Daten. … wenn nicht, importiere den Inhalt der Datei “database.sql” mit phpmyadmin oder per mysql-Kommandozeile.

Besuche deine Seite an diesem Punkt wieder und registriere deinen persönlichen Account. Alle Registrierungsprobleme sollten automatisch behebbar sein. Wenn du irgendwelche kritischen Fehler zu diesen Zeitpunkt erhalten solltest, deutet das darauf hin, dass die Datenbank nicht korrekt installiert wurde. Du kannst bei Bedarf die Datei config/local.config.php verschieben/umbenennen und die Datenbank leeren (als „Dropping“ bezeichnet), so dass du mit einem sauberen System neu starten kannst.

Es existieren folgende Varianten zur automatischen Installation von Friendica:

  • Eine vorgefertigte Konfigurationsdatei erstellen (z.B. prepared.config.php)
  • Verwendung von Umgebungsvariablen (z.B. MYSQL_HOST)
  • Verwendung von Optionen (z.B. –dbhost <host>)

Umgebungsvariablen und Optionen können auch kombiniert werden. Dabei ist jedoch darauf zu achten, dass etwaige Optionen immer die zugehörigen Umgebungsvariablen überschreiben.

Für mehr Informationen kannst du diese Option verwenden:

bin/console autoinstall -v

Falls du alle optionalen Checks ausfürehn lassen möchtest, benutze diese Option:

bin/console autoinstall -a

Wenn die automatisierte Installation aus irgendeinem Grund fehlschlägt, dann prüfe das Folgende:

  • Existiert die config/local.config.php? Falls ja, wird die automatisierte Installation nicht gestartet.
  • Sind Einstellungen in der config/local.config.php korrekt? Falls nicht, bitte bearbeite diese Datei erneut.
  • Ist die leere MySQL-Datenbank erstellt? Falls nicht, erstelle diese.

B.1: Konfigurationsdatei

Für diese Variante muss ein Konfigurationsdatei bereits vor der Installation fertig definiert sein (z.B. local-sample.config.php.

Gehe im Anschluss in den Friendica-Hauptordner und führe den Kommandozeilen Befehl aus:

bin/console autoinstall -f <prepared.config.php>

B.2: Umgebungsvariablen

Es existieren Zwei Arten von Umgebungsvariablen in Friendica:

  • Jene, die auch im normalen Betrieb verwendet werden können (derzeit ausschließlich Datenbank Einstellungen)
  • Jene, die nur während der Installation verwedent werden können (im normalen Betrieb werden sie ignoriert)

Umgebungsvariablen können auch durch adäquate Optionen (z.B. –dbhost <hostname>)übersteuert werden.

Datenbank Einstellungen

Nur wenn die Option –savedb gesetzt ist, werden diese Umgebungsvariablen auch in config/local.config.php gespeichert!

  • MYSQL_HOST Der Host der MySQL/MariaDB Datenbank
  • MYSQL_PORT Der Port der MySQL/MariaDB Datenbank
  • MYSQL_USERNAME Der Benutzername des MySQL Datenbanklogins (MySql - Variante)
  • MYSQL_USER Der Benutzername des MariaDB Datenbanklogins (MariaDB-Variante)
  • MYSQL_PASSWORD Das Passwort der MySQL/MariaDB Datenbanklogins
  • MYSQL_DATABASE Der Name der MySQL/MariaDB Datenbank
Friendica Einstellungen

Diese Umgebungsvariablen können nicht während des normalen Friendica Betriebs verwendet werden. Sie werden stattdessen direkt in config/local.config.php gespeichert.

  • FRIENDICA_PHP_PATH Der Pfad zur PHP-Datei
  • FRIENDICA_ADMIN_MAIL Die Admin E-Mail Adresse dieses Friendica Knotens (wird auch für den Admin-Zugang benötigt)
  • FRIENDICA_TZ Die Zeitzone von Friendica
  • FRIENDICA_LANG Die Sprache von Friendica

Gehe im Anschluss in den Friendica-Hauptordner und führe den Kommandozeilen Befehl aus:

bin/console autoinstall [--savedb]

B.3: Optionen

Alle Optionen werden in config/local.config.php gespeichert und überschreiben etwaige, zugehörige Umgebungsvariablen.

  • -H|–dbhost <host> Der Host der MySQL/MariaDB Datenbank (env MYSQL_HOST)
  • -p|–dbport <port> Der Port der MySQL/MariaDB Datenbank (env MYSQL_PORT)
  • -U|–dbuser <username> Der Benutzername des MySQL/MariaDB Datenbanklogins (env MYSQL_USER or MYSQL_USERNAME)
  • -P|–dbpass <password> Das Passwort der MySQL/MariaDB Datenbanklogins (env MYSQL_PASSWORD)
  • -d|–dbdata <database> Der Name der MySQL/MariaDB Datenbank (env MYSQL_DATABASE)
  • -u|–urlpath <url_path> Der Pfad Anteil der URL unter dem Friendica installiert ist - z.B. /friendica (env `FRIENDICA_URL_PATH`)
  • -b|–phppath <php_path> Der Pfad zur PHP-Datei (env FRIENDICA_PHP_PATH)
  • -A|–admin <mail> Die Admin E-Mail Adresse dieses Friendica Knotens (env FRIENDICA_ADMIN_MAIL)
  • -T|–tz <timezone> Die Zeitzone von Friendica (env FRIENDICA_TZ)
  • -L|–lang <language> Die Sprache von Friendica (env FRIENDICA_LANG)

Gehe in den Friendica-Hauptordner und führe den Kommandozeilen Befehl aus:

  bin/console autoinstall [options]

Kopiere die Datei .htaccess-dist nach .htaccess damit das Apache Modul mod-rewrite funktioniert. Wenn du Friendica in ein Unterverzeichnis installiert hast, dann passe die RewriteBase entsprechend an.

Beispiel:

cp .htacces-dist .htaccess

Hinweis: Benenne die Datei .htaccess-dist nicht um, da sie vom git Repository verwaltet wird und dies zu Komplikationen mit git führen kann.

Friendica sollte automatisch auf wichtige Adressen unter dem Pfad /.well-known/ antworten. Eine kritische URL ist zum Beispiel so aussehen: https://example.com/.well-known/host-meta. Diese muss für die Öffentlichkeit sichtbar sein und mit einer XML-Datei antworten, die automatisch von Friendica generiert wird.

Wenn diese URL nicht funktioniert, ist es möglich, dass eine andere Software den Pfad /.well-known/ verwendet. Andere Symptome können eine Fehlermeldung in den Admin-Einstellungen sein, die besagt, dass “konnte von deinem System nicht aufgerufen werden. Dies deutet auf ein schwerwiegendes Problem deiner Konfiguration hin.” Ein weiterer häufiger Fehler im Zusammenhang mit host-meta ist die “Ungültige Profil-URL”.

Sollte dies der Fall sein, prüfe ob es ein .well-known-Verzeichnis gibt, das nicht mit Friendica geliefert wurde. Die bevorzugte Konfiguration besteht darin, das Verzeichnis zu entfernen. Dies ist jedoch nicht immer möglich. Wenn es irgendeine /.known/.htaccess-Datei gibt, könnte diese die grundlegende Funktionalität von Friendica beeinträchtigen.. Sie sollten alle RewriteRules aus dieser Datei entfernen, oder gegebenenfalls die gesamte Datei entfernen.

Besuchen Sie an dieser Stelle erneut Ihre Website und registrieren Sie Ihr persönliches Konto mit derselben E-Mail wie im Konfigurationswert config.admin_email die bei der Installation eingegeben wurde. Registrierungsfehler sollten sich alle beheben lassen.

Wenn Sie zu diesem Zeitpunkt einen kritischen Fehler erhalten, deutet dies im Allgemeinen darauf hin, dass die Datenbank nicht korrekt installiert wurde. Möglicherweise möchten Sie die Datei config/local.config.php löschen/umbenennen und alle Datenbanktabellen löschen, damit Sie neu beginnen können.

(Notwendig) Einen Worker einrichten

Erstelle einen Cron job oder einen regelmäßigen Task, um den Poller alle 5-10 Minuten im Hintergrund ablaufen zu lassen. Beispiel:

cd /base/directory; /path/to/php bin/worker.php

Ändere “/base/directory” und “/path/to/php” auf deine Systemvorgaben.

Wenn du einen Linux-Server nutzt, benutze den Befehl “crontab -e” und ergänze eine Zeile wie die Folgende; angepasst an dein System

*/10 * * * * cd /home/myname/mywebsite; /usr/bin/php bin/worker.php

Du kannst den PHP-Pfad finden, indem du den Befehl „which php“ ausführst. Wenn du Schwierigkeiten mit diesem Schritt hast, kannst du deinen Hosting-Anbieter kontaktieren. Friendica wird nicht korrekt laufen, wenn dieser Schritt nicht erfolgreich abgeschlossen werden kann.

Falls das Einrichten des cron nicht möglich ist, kannst Du alternativ den “frontend worker” vom Administrationsinterface aus aktivieren.

Worker Alternative: Daemon

Alternativ zum Worker kannst du auch den Daemon als Hintergrundprozess auf dem Server ausführen lassen. Dies tust du mit folgendem Befehl:

  cd /path/to/friendica; php bin/daemon.php start

Ist der Daemon einmal gestartet, kannst du mit folgendem Befehl den Status überprüfen:

  cd /path/to/friendica; php bin/daemon.php status

Wird der Server neu gestartet, oder nach einem Fehler, muss der Daemon neu gestartet werden. Dies sollte mit einem Cron-Job automatisiert werden.

(Empfohlen) Server Protokolle & Log Rotation

An dieser Stelle solltest du dir Gedanken über das Logging auf deinem Server und die automatische Rotation der Protokolle machen.

Unter den Administrations Einstellungen findest du Informationen zu den Logs von Friendica und wie man ein PHP Protokoll führen kann. Da diese Dateien groß schnell werden können, sollten sie automatisch komprimiert werden (Rotation).

(Empfohlen) Erstelle einen Backup Plan

Es werden schlimme Dinge geschehen. Sei es nun ein Hardwareversagen oder eine kaputte Datenbank. Deshalb solltest du dir, nachdem die Installation deines Friendica Knotens abgeschlossen ist, einen Backup Plan erstellen.

Die wichtigste Datei ist die config/local.config.php im Stammverzeichnis deiner Friendica Installation. Und da alle Daten in der Datenbank gespeichert werden, solltest du einen nicht all zu alten Dump der Friendica Datenbank zur Hand haben, solltest du deinen Knoten wieder herstellen müssen.

(OPTIONAL) Reverse-proxying and HTTPS

Friendica sucht nach einigen häufig verwendeten HTTP Headern die auf eine Reverse-Proxy-Terminierung der HTTPS hinweisen. Während der Standard aus RFC 7239 die Verwendung des Forwarded-Headers spezifiziert.

  Forwarded: for=192.0.2.1; proto=https; by=192.0.2.2

Friendica unterstützt darüber hinaus auch noch einige Nicht-Standard die häufig verwendet werden.

  X-Forwarded-Proto: https
  Front-End-Https: on
  X-Forwarded-Ssl: on

Vorzugsweise sollte aber der Standard Header verwendet werden.

"System is currently unavailable. Please try again later"

Check your database settings. It usually means your database could not be opened or accessed. If the database resides on the same machine, check that the database server name is “localhost”.

500 Internal Error

This could be the result of one of our Apache directives not being supported by your version of Apache. Examine your apache server logs. You might remove the line “Options -Indexes” from the `.htaccess` file if you are using a Windows server as this has been known to cause problems. Also check your file permissions. Your website and all contents must generally be world-readable.

It is likely that your web server reported the source of the problem in its error log files. Please review these system error logs to determine what caused the problem. Often this will need to be resolved with your hosting provider or (if self-hosted) your web server configuration.

400 and 4xx "File not found" errors

First check your file permissions. Your website and all contents must generally be world-readable.

Ensure that mod-rewite is installed and working, and that your .htaccess file is being used. To verify the latter, create a file `test.out` containing the word “test” in the top directory of Friendica, make it world readable and point your web browser to

http://example.com/test.out

This file should be blocked. You should get a permission denied message.

If you see the word “test” your Apache configuration is not allowing your .htaccess file to be used (there are rules in this file to block access to any file with .out at the end, as these are typically used for system logs).

Make certain the .htaccess file exists and is readable by everybody, then look for the existence of “AllowOverride None” in the Apache server configuration for your site. This will need to be changed to “AllowOverride All”.

If you do not see the word “test”, your .htaccess is working, but it is likely that mod-rewrite is not installed in your web server or is not working.

On most Linux flavors:

% a2enmod rewrite
% /etc/init.d/apache2 restart

Consult your hosting provider, experts on your particular Linux distribution or (if Windows) the provider of your Apache server software if you need to change either of these and can not figure out how. There is a lot of help available on the web. Search “mod-rewrite” along with the name of your operating system distribution or Apache package (if using Windows).

Unable to write the file config/local.config.php due to permissions issues

Create an empty `config/local.config.php`file and apply world-write permission.

On Linux:

% touch config/local.config.php
% chmod 664 config/local.config.php

Retry the installation. As soon as the database has been created,

this is important

% chmod 644 config/local.config.php

Suhosin issues

Some configurations with “suhosin” security are configured without an ability to run external processes. Friendica requires this ability. Following are some notes provided by one of our members.

On my server I use the php protection system Suhosin.
One of the things it does is to block certain functions like proc_open, as configured in /etc/php5/conf.d/suhosin.ini:
suhosin.executor.func.blacklist = proc_open, …



For those sites like Friendica that really need these functions they can be enabled, e.g. in /etc/apache2/sites-available/friendica:

<Directory /var/www/friendica/>
   php_admin_value suhosin.executor.func.blacklist none
   php_admin_value suhosin.executor.eval.blacklist none
</Directory>



This enables every function for Friendica if accessed via browser, but not for the cronjob that is called via php command line. I attempted to enable it for cron by using something like:

*/10 * * * * cd /var/www/friendica/friendica/ && sudo -u www-data /usr/bin/php \
  -d suhosin.executor.func.blacklist=none \
  -d suhosin.executor.eval.blacklist=none -f bin/worker.php



This worked well for simple test cases, but the friendica-cron still failed with a fatal error:

suhosin[22962]: ALERT - function within blacklist called: proc_open() (attacker 'REMOTE_ADDR not set', file '/var/www/friendica/friendica/boot.php', line 1341)



After a while I noticed, that bin/worker.php calls further PHP script via proc_open. These scripts themselves also use proc_open and fail, because they are NOT called with -d suhosin.executor.func.blacklist=none.

So the simple solution is to put the correct parameters into config/local.config.php:

'config' => [
   //Location of PHP command line processor 
   'php_path' => '/usr/bin/php -d suhosin.executor.func.blacklist=none -d suhosin.executor.eval.blacklist=none',
],

Unable to create all mysql tables on MySQL 5.7.17 or newer

If the setup fails to create all the database tables and/or manual creation from the command line fails, with this error:

ERROR 1067 (42000) at line XX: Invalid default value for 'created'

You need to adjust your my.cnf and add the following setting under the [mysqld] section:

sql_mode = '';

After that, restart mysql and try again.


1)
Das solltest du wirklich einfach machen, TLS Zertifikate gibt es inzweischen umsonst von LetsEncrypt und die Einrichtung ist vergleichsweise einfach geworden. Solltest du hingegen wirklich gute Gründe haben auf TLS zu verzichten, z.B. weil du eine Testinstallation im lokalen Netzwerk betreiben möchtest, kannst du die ssl_policy in der config/local.config.php auf 0 setzen nachdem der Installations-Assistent durchgelaufen ist. Aber mach das niemals für eine Friendica Instanz im Produktiven Einsatz!
  • Zuletzt geändert: 2022-10-17 05:33