diff --git a/docs/post_installation/firststeps-rp.de.md b/docs/post_installation/firststeps-rp.de.md
index bace0bf00..e1a89d40e 100644
--- a/docs/post_installation/firststeps-rp.de.md
+++ b/docs/post_installation/firststeps-rp.de.md
@@ -153,8 +153,8 @@ server {
### HAProxy (von der Community unterstützt)
-!!! warning
- Dies ist ein nicht unterstützter Community Beitrag. Sie können gerne Korrekturen bereitstellen.
+!!! warning "Warnung"
+ Dies ist ein nicht unterstützter Community Beitrag. Korrekturen sind immer erwünscht!
**Wichtig/Fix erwünscht**: Dieses Beispiel leitet nur HTTPS-Verkehr weiter und benutzt nicht den in mailcow eingebauten ACME-Client.
@@ -172,8 +172,8 @@ backend mailcow
### Traefik v2 (von der Community unterstützt)
-!!! warning
- Dies ist ein nicht unterstützter Community Beitrag. Fühlen Sie sich frei, Korrekturen bereitzustellen.
+!!! warning "Warnung"
+ Dies ist ein nicht unterstützter Community Beitrag. Korrekturen sind immer erwünscht!
**Wichtig**: Diese Konfiguration deckt nur das "Reverseproxing" des Webpanels (nginx-mailcow) unter Verwendung von Traefik v2 ab. Wenn Sie auch die Mail-Dienste wie dovecot, postfix... reproxen wollen, müssen Sie die folgende Konfiguration an jeden Container anpassen und einen [EntryPoint](https://docs.traefik.io/routing/entrypoints/) in Ihrer `traefik.toml` oder `traefik.yml` (je nachdem, welche Konfiguration Sie verwenden) für jeden Port erstellen.
@@ -232,7 +232,7 @@ networks:
Starten Sie die neuen Container mit `docker compose up -d`.
-Da Traefik 2 ein acme v2 Format verwendet, um ALLE Lizenzen von allen Domains zu speichern, müssen wir einen Weg finden, die Zertifikate auszulagern. Zum Glück haben wir [diesen kleinen Container] (https://hub.docker.com/r/humenius/traefik-certs-dumper), der die Datei `acme.json` über ein Volume und eine Variable `DOMAIN=example. org`, und damit wird der Container die `cert.pem` und `key.pem` Dateien ausgeben, dafür lassen wir einfach den `traefik-certs-dumper` Container laufen, binden das `/traefik` Volume an den Ordner, in dem unsere `acme.json` gespeichert ist, binden das `/output` Volume an unseren mailcow `data/assets/ssl/` Ordner, und setzen die `DOMAIN=example.org` Variable auf die Domain, von der wir die Zertifikate ausgeben wollen.
+Da Traefik 2 ein acme v2 Format verwendet, um ALLE Zertifikaten von allen Domains zu speichern, müssen wir einen Weg finden, die Zertifikate auszulagern. Zum Glück haben wir [diesen kleinen Container] (https://hub.docker.com/r/humenius/traefik-certs-dumper), der die Datei `acme.json` über ein Volume und eine Variable `DOMAIN=example. org`, und damit wird der Container die `cert.pem` und `key.pem` Dateien ausgeben, dafür lassen wir einfach den `traefik-certs-dumper` Container laufen, binden das `/traefik` Volume an den Ordner, in dem unsere `acme.json` gespeichert ist, binden das `/output` Volume an unseren mailcow `data/assets/ssl/` Ordner, und setzen die `DOMAIN=example.org` Variable auf die Domain, von der wir die Zertifikate ausgeben wollen.
Dieser Container überwacht die Datei `acme.json` auf Änderungen und generiert die Dateien `cert.pem` und `key.pem` direkt in `data/assets/ssl/`, wobei der Pfad mit dem `/output`-Pfad des Containers verbunden ist.
@@ -242,6 +242,72 @@ Nachdem wir die Zertifikate übertragen haben, müssen wir die Konfigurationen a
Und das sollte es gewesen sein 😊, Sie können überprüfen, ob der Traefik-Router einwandfrei funktioniert, indem Sie das Dashboard von Traefik / traefik logs / über https auf die eingestellte Domain zugreifen, oder / und HTTPS, SMTP und IMAP mit den Befehlen auf der zuvor verlinkten Seite überprüfen.
+### Caddy v2 (von der Community unterstützt)
+
+!!! warning "Warnung"
+ Dies ist ein nicht unterstützter Communitybeitrag. Korrekturen sind immer erwünscht!
+
+Die Konfiguration von Caddy mit mailcow ist sehr simpel.
+
+In der Caddyfile muss einfach nur ein Bereich für den E-Mailserver angelegt werden.
+
+Bspw:
+
+``` hl_lines="1 3 13"
+
+MAILCOW_HOSTNAME autodiscover.MAILCOW_HOSTNAME autoconfig.MAILCOW_HOSTNAME {
+ log {
+ output file /var/log/caddy/MAILCOW_HOSTNAME.log {
+ roll_disabled
+ roll_size 512M
+ roll_uncompressed
+ roll_local_time
+ roll_keep 3
+ roll_keep_for 48h
+ }
+ }
+
+ reverse_proxy 127.0.0.1:HTTP_BIND
+}
+```
+
+Dies erlaubt es Caddy automatisch die Zertifikate zu erstellen und den Traffic für diese erwähnten Domains anzunehmen und an mailcow weiterzuleiten.
+
+**Wichtig**: Der ACME Client der mailcow muss deaktiviert sein, da es sonst zu Fehlern seitens mailcow kommt.
+
+Da Caddy sich direkt selbst um die Zertifikate kümmert, können wir mit dem folgenden Skript die Caddy generierten Zertifikate in die mailcow inkludieren:
+
+```bash
+#!/bin/bash
+MD5SUM_CURRENT_CERT=($(md5sum /opt/mailcow-dockerized/data/assets/ssl/cert.pem))
+MD5SUM_NEW_CERT=($(md5sum /var/lib/caddy/.local/share/caddy/certificates/acme-v02.api.letsencrypt.org-directory/develcow.derlinkman.de/develcow.derlinkman.de.crt))
+
+if [ $MD5SUM_CURRENT_CERT != $MD5SUM_NEW_CERT ]; then
+ cp /var/lib/caddy/.local/share/caddy/certificates/acme-v02.api.letsencrypt.org-directory/develcow.derlinkman.de/develcow.derlinkman.de.crt /opt/mailcow-dockerized/data/assets/ssl/cert.pem
+ cp /var/lib/caddy/.local/share/caddy/certificates/acme-v02.api.letsencrypt.org-directory/develcow.derlinkman.de/develcow.derlinkman.de.key /opt/mailcow-dockerized/data/assets/ssl/key.pem
+ postfix_c=$(docker ps -qaf name=postfix-mailcow)
+ dovecot_c=$(docker ps -qaf name=dovecot-mailcow)
+ nginx_c=$(docker ps -qaf name=nginx-mailcow)
+ docker restart ${postfix_c} ${dovecot_c} ${nginx_c}
+
+else
+ echo "Certs not copied from Caddy (Not needed)"
+fi
+```
+
+!!! warning "Achtung"
+ Der Zertifikatspfad von Caddy variiert je nach Installationsart.
+ Bei diesem Installationsbeispiel wurde Caddy mithilfe des Caddy Repos ([weitere Informationen hier](https://caddyserver.com/docs/install#debian-ubuntu-raspbian)) installiert.
+
+ Um den Caddy Zertifikatspfad auf Ihrem System herauszufinden, genügt ein `find / -name "certificates"`.
+
+
+Dieses Skript könnte dann als Cronjob jede Stunde aufgerufen werden:
+
+```bash
+0 * * * * /bin/bash /path/to/script/deploy-certs.sh >/dev/null 2>&1
+```
+
### Optional: Post-Hook-Skript für nicht-mailcow ACME-Clients
Die Verwendung eines lokalen Certbots (oder eines anderen ACME-Clients) erfordert den Neustart einiger Container, was Sie mit einem Post-Hook-Skript erledigen können.
diff --git a/docs/post_installation/firststeps-rp.en.md b/docs/post_installation/firststeps-rp.en.md
index ec2777853..12871ceac 100644
--- a/docs/post_installation/firststeps-rp.en.md
+++ b/docs/post_installation/firststeps-rp.en.md
@@ -246,6 +246,70 @@ After we have the certs dumped, we'll have to reload the configs from our postfi
Aaand that should be it 😊, you can check if the Traefik router works fine trough Traefik's dashboard / traefik logs / accessing the setted domain trough https, or / and check HTTPS, SMTP and IMAP trough the commands shown on the page linked before.
+### Caddy v2 (supported by the community)
+
+!!! warning
+ This is an unsupported community contribution. Feel free to provide fixes.
+
+The configuration of Caddy with mailcow is very simple.
+
+In the caddyfile you just have to create a section for the mailserver.
+
+For example
+``` hl_lines="1 3 13"
+
+MAILCOW_HOSTNAME autodiscover.MAILCOW_HOSTNAME autoconfig.MAILCOW_HOSTNAME {
+ log {
+ output file /var/log/caddy/MAILCOW_HOSTNAME.log {
+ roll_disabled
+ roll_size 512M
+ roll_uncompressed
+ roll_local_time
+ roll_keep 3
+ roll_keep_for 48h
+ }
+ }
+
+ reverse_proxy 127.0.0.1:HTTP_BIND
+}
+```
+
+This allows Caddy to automatically create the certificates and accept traffic for these mentioned domains and forward them to mailcow.
+
+**Important**: The ACME client of mailcow must be disabled, otherwise mailcow will fail.
+
+Since Caddy takes care of the certificates itself, we can use the following script to include the Caddy generated certificates into mailcow:
+
+```bash
+#!/bin/bash
+MD5SUM_CURRENT_CERT=($(md5sum /opt/mailcow-dockerized/data/assets/ssl/cert.pem))
+MD5SUM_NEW_CERT=($(md5sum /var/lib/caddy/.local/share/caddy/certificates/acme-v02.api.letsencrypt.org-directory/develcow.derlinkman.de/develcow.derlinkman.de.crt))
+
+if [ $MD5SUM_CURRENT_CERT != $MD5SUM_NEW_CERT ]; then
+ cp /var/lib/caddy/.local/share/caddy/certificates/acme-v02.api.letsencrypt.org-directory/develcow.derlinkman.de/develcow.derlinkman.de.crt /opt/mailcow-dockerized/data/assets/ssl/cert.pem
+ cp /var/lib/caddy/.local/share/caddy/certificates/acme-v02.api.letsencrypt.org-directory/develcow.derlinkman.de/develcow.derlinkman.de.key /opt/mailcow-dockerized/data/assets/ssl/key.pem
+ postfix_c=$(docker ps -qaf name=postfix-mailcow)
+ dovecot_c=$(docker ps -qaf name=dovecot-mailcow)
+ nginx_c=$(docker ps -qaf name=nginx-mailcow)
+ docker restart ${postfix_c} ${dovecot_c} ${nginx_c}
+
+else
+ echo "Certs not copied from Caddy (Not needed)"
+fi
+```
+
+!!! warning "Attention"
+ Caddy's certificate path varies depending on the installation type.
+ In this installation example, Caddy was installed using the Caddy repo ([more informations here](https://caddyserver.com/docs/install#debian-ubuntu-raspbian)).
+
+ To find out the Caddy certificate path on your system, just run a `find / -name "certificates"`.
+
+This script could be called as a cronjob every hour:
+
+```bash
+0 * * * * /bin/bash /path/to/script/deploy-certs.sh >/dev/null 2>&1
+```
+
### Optional: Post-hook script for non-mailcow ACME clients
Using a local certbot (or any other ACME client) requires to restart some containers, you can do this with a post-hook script.