Compare commits
2 Commits
4891da72b0
...
325df1a556
Author | SHA1 | Date | |
---|---|---|---|
325df1a556 | |||
|
6eddcbdc27 |
58
README.md
58
README.md
@ -1,50 +1,80 @@
|
|||||||
|
|
||||||
# Autorenew der Letsencrypt Zertifikate mit CloudPanel
|
# Autorenew der Letsencrypt Zertifikate mit CloudPanel
|
||||||
|
|
||||||
|
|
||||||
## Was macht dieses Script?
|
## 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.
|
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:
|
## Ausführung:
|
||||||
|
|
||||||
1. **Klonen des Repositorys**
|
1. **Klonen des Repositorys**
|
||||||
|
|
||||||
`git clone https://git.techniverse.net/scriptos/cloudpanel-autorenew-letsencrypt-certs.git`
|
`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="mail@domain.com"
|
||||||
email_from_name="$hostname | CloudPanel Server"
|
email_from_name="$hostname | CloudPanel Server"
|
||||||
email_to="mail@domain.com"
|
email_to="mail@domain.com"
|
||||||
email_subject="Letsencrypt Zertifikate wurden auf $HOSTNAME erneuert"
|
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`
|
`bash cloudpanel-autorenew-letsencrypt-certs.v1.sh`
|
||||||
|
|
||||||
Die Ausgabe sollte folgendermaßen aussehen:
|
Die Ausgabe sieht folgendermaßen aus:
|
||||||
|
```bash
|
||||||
![autorenew](https://git.techniverse.net/scriptos/cloudpanel-autorenew-letsencrypt-certs/raw/branch/main/assets/autorenew1.png)
|
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:
|
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:
|
## Cronjob:
|
||||||
|
|
||||||
Der Cronjob kann wiefolgt konfiguriert werden.
|
Der Cronjob kann wiefolgt konfiguriert werden.
|
||||||
Ich für meinen Teil lasse dieses Script einmal im Monat laufen.
|
|
||||||
|
|
||||||
1. Aufrufen des Crontabs
|
1. Aufrufen des Crontabs
|
||||||
`crontab -e`
|
`crontab -e`
|
||||||
|
|
||||||
2. Konfiguration Cronjob
|
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`
|
||||||
|
|
||||||
|
<p align="center">
|
||||||
|
<img src="https://assets.techniverse.net/f1/git/graphics/gray0-catonline.svg" alt="">
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p align="center">
|
||||||
|
<img src="https://assets.techniverse.net/f1/logos/small/license.png" alt="License" width="15" height="15"> <a href="./template_repository/src/branch/main/LICENSE">License</a> | <img src="https://assets.techniverse.net/f1/logos/small/matrix2.svg" alt="Matrix" width="15" height="15"> <a href="https://matrix.to/#/#community:techniverse.net">Matrix</a> | <img src="https://assets.techniverse.net/f1/logos/small/mastodon2.svg" alt="Matrix" width="15" height="15"> <a href="https://social.techniverse.net/@donnerwolke">Mastodon</a>
|
||||||
|
</p>
|
Loading…
Reference in New Issue
Block a user