Erneuert Lets Encrypt Zertifikate in CloudPanel über die Kommandozeile
Find a file
2025-07-12 19:39:20 +02:00
assets fix 2024-03-17 15:02:20 +01:00
cloudpanel-autorenew-letsencrypt-certs.v1.sh redesign 2025-07-12 19:39:20 +02:00
LICENSE Initial commit 2024-03-17 12:21:00 +00:00
README.md redesign 2025-07-12 19:39:20 +02:00

Autorenew der Letsencrypt Zertifikate mit CloudPanel

Was macht dieses Script?

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.

Feature: Domains ausschließen

Domains können jetzt ausgeschlossen werden. Das kann ganz einfach geschehen, in dem die auszuschließenden Domains in der Variable exclude_domains= gepflegt werden.

Ein Beispiel:

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=""

Feature: Alternative DNS Names berücksichtigen

Alternative DNS Names werden jetzt ebenfalls unterstützt.

Die einzige Voraussetzung ist, dass in der Vhost Konfiguration der Alternative DNS Name nach dem eigentlichen DNS Namen angegeben wird.

Ein Beispiel:

Ich habe eine Site erstellt. Dabei habe ich die Domain cloud.media-techport.de angegeben. In der Vhost Konfiguration ist dieser an erster Stelle gepflegt:

server {
  listen 80;
  listen [::]:80;
  listen 443 ssl http2;
  listen [::]:443 ssl http2;
  {{ssl_certificate_key}}
  {{ssl_certificate}}
  server_name cloud.media-techport.de cloud.techniverse.net;
  {{root}}

An zweiter Stelle habe ich den alternativen DNS Name gepflegt. In meinem Fall cloud.techniverse.net Mehr müsst ihr nicht tun. Das Script wird dies berücksichtigen.

Ausführung:

  1. Klonen des Repositorys
git clone https://codeberg.org/Tealk/cloudpanel-autorenew-letsencrypt-certs.git`
  1. Ausführen des Scripts
bash cloudpanel-autorenew-letsencrypt-certs.v1.sh

Cronjob:

1. Erstelle eine systemd Service-Datei

Lege die Datei /etc/systemd/system/cloudpanel-autorenew-letsencrypt-certs.service mit folgendem Inhalt an:

[Unit]
Description=Renew Let's Encrypt certificates for CloudPanel

[Service]
Type=oneshot
ExecStart=/bin/bash /home/scripts/default/cloudpanel-autorenew-letsencrypt-certs.v1.sh

2. Erstelle eine systemd Timer-Datei

Lege die Datei /etc/systemd/system/cloudpanel-autorenew-letsencrypt-certs.timer mit folgendem Inhalt an:

[Unit]
Description=Daily renewal of Let's Encrypt certificates for CloudPanel

[Timer]
OnCalendar=daily
Persistent=true

[Install]
WantedBy=timers.target

3. Timer aktivieren und starten

Führe folgende Befehle aus, um den Timer zu aktivieren und zu starten:

systemctl daemon-reload
systemctl enable --now cloudpanel-autorenew-letsencrypt-certs.timer

4. Status prüfen

Mit folgendem Befehl kannst du den Status des Timers prüfen:

systemctl list-timers --all | grep cloudpanel-autorenew-letsencrypt-certs