From 76fcf276f9c44377d234fc28ca58a0573205a3f8 Mon Sep 17 00:00:00 2001 From: Jonas Leder <jonas@jonasled.de> Date: Sat, 29 Jan 2022 19:01:53 +0100 Subject: [PATCH] add traefik instructions --- public/anleitungen/traefik.html | 105 +++++++++++++++++++++++++++++++- 1 file changed, 104 insertions(+), 1 deletion(-) diff --git a/public/anleitungen/traefik.html b/public/anleitungen/traefik.html index 20cf105..3284393 100644 --- a/public/anleitungen/traefik.html +++ b/public/anleitungen/traefik.html @@ -11,7 +11,110 @@ <body> <jl-header data-title="Passwort Generator"></jl-header> <div id="content"> - <!--PLACE YOUR CONTENT HERE--> + <p>In der folgenden Anleitung werde ich darauf eingehen, wie man eine VM mit alpine Linux aufsetzt, darauf + Docker installiert und dann als Container einen Traefik 2 reverse Proxy.</p> + <p>Als erstes muss eine neue VM erstellt werden und als Boot Medium Alpine Linux eingelegt werden. Wenn die ISO + gebootet ist kommt ein Login Fenster, hier einfach mit dem Benutzer <code class="language-text">root</code> + anmelden. Danach sollte ein Terminal Prompt kommen. Um Alpine zu installieren muss der Befehl <code + class="language-text">setup-alpine</code> eingegeben werden. Hierbei gilt es zu beachten, dass die ISO + ein englisches Tastaturlayout benutzt. Der Bindestrich liegt hier auf dem ß. Als erstes muss nun im Setup + das Tastaturlayout angegeben werden, um dieses auf Deutsch festzulegen zwie mal <code + class="language-text">de</code> eingeben. + Nachdem die Tastatur geändert wurde muss der Hostname festgelegt werden, meine VM heißt einfach <code + class="language-text">docker</code>. In der darauffolgenden Netzwerkkonfiguration muss als erstes der + Name des zu konfigurierendes Netzwerkinterfaces angegeben werden (meist <code + class="language-text">eth0</code>) + Im darauffolgenden Schritt wird die Methode der IP konfiguration angegeben. Im Folgenden setze ich hier auf + DHCP. Nachdem das root Passwort (welches mit einem <a href="/passwordgen.html">Passwortgenerator</a> + generiert wurde) festgelegt wurde muss die Zeitzone angegeben werden. Für Deutschland ist + diese <code class="language-text">Europe/Berlin</code>. Einen Proxy brauchen wir nicht, genauso wie beim + mirror können wir einfach mit enter bestätigen. Der SSH Server kann auch bei openssh belassen werden. + Nachdem nun die Grundkonfiguration im Installer abgeschlossen ist, muss noch die Festplatte angegeben + werden. Dafür wird eine Liste an erkannten Platten angezeigt. In meinem Fall war dies <code + class="language-text">sda</code> und danach noch der Typ. Dies ist <code + class="language-text">sys</code>, + da das System auf die Platte installiert wird. Nach der Installation muss das System nochmal neugestartet + werden. + </p> + + <p> + Wenn das System nun von der Festplatte gebootet hat kann man sich mit dem Benutzer <code + class="language-text">root</code> und dem zuvor gewählten Passwort anmelden. Danach muss als erstes das + System auf den neuesten Stand gebracht werden und ein paar tool installiert werden. Dazu die beiden unten + ausfgeführten Befehle eingeben. + <pre> +<code class="language-bash">apk update +apk upgrade +apk add nano htop git</code> +</pre> + Um nun Docker zu installieren muss als erstes die Community repo aktiviert werden. Dazu mit <code + class="language-bash">nano</code> die Datei <code class="language-text">/etc/apk/repositories</code> öffnen + und in der Zeile, welche mit <code class="language-text">community</code> endet das <code + class="language-text">#</code> am Anfang entfernen. (Nicht in den Zeilen mit <code + class="language-text">edge</code> im URL) Danach kann Docker installiert werden. + </p> + <pre> +<code class="language-bash">nano /etc/apk/repositories +apk update +apk add docker docker-compose +rc-update add docker +/etc/init.d/docker start</code> +</pre> + <p> + Nun ist Docker auf unserem System installiert und kann eingesetzt werden. Um Traefik 2 nun einzusetzen muss + als erstes meine Vorlage von <a href="https://gitlab.jonasled.de/jonasled/traefik-config">hier</a> + heruntergeladen werden. Danach muss in der Datei <code class="language-text">config/traefik.yml</code> unter + letsencrypt => acme => email die E-Mail Adresse festgelegt werden, welche für letsencrypt verwendet werden + soll. Danach noch die Berechtigungen von der Zertifikatsdatei einschränken. Bevor wir traefik starten könenn + müssen wir noch ein Netzwerk namens <code class="language-text">web</code> angelegt werden. Nachdem nun + alles vorbereit wurde kann dieser mit + <code class="language-bash">docker-compose up</code> gestartet werden. + </p> + <pre> +<code class="language-bash">git clone https://gitlab.jonasled.de/jonasled/traefik-config +cd traefik-config +nano config/traefik.yml +chmod 600 letsencrypt/acme.json +docker network create web +docker-compose up +# Wenn alles läuft strg und c drücken +docker-compose up -d</code> +</pre> + <p> + Traefik ist nun installiert und sollte von außen erreichbar sein. Als Antwort sollte bei nicht bekannten + Domains immer ein 404 Fehler kommen. Zum testen setzen wir als nächstes den whoami Docker Container auf, + dieser ist nur wenige kb groß und bietet einen minimalen Webserver. Dazu muss als erstes die unten + angehängte docker-compose auf dem Host in einem neuen Ordner unter dem Namen <code + class="language-text">docker-compose.yml</code> abspeichern und den Host anpassen. Danach kann der + Container mit <code class="language-bash">docker-compose up</code> gestartet werden. Nun sollte nach 1-2 + Minuten auf dem zuvor angegebenen Domain die 404 Meldung durch eine Seite ersetzt werden. Falls dies nicht + der Fall ist kann im Ordner, in dem der Traefik abgelegt wurde der Befehl <code + class="language-text">docker-compose logs -f</code> ausgeführt werden um den Fehlerlog zu überprüfen. + </p> + <pre> +<code class="language-yaml">version: "3.2" +services: + whoami: + image: containous/whoami + restart: unless-stopped + networks: + - web + labels: + - traefik.http.routers.whoami-https.rule=Host(`whoami.jonasled-test.xyz`) + - traefik.http.routers.whoami-https.entrypoints=https + - traefik.http.routers.whoami-https.tls=true + - traefik.http.routers.whoami-https.tls.certresolver=letsencrypt + - traefik.http.services.whoami.loadbalancer.server.port=80 + +networks: + web: + external: true</code> +</pre> + <p> + Um die Konfigurationen für den Traefik Server zu erstellen verwende nutze ich ein kleines selber + geschriebenes Tool, welches <a + href="https://jonasled.pages.gitlab.jonasled.de/traefik-config-generator/">hier</a> erreichbar ist. + </p> </div> <jl-footer></jl-footer> <script src="/js/script.js"></script> -- GitLab