% ============================================ % STEP 04: DOMAIN KAUFEN & DNS KONFIGURIEREN % ============================================ \section{Domain kaufen und DNS konfigurieren} \label{sec:step04} In diesem Schritt kaufen wir eine eigene Domain und verknüpfen sie mit unserem Server, damit die Fitness-App unter einem eigenen Namen (nicht nur der IP-Adresse) weltweit erreichbar ist. Wir machen das direkt bei unserem Server-Anbieter Contabo – das spart Verwaltungsaufwand, weil alles unter einem Dach bleibt. \subsection{Warum eine eigene Domain?} Bisher ist unsere App unter \texttt{http://185.209.229.167} erreichbar. Das hat mehrere Nachteile: \begin{itemize} \item \textbf{Schwer zu merken:} Niemand kann sich IP-Adressen merken. \item \textbf{Kein HTTPS:} Für ein SSL-Zertifikat braucht man eine Domain. Ohne HTTPS keine PWA-Installation! \item \textbf{Unprofessionell:} Eine eigene Domain wirkt seriös und vertrauenswürdig. \item \textbf{Flexibel:} Wenn du später den Server wechselst, änderst du einfach den DNS-Eintrag. Die Domain bleibt gleich. \end{itemize} \subsection{Grundlagen: Wie funktioniert das DNS?} DNS steht für \textbf{Domain Name System}. Es ist das "Telefonbuch des Internets" und übersetzt menschenlesbare Domain-Namen in maschinenlesbare IP-Adressen. \textbf{Die wichtigsten Record-Typen:} \begin{table}[h] \centering \caption{DNS-Record-Typen und ihre Funktion} \begin{tabular}{@{}clp{6cm}@{}} \toprule \textbf{Typ} & \textbf{Name} & \textbf{Funktion} \\ \midrule A & Address Record & Verbindet eine Domain mit einer IPv4-Adresse. "robre.de $\rightarrow$ 185.209.229.167" \\ AAAA & IPv6 Address Record & Wie A-Record, aber für IPv6-Adressen \\ CNAME & Canonical Name & Verweist eine Domain auf eine andere Domain (Alias) \\ MX & Mail Exchange & Legt fest, welcher Server E-Mails für die Domain empfängt \\ NS & Name Server & Definiert, welche Nameserver für die Domain zuständig sind \\ TXT & Text Record & Enthält beliebige Textinformationen (z. B. für SPF, DKIM) \\ \bottomrule \end{tabular} \end{table} \textbf{Wie eine DNS-Auflösung abläuft:} \begin{enumerate} \item Du gibst \texttt{robre.de} in den Browser ein. \item Dein Rechner fragt seinen DNS-Resolver (meist bei deinem Internet-Provider): "Welche IP hat \texttt{robre.de}?" \item Der Resolver fragt die Root-Nameserver, dann die .de-Nameserver, dann Contabos Nameserver. \item Contabo antwortet: \texttt{robre.de = 185.209.229.167} \item Der Browser stellt eine HTTP-Verbindung zu dieser IP her. \item Deine App erscheint! \end{enumerate} \subsection{Was ist DNS-Propagation?} Wenn du DNS-Einträge änderst, dauert es eine Weile, bis alle DNS-Server weltweit die neuen Informationen haben. Das nennt man \textbf{Propagation} (Verbreitung). \begin{itemize} \item \textbf{Dauer:} Meist 15 Minuten bis 2 Stunden, in seltenen Fällen bis zu 48 Stunden. \item \textbf{Grund:} Jeder DNS-Resolver hat einen Cache (Zwischenspeicher) mit alten Einträgen. Erst wenn der Cache abläuft (TTL = Time To Live), wird der aktuelle Wert abgefragt. \item \textbf{TTL-Wert:} Unsere Einträge haben TTL 86400 = 24 Stunden. Deshalb kann es länger dauern, bis alte Caches verfallen sind. \end{itemize} \textbf{Tipp:} Mit dem Befehl \texttt{nslookup robre.de ns1.contabo.net} fragst du \textbf{direkt} bei Contabos Nameserver an – ohne Cache. So siehst du sofort, ob die Konfiguration stimmt, auch wenn dein lokaler DNS die Domain noch nicht kennt. \subsection{Domain-Kauf bei Contabo} \subsubsection{Schritt 1: Einloggen ins Kundencenter} Unter \texttt{https://contabo.com} mit deinen Zugangsdaten anmelden. \subsubsection{Schritt 2: Domain bestellen} \begin{enumerate} \item In der linken Seitenleiste auf \textbf{"Domains"} klicken. \item Auf den blauen Button \textbf{"Domain bestellen"} klicken. \item Wunschname eingeben (z. B. "robre") und Endung auswählen (.de, .com, .net, etc.). \item Auf "Weiter" klicken. \end{enumerate} \subsubsection{Schritt 3: Domain-Handles konfigurieren} Auf der nächsten Seite werden die sogenannten \textbf{Domain-Handles} (Kontaktdaten) abgefragt: \begin{itemize} \item \textbf{Owner / Besitzer:} Der rechtmäßige Eigentümer der Domain. Das sollte immer eine Privatperson oder Firma sein – NIEMALS der Provider! \item \textbf{Admin:} Der administrative Ansprechpartner. Meist dieselbe Person wie der Owner. \item \textbf{Tech:} Der technische Ansprechpartner. Hier kann der Provider stehen (Contabo GmbH). \item \textbf{Zone:} Zonenverwaltung. Ebenfalls Contabo GmbH. \end{itemize} \textbf{Standardwerte übernehmen:} Für Tech und Zone einfach die vorausgefüllte Contabo GmbH lassen. Das vereinfacht die technische Verwaltung. \subsubsection{Schritt 4: Nameserver festlegen} Auf der nächsten Seite wählst du die Nameserver: \begin{itemize} \item \textbf{Contabo Standard-Nameserver} auswählen (ns1.contabo.net, ns2.contabo.net, ns3.contabo.net). \item Das bedeutet: Contabo verwaltet die DNS-Einträge für dich. Du kannst sie jederzeit im Kundencenter ändern. \end{itemize} \subsubsection{Schritt 5: IP-Adresse auswählen} Hier wählst du aus, auf welchen deiner Server die Domain zeigen soll. In unserem Fall: \begin{itemize} \item Server \textbf{"test"} mit IP \texttt{185.209.229.167} \item Server \textbf{"prod"} mit IP \texttt{185.209.230.235} \end{itemize} \textbf{Empfehlung:} Nur die erste IP (\texttt{185.209.229.167}) auswählen, da dort unsere App läuft. Man kann später weitere Einträge hinzufügen. \subsubsection{Schritt 6: Bestellung abschließen} Die Zusammenfassung prüfen und auf \textbf{"Bestellen \& Bezahlen"} klicken. \subsection{DNS-Einträge für die Domain einrichten} Nach dem Kauf muss die Domain noch mit unserer Server-IP verknüpft werden. Das machen wir im \textbf{DNS Zone Management}. \subsubsection{Schritt 1: DNS Zone Management öffnen} Im Contabo Control Panel: \textbf{Netzwerkdienste $\rightarrow$ DNS-Verwaltung} oder direkter: \textbf{Netzwerkdienste $\rightarrow$ "DNS-Zone für [deine Domain] bearbeiten"}. \subsubsection{Schritt 2: Notwendige A-Records anlegen} Wir brauchen drei A-Records: \begin{enumerate} \item \textbf{Hauptdomain ohne Subdomain:} \begin{itemize} \item Name: \texttt{robre.de} \item Typ: A \item Data: \texttt{185.209.229.167} \item TTL: \texttt{86400} \end{itemize} \item \textbf{www-Subdomain:} \begin{itemize} \item Name: \texttt{www.robre.de} \item Typ: A \item Data: \texttt{185.209.229.167} \item TTL: \texttt{86400} \end{itemize} \item \textbf{Wildcard für alle anderen Subdomains (optional, aber nützlich):} \begin{itemize} \item Name: \texttt{*.robre.de} \item Typ: A \item Data: \texttt{185.209.229.167} \item TTL: \texttt{86400} \end{itemize} \end{enumerate} \textbf{Warum alle drei?} \begin{itemize} \item \texttt{robre.de} – die Hauptdomain, die die meisten Nutzer eingeben. \item \texttt{www.robre.de} – viele Nutzer geben aus Gewohnheit "www." ein. \item \texttt{*.robre.de} – fängt alle zukünftigen Subdomains ab (z. B. \texttt{app.robre.de}, \texttt{api.robre.de}), ohne dass wir jedes Mal einen neuen Eintrag anlegen müssen. \end{itemize} \subsection{DNS-Propagation prüfen und beschleunigen} \subsubsection{Direkt beim Nameserver prüfen} Dieser Befehl fragt \textbf{direkt} Contabos Nameserver an – ohne Cache. Wenn hier die richtige IP erscheint, ist die Konfiguration korrekt und wir müssen nur auf die weltweite Verbreitung warten. \begin{lstlisting}[language=Bash, caption={DNS direkt bei Contabo abfragen}] nslookup robre.de ns1.contabo.net \end{lstlisting} \textbf{Ausgabe bei korrekter Konfiguration:} \begin{lstlisting}[language=Bash, caption={Erwartete Ausgabe}] Server: ns1.contabo.net Address: 2a02:c207:ff00:1200::1#53 Name: robre.de Address: 185.209.229.167 \end{lstlisting} \subsubsection{Lokalen DNS-Cache leeren} Manchmal hat dein Rechner noch alte DNS-Einträge im Cache. So löschst du ihn: \begin{lstlisting}[language=Bash, caption={DNS-Cache leeren unter Linux mit systemd-resolved}] sudo resolvectl flush-caches \end{lstlisting} \subsubsection{Server direkt über IP prüfen} Um sicherzugehen, dass der Server selbst erreichbar ist (unabhängig von DNS), testen wir mit curl: \begin{lstlisting}[language=Bash, caption={Server direkt über IP testen}] curl -I http://185.209.229.167 \end{lstlisting} \textbf{Erwartete Ausgabe:} \begin{lstlisting}[language=Bash, caption={Server antwortet korrekt}] HTTP/1.1 200 OK Server: nginx/1.30.0 Content-Type: text/html ... \end{lstlisting} \texttt{HTTP/1.1 200 OK} bedeutet: Der Server läuft, die App ist erreichbar. Das Problem liegt ausschließlich an der DNS-Verbreitung. \subsubsection{Online DNS-Checker verwenden} Websites wie \texttt{https://dnschecker.org} oder \texttt{https://whatsmydns.net} zeigen an, von welchen Standorten weltweit die Domain bereits aufgelöst wird. Praktisches Werkzeug, um den Fortschritt der Propagation zu verfolgen! \subsection{Zusammenfassung} Nach diesem Schritt haben wir: \begin{itemize} \item Eine eigene Domain \texttt{robre.de} für 11,88 \texteuro\ / Jahr \item DNS-Einträge, die auf unsere Server-IP \texttt{185.209.229.167} zeigen \item Geprüft, dass Contabo die Domain korrekt registriert hat \item Geprüft, dass der Server direkt über die IP erreichbar ist \item DNS-Propagation abwarten, bis die Domain weltweit funktioniert \end{itemize} Als nächstes folgt die Einrichtung von HTTPS mit einem kostenlosen SSL-Zertifikat – das ist die Voraussetzung für die PWA-Installation!