Für den Betrieb des dezentrale Netzwerk Friendica, welches auch hier auf einer eigenen Instanz läuft, müssen periodisch Nachrichten verschickt und notwendige andere Aufgaben abgearbeitet werden. Früher konnte dazu ein Cron-Job eingerichtet oder alternativ ein Addon installiert werden, welche diese Aufgaben periodisch ausführte. Mittlerweile hat Friendica dafür einen eigenen Daemon bekommen, dessen Einbindung in ein Debian-System mit systemd hier kurz vorgestellt wird.
Der Update-Daemon erzeugt ein PID-File, dessen Name und Pfad in der Konfigurationsdatei "config/local.config.php" eingestellt wird:
'system' => [ 'pidfile' => '/run/friendica/daemon.pid', ],
Beim Systemstart existiert obiges Verzeichnis noch nicht. Debian verwaltet flüchtige Dateien und Verzeichnisse mit systemd-tmpfiles. Damit dieses Verzeichnis beim Systemstart automatisch angelegt wird, kann in die Datei "/etc/tmpfiles.d/friendica.conf" Folgendes eingetragen werden:
d /run/friendica 0755 www-data www-data -
Das Verzeichnis wird mit den angegebenen Berechtigungen und Eigentümer angelegt. Damit das Verzeichnis sofort zur Verfügung steht, wird folgender Befehl verwendet:
systemd-tmpfiles --create --prefix /run/friendica
Anschließend wird das Unit-File für systemd unter "/etc/systemd/system/friendica-daemon.service" mit folgendem Inhalt angelegt:
[Unit] Description=Friendica daemon After=network.target mysqld.service Requires=network.target remote-fs.target nss-lookup.target [Service] User=www-data Group=www-data WorkingDirectory=/srv/friends Type=simple StandardOutput=null StandardError=syslog ExecStart=/usr/bin/php ./bin/daemon.php start ExecStop=/usr/bin/php ./bin/daemon.php stop PIDFile=friendica/daemon.pid PrivateTmp=true InaccessibleDirectories=/home /root /boot /opt /mnt /media ReadOnlyDirectories=/etc /usr Restart=always [Install] WantedBy=multi-user.target
Der Pfad bei WorkingDirectory muss auf den Pfad der lokalen Friendica-Installation angepasst werden. Anschießend werden die Unit-Files von systemd neu geladen:
systemctl daemon-reload
Jetzt kann der Update-Daemon mit systemd gestartet werden:
systemctl start friendica-daemon.service
Nach dem erfolgreichen Start schreibt der Update-Daemon seine PID in die oben angegebene Datei "/run/friendica/daemon.pid". Die gleiche PID sollte in der Ausgabe des folgenden Befehls angezeigt werden:
systemctl status friendica-daemon.service
Sollte bis hier hin alles korrekt verlaufen sein, kann der Update-Daemon für den automatischen Start beim Systemstart aktiviert werden:
systemctl enable friendica-daemon.service