211 lines
9.5 KiB
TeX
211 lines
9.5 KiB
TeX
% ============================================
|
||
% 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! |