Infrastrukture
Installation on Premise
Diese Anleitung führt Sie durch die Einrichtung eines neuen Servers für rocklogEDGE. Folgen Sie den Schritten in der angegebenen Reihenfolge, um eine erfolgreiche Installation zu gewährleisten.
Synopsis
Diese Dokumentation beschreibt die notwendigen Schritte zur Einrichtung eines neuen Servers für rocklogEDGE. Die Anleitung deckt alle Aspekte von der Vorbereitung des Betriebssystems bis zur Konfiguration der Sicherheitskomponenten ab.
Invarianten
Bei der Installation müssen folgende Voraussetzungen erfüllt sein:
- Betriebssystem: Debian-basierte Distribution (Debian 12/13)
- HTTPS-Zertifikat: HTTP Challenge für Let's Encrypt-Zertifikat
Vorbereitende Schritte
Aktuelle Quellen installieren
Aktualisieren Sie zunächst die Paketquellen und installieren Sie verfügbare Updates:
apt update
apt upgrade
Notwendige Pakete installieren
Installieren Sie alle erforderlichen Pakete für die Server-Einrichtung:
apt install emacs nano vim lftp rsync sshfs curl wget tmux mosh openssh-server ufw sudo net-tools postgresql-client
Diese Pakete umfassen:
- Texteditoren (emacs, nano, vim)
- Netzwerk-Tools (lftp, rsync, sshfs, curl, wget, net-tools)
- Terminal-Tools (tmux, mosh)
- Sicherheitskomponenten (openssh-server, ufw, sudo)
- Datenbank-Client (postgresql-client)
UFW aktivieren
Aktivieren Sie die Uncomplicated Firewall (UFW):
ufw enable
Benutzeranlage
Erstellen Sie einen Benutzer für alle normalen Operationen:
useradd -d /home/lambdaroyal-anon -c "lambdaroyal vlic anonymous" lambdaroyal-anon &&
mkdir /home/lambdaroyal-anon &&
chown lambdaroyal-anon /home/lambdaroyal-anon &&
mkdir -p /var/vlic &&
chown -R lambdaroyal-anon /var/vlic
Setzen Sie die korrekten Berechtigungen:
sudo chmod 755 /home/lambdaroyal-anon
sudo chown lambdaroyal-anon:lambdaroyal-anon /home/lambdaroyal-anon
Bash als Standard-Shell setzen
chsh -s /bin/bash lambdaroyal-anon
Zeitzone konfigurieren
Setzen Sie die Zeitzone auf Mitteleuropäische Zeit (CET):
timedatectl set-timezone Europe/Berlin
Docker installieren
Vorbereitung
Entfernen Sie eventuell vorhandene ältere Docker-Installationen:
for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do apt-get remove $pkg; done
Offiziellen GPG-Schlüssel hinzufügen
apt-get update
apt-get install ca-certificates curl
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc
Repository zu Apt-Quellen hinzufügen
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
tee /etc/apt/sources.list.d/docker.list > /dev/null
Docker installieren
apt-get update
apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Benutzer zur Docker-Gruppe hinzufügen
Fügen Sie den Benutzer lambdaroyal-anon zur Docker-Gruppe hinzu:
usermod -aG docker lambdaroyal-anon
Aktualisieren Sie die Gruppenberechtigungen in der aktuellen Sitzung:
newgrp docker
Docker-Socket-Berechtigungen
Für den Zugriff auf den Docker-Socket:
chmod 666 /var/run/docker.sock
Hinweis: Eine sicherere Lösung finden Sie in der Docker-Dokumentation zur Rootless-Installation oder in diesem Artikel.
SSH-Hardening
SSH-Schlüssel kopieren
Kopieren Sie die SSH-Schlüssel von Ihrem Entwickler-/Support-Rechner auf den Server in das Home-Verzeichnis von lambdaroyal-anon:
cat ~/.ssh/id_rsa.pub | ssh lambdaroyal-anon@<SERVER-IP> 'mkdir .ssh && cat >> .ssh/authorized_keys'
Ersetzen Sie <SERVER-IP> durch die IP-Adresse Ihres Servers.
Root-Login verhindern
Bearbeiten Sie die SSH-Konfigurationsdatei:
nano /etc/ssh/sshd_config
Ändern Sie die folgende Zeile:
PermitRootLogin no
Laden Sie den SSH-Daemon neu:
/etc/init.d/ssh reload
Nach dem Login können Sie mit su - zu root wechseln.
SSH-Sicherheitsoptionen setzen
Stellen Sie sicher, dass folgende Optionen in /etc/ssh/sshd_config gesetzt sind:
Port 22
Protocol 2
AllowUsers user1 user2
LoginGraceTime 2m
PermitRootLogin no
StrictModes yes
MaxAuthTries 1
PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys
RhostsRSAAuthentication no
PasswordAuthentication no
PermitEmptyPasswords no
UsePAM yes
Referenz: Weitere Informationen finden Sie in der Hetzner SSH-Dokumentation.
Firewall-Konfiguration
Standard-Konfiguration
Konfigurieren Sie die Firewall für den Zugriff von bestimmten IP-Adressen:
ufw allow from <ERLAUBTE-IP-1> to any port 22 &&
ufw allow from <ERLAUBTE-IP-2> to any port 22 &&
ufw deny ssh &&
ufw allow http &&
ufw allow https &&
ufw allow 60000:61000/udp &&
ufw enable &&
ufw status verbose
Ersetzen Sie <ERLAUBTE-IP-1> und <ERLAUBTE-IP-2> durch die IP-Adressen, von denen aus SSH-Zugriff erlaubt sein soll.
VPN-geschützte Server
Falls der Server durch ein VPN geschützt ist, verwenden Sie folgende Konfiguration:
ufw allow ssh &&
ufw allow mosh &&
ufw allow http &&
ufw allow https &&
ufw allow 4433/tcp &&
ufw allow 60000:61000/udp &&
ufw enable &&
ufw status verbose
Nginx einrichten
Installieren Sie Nginx:
apt-get install nginx
Aktivieren Sie den Nginx-Service:
service nginx enable
Hinweis: Passen Sie in den Templates ggf. Ports und Pfade zum Zertifikat an!
Let's Encrypt-Zertifikat mit HTTP Challenge
Certbot installieren
Installieren Sie zunächst snapd:
apt-get install snapd
Installieren Sie Certbot:
snap install --classic certbot
Erstellen Sie einen symbolischen Link für einfacheren Zugriff:
ln -s /snap/bin/certbot /usr/bin/certbot
Zertifikat beantragen
Beantragen Sie das Zertifikat mit HTTP Challenge:
certbot certonly --webroot
- Verwenden Sie
[email protected]als E-Mail-Adresse - Bestätigen Sie alle Abfragen
- Geben Sie die Subdomain ein (z.B.
hub8.planet-rocklog.com) - Geben Sie das Webroot-Verzeichnis ein:
/var/www/html
Let's Encrypt-Zertifikat mit DNS-Challenge
Diese Methode erstellt automatisch die DNS-Einträge auf Cloudflare.
DNS-Cloudflare-Plugin installieren
sudo apt-get install python3-certbot-dns-cloudflare
Cloudflare-API-Token erstellen
Erstellen Sie einen zonespezifischen API-Token in Cloudflare für die entsprechende Domain.
Konfigurationsdatei erstellen
Erstellen Sie die Konfigurationsdatei /root/.secrets/certbot/cloudflare.ini:
dns_cloudflare_api_token = <IHR-API-TOKEN>
Ersetzen Sie <IHR-API-TOKEN> durch Ihren Cloudflare-API-Token.
Zertifikat beantragen
certbot certonly \
--dns-cloudflare \
--dns-cloudflare-credentials ~/.secrets/certbot/cloudflare.ini \
-d <IHRE-DOMAIN>
Ersetzen Sie <IHRE-DOMAIN> durch Ihre Domain (z.B. wtazv-dmz-rock.rocklog.ch).
Mail-Relay-Konfiguration
Keycloak versucht, E-Mails über den Google Mail-Relay zu versenden. Dazu muss die IP-Adresse des Servers in der GCP Admin-Konsole hinterlegt sein.
- Melden Sie sich in der GCP Admin-Konsole an
- Suchen Sie nach "relay"
- Fügen Sie die IP-Adresse Ihres Servers zur Liste der erlaubten IPs hinzu
Nächste Schritte
Nach Abschluss der Server-Einrichtung können Sie mit der Installation von rocklogEDGE fortfahren.