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.

  1. Melden Sie sich in der GCP Admin-Konsole an
  2. Suchen Sie nach "relay"
  3. 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.

Previous
Vorbereitung onPremise Infrastrukture