This commit is contained in:
scriptos 2024-03-17 14:51:53 +01:00
parent 2e1695eede
commit 07e629de5c
3 changed files with 66 additions and 2 deletions

View File

@ -1,3 +1,28 @@
# cloudpanel-autorenew-letsencrypt-certs
# Autorenew der Letsencrypt Zertifikate mit CloudPanel
Erneuert Lets Encrypt Zertifikate in CloudPanel über die Kommandozeile
## 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`

BIN
assets/autorenew.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 170 KiB

View File

@ -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