> ## Documentation index
> The full klickops handbook index is at https://klickops.io/llms.txt
> The HTML of this page is at https://klickops.io/docs/domains
> Language: de

# Domains

Ein Hostname, der auf deine App zeigt, mit einem TLS-Zertifikat, das für dich ausgestellt und erneuert wird.

## Was das ist

Eine Domain ist die öffentliche Adresse einer App. Du gibst klickops einen Hostnamen und die zugehörige App. klickops leitet den Verkehr dorthin, stellt ein Zertifikat aus und erneuert es, bevor es abläuft. Im Container richtest du dafür nichts ein.

```diagram-flow
Besucher -> DNS -> klickops -> Deine App
```

Jede Domain gehört zu genau einer App. Das ist Absicht: Ein Hostname ist eine Eigenschaft der App, auf die er zeigt. Deshalb verwaltest du ihn im Tab **Domains** der App und nicht in einer eigenen Liste von Routing-Regeln.

## Wann du das brauchst

- Deine App soll aus dem Browser erreichbar sein.
- Du willst HTTPS, ohne eine Zertifikatsdatei anzufassen.
- Du ziehst einen Hostnamen von einem anderen Anbieter um und willst, dass das Zertifikat schon da ist, bevor du das DNS umstellst.

> [!Nicht dafür]
> Um eine andere Anwendung im selben Projekt zu erreichen, brauchst du keine Domain. Apps in einem Projekt erreichen einander über den Namen im internen Netz. Einem internen Dienst einen öffentlichen Hostnamen zu geben vergrössert nur seine Angriffsfläche.

## Zu einem Hostnamen kommen

Es gibt zwei Wege. Der erste kommt ganz ohne DNS aus.

**Eine klickops-Subdomain.** Schalt sie ein, und klickops vergibt eine unter seiner eigenen Wildcard. Sie löst sofort auf, mit bereits gültigem Zertifikat. Im gehosteten Betrieb ist das Label eine zufällige Zeichenfolge und nicht der Name deines Projekts, damit nichts über deine Mandanten im öffentlichen DNS landet. Selbst betriebene Installationen nutzen die lesbare Form `app.projekt.deine-basis-domain`.

**Deine eigene Domain.** Hostname hinzufügen, dann auf klickops zeigen lassen.

1. Öffne die App, geh auf **Domains** und füg den Hostnamen hinzu, der dir gehört.
2. klickops zeigt dir den DNS-Eintrag, den du anlegen musst: ein `CNAME` für eine Subdomain, oder den Adresseintrag für eine Apex-Domain.
3. Leg diesen Eintrag bei deinem DNS-Anbieter an. Ein Wildcard-`CNAME` deckt alle Subdomains auf einmal ab, falls du weitere planst.
4. Warte, bis die Prüfung grün wird. klickops fragt das DNS ab und stellt das Zertifikat aus, sobald der Eintrag auflöst. Das dauert meistens ein bis zwei Minuten.

> [!Hinweis]
> Füg die Domain hinzu, bevor du produktiven Verkehr umlegst. Das Zertifikat entsteht, sobald das DNS auflöst. Stellst du erst nach der grünen Prüfung um, sieht kein Besucher je eine Warnung.

## Einstellungen im Überblick

| Einstellung | Standard | Was sie bewirkt |
| --- | --- | --- |
| Hostname | keiner | Der Name, den Besucher eintippen. Eine Domain-Ressource pro Hostname. |
| App | erforderlich | Welche App den Verkehr bekommt, und auf welchem Port. |
| TLS | an | Stellt ein Zertifikat aus und erneuert es. Lass es an. |
| Weiterleitung auf HTTPS | an | Schickt unverschlüsselte Anfragen auf die sichere Adresse. |
| Zugriff | öffentlich | `public` bedient alle. `sso` setzt eine Anmeldung davor. Ein internes Werkzeug braucht damit keinen eigenen Anmeldecode. |
| Pfad | `/` | Leitet nur ein Präfix auf diese App, wenn sich mehrere Apps einen Hostnamen teilen. |

## Grenzen und Fallstricke

- **Ein Hostname, eine Domain-Ressource.** Der vorgelagerte Controller führt zwei Definitionen desselben Hosts nicht zusammen. Ein doppelter Hostname wird deshalb abgelehnt statt stillschweigend halb übernommen.
- **Zertifikate brauchen öffentliches DNS.** Der Aussteller prüft über das Internet, dass dir der Name gehört. Ein Hostname, der nur intern auflöst, bekommt kein öffentliches Zertifikat.
- **Apex-Domains brauchen einen Adresseintrag.** Die meisten DNS-Anbieter können auf einer Apex-Domain kein `CNAME` setzen. Nutz ihren Alias-Eintrag, oder zeig mit `www` auf klickops und leite die Apex-Domain dorthin weiter.
- **Eine Domain zu entfernen wirkt sofort.** Der Verkehr endet im Moment des Löschens. Verschieb also zuerst das DNS, wenn der Name produktiv ist.

## Verwandt

- [Apps](/docs/apps) ist das, worauf eine Domain zeigt.
- Eine Domain gibt der App eine Adresse. Wer sie benutzen darf, regelt die Projekt-Firewall.
