-
Was ist ein vServer?
-
vServer und Sicherheit
-
vServer - Anwendungsfälle
-
vServer bei dogado
-
vServer und Plesk
-
vServer Betriebssyteme
-
vServer Glossar
Überblick
- Verwendetes System: Debian 11 64 bit
- Genutzter User: Ich nehme alles als „root“ vor
- Testsystem: vServer XXL 2.0
- Zeitdauer: ca. 20 – 30 Minuten. Kann durch die DNS Einstellungen aber länger dauern, bis diese wirken
- Schwierigkeit: Einfach. Nur Code kopieren 😉
- Besonderheiten:
- Die Ports 80 und 443 müssen frei sein. Es dürfen also keine anderen Dienste laufen.
1. Traefik v2 Installieren
1.1 Einleitung
Normalerweise wäre der Port 80 (HTTP) sowie 443 (HTTPS) durch einen Service belegt und man müsste sich einen zweiten Server (VServer) kaufen. Traefik ermöglicht hier also, dass viele Dienste wie E-Mail, Cloud, Videokonferenzen auf einem Server betrieben werden können. Ein weiterer Vorteil ist, dass später alle Verbindungen, welche über Traefik laufen, mittels HTTPS gesichert sind.
Traefik ist opensource und kostenlos in der Grundversion. Diese Anleitung basiert auf dieser Version. Es gibt aber auch eine Enterprise Version, welche beispielsweise mehr Möglichkeiten bezüglich der Skalierung auf mehrere Traefik Server bietet.
1.2 Vorbereitung
Diese Anleitung basiert auf dem aktuellen Debian 11 Betriebssystem. Traefik werden wir unter Docker realisieren. Dies ermöglicht uns später sehr schnelle Updates sowie eine einfache Integration neuer Dienste.
1.2.1 Docker / Docker Compose Installieren
Wir installieren also zuerst Docker und Docker Compose. Dazu gebt ihr folgendes auf der Konsole ein:
apt-get update
apt-get install ca-certificates curl gnupg lsb-release
mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
chmod a+r /etc/apt/keyrings/docker.gpg
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Nun haben wir alles installiert und konfiguriert, was wir für Docker benötigen. Dies können wir nun ganz einfach installieren.
apt-get update
apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
Nun lassen wir uns die installierte Version anzeigen. Dazu geben wir einfach folgenden Befehl ein:
docker --version && docker compose version
1.2.2 htpasswd installieren
Dieses Programm benötigen wir um uns ein sicheres Kennwort für unseren Traefik Login zu generieren. Zur Installation gebt ihr folgendes ein:
apt-get install apache2-utils
1.2.3 Benötigte Dateien / Verzeichnisse anlegen
Nun erstellen wir das Verzeichnis, in welches später Traefik installiert werden soll. Dazu gebt ihr folgenden Befehl ein. Das Verzeichnis könnt ihr natürlich verändern. In dieser Anleitung werde ich immer mit diesem Verzeichnis arbeiten. Ihr müsst dann dementsprechend dies immer bei euch berücksichtigen.
mkdir -p /opt/containers/traefik
Anschließend legen wir innerhalb dieses Verzeichnisses noch Dateien an, welche später Zertifikate für uns speichern werden.
mkdir -p /opt/containers/traefik/data
touch /opt/containers/traefik/data/acme.json
chmod 600 /opt/containers/traefik/data/acme.json
touch /opt/containers/traefik/data/traefik.yml
1.2.4 Infos zu yml Dateien
Bei yml Dateien ist es sehr wichtig, dass die Zeilen alle richtig eingerückt sind. Die Zeilen MÜSSEN immer mit der Leertaste eingerückt werden. Es dürfen KEINE Tabs enthalten sein. Ihr könnt den nachfolgenden Code immer online „überprüfen“ lassen. Die meisten Fehler entstehen nämlich durch die falsche Formatierung. Ein Dienst zum Überprüfen ist zum Beispiel: https://codebeautify.org/yaml-validator
1.3 Dynamic_conf.yml anlegen
In dieser Datei wird festgelegt, welche Parameter für die „sichere Verbindung“ mittels HTTPS genutzt werden sollen. Wir wollen eine sehr gute Bewertung (A+) bei SSL Labs. SSL Labs (https://www.ssllabs.com/ssltest/) ist eine Webseite um seine eigene Webseite auf Sicherheit zu testen.
Ich nutze als Editor immer „nano“. Diesen könnt ihr mittels folgenden Befehls installieren
apt-get install nano
Ihr könnt auch jeden anderen Editor nutzen.
Gebt nun folgenden Code in eure Konsole ein:
nano /opt/containers/traefik/data/dynamic_conf.yml
In die Datei kopiert ihr nun folgendes:
tls:
options:
default:
minVersion: VersionTLS12
cipherSuites:
- TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
- TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
- TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305
- TLS_AES_128_GCM_SHA256
- TLS_AES_256_GCM_SHA384
- TLS_CHACHA20_POLY1305_SHA256
curvePreferences:
- CurveP521
- CurveP384
sniStrict: true
http:
middlewares:
secHeaders:
headers:
browserXssFilter: true
contentTypeNosniff: true
frameDeny: true
sslRedirect: true
#HSTS Configuration
stsIncludeSubdomains: true
stsPreload: true
stsSeconds: 31536000
customFrameOptionsValue: "SAMEORIGIN"
1.4 traefik.yml anpassen
In diesem Schritt erstellen wir uns eine leere Datei, in welche wir anschließend einige Einstellungen eintragen.
nano /opt/containers/traefik/data/traefik.yml
In diese Datei kopiert ihr nun folgendes:
api:
dashboard: true
entryPoints:
http:
address: ":80"
https:
address: ":443"
providers:
docker:
endpoint: "unix:///var/run/docker.sock"
exposedByDefault: false
file:
filename: "./dynamic_conf.yml"
certificatesResolvers:
http:
acme:
email: email@example.com #### hier eure E-Mail angeben ####
storage: acme.json
httpChallenge:
entryPoint: http
Ihr müsst jetzt noch bei E-Mail eure E-Mail-Adresse eintragen. Diese wird für Lets Encrypt benötigt. Dies ist ein kostenfreier Dienst im Internet, welcher euch gültige HTTPS Zertifikate („sichere Verbindung“) zur Verfügung stellt.
1.5 docker-compose.yml anpassen
Nun können wir mit der eigentlichen „Installation“ von Traefik beginnen. Dazu öffnet ihr folgende Datei:
nano /opt/containers/traefik/docker-compose.yml
Nun kopiert ihr folgenden Code in die Datei. Dieser Code ist unser Bauplan für unseren Traefik Container.
version: '3'
services:
traefik:
image: traefik:latest
container_name: traefik
restart: unless-stopped
security_opt:
- no-new-privileges:true
networks:
- proxy
ports:
- 80:80
- 443:443
volumes:
- /etc/localtime:/etc/localtime:ro
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./data/traefik.yml:/traefik.yml:ro
- ./data/acme.json:/acme.json
- ./data/dynamic_conf.yml:/dynamic_conf.yml
labels:
- "traefik.enable=true"
- "traefik.http.routers.traefik.entrypoints=http"
- "traefik.http.routers.traefik.rule=Host(`traefik.example.com`)"
- "traefik.http.middlewares.traefik-auth.basicauth.users=USER:PASSWORD"
- "traefik.http.middlewares.traefik-https-redirect.redirectscheme.scheme=https"
- "traefik.http.routers.traefik.middlewares=traefik-https-redirect"
- "traefik.http.routers.traefik-secure.entrypoints=https"
- "traefik.http.routers.traefik-secure.rule=Host(`traefik.example.com`)"
- "traefik.http.routers.traefik-secure.tls=true"
- "traefik.http.routers.traefik-secure.tls.certresolver=http"
- "traefik.http.routers.traefik-secure.service=api@internal"
- "providers.file.filename=/dynamic_conf.yml"
- "traefik.http.routers.traefik-secure.middlewares=secHeaders@file,traefik-auth"
networks:
proxy:
external: true
Speichert die Datei nun ab und beendet euren Editor. Wir werden uns nun einen Benutzer / Passwort generieren und anschließend dies in der Datei abändern.
Um einen Benutzer / Passwort zu generieren gebt ihr folgenden Befehl ein:
echo $(htpasswd -nb <user> '<password>') | sed -e s/\\$/\\$\\$/g
Hier tauscht ihr nun „user“ bzw. „password“ durch euren Nutzernamen / Passwort aus. Dies könnte zum Beispiel so aussehen:
echo $(htpasswd -nb dogado 'geheim123') | sed -e s/\\$/\\$\\$/g
Nun solltet ihr eine Ausgabe bekommen, welche in etwa so aussieht:
Ausgabe: dogado:$$apr1$$6SCsKdSF$$NrWj6Usie0LpPAIEj8H3Y0
Diese Zeichenkette kopiert ihr euch nun und wir öffnen wieder unsere docker-compose.
nano /opt/containers/traefik/docker-compose.yml
Hier gebt ihr nun euren kopierten Code ein:
vorher:
"traefik.http.middlewares.traefik-auth.basicauth.users=USER:PASSWORD"
nachher:
"traefik.http.middlewares.traefik-auth.basicauth.users= dogado:$$apr1$$6SCsKdSF$$NrWj6Usie0LpPAIEj8H3Y0“
Des Weiteren müsst ihr noch den Hostnamen anpassen. Dies ist der Name, über welchen später Traefik erreichbar sein wird.
Vorher:
- "traefik.http.routers.traefik.rule=Host(`traefik.example.com`)"
- "traefik.http.routers.traefik-secure.rule=Host(`traefik.example.com`)"
Nachher:
- "traefik.http.routers.traefik.rule=Host(`traefik.euredomain.de`)"
- "traefik.http.routers.traefik-secure.rule=Host(`traefik.euredomain.de`)"
Nun sind wir schon fast fertig.
1.6 Docker Netzwerk erstellen
Zum Schluss müssen wir nur noch ein Docker Netzwerk anlegen. Dies dient später zur Kommunikation der einzelnen Container mit Traefik. Ich nenne das Netzwerk hier „proxy“. Ihr könnt aber auch jeden anderen Namen verwenden. Müsst aber dann später dementsprechend die Anleitung anpassen. Dazu gebt ihr folgenden Code ein:
docker network create proxy
Nun haben wir alles für den ersten Start vorbereitet.
1.7 apache2 deinstallieren
Bei dem genutzten Debian 11 Image ist bereits ein apache2 Server vorinstalliert. Diesen deinstallieren wir, da wir den Port 80 und 443 für Traefik benötigen. Unsere Webseiten stellen wir später alle durch Container da. Um apache2 zu deinstallieren gebt ihr folgendes ein:
apt-get remove apache2
2. DNS-Einstellungen anpassen
Damit wir später einfach bei Traefik Subdomains anlegen (z.B. mail.euredomain.de, cloud.euredomain.de) können, müssen wir noch die DNS-Einstellungen anpassen.
Dazu geht ihr auf folgende Webseite: https://cloudpit.io/
Hier logt ihr euch mit euren Zugangsdaten ein und geht dann auf den Bereich „Web Hosting“.
Klickt dann bei eurer Domain auf „mehr“. Wählt nun „DNS-Verwaltung“ aus.
Wählt nun „Manuelle DNS-Verwaltung“ aus. Anschließend klickt ihr auf „Eintrag hinzufügen“.
Gebt nun beim Feld Name „*“ ein und bei Ziel-IP die IP Adresse eures Servers.
Anschließend klickt ihr noch auf „speichern“.
Es kann mehrere Stunden dauern, bis diese Einstellungen weltweit übertragen wurden und funktionieren.
3. Traefik starten
Gebt nun folgendes ein, um euren Traefik Container zu starten:
docker-compose -f /opt/containers/traefik/docker-compose.yml up -d
Geht nun mit eurem Webbrowser auf eure Webseite (z.B. traefik.euredomain.de). Dort sollte nach einigen Sekunden folgendes zu sehen sein:
Nachdem ihr euch dann mit euren eben erstellen Nutzerdaten eingeloggt habt, sollte es in etwa so aussehen.
4. Sicherheit der Webseite testen
Nun gehen wir auf folgende Webseite und schauen, ob wir die gewünschte A+ Bewertung bekommen: https://www.ssllabs.com/ssltest/
Hier gebt ihr jetzt eure Webseite ein (z.B. traefik.euredomain.de). Nun sollte es so bei euch aussehen:
Weitere nützliche Tutorials
Wenn ihr lernen wollt, wir ihr das Server-Control-Panel "CloudPanel" installieren könnt schaut euch gerne das Tutorial auf foxly.de an. Hier geht's zur Anleitung: Installation des hochleistungsfähigen Server-Control-Panel - CloudPanel