Domains & DNS¶
Übersicht¶
Die Polycrate API verwaltet Domains (Business-Objekt), DNS-Zonen (technisches Objekt) und DNS-Records. Zonen können in zwei Betriebsmodi geführt werden: internal (Betrieb auf unserer PowerDNS-Infrastruktur) oder external (Management-Interface für Zonen bei Drittanbietern wie Cloudflare, Hetzner, Route 53 etc.).
graph LR
Domain[Domain<br/>Business-Ebene] -->|optional verknüpft| DNSZone[DNSZone]
DNSZone -->|kind=internal| PDNS[PowerDNS<br/>Betrieb durch ayedo]
DNSZone -->|kind=external| Lexicon[python-lexicon<br/>89 Provider-APIs]
DNSZone --> DNSRecord[DNS Records]
Domain --> Registrar[Domain Registrar<br/>CentralNic, u.a.] | Konzept | Beschreibung |
|---|---|
| Domain | Domain-Name, den eine Organisation besitzt oder verwaltet (z. B. example.com) – inkl. Registrar-Status |
| DNS Zone | Technische DNS-Zone mit kind=internal (PowerDNS) oder kind=external (externer Provider) |
| DNS Record | Einzelner Eintrag (A, AAAA, CNAME, TXT, MX, NS, SOA, …) innerhalb einer Zone |
Internal vs. External Zonen¶
Der kind einer DNS-Zone bestimmt, wo die Zone technisch betrieben und wie die Records verwaltet werden.
kind=internal — Betrieb auf ayedo-PowerDNS¶
Die Zone läuft auf der von ayedo bereitgestellten PowerDNS-Infrastruktur.
- Records: Werden in der Polycrate-Datenbank persistiert und synchron zu PowerDNS geschrieben
- Nameserver: PowerDNS-Nameserver von ayedo (bei Domain-Registrar hinterlegen)
- Zone-Lifecycle:
provision()legt die Zone in PowerDNS an,deprovision()entfernt sie - Unique: Zone-Name muss systemweit eindeutig sein
- Abrechnung: Produkt DNS Zone (Internal) – Flat-Rate pro Zone (inkl. Nameserver-Betrieb, Monitoring, Backup)
Empfohlen für Kunden, die DNS komplett an ayedo delegieren wollen.
kind=external — Management-Interface für externe Provider¶
Die Zone existiert bei einem Drittanbieter (Cloudflare, Hetzner, Route 53, …). Polycrate stellt Management-UI, Audit-Log, API-Zugriff und Credential-Management bereit – betreibt aber nicht die Nameserver.
- Records: Werden nicht in der Polycrate-DB gespeichert. Lesen/Schreiben erfolgt live beim Provider über python-lexicon (89 unterstützte Provider)
- Nameserver: Provider-Nameserver (bleiben beim externen Anbieter)
- Zone-Lifecycle: Polycrate legt die Zone nicht beim Provider an und löscht sie nicht – sie muss dort bereits existieren
- Unique: Kombination aus
(name, organization, provider)– eine Organisation kannexample.combei Cloudflare und bei Hetzner registriert haben - Abrechnung: Produkt DNS Zone (External) – Flat-Rate pro Zone (nur Management-Interface)
Empfohlen für Kunden, die DNS-Zonen bei Drittanbietern behalten möchten, aber Record-Management, Änderungshistorie und Audit durch Polycrate nutzen wollen.
Vergleich¶
| Eigenschaft | kind=internal | kind=external |
|---|---|---|
| Nameserver-Betrieb | ayedo (PowerDNS) | Drittanbieter |
| Record-Storage | Polycrate-DB + PowerDNS | Nur Drittanbieter (live abgerufen) |
| Zone anlegen | Automatisch bei Provision | Muss beim Provider existieren |
| Zone löschen | Automatisch bei Deprovision | Nie durch Polycrate |
| Unique Constraint | Name systemweit | Name pro Organization + Provider |
| Credentials nötig | Nein | Ja (kind=dns-provider Credential) |
| Record-Änderung | Sofort in DB + PowerDNS | Direkt beim Provider via Lexicon |
| Abrechnung | DNS Zone (Internal) Product | DNS Zone (External) Product |
Internal Zone einrichten¶
Voraussetzungen¶
- PowerDNS-Deployment als Polycrate Block (z. B. mit dem
powerdns-Block aus PolyHub) im Management-Cluster - System Config → Integration → PowerDNS: Endpoint und API-Key hinterlegt
- Rechte: Rolle mit
domains.add_dnszone
Schritt für Schritt¶
- Networking → DNS-Zonen → New Zone
- Felder ausfüllen:
- Name:
example.com(ohne führenden Punkt) - Kind:
internal - Organization: gewünschte Organisation
- Name:
- Speichern – Polycrate legt die Zone in PowerDNS an (synchron)
- Im Tab Records einzelne Einträge anlegen (A, AAAA, CNAME, TXT, MX, NS, …)
- Beim Domain-Registrar die Nameserver auf die ayedo-PowerDNS-Nameserver umstellen (siehe System Config → Default Nameservers)
Propagation
Record-Änderungen sind synchron – sobald die UI Erfolg meldet, ist der Record in PowerDNS aktiv. Die externe DNS-Propagation hängt von TTL und Caching der auflösenden Resolver ab.
External Zone einrichten¶
Voraussetzungen¶
- Zone existiert beim Provider (z. B.
example.comist bei Cloudflare eingerichtet und aktiv) - API-Credentials beim Provider erzeugt (API-Token, ggf. Username)
- Rechte: Rolle mit
credentials.add_credentialunddomains.add_dnszone
Schritt 1: dns-provider Credential anlegen¶
Credentials → New Credential
| Feld | Beispiel (Cloudflare) | Beispiel (Hetzner) |
|---|---|---|
| Kind | dns-provider | dns-provider |
| Name | cloudflare-main | hetzner-dns |
| API Key | Cloudflare API-Token | Hetzner DNS-API-Token |
| API User | Email-Adresse (falls Global API Key) | – |
| Metadata | provider-spezifische Parameter (z. B. zone_id, Custom-Endpoints) | – |
Die Felder api_key / api_user werden verschlüsselt gespeichert und an Lexicon als auth_token / auth_username durchgereicht. Provider-spezifische Extra-Parameter (z. B. OAuth-Refresh-Tokens, Custom-Endpoints) werden als Key-Value-Paare im Metadata-Feld abgelegt.
Welche Auth-Parameter braucht mein Provider?
Jeder Provider hat ein eigenes Auth-Schema. Die Lexicon-Dokumentation listet pro Provider die benötigten Felder: dns-lexicon Provider Configuration
Schritt 2: Zone anlegen¶
Networking → DNS-Zonen → New Zone
| Feld | Wert |
|---|---|
| Name | example.com |
| Kind | external |
| Provider | Name des Lexicon-Providers, z. B. cloudflare, hetzner, route53 |
| Credential | das eben angelegte dns-provider Credential |
| Organization | gewünschte Organisation |
Nach dem Speichern:
- Polycrate legt keine Zone beim Provider an – sie muss dort schon existieren
- Das Records-Tab zeigt live die Records direkt vom Provider (jeder Aufruf ist ein API-Call zum Provider)
Schritt 3: Records verwalten¶
Create/Update/Delete im Records-Tab werden sofort via Lexicon beim Provider ausgeführt. Unterstützt werden alle Record-Typen, die der Provider unterstützt – bei manchen Providern ist TTL/Priority nicht editierbar (Lexicon-Einschränkung).
Einschränkungen bei externen Zonen
- Zone selbst kann nicht aus Polycrate angelegt oder gelöscht werden
- TTL-Support ist provider-abhängig
- MX/SRV-Priority wird unterschiedlich behandelt
- Keine Batch-Operationen (jede Änderung ein API-Call)
Domain Registrar¶
CentralNic (RRPProxy)¶
CentralNic ist der erste unterstützte Domain-Registrar. Domains können über die Polycrate API registriert und verwaltet werden:
- Registrierung: Neue Domains direkt anlegen
- Portfolio-Import: Bestehende Domains aus dem Registrar-Konto importieren
- Status & Verwaltung: Ablaufdatum, Nameserver, Kontakte einsehen und bearbeiten
Weitere Registrar-Anbindungen
Weitere Domain-Registrare sind in Arbeit und werden schrittweise ergänzt.
Konfiguration unter Administration → Domain Registrar bzw. System Config → Integration.
Wo finden Sie was?¶
| Aufgabe | Ort in der Web-UI |
|---|---|
| Domains verwalten | Networking → Domains |
| DNS-Zonen (internal + external) | Networking → DNS-Zonen |
| Records in einer Zone | Zone öffnen → Records-Tab |
| dns-provider Credentials | Credentials → Kind dns-provider |
| PowerDNS-Integration | System Config → Integration |
| Default Nameservers | System Config → Integration → DNS |
| Default Zone-Produkte | System Config → Default Products |
| Domain-Registrar | Administration → Domain Registrar |
Siehe auch¶
- Pricing & Business Layer – Zone-Produkte und Abrechnung
- Polycrate API Integrationen – PowerDNS und Registrar konfigurieren
- Release 0.14.0 – Domains & DNS (Grundlage)
- Release 0.15.0 – externe Zonen via Lexicon