systemd: Automatischer Neustart von Diensten nach Fehlern

Mit systemd kann man Dienste bei Fehlern automatisch restarten lassen.

Zuerst checkt man welche Konfig-Datei den Dienst steuert – die Datei steht unter loaded:

systemctl status yourdaemon

Hier in dem Beispiel also /lib/systemd/system/nginx.service.

Diese öffnen wir

vim /lib/systemd/system/nginx.service

Und fügen unter [service] folgendes ein:

Restart=on-failure
RestartSec=3s

Dann sieht das folgendermaßen aus:

Danach muss man den Dienst nochmal neu laden

systemctl daemon-reload

Quelle: https://ma.ttias.be/auto-restart-crashed-service-systemd/

Linux: iperf3 als systemd-Deamon

Will man unter Linux (in meinem Fall Debian) iperf3 als Deamon laufen lassen geht das relativ einfach wie folgt:

Erstmal installieren wir iperf3

sudo apt install iperf3

Danach erstellen wir die Service-Datei für den systemd-Deamon:

sudo vim /etc/systemd/system/iperf3.service

Dort kopieren wir folgendes rein und speichern die Datei:

[Unit] 
Description=iperf3 

[Service] 
ExecStart=/usr/bin/iperf3 --server 

[Install]
WantedBy=multi-user.target

Jetzt können wir den Deamon aktiveren:

sudo systemctl enable iperf3

Jetzt können wir den Deamon starten:

sudo systemctl start iperf3

Überprüfen ob der Dienst läuft:

sudo systemctl status iperf3

Jetzt läuft immer der iperf3-Dienst – auch nach Restart des Severs 🙂

Quelle: https://willhaley.com/blog/iperf3-server-client/

UniFi-Controller mit Let’s Encrypt-Zertifikat

Um den Unifi-Controller ein Let’s Encrypt-Zertifikat zu importieren ist relativ simpel.

Dazu benötigen wir die vorhandenen Zertifikate und das unifi_ssl_import.sh-Script das es unter https://github.com/stevejenkins/unifi-linux-utils gibt 🙂

Jetzt muss man es nur anpassen:

UNIFI_HOSTNAME = die Domain.

Wen man Debian/Ubuntu nutzt kann man jetzt den ganzen Fedora/Redhat/Centos-Teil löschen und die UNIFI_DIR, JAVA_DIR und KEYSTORE Zeilen für Debian/Ubuntu auskommentieren.

Dann LE_MODE auf yes setzten

 PRIV_KEYSIGNED_CRT und CHAIN_FILE noch auskommentieren

# CONFIGURATION OPTIONS
UNIFI_HOSTNAME=unifi.friedlandreas.net
UNIFI_SERVICE=unifi

# Uncomment following three lines for Fedora/RedHat/CentOS
#UNIFI_DIR=/opt/UniFi
#JAVA_DIR=${UNIFI_DIR}
#KEYSTORE=${UNIFI_DIR}/data/keystore

# Uncomment following three lines for Debian/Ubuntu
UNIFI_DIR=/var/lib/unifi
JAVA_DIR=/usr/lib/unifi
KEYSTORE=${UNIFI_DIR}/keystore

# Uncomment following three lines for CloudKey
#UNIFI_DIR=/var/lib/unifi
#JAVA_DIR=/usr/lib/unifi
#KEYSTORE=${JAVA_DIR}/data/keystore

# FOR LET'S ENCRYPT SSL CERTIFICATES ONLY
# Generate your Let's Encrtypt key & cert with certbot before running this script
LE_MODE=yes
LE_LIVE_DIR=/etc/letsencrypt/live

# THE FOLLOWING OPTIONS NOT REQUIRED IF LE_MODE IS ENABLED
#PRIV_KEY=/etc/letsencrypt/live/unifi.friedlandreas.net//hostname.example.com.key
#SIGNED_CRT=/etc/ssl/certs/hostname.example.com.crt
#CHAIN_FILE=/etc/ssl/certs/startssl-chain.crt

# CONFIGURATION OPTIONS YOU PROBABLY SHOULDN'T CHANGE
ALIAS=unifi
PASSWORD=aircontrolenterprise

Jetzt noch das Script ausführbar machen

chmod a+x unifi_ssl_import.sh

und jetzt noch für das Script einen Cronjob erstellen:

sudo crontab -e

und dort z.B. die Zeile

0 0 * * 0 /pfad/zum/script/unifi_ssl_import.sh >/dev/null 2>&1

hinzufügen.

Jetzt wird jeden Tag gecheckt ob ein neues Zertifikat vorhanden ist und falls vorhanden wird das Zertifikat in den UniFi-Controller importiert 🙂

Quelle: https://blog.khophi.co/

Vim: Suchen und Ersetzen

Ich arbeite sehr viel im Vim – auf der Konsole ist das mein Standardeditor.

Was ich sehr oft brauche – und immer mal wieder nachschauen muss ich das Suchen und Ersetzen -> deshalb schreib ich mir das jetzt mal hier auf 🙂

Einmalig ersetzen:
:%s/[Suchstring]/[Ersetzungsstring]/

Alle Vorkommen ersetzen:
:%s/[Suchstring]/[Ersetzungsstring]/g

Alle Vorkommen ersetzen – mit Parameter i case-insensitive (Groß- und Kleinschreibung egal):
:%s/[Suchstring]/[Ersetzungsstring]/gi

Alle Vorkommen ersetzen – mit Parameter i case-insensitive (Groß- und Kleinschreibung egal) und Parameter c für Nachfrage ob ersetzt werden soll:
:%s/[Suchstring]/[Ersetzungsstring]/gic

Beispiel:

:%s/AlterServerName/NeuerServerName/gi

Hier wird der String AlterServerName durch den String NeuerServerName ersetzt – egal wie AlterServerName geschrieben ist -> also auch alterservername, ALTERSERVERNAME, etc

Achtung: Da der String hier als Regulärer Ausdruck interpretiert wird, müssen reservierte Zeichen, z.B. „.“, escaped werden, indem man ihm ein „\“ voranstellt.

Quelle: www.it-blog.net

Nextcloud: HTTP Error 500 nach Update

Ich hatte das Problem das nach dem Update bzw. Upgrade von Nextcloud 16 auf Nextcloud 17 (über den Web-Updater) meine Nextcloud nicht mehr erreichbar war und

HTTP ERROR 500

ausgab.

Lösen konnte ich das Problem über die Shell (der Pfad ist euer Nextcloud-Verzeichnis):

cd /var/www/nextcloud

sudo -u www-data php occ upgrade

Danach lief wieder alles 🙂

Quelle: https://help.nextcloud.com/t/http-error-500-after-update-to-nc-13/27001/3

Debian 8 (Jessie): Update über apt schlägt fehl

Will man ein Debian 8 mit apt-get update oder apt update updaten und schlägt dies mit einer Meldung wie dieser fehl

Fehl http://ftp.debian.org jessie-backports/main amd64 Packages 404 Not Found [IP: 130.89.148.12 80] W: Fehlschlag beim Holen von http://ftp.debian.org/debian/dists/jessie-backports/main/binary-amd64/Packages 404 Not Found [IP: 130.89.148.12 80] E: Einige Indexdateien konnten nicht heruntergeladen werden. Sie wurden ignoriert oder alte an ihrer Stelle benutzt.

liegt das daran, dass Debian im März 2019 die Sourcen verschoben haben – und die alten in der sources.list nicht mehr funktionieren.

Man muss jetzt nur die sources.list Datei in /etc/apt/ auf die neuen Quellen ändern:

deb http://security.debian.org/ jessie/updates main
deb-src http://security.debian.org/ jessie/updates main

deb http://archive.debian.org/debian/ jessie-backports main
deb-src http://archive.debian.org/debian/ jessie-backports main

deb http://archive.debian.org/debian/ jessie main contrib non-free
deb-src http://archive.debian.org/debian/ jessie main contrib non-free

Und zusätzlich muss noch folgender Befehl auf der Shell ausführt werden:

echo "Acquire::Check-Valid-Until false;" | tee -a /etc/apt/apt.conf.d/10-nocheckvalid

Jetzt sollte einem gepflegten apt update && apt upgrade -y nichts mehr im Wege stehen 🙂

Quelle: www.kernelhost.de

Upload zu Nextcloud aus der Konsole via cURL

Um Daten von der Konsole aus zu einer Nextcloud hochzuladen braucht es nur cURL :

curl -X PUT „https://meine.nextcloud.net/remote.php/webdav/Ordner/Datei.txt“ –data-binary @“Datei.txt“ -u nextcloud-user

Um also z.B. die Datei Backup.tar.gz in den Ordner Backup des Users cloud hochzuladen wäre der Befehl also:

curl -X PUT „https://meine.nextcloud.net/remote.php/webdav/Backup/Backup.tar.gz“ –data-binary @“Backup.tar.gz“ -u cloud

Super easy und man muss die Konsole nicht verlassen 🙂