Files
fitness-app/LateX/step_04.tex
T

211 lines
9.5 KiB
TeX
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
% ============================================
% 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!