add traefik instructions
This commit is contained in:
parent
a5707e660f
commit
76fcf276f9
1 changed files with 104 additions and 1 deletions
|
@ -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>
|
||||
|
|
Loading…
Reference in a new issue