# Domains und kostenloses SSL mit Let's Encrypt

> Füge Domains und Aliasse hinzu, richte www-Weiterleitungen ein, setze DNS selbst oder per DNS-Integration und aktiviere HTTPS mit kostenlosem Let's Encrypt.

Auf der Seite **Domains und SSL** einer Site verwaltest du die Namen, unter denen deine Site erreichbar ist, und die Zertifikate, die sie für HTTPS verwendet. Eine Site hat eine primäre Domain, kann beliebig viele Aliasse haben und ist außerdem unter einer kostenlosen generierten Adresse auf `on-deploy.link` erreichbar.

Verwaltet eine verbundene [Integration](https://ops.vimonto.com/docs/de/connections/integrations) das DNS der Domain, kann Vimonto Deploy die DNS-Einträge für dich anlegen und HTTPS von selbst anfordern. Für HTTPS forderst du mit wenigen Klicks ein kostenloses Let's-Encrypt-Zertifikat an; es verlängert sich automatisch. Du kannst auch ein gekauftes Zertifikat installieren oder einen Certificate Signing Request für deine Zertifizierungsstelle erstellen.

![Die Seite Domains und SSL mit der generierten Adresse, den Domains der Site und ihren Zertifikaten](https://ops.vimonto.com/docs-media/de/site-domains.webp?v=161e760d "Domains und Zertifikate einer Site")

## Die generierte on-deploy.link-Adresse

Jede Site kann eine Adresse wie `kalme-rivier-4821.on-deploy.link` haben. Vimonto Deploy legt den DNS-Eintrag dafür an, sodass sie sofort funktioniert, ganz ohne eigenes DNS: praktisch, um eine Site vor dem Livegang zu testen oder eine Vorschau zu teilen.

Die Adresse wird beim [Anlegen der Site](https://ops.vimonto.com/docs/de/sites/create-a-site#domain-oder-generierte-adresse) gewählt. Eine Site, die unter dieser Adresse angelegt wird, bekommt von selbst HTTPS: Als letzten Schritt der Einrichtung wartet Vimonto Deploy, bis der neue DNS-Eintrag auf den Server zeigt, und fordert dann ein Let's-Encrypt-Zertifikat dafür an. Eine Site, die mit einer eigenen Domain angelegt wird, überspringt diesen Schritt. Lässt du diese Domain von einer DNS-Integration verweisen, bekommt sie HTTPS auf dieselbe Weise, sobald ihre Einträge auflösen (siehe [unten](#domain-automatisch-per-dns-integration-einrichten)); sonst forderst du ihr Zertifikat selbst an, sobald das DNS auf den Server zeigt, wie unten beschrieben.

Auf der Seite Domains und SSL kannst du unter **on-deploy.link-Adresse**:

- die Adresse **Deaktivieren**. Die Site ist dann nur noch unter ihren eigenen Domains erreichbar, und der DNS-Eintrag wird gelöscht.
- für eine Site ohne Adresse wieder eine **Aktivieren**. Eine neue Adresse bekommt einen anderen Namen.

Ist die generierte Adresse der einzige Name einer Site, lässt sie sich nicht deaktivieren: Füge zuerst eine eigene Domain hinzu, damit die Site immer mindestens einen Namen behält.

## Eine Domain hinzufügen

1. Klicke auf **Domain hinzufügen**.
2. Gib die **Domain** ein, zum Beispiel `shop.example.com`.
3. Wähle die Optionen für **Wildcards** und **Weiterleitungen** (siehe unten).
4. Aktiviere bei Bedarf **Als primäre Domain verwenden**.
5. Wähle unter **DNS**, wie die Domain ihre DNS-Einträge bekommt, falls du DNS-Integrationen hast (siehe [unten](#domain-automatisch-per-dns-integration-einrichten)).
6. Klicke auf **Domain hinzufügen**.

Die erste eigene Domain wird zur primären Domain und ersetzt die generierte Adresse (die daneben weiter funktioniert). Spätere Domains werden zu Aliassen, es sei denn, du aktivierst **Als primäre Domain verwenden**; die bisherige primäre Domain bleibt dann als Alias erhalten.

Nachdem du eine Domain hinzugefügt hast, schreibt Vimonto Deploy die Nginx-Konfiguration der Site neu, prüft sie mit `nginx -t` und lädt Nginx neu. Verwaltest du das DNS selbst, öffnet sich danach der Dialog **Einrichten** mit den DNS-Einträgen, die du anlegen musst. Verweist eine DNS-Integration die Domain, übernimmt das stattdessen ein Task.

### Wildcards

- **Aus**: nur die Domain selbst, etwa `shop.example.com`.
- **An**: auch alle Subdomains, etwa `blog.shop.example.com`. Nginx antwortet dann auch auf `*.shop.example.com`.

### Weiterleitungen zwischen www und der Domain ohne www

| Option | Was passiert |
|---|---|
| **Von www. weiterleiten** (empfohlen) | `www.example.com` leitet Besucher zu `example.com` weiter. |
| **Auf www. weiterleiten** | `example.com` leitet Besucher zu `www.example.com` weiter, das die Site ausliefert. |
| **Keine Weiterleitung** | Nur die Domain selbst; `www.` ist nicht enthalten. |

Weiterleitungen sind permanent (`301`) und behalten Pfad und Query-String bei. Du kannst diese Optionen später über **Bearbeiten** im Menü der Domain ändern.

### Die primäre Domain ändern oder eine Domain entfernen

Das Menü jeder Domain enthält:

- **Einrichtungsschritte anzeigen**: die DNS-Einträge und den HTTPS-Status dieser Domain.
- **Bearbeiten**: die Wildcard- und Weiterleitungsoptionen ändern.
- **Zur primären machen**: einen Alias zur primären Domain machen.
- **Löschen**: die Site ist unter der Domain nicht mehr erreichbar. Entfernst du die primäre Domain, übernimmt der erste Alias, sonst die generierte Adresse. DNS-Einträge, die Vimonto Deploy für die Domain bei einem verbundenen Account angelegt hat, werden mit entfernt; die Bestätigung listet sie auf. Andere Einträge entfernst du selbst bei deinem DNS-Anbieter.

Die primäre Domain wird im Site-Header angezeigt und für die Links der Site verwendet. Das Verzeichnis der Site auf dem Server ändert sich nicht, wenn sich die primäre Domain ändert.

## Deine Domain per DNS auf den Server zeigen lassen

> [!TIP]
> Hast du eine DNS-Integration? Dann überspringst du diesen Schritt: Vimonto Deploy legt die Einträge für dich an. Siehe [Domain automatisch einrichten](#domain-automatisch-per-dns-integration-einrichten).

Eine Domain erreicht deine Site erst, wenn ihr DNS auf deinen Server zeigt. Lege die Einträge bei deinem DNS-Anbieter an (dort, wo die Domain verwaltet wird):

| Typ | Name | Wert | Wann |
|---|---|---|---|
| A | `shop.example.com` | die IP-Adresse des Servers | immer |
| CNAME | `www.shop.example.com` | `shop.example.com` | mit www.-Weiterleitung |
| A | `*.shop.example.com` | die IP-Adresse des Servers | mit aktivierten Wildcards |

Der Dialog **Einrichten** listet für eine Domain genau diese Einträge auf, jeweils mit **Zeigt hierher** oder **Noch nicht**. Ein Klick auf einen Namen oder Wert kopiert ihn. Domains, deren DNS noch nicht auf den Server zeigt, erscheinen in einem Warnhinweis über den Domains, und jede Domain-Zeile zeigt **Zeigt auf diesen Server** oder wohin sie stattdessen zeigt. DNS-Änderungen können ein paar Minuten brauchen, bis sie ankommen.

> [!NOTE]
> Hinter einem Proxy wie dem von Cloudflare löst eine Domain auf den Proxy auf, nicht auf deinen Server, und wird deshalb so angezeigt, als zeige sie woandershin. Die Site kann trotzdem funktionieren, und Let's Encrypt kann trotzdem ein Zertifikat ausstellen, solange der Proxy einfache HTTP-Requests durchlässt.

### Domains hinter einem Load Balancer

Bei [Lastverteilung](https://ops.vimonto.com/docs/de/sites/load-balancing) zeigt die Domain auf den Load Balancer, nicht auf die App-Server. Füge die Domain der Site auf dem Load Balancer und der Site auf jedem App-Server hinzu, lege die DNS-Einträge aber für die IP-Adresse des Load Balancers an und aktiviere HTTPS auf dem Load Balancer. Auf den App-Servern wird die Domain dann so angezeigt, als zeige sie woandershin; das ist so gewollt.

## Domain automatisch per DNS-Integration einrichten

Verwaltet einer deiner verbundenen Cloud- oder DNS-Accounts (Hetzner Cloud, DigitalOcean, Vultr, Akamai, AWS Route 53, Google Cloud DNS oder Cloudflare) die Zone der Domain, kann Vimonto Deploy die Einträge für dich anlegen. Verbinde den Account unter **Einstellungen** → [Integrationen](https://ops.vimonto.com/docs/de/connections/integrations); die Account-Karte zeigt, welche Domains er verwaltet.

Hast du DNS-Integrationen, steht unter **Domain** der Hinweis „Wir suchen die Domain bei deinen DNS-Anbietern und setzen ihre Einträge automatisch.“ Während du tippst, holt Vimonto Deploy die Domain-Listen deiner Accounts live, sodass auch eine Domain gefunden wird, die du gerade erst beim Anbieter hinzugefügt hast, und ein Feld **DNS** zeigt, ob eine Integration sie verwaltet. Wenn ja, wähle:

- **Automatisch mit … einrichten** (der Account und die Zone, zum Beispiel `Hetzner Cloud (example.com)`): Vimonto Deploy legt die Einträge an. Diese Option ist vorausgewählt.
- **Ich verwalte das DNS selbst**: Beim DNS-Provider ändert sich nichts; lege die Einträge selbst an, wie oben beschrieben.

Verwaltet keine Integration die Domain, sagt das Feld das, und du legst die Einträge selbst an oder fügst die Domain einem deiner DNS-Anbieter hinzu (siehe unten).

### Die Domain zu einem DNS-Anbieter hinzufügen

Hat noch keiner deiner Accounts die Domain, du hast aber DNS-Integrationen, bietet das Feld **Domain zu einem DNS-Anbieter hinzufügen** an. Schalte es ein und wähle:

- **Provider**: den verbundenen Account, dem sie hinzugefügt wird (Hetzner Cloud, DigitalOcean, Vultr, Akamai, AWS, Google Cloud oder Cloudflare).
- **Zone**: die Domain, die dort angelegt wird. Vorgegeben ist die Domain ohne ihre Subdomain, etwa `example.com` für `shop.example.com`; es muss die Domain selbst sein oder eine Domain, auf die sie endet.

Das Feld zeigt dann die Einträge, die angelegt werden, alle **Neu**. Klickst du auf **Domain hinzufügen**, legt der Task zuerst die Zone beim Anbieter an (**… zu … hinzufügen**), dann die Einträge, und listet in seiner Ausgabe die Nameserver auf, die du für die Zone bei deinem Registrar einträgst. Bis du die Nameserver beim Registrar geändert hast, antwortet der Anbieter nicht für die Domain; HTTPS folgt, sobald das DNS auflöst.

> [!NOTE]
> Bei Cloudflare braucht das Anlegen einer Zone **Zone** → **Zone** → **Edit** im Token, und einen Token, der genau einen Cloudflare-Account erreicht. Sonst füge die Domain selbst in Cloudflare hinzu und wähle **Domains aktualisieren** beim Account.

### Den Plan prüfen, bevor sich etwas ändert

Mit **Automatisch mit … einrichten** listet das Feld jeden Eintrag auf, den die Domain braucht, und was mit ihm passiert:

| Label | Bedeutung |
| --- | --- |
| **Neu** | Den Eintrag gibt es noch nicht; er wird angelegt. |
| **Bereits richtig** | Der Eintrag zeigt schon auf diesen Server; nichts ändert sich. |
| **Änderungen** | Ein Eintrag existiert und wird geändert, oder etwas wird entfernt, um Platz zu machen. |

Die Einträge sind dieselben wie von Hand: ein A-Record für die Domain auf die IPv4-Adresse des Servers, `www.` als CNAME auf die Domain, wenn eine www-Weiterleitung aktiv ist, und ein A-Record für `*.` bei aktivierten Wildcards. Unter einem Eintrag, der sich ändert, warnt dich das Feld, was das bedeutet:

- worauf der Name jetzt zeigt, was dann aufhört (zum Beispiel eine Site bei einem anderen Hoster);
- ein **AAAA**-Record, der entfernt wird, weil IPv6-Besucher sonst zur alten Adresse gingen;
- ein widersprüchlicher Eintrag, der entfernt wird, um Platz zu machen, etwa ein CNAME auf demselben Namen;
- bei Cloudflare, dass der Proxy für diesen Namen ausgeschaltet wird, damit HTTPS und Besucheradressen funktionieren.

Ändern sich bestehende Einträge, hake **Diese Einträge ändern** an, bevor du auf **Domain hinzufügen** klickst. Ohne den Haken wird nichts gespeichert. Vimonto Deploy prüft die Einträge beim Klick erneut, sodass der Plan, den es anwendet, der ist, den du gesehen hast.

### Was danach passiert

Ein Task, **… auf … zeigen lassen**, läuft auf der Seite [Aktivität](https://ops.vimonto.com/docs/de/organization/activity):

1. **DNS bei … aktualisieren**: Die Einträge werden genau so angelegt oder geändert, wie der Plan es gezeigt hat. Einträge bei Cloudflare werden nur als DNS angelegt (nicht über den Proxy).
2. **HTTPS anfordern**: Für die neue Domain (und die Namen, die schon auf dem aktiven Zertifikat stehen) wird ein Let's-Encrypt-Zertifikat angefordert. Dieser Task wartet zuerst, bis der Name auf den Server auflöst, höchstens 10 Minuten, fordert dann das Zertifikat an und stellt die Site auf HTTPS um.

Wildcard-Namen kommen nicht auf das Zertifikat, weil Let's Encrypt sie nur mit einer DNS-Challenge ausstellt. Löst der Name nicht innerhalb von 10 Minuten auf, schlägt der Zertifikats-Task mit einer Meldung fehl; die Einträge sind angelegt, fordere also später unter **Zertifikate** ein Zertifikat an.

> [!NOTE]
> Der Server braucht eine öffentliche IPv4-Adresse, auf die verwiesen werden kann. Ohne sie zeigt das Feld **DNS** einen Fehler, und du verwaltest das DNS selbst.

### Welche Einträge entfernt Vimonto Deploy?

Vimonto Deploy merkt sich jeden DNS-Eintrag, den es bei einem verbundenen Account anlegt, mit der Site, der Domain und wofür er da ist: die Domain, `www.`, eine Wildcard oder die WebSocket-Adresse von [Reverb](https://ops.vimonto.com/docs/de/sites/site-features#reverb). Es entfernt nur diese:

- Eine Domain **Löschen**: Genau die Einträge, die für diese Domain angelegt wurden, werden entfernt. Die Bestätigung listet sie auf.
- Die Site löschen: Alle ihre Einträge werden entfernt, im Schritt **DNS-Einträge entfernen**. Siehe [Site-Einstellungen](https://ops.vimonto.com/docs/de/sites/site-settings#eine-site-löschen).
- Reverb ausschalten: Sein WebSocket-Eintrag wird entfernt.

Einen Eintrag, der bereits woandershin zeigt und nicht von Vimonto Deploy angelegt wurde, überschreibt ein Feature wie Reverb nie: Der Task sagt dir, dass du ihn selbst ändern sollst. Nur das Hinzufügen einer Domain ändert bestehende Einträge, nachdem du **Diese Einträge ändern** angehakt hast.

## HTTPS mit einem kostenlosen Let's-Encrypt-Zertifikat aktivieren

1. Stelle sicher, dass deine Domains auf den Server zeigen.
2. Klicke unter **Zertifikate** auf **Hinzufügen**, wähle **Let's Encrypt** und klicke auf **Weiter**.
3. Hake die Domains an, die enthalten sein sollen. Bei jeder siehst du, ob sie auf diesen Server zeigt.
4. Klicke auf **Anfordern**.

Vimonto Deploy installiert bei Bedarf certbot und fordert das Zertifikat mit der Webroot-Challenge an: Let's Encrypt ruft über `http://` eine Datei aus `/.well-known/acme-challenge/` ab, das jede Site aus `/var/www/letsencrypt` ausliefert. Nichts muss angehalten werden, und der Passwortschutz blockiert die Challenge nicht.

Sobald das Zertifikat ausgestellt ist, wechselt die Site auf HTTPS:

- Nginx lauscht auf Port 443 mit HTTP/2, TLS 1.2 und 1.3 und sendet einen `Strict-Transport-Security`-Header.
- Einfache `http://`-Requests werden auf `https://` weitergeleitet.
- Der Site-Header zeigt **HTTPS**, und jede Domain auf dem Zertifikat zeigt in der Liste **HTTPS**.

Let's-Encrypt-Zertifikate zeigen **verlängert sich automatisch**. Der certbot-Timer auf dem Server verlängert sie vor Ablauf und lädt Nginx neu.

> [!WARNING]
> Let's Encrypt stellt das Zertifikat nur aus, wenn jede angehakte Domain auf diesen Server zeigt. Schlägt eine Anfrage fehl, prüfe die DNS-Einträge, entferne den Haken bei Domains, die noch nicht hierher zeigen, und fordere es erneut an. Wildcard-Namen lassen sich auf diesem Weg nicht aufnehmen.

### Nach dem Hinzufügen einer Domain

Ein Zertifikat gilt für die Namen, für die es ausgestellt wurde. Fügst du einer Site mit HTTPS eine Domain hinzu, erinnert dich Vimonto Deploy mit **Neues Zertifikat anfordern** daran: Fordere ein neues Let's-Encrypt-Zertifikat an, das den neuen Namen enthält. Es ersetzt das alte als aktives Zertifikat.

## Ein eigenes Zertifikat verwenden

Klicke unter **Zertifikate** auf **Hinzufügen** und wähle eine dieser Optionen:

- **Vorhandenes Zertifikat**: Füge das **Zertifikat** im PEM-Format ein, gefolgt von den Zwischenzertifikaten, sowie seinen **Privaten Schlüssel**. Vimonto Deploy prüft, ob der Schlüssel zum Zertifikat gehört, bevor Nginx es verwendet, und liest Domains und Ablaufdatum aus dem Zertifikat.
- **Certificate Signing Request (CSR)**: Wähle die Domains und fülle Land, Bundesland oder Provinz, Stadt, Organisation und Abteilung aus. Vimonto Deploy erstellt einen privaten Schlüssel (verschlüsselt gespeichert) und einen Request, den du bei deiner Zertifizierungsstelle einreichst. Sobald er signiert ist, wählst du im Menü des Zertifikats **Signiertes Zertifikat installieren** und fügst es ein.
- **Zertifikat klonen**: Verwende ein Zertifikat, das für eine andere Site in deiner Organisation hochgeladen wurde, zum Beispiel ein Wildcard-Zertifikat, das sich mehrere Sites teilen. Let's-Encrypt-Zertifikate lassen sich nicht klonen.

Hochgeladene Zertifikate zeigen **gültig bis** und ihr Ablaufdatum. Sie verlängern sich nicht: Installiere vor diesem Datum ein neues.

## Ein aktives Zertifikat pro Site

Eine Site kann mehrere Zertifikate haben, aber Nginx liefert genau eines aus: das aktive, markiert mit **Aktiv**. Ein neues Zertifikat wird aktiv, sobald es installiert ist. Im Menü eines Zertifikats kannst du:

- ein installiertes, nicht aktives Zertifikat **Verwenden**.
- **HTTPS deaktivieren**: Die Site wechselt zurück auf `http://`. Das Zertifikat bleibt erhalten, sodass du HTTPS später wieder aktivieren kannst.
- das Zertifikat **Löschen**. Löschst du das aktive, wird HTTPS ebenfalls deaktiviert.

Hat die Site eine [eigene Nginx-Konfiguration](https://ops.vimonto.com/docs/de/sites/nginx), wird das Zertifikat zwar installiert, aber nicht in die Konfiguration eingetragen: Das Log der Aufgabe nennt dir die Dateipfade, die du selbst ergänzen musst.

## Häufig gestellte Fragen

### Ist SSL kostenlos?

Ja. Let's-Encrypt-Zertifikate sind kostenlos und verlängern sich automatisch. Vimonto Deploy berechnet dafür nichts.

### Wie lange dauert es, bis meine Domain funktioniert?

Die Nginx-Änderung dauert Sekunden. DNS-Änderungen bei deinem Anbieter kommen meist innerhalb von Minuten an, manchmal dauert es länger. Der Dialog **Einrichten** zeigt, wann jeder Eintrag auf deinen Server zeigt. Mit einer DNS-Integration wartet Vimonto Deploy bis zu 10 Minuten auf die Einträge und aktiviert HTTPS dann von selbst.

### Kann Vimonto Deploy meine DNS-Einträge anlegen?

Ja, wenn die Domain von einem verbundenen Account bei Hetzner Cloud, DigitalOcean, Vultr, Akamai, AWS, Google Cloud oder Cloudflare verwaltet wird. Verbinde ihn unter [Integrationen](https://ops.vimonto.com/docs/de/connections/integrations), füge dann die Domain hinzu und wähle **Automatisch mit … einrichten**. Domains bei anderen DNS-Anbietern verweist du selbst.

### Kann ich die on-deploy.link-Adresse mit HTTPS nutzen?

Ja. Eine Site, die unter ihrer generierten Adresse angelegt wird, bekommt während der Einrichtung automatisch ein Let's-Encrypt-Zertifikat. Ansonsten ist die generierte Adresse einer der Namen der Site. Sie erscheint also, wenn du ein Let's-Encrypt-Zertifikat anforderst, und ihr DNS-Eintrag zeigt bereits auf deinen Server.

### Was, wenn das automatische Zertifikat fehlschlägt?

Die Site funktioniert weiter über `http://`, und du bekommst eine [Benachrichtigung](https://ops.vimonto.com/docs/de/more/notifications), dass das Zertifikat fehlgeschlagen ist. Fordere unter **Zertifikate** mit **Hinzufügen** und **Let's Encrypt** erneut eines an.

### Warum zeigt eine Domain „Nur HTTP“?

Die Domain ist noch nicht im aktiven Zertifikat enthalten. Fordere ein neues Zertifikat an, das sie einschließt.

### Kann ich mehrere Domains über eine Site ausliefern?

Ja. Füge jede als Alias hinzu; Nginx liefert die Site unter allen aus, jeweils mit den eigenen Wildcard- und www.-Optionen der Domain. Nimm sie alle in ein Zertifikat auf.
