From 6eddcbdc278f48bfd04095506d815e53ce024ee3 Mon Sep 17 00:00:00 2001 From: scriptos Date: Tue, 2 Jul 2024 21:39:42 +0200 Subject: [PATCH] =?UTF-8?q?Doku=20=C3=BCberarbeitet?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 58 +++++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 44 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index 803e4ed..ab59d0e 100644 --- a/README.md +++ b/README.md @@ -1,50 +1,80 @@ + # Autorenew der Letsencrypt Zertifikate mit CloudPanel + ## Was macht dieses Script? -Das Skript `cloudpanel-autorenew-letsencrypt-certs.v1.sh` automatisiert die Erneuerung und Installation von Let's Encrypt-Zertifikaten für alle Domains und Subdomains, die auf einem CloudPanel-Server konfiguriert sind. Es durchsucht die Nginx-Konfigurationsdateien im Verzeichnis `/etc/nginx/sites-enabled/` nach Domain-Namen, extrahiert diese und führt für jede gefundene Domain den Befehl `clpctl lets-encrypt:install:certificate` aus, um das entsprechende SSL-Zertifikat zu erneuern oder zu installieren. Das Skript protokolliert alle seine Aktivitäten in eine Log-Datei, die im Verzeichnis `/var/log/script-logs` gespeichert wird. +Dieses Script prüft im ersten Schritt, wie lange das Zertifikat der angegeben Domain noch gültig ist. +Wenn die Gültigkeit einen Wert in Tagen unterschreitet, welcher in der Variable `days_until_expiry=` angegebenen wurde, wird ein neues LetsEncrypt Zertifikat für besagte Domain erstellt. +Der Wert ist mit 14 Tagen voreingestellt und kann nach belieben verändert werden. + +## Wie wird das Zertifikat erzeugt? + +Es durchsucht die Nginx-Konfigurationsdateien im Verzeichnis `/etc/nginx/sites-enabled/` nach dem Domain-Namen, extrahiert diesen und führt den Befehl `clpctl lets-encrypt:install:certificate` aus, um das entsprechende SSL-Zertifikat zu erneuern oder zu installieren. Das Skript protokolliert alle seine Aktivitäten in eine Log-Datei, die im Verzeichnis `/var/log/script-logs` gespeichert wird. + +## Features dieses Scriptes: Domains können jetzt ausgeschlossen werden. +Das kann ganz einfach geschehen, in dem die auszuschließenden Domains in der Variable `exclude_domains=` gepflegt werden. -Dazu einfach die Variable `exclude_domains` pflegen. +**Ein Beispiel:** -Domains werden mit Leerzeichen getrennt: `exclude_domains="example.com other.example.com"` +`exclude_domains="git.techniverse.net techniverse.net"` +In diesem Beispiel werden die Domains (Subdomains) `git.techniverse.net` und `techniverse.net` vom verlängern bzw. erstellen der LetzEncrypt Zertifikate ausgeschlossen. +Domains müssen immer durch Leerzeichen getrennt werden. +Sollen keine Domains ausgeschlossen werden, reicht es, die Variable leer zu lassen: `exclude_domains=""` -Wird diese Variable nicht gepflegt, werden alle Domains erneuert. ## Ausführung: 1. **Klonen des Repositorys** + `git clone https://git.techniverse.net/scriptos/cloudpanel-autorenew-letsencrypt-certs.git` -2. **Email Settings im Script anpassen** +3. **Email Settings im Script anpassen** -Folgende Variablen stehen zur Auswahl: -``` +Folgende Variablen stehen zur Auswahl, wenn der Emailversand genutzt werden soll: +```bash email_from="mail@domain.com" email_from_name="$hostname | CloudPanel Server" email_to="mail@domain.com" email_subject="Letsencrypt Zertifikate wurden auf $HOSTNAME erneuert" ``` -3. **Ausführen des Scripts** + +4. **Ausführen des Scripts** + `bash cloudpanel-autorenew-letsencrypt-certs.v1.sh` -Die Ausgabe sollte folgendermaßen aussehen: - -![autorenew](https://git.techniverse.net/scriptos/cloudpanel-autorenew-letsencrypt-certs/raw/branch/main/assets/autorenew1.png) +Die Ausgabe sieht folgendermaßen aus: +```bash +Das Zertifikat für cloud.media-techport.de läuft in weniger als 59 Tagen ab (in 58 Tagen). +Erneuere/Erstelle Zertifikat für: cloud.media-techport.de +Certificate installation was successful. +``` Wenn eine Domain übersprungen wird, sieht die Ausgabe folgendermaßen aus: -`Überspringe example.domain.com, da es ausgeschlossen ist.` +`Überspringe techniverse.net, da es ausgeschlossen ist.` + +Wenn ein Zertifikat länger gültig ist, als in der Variable angegeben, sieht die Ausgabe folgendermaßen aus: + +`Das Zertifikat für dl.techniverse.net ist noch 88 Tage gültig. Keine Erneuerung erforderlich.` ## Cronjob: Der Cronjob kann wiefolgt konfiguriert werden. -Ich für meinen Teil lasse dieses Script einmal im Monat laufen. 1. Aufrufen des Crontabs `crontab -e` 2. Konfiguration Cronjob -`@monthly bash /home/scripts/default/cloudpanel-autorenew-letsencrypt-certs.v1.sh >/dev/null 2>&1` +`@daily bash /home/scripts/default/cloudpanel-autorenew-letsencrypt-certs.v1.sh >/dev/null 2>&1` + +

+ +

+ +

+License License | Matrix Matrix | Matrix Mastodon +

\ No newline at end of file -- 2.45.2