Legt den A/AAAA-Record fuer einen Namen in Plesk an bzw. aktualisiert ihn und holt anschliessend per DNS-01-Challenge ein Wildcard-Zertifikat von Let's Encrypt. Alle Bestandteile werden einzeln abgelegt, zusaetzlich als kombinierte bundle.pem und als passwortgeschuetzte cert.pfx. - Plesk-Anbindung ueber die XML-API (Zone finden, Records lesen/anlegen/loeschen) - ACME-Order mit dns-01, Account-Key wird wiederverwendet - Propagations-Check gegen die autoritativen Nameserver der Zone, bricht vor der Validierung ab statt einen Fehlversuch bei Let's Encrypt zu verbrennen - Renewal-Check: laeuft idempotent, taugt so direkt fuer den Cron - Docker-Container, Konfiguration ueber .env, Ausgabe im Projektverzeichnis - Tests ohne echten Plesk-Server bzw. ohne Zertifikatsausstellung Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
61 lines
2.2 KiB
Bash
61 lines
2.2 KiB
Bash
# ---------------------------------------------------------------------------
|
|
# Docker: UID/GID, damit die erzeugten Dateien dir gehoeren (id -u / id -g)
|
|
# ---------------------------------------------------------------------------
|
|
PUID=1000
|
|
PGID=1000
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Plesk Server
|
|
# ---------------------------------------------------------------------------
|
|
PLESK_HOST=plesk.example.com
|
|
PLESK_PORT=8443
|
|
|
|
# Authentifizierung: entweder API-Key (empfohlen) ODER Login/Passwort.
|
|
# API-Key erzeugen (auf dem Plesk-Server):
|
|
# plesk bin secret_key --create -ip-address <IP-des-Docker-Hosts>
|
|
PLESK_API_KEY=
|
|
PLESK_USER=admin
|
|
PLESK_PASSWORD=
|
|
|
|
# TLS-Zertifikat des Plesk-Panels pruefen (bei self-signed auf false setzen)
|
|
PLESK_VERIFY_TLS=false
|
|
PLESK_TIMEOUT=60
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# ACME / Let's Encrypt
|
|
# ---------------------------------------------------------------------------
|
|
ACME_EMAIL=admin@example.com
|
|
ACME_DIRECTORY_URL=https://acme-v02.api.letsencrypt.org/directory
|
|
# true => Staging-Umgebung von Let's Encrypt (zum Testen, keine Rate-Limits)
|
|
ACME_STAGING=false
|
|
ACME_ACCOUNT_DIR=/app/data
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Zertifikat
|
|
# ---------------------------------------------------------------------------
|
|
# Passwort fuer die .pfx-Datei und den verschluesselten Private Key
|
|
CERT_PASSWORD=bitte-aendern
|
|
CERT_OUTPUT_DIR=/app/certs
|
|
|
|
# rsa oder ec
|
|
KEY_TYPE=rsa
|
|
RSA_KEY_SIZE=4096
|
|
EC_CURVE=secp256r1
|
|
|
|
# PFX im Legacy-Format (SHA1/3DES) erzeugen - noetig fuer aeltere
|
|
# Windows-/Java-Importer. false = modern (AES-256).
|
|
PFX_LEGACY_COMPAT=false
|
|
|
|
# Erneuerung erst, wenn das vorhandene Zertifikat weniger Tage gueltig ist
|
|
RENEW_DAYS_BEFORE_EXPIRY=30
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# DNS
|
|
# ---------------------------------------------------------------------------
|
|
DNS_TTL=300
|
|
# Wartezeit auf DNS-Propagation der _acme-challenge TXT-Records (Sekunden)
|
|
DNS_PROPAGATION_TIMEOUT=600
|
|
DNS_PROPAGATION_INTERVAL=15
|
|
# Zusaetzliche Resolver fuer den Propagations-Check (Komma-separiert)
|
|
DNS_RESOLVERS=1.1.1.1,8.8.8.8
|