Zum Hauptinhalt springen

Eigene Hostnames

Standardmässig erhält jede Deploio-Applikation einen generierten Hostnamen in der deploio.app-Domain. Falls Sie eine eigene Domain oder Hostnamen nutzen wollen, können Sie das --hosts-Flag von nctl nutzen.

--hosts=HOSTS,...    Host names where the application can be accessed. If empty,
the application will just be accessible on a generated
host name on the deploio.app domain.

$ nctl create app go-example --hosts=custom.host.example.com

Falls die Applikation bereits besteht, können mittels nctl update app eigene Host- oder Domainnames gesetzt werden:

$ nctl update app go-example --hosts=custom.host.example.com,other.custom.host.example.com

Konfiguration

Sobald sie eigene Hostnamen für Ihre Applikation einsetzen wollen, müssen 2 zusätzliche Schritte ausgeführt werden:

  • Verifizierung des Domainbesitzes
  • eine DNS-Auflösung der Hostnamen muss zur Deploio-Infrastruktur führen

Um dies zu erreichen, erstellt nctl automatisch eine TXT RECORD- und eine DNS TARGET-Spalte in der Ausgabe des Befehls, sobald der erste Build und das erste Release erfolgreich erstellt wurden. Sie können die beiden Einträge auch nachträglich mit der --dns-Option anzeigen lassen:

$ nctl get app test-app --dns

NAME TXT RECORD DNS TARGET
go-example deploio-site-verification=go-example-nine-46e4146 go-example.46e4146.deploio.app

Abhängig von der Art des verwendeten eigenen Hostnamens benötigen Sie entweder nur den Wert der DNS TARGET-Spalte oder aber die Werte von beiden Spalten, um die oben erwähnten Schritte durchzuführen.

Erstellung von CNAME-Einträgen für eigene Hostnamen

Der einfachste und empfohlene Weg, Ihren eigenen Hostnamen auf die Deploio-Infrastruktur auflösbar zu machen, besteht in der Nutzung eines CNAME-Eintrages. Der erstellte Eintrag sollte auf den Wert auflösen, welcher in der Spalte DNS TARGET zu sehen ist.

Um beispielsweise den Hostnamen custom.host.example.org in obiger Applikation go-example zu nutzen, müssen Sie den folgenden CNAME-Eintrag bei ihrem DNS- Provider erstellen:

custom.host.example.org   CNAME   go-example.46e4146.deploio.app

Nach erfolgreicher Propagierung des Eintrags (dies kann etwas Zeit benötigen) wird dieser gleichzeitig den Besitz der Domain verifizieren, sowie ebenfalls die korrekte DNS-Auflösung zur Deploio-Infrastruktur sicherstellen.

Bitte beachten Sie, dass die Erstellung eines CNAME-Eintrages nur möglich ist, falls es sich bei dem konfigurierten Hostnamen nicht auch gleichzeitig um den Namen der Domain selbst handelt (ein sogenannter DNS Apex-Eintrag).

Ein Beispiel dazu: Sie besitzen die Domain example.org und möchten für Ihre Deploio-Applikation den Hostnamen www.example.org verwenden. Hier kann die Erstellung eines CNAME- Eintrages wie oben beschrieben durchgeführt werden. Falls Sie aber den Namen example.org als Hostnamen in Ihrer Applikation verwenden wollen, können Sie keinen CNAME-Eintrag erstellen und müssen die Schritte ausführen, welche unter Apex DNS-Einträge aufgeführt sind.

Apex DNS-Einträge

Falls ihr eingesetzer Hostname dem Domainnamen selbst entspricht (bspw.: example.org) und nicht einer Subdomain davon, können Sie keinen CNAME wie oben beschrieben erstellen. CNAME-Einträge können nicht für sogenannte "Apex DNS- Einträge" genutzt werden. In diesem Fall muss die Verifizierung der Domain und die DNS-Auflösung auf die Deploio-Infrastruktur mittels 2 verschiedenen DNS- Einträgen umgesetzt werden. Wie Sie dies umsetzen können, wird in den folgenden Abschnitten erklärt.

Verifizierung via TXT-Eintrag

Bei der Nutzung von Apex DNS-Einträgen müssen sie einen TXT-Eintrag anlegen, welcher auf den Wert auflöst, welcher in der TXT RECORD-Spalte der nctl Ausgabe angezeigt wird. Der Eintrag wird dabei zur Verifizierung des Domainbesitzes genutzt. Um beispielsweise die Verifizierung des Domainbesitzes für den Hostnamen example.org in der oben genannten go-example Applikation durchzuführen, müssen Sie den folgenden TXT- Eintrag erstellen:

example.org   TXT   deploio-site-verification=go-example-nine-46e4146

Deploio wird diesen Eintrag periodisch abfragen und den Wert des Eintrags mit dem erwarteten Wert vergleichen. Sobald der Hostname verifiziert ist, kann er in der Deploio-Applikation genutzt werden. Sie können alle verifizierten und nicht verifizierten Hostnamen mit der Hilfe von nctl anzeigen lassen:

$ nctl get apps

NAME HOSTS UNVERIFIED_HOSTS
go-example go-example.46e4146.test.deploio.app example.org

DNS-Auflösung des Hostnamens konfigurieren

Neben der Verifizierung des Domainbesitzes muss der gewünschte Hostname auch auf die Deploio-Infrastruktur auflösbar sein. Es gibt verschiedene Wege, dies umzusetzen. Wir erklären diese in den folgenden Abschnitten.

DNS Alias-Eintrag

Einige DNS-Anbieter bieten die Nutzung von sogenannten ALIAS-Einträgen an. Diese verhalten sich ähnlich wie CNAME-Einträge, erscheinen aber bei DNS-Abfragen als Einträge des Typs A. Falls Ihr DNS-Anbieter den ALIAS-Typ unterstützt, empfehlen wir, diesen zu nutzen. Erstellen Sie dazu einfach einen DNS ALIAS-Eintrag, welcher auf den Wert auflöst, welcher in der DNS TARGET-Spalte der nctl Ausgabe angezeigt wird. Bei Nutzung der oben gezeigten go-example Applikation sollte der entsprechende ALIAS-Eintrag wie folgt aussehen:

example.org   ALIAS   go-example.46e4146.deploio.app

DNS A-Eintrag

Sollte ihr DNS-Anbieter den ALIAS-Typ nicht unterstützen, so müssen Sie DNS- Einträge des Typs A nutzen. Um diese anzulegen, muss zuerst die IP-Adresse, auf welche der DNS TARGET-Wert der nctl-Ausgabe zeigt, aufgelöst werden. Auf Linux- oder Mac OS-Systemen kann dies mit Hilfe des host- (oder eines äquivalenten) Befehls umgesetzt werden:

$ host test-app.edcd8e7.deploio.app

test-app.edcd8e7.deploio.app is an alias for deploio.296dc8b.ingressnginx.nineapis.ch.
deploio.296dc8b.ingressnginx.nineapis.ch has address 178.209.59.205

Anhand der obigen Ausgabe können Sie nun einen DNS A Eintrag mit dem folgenden Inhalt anlegen:

example.org   A   178.209.59.205

Sobald der DNS-Eintrag vollständig propagiert wurde (dies kann einen Moment dauern), können Sie auf Ihre Deploio-Applikation unter https://<ihr-eigener-hostname> zugreifen.