diff --git a/README.md b/README.md index 8651b84..e85d809 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,28 @@ -# cloudpanel-autorenew-letsencrypt-certs +# Autorenew der Letsencrypt Zertifikate mit CloudPanel -Erneuert Lets Encrypt Zertifikate in CloudPanel über die Kommandozeile \ No newline at end of file +## 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. + +## Ausführung: + +1. Klonen des Repositorys +`git clone https://git.media-techport.de/scriptos/cloudpanel-autorenew-letsencrypt-certs.git` + +2. Ausführen des Scripts +`bash cloudpanel-autorenew-letsencrypt-certs.v1.sh` + +Die Ausgabe sollte folgendermaßen aussehen: + +![autorenew](https://git.media-techport.de/scriptos/cloudpanel-autorenew-letsencrypt-certs/raw/branch/main/assets/autorenew.png) + +## 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` diff --git a/assets/autorenew.png b/assets/autorenew.png new file mode 100644 index 0000000..4201c3b Binary files /dev/null and b/assets/autorenew.png differ diff --git a/cloudpanel-autorenew-letsencrypt-certs.v1.sh b/cloudpanel-autorenew-letsencrypt-certs.v1.sh new file mode 100644 index 0000000..2393638 --- /dev/null +++ b/cloudpanel-autorenew-letsencrypt-certs.v1.sh @@ -0,0 +1,39 @@ +#!/bin/bash +# Script Name: cloudpanel-autorenew-letsencrypt-certs.v1.sh +# Beschreibung: Erneuert automatisch Letsencrypt Zertifikate in Cloudpanel +# Aufruf: bash ./cloudpanel-autorenew-letsencrypt-certs.v1.sh +# Autor: Patrick Asmus +# Web: https://www.media-techport.de +# Git-Reposit.: https://git.media-techport.de/scriptos/cloudpanel-autorenew-letsencrypt-certs.git +# Version: 1.0 +# Datum: 17.03.2024 +# Modifikation: Initial +##################################################### + +# Variablen +config_path="/etc/nginx/sites-enabled/" +log_dir="/var/log/script-logs" +log_file="$log_dir/cloudpanel-letsencrypt-renew.log" + +# Leite die Ausgaben in das Log-File um +mkdir -p $log_dir +exec > >(tee -i "$log_file") +exec 2>&1 + +# Funktion zur Erneuerung/Erstellung von Zertifikaten +renew_certificate() { + local domain=$1 + echo "Erneuere/Erstelle Zertifikat für: $domain" + bash /usr/bin/clpctl lets-encrypt:install:certificate --domainName=$domain +} + +# Extrahiere Domains aus den Konfigurationsdateien und führe Zertifikatserneuerung aus +for file in $config_path*; do + domains=$(grep "server_name" $file | awk '{print $2}' | tr -d ';' | sed 's/^www\.//' | tr -d '\r') + for domain in $domains; do + if [ "$domain" != "_" ]; then + renew_certificate $domain + fi + done +done +