Aufgabe 11 - Dokploy, Domain und Zertifikat
Aufgabe 11 - Dokploy, Domain und Zertifikat
Abschnitt betitelt „Aufgabe 11 - Dokploy, Domain und Zertifikat“Worum geht es?
Abschnitt betitelt „Worum geht es?“Sie schließen die Kette, die dieses Kapitel verspricht: Aus einem git push wird eine öffentlich erreichbare Anwendung unter Ihrem eigenen Namen, mit gültigem Zertifikat (siehe Kapitel Auslieferung mit Containern). Am Ende dieser Übung ist Ihr Jahresprojekt zum ersten Mal etwas, das man jemandem zeigen kann, indem man ihm eine Adresse sagt.
Was Sie dafür brauchen
Abschnitt betitelt „Was Sie dafür brauchen“- Kapitel Auslieferung mit Containern, Abschnitte Reverse Proxy und TLS bis Produktion und Vorschau trennen.
- Ihren gehärteten Server aus Aufgabe 08 und die Compose-Beschreibung aus Aufgabe 10.
- Eine eigene Domain oder einen Namen bei einem Dienst wie DuckDNS oder
sslip.io.
Welche Kompetenzen Sie erwerben und zeigen
Abschnitt betitelt „Welche Kompetenzen Sie erwerben und zeigen“- Sie erklären den Weg einer Anfrage von der Domain über TLS bis zum Container an jeder Station.
- Sie legen DNS-Einträge an und prüfen sie mit
digundcurl. - Sie liefern Ihr Projekt über Dokploy aus, sichern die Oberfläche ab und trennen Produktion von Vorschau.
Pädagogische Einordnung
Abschnitt betitelt „Pädagogische Einordnung“- Reproduktion: DNS-Einträge anlegen und die Installation nach Anleitung durchführen (Teil A).
- Reorganisation und Transfer: das eigene Projekt ausliefern und jede Station einzeln prüfen (Teil B).
- Reflexion, Problemlösung und Urteilsbildung: den Weg einer Anfrage erklären und Umgebungen trennen (Teil C).
Arbeitsaufträge
Abschnitt betitelt „Arbeitsaufträge“Die Übung ist auf etwa zwei Stunden ausgelegt.
Teil A - Namen und Deployment-Oberfläche
Abschnitt betitelt „Teil A - Namen und Deployment-Oberfläche“-
Legen Sie die DNS-Einträge für Ihr Projekt an. Vier Namen bereiten Sie gleich vor, auch wenn Sie zunächst nur einen brauchen: den Hauptnamen für die Anwendung,
api.für den Webservice,cms.für den Inhaltsbereich unddokploy.für die Deployment-Oberfläche. -
Notieren Sie zu jedem Eintrag vier Angaben: Typ (
A,AAAAoderCNAME), Name, Ziel und TTL. -
Prüfen Sie jeden Namen mit
dig +short <name>. Notieren Sie die Antworten und vergleichen Sie sie mit der IP-Adresse ausdocs/betrieb.md. -
Erklären Sie in drei bis vier Sätzen, was die TTL bewirkt. Beschreiben Sie dabei, in welcher Reihenfolge Sie bei einem geplanten Umzug vorgehen würden: TTL herabsetzen, umstellen, TTL wieder heraufsetzen.
-
Laden Sie das Installationsskript von Dokploy herunter und lesen Sie es, bevor Sie es ausführen:
Terminal-Fenster curl -sSL https://dokploy.com/install.sh -o install.shless install.shsudo sh install.shNotieren Sie in drei bis vier Sätzen, welche drei Bestandteile das Skript einrichtet, und begründen Sie, warum der Zwischenschritt mit
lessauf einem gerade gehärteten Server keine Förmlichkeit ist. -
Legen Sie das Administratorkonto sofort nach der Installation an. Erklären Sie in zwei Sätzen, wovor die Eile schützt.
-
Hängen Sie die Oberfläche an den Unternamen
dokploy.mit eigenem Zertifikat und schließen Sie den direkten Port in der Firewall. Weisen Sie beides nach: den Aufruf über den Namen und die Prüfung des Ports von einem zweiten Rechner aus. -
Tragen Sie den Eingriff mit Datum, Befehlen und Ergebnis in
docs/betrieb.mdein.
Teil B - Das Projekt ausliefern
Abschnitt betitelt „Teil B - Das Projekt ausliefern“-
Verbinden Sie Ihr Repository, wählen Sie den Produktionsbranch und Ihr
Dockerfileals Bauart. -
Tragen Sie alle Umgebungsvariablen aus
.env.examplemit echten Werten ein. Prüfen Sie danach mitgit grep, dass keiner dieser Werte im Repository steht. -
Legen Sie PostgreSQL als eigenen Dienst mit Volume und geplanter Sicherung an. Notieren Sie, wie die Verbindungszeichenfolge in die Umgebung der Anwendung gelangt.
-
Lösen Sie das erste Deployment aus und lesen Sie die Build-Ausgabe mit. Notieren Sie jeden Fehler, der dabei auftrat, und was Sie dagegen getan haben. Beim ersten Mal geht selten alles durch, und genau diese Liste ist der Ertrag der Übung.
-
Prüfen Sie die Auslieferung mit
curl -vI https://<ihr-name>. Notieren Sie vier Angaben: ob eine Antwort kommt, welches Zertifikat gezeigt wird, wer es ausgestellt hat und wie lange es gilt. -
Prüfen Sie die Umleitung mit
curl -vI http://<ihr-name>. Notieren Sie den Statuscode und denLocation-Header. -
Hinterlegen Sie den Webhook im Repository. Ändern Sie eine sichtbare Kleinigkeit, pushen Sie, und messen Sie die Zeit vom Push bis zur sichtbaren Änderung im Browser. Notieren Sie die Dauer.
Teil C - Die Kette erklären und die Umgebungen trennen
Abschnitt betitelt „Teil C - Die Kette erklären und die Umgebungen trennen“-
Zeichnen Sie den Weg einer Anfrage für Ihr Projekt als Sequenzdiagramm, mit Ihren Namen und Ihren Ports. Die vier Beteiligten sind Browser, DNS, Traefik und Container. Legen Sie das Diagramm in
docs/architektur.mdab. -
Beschreiben Sie zu jeder der vier Stationen in zwei bis drei Sätzen, wie sie ausfällt und woran Sie den Ausfall erkennen. Diese Beschreibung ist Ihre Landkarte für Aufgabe 12.
-
Erklären Sie in fünf bis sechs Sätzen den Ablauf der Zertifikatsausstellung als Besitzprüfung. Beantworten Sie dabei drei Fragen: Was stellt Let’s Encrypt, was hinterlegt Traefik, und was ruft Let’s Encrypt danach ab? Nennen Sie am Ende die beiden Voraussetzungen, die daraus folgen, und den Befehl, mit dem Sie jede davon prüfen.
-
Richten Sie eine Vorschauumgebung unter
test.mit Ihrem Arbeitsbranch ein. Sie bekommt eigene Umgebungsvariablen und eine eigene Datenbank. -
Weisen Sie die Trennung nach. Legen Sie in der Vorschau einen Datensatz an und zeigen Sie, dass er in der Produktion nicht auftaucht. Notieren Sie, wie Sie das geprüft haben.
-
Beurteilen Sie in vier bis fünf Sätzen, was eine Vorschauumgebung wert ist, die auf der Produktionsdatenbank arbeitet. Nennen Sie zwei Fehler, die dadurch überhaupt erst möglich werden.
-
Schreiben Sie einen Eintrag in
docs/entscheidungen.mdzur Deployment-Strategie, mit den vier Abschnitten Entscheidung, Alternativen, Begründung und Folgen. Als Alternativen kommen das Deployment von Hand und eine fremde Cloud in Frage.
Wissenscheck
Abschnitt betitelt „Wissenscheck“- Welche zwei Aufgaben erfüllt ein Reverse Proxy, und warum sprechen die Container dahinter nur einfaches HTTP?
- Wie erkennt Traefik einen neuen Container, und worin unterscheidet sich das von nginx?
- Was bewirkt die TTL eines DNS-Eintrags, und was tut man vor einem geplanten Umzug?
- Welche zwei Voraussetzungen müssen erfüllt sein, damit Let’s Encrypt ein Zertifikat ausstellt?
- Warum leitet man Port 80 dauerhaft auf HTTPS um, und was tut zusätzlich der Header
Strict-Transport-Security? - Warum wird ein Installationsskript aus dem Netz erst gelesen und dann ausgeführt?
- Warum braucht eine Vorschauumgebung eine eigene Datenbank?
Die Anwendung ist unter der eigenen Domain mit gültigem Zertifikat erreichbar, HTTP leitet auf HTTPS um, und ein Push auf den Produktionsbranch löst ein Deployment aus. Das Sequenzdiagramm mit den vier Ausfallbeschreibungen liegt in docs/architektur.md, der Eintrag zur Deployment-Strategie in docs/entscheidungen.md, Installation und Absicherung in docs/betrieb.md. Die DNS-Tabelle, die curl-Ausgaben, die Fehlerliste aus dem ersten Deployment und der Trennungsnachweis stehen in protokoll.md.