Zum Inhalt springen

Eine robuste Umgebung für Deine KI-Experimente

Dieses Dokument führt Dich Schritt für Schritt durch die Einrichtung eines vollständigen, lokalen KI-Servers. Ziel ist es, eine stabile, sichere und vollständig selbstbestimmbare Umgebung zu schaffen, mit der Du künstliche Intelligenz einsetzen, testen, kombinieren und automatisieren kannst; ohne Cloud-Abhängigkeiten, ohne Datenabfluss, vollständig unter Deiner Kontrolle.

Die Anleitung ist so aufgebaut, dass auch technische Laien jeden Abschnitt nachvollziehen können. Alle Werkzeuge und Technologien werden erklärt, jede Entscheidung ist begründet, jeder Befehl wird in seinem Zusammenhang erläutert. Du brauchst keine Vorkenntnisse in Serveradministration oder KI-Systemen ... nur ein bisschen Konzentration, Neugier und ein klein wenig Geduld.

Vielleicht erscheint das Setup für den Anfang etwas umfangreich, aber jedes Modul hat seine begründete Funktion: Sowohl bei der Entwicklung als auch später im Produktivbetrieb:

  • OpenSSH-Server:

    Ermöglicht die sichere Fernverwaltung des Servers über das SSH-Protokoll. Damit kannst Du Dich jederzeit von außen einloggen, Befehle ausführen, Dateien übertragen und den gesamten Server kontrollieren. Voraussetzung für alle folgenden Schritte.

  • UFW-Firewall:

    Einfaches, aber leistungsfähiges Werkzeug zur Absicherung offener Netzwerkports. Es schützt den Server vor ungewolltem Zugriff, indem es nur ausgewählte Dienste (z. B. SSH, HTTP, HTTPS) durchlässt und alles andere blockiert.

  • Fail2Ban:

    Überwacht Systemprotokolle und sperrt IP-Adressen, von denen wiederholt fehlerhafte Anmeldeversuche ausgehen. Dadurch schützt es effektiv gegen automatisierte Angriffe, insbesondere auf SSH oder Webanwendungen.

  • Apache Webserver:

    Stellt Webseiten, Skripte und Anwendungen im Browser zur Verfügung. Er bildet das Rückgrat Deines lokalen Web-Ökosystems und wird später durch SSL, PHP und eigene Inhalte erweitert.

  • PHP:

    Eine serverseitige Skriptsprache, die es Dir erlaubt, dynamische Webseiten und Webanwendungen zu entwickeln. Sie ist für viele Tools, Systeme und Dashboards Voraussetzung – zum Beispiel für Benutzeroberflächen oder einfache Schnittstellen.

  • MariaDB:

    Ein modernes Datenbanksystem, kompatibel zu MySQL. Es speichert zuverlässig strukturierte Daten – etwa Nutzerinformationen, Texte, Logs oder interne Strukturen. Grundlage für viele KI-Systeme mit relationaler Komponente.

  • Certbot / Let's Encrypt:

    Richtet automatisch gültige SSL-Zertifikate für HTTPS ein. So können Browser Deine Seiten als sicher einstufen, und alle Daten werden verschlüsselt übertragen. Wichtig für DSGVO-konforme Kommunikation und moderne Webanwendungen.

  • Logrotate:

    Automatisiert die Archivierung und Bereinigung von Logdateien. Dadurch bleibt das System performant, die Festplatte läuft nicht voll, und wichtige Protokolle bleiben nachvollziehbar erhalten.

  • Node.js (via Nodesource):

    Ermöglicht die Ausführung moderner JavaScript-Anwendungen außerhalb des Browsers. Grundlage für viele KI-Tools, APIs und Entwicklerwerkzeuge wie die Claude CLI.

  • npm (Node Package Manager):

    Verwaltet Erweiterungen, Bibliotheken und Tools für Node.js. Damit installierst Du unter anderem die Claude-CLI und andere Werkzeuge schnell und systemweit.

  • Claude CLI (optional, aber irgendwie mein Lieblingswerkzeug, weil ich extrem faul geworden bin):

    Ein offizielles Kommandozeilen-Tool von Anthropic, mit dem Du lokal Anfragen an Claude-Modelle stellen kannst. Läuft im Terminal und ist ideal zur Coding-Unterstützung, Prompt-Tests oder eigene Automatisierungen im Terminal. Voraussetzung: gültiger API-Key (aber dazu später mehr).

  • Python, pip, venv:

    Python ist eine zentrale Sprache (sehr schön nutzbar für KI-Anwendungen). pip installiert Bibliotheken wie ChromaDB, venv isoliert Umgebungen, damit Projekte unabhängig und sicher voneinander laufen können.

  • ChromaDB:

    Eine hochperformante Vektordatenbank für Embedding-basierte KI-Anwendungen. Sie erlaubt es, Texte in Vektoren zu verwandeln und effizient zu durchsuchen. Das ist die Grundlage für Systeme wie RAG, semantische Suche oder Dokumentenanalyse.

    Anmerkung: RAG (Retrieval-Augmented Generation) ist eine Technik, bei der ein KI-Sprachmodell nicht nur auf seinem trainierten Wissen basiert, sondern zusätzlich gezielt externe Informationen abruft. Dazu werden relevante Inhalte (zum Beispiel Textdokumente, Datenbankeinträge oder Webseiten) in sogenannte Vektoren umgewandelt und in einer Vektordatenbank wie ChromaDB gespeichert. Bei einer Anfrage durchsucht das System zuerst diese Datenbank, findet die passendsten Inhalte und übergibt sie dann als Kontext an das KI-Modell. Dadurch entstehen präzisere, aktuellere und nachvollziehbarere Antworten; auch bei komplexen oder firmenspezifischen Fragen.

  • Ollama:

    Ein lokaler Modell-Runner für Sprachmodelle wie LLaMA, Gemma, Mistral oder Phi. Ollama lädt und betreibt diese Modelle direkt auf Deinem Server, ganz ohne Internetzugriff. Du kannst sie dann über Terminal oder API ansprechen.

Hardware-Empfehlung:

Für den produktiven Einsatz verwende ich in dieser Anleitung ein dediziertes Root-Server System mit folgender Konfiguration:

  • Prozessor: Intel® Core™ i5-13500 mit Hyper-Threading (20 Threads)
  • GPU: Nvidia RTX™ 4000 SFF Ada Generation
  • RAM: 64 GB DDR4
  • Datenträger: 2 × 1,92 TB NVMe SSD im Software-RAID 1 (Spiegelung)

Warum ist diese Konfiguration sinnvoll?

  • Prozessor: Der i5-13500 besitzt 6 Performance-Kerne und 8 Effizienzkerne. In Summe liefert er 20 logische Threads. Das ist ideal für parallele KI-Berechnungen, Webserver-Last oder gleichzeitige Hintergrundprozesse (wie Vektoranalysen oder Dateiimporte).
  • GPU: Die RTX 4000 Ada ist eine kompakte, stromsparende Profi-Grafikkarte, optimiert für KI-Inferenz, Tensor-Rechenoperationen und CUDA-Beschleunigung. Sie erlaubt es Dir, lokale KI-Modelle wie LLaMA, Gemma oder Mistral schnell und effizient auszuführen, ohne auf externe Dienste angewiesen zu sein.
  • Arbeitsspeicher: 64 GB RAM bieten ausreichend Platz, um mehrere KI-Modelle parallel zu laden, Vektordatenbanken wie ChromaDB performant zu betreiben und Entwicklungsumgebungen im Hintergrund offen zu halten. Auch bei komplexeren Rechenprozessen kommst Du damit nicht an Speichergrenzen.
  • Speicher: Zwei NVMe-SSDs im RAID 1 sichern alle Daten gegen Ausfall ab. Gleichzeitig bleiben sie extrem schnell. So laufen Datenbankabfragen, Dateizugriffe und Logverarbeitung jederzeit flüssig.

Diese Hardware ist ein idealer Kompromiss zwischen Leistung, Stromverbrauch und Investitionsaufwand. Sie eignet sich für produktive Umgebungen, interne Testsysteme oder als leistungsfähige Entwicklungsplattform.

Blick ins Nähkästchen:Ich bezahle für diesen Server knapp 200 Euro im Monat und lasse dort meine gesamten KI-basierten Geschäftsanwendungen drauf laufen. Genau genommen sind es 2 x 200 Euro (1x Entwicklungsserver, 1x Produktivserver)

Aber jetzt lass uns loslegen:

Schritt-für-Schritt Anleitung für die Installation

Schritt 1: System aktualisieren und Grundpakete installieren

Diese Pakete stellen sicher, dass der Server alle grundlegenden Funktionen für Netzwerkinstallation, Paketverwaltung, Entwicklung und Verschlüsselung bereitstellt.

  1. Systempakete aktualisieren:
  • apt update && apt upgrade -y
  1. Wichtige Werkzeuge installieren:
  • curl ermöglicht Datenübertragungen per HTTP und HTTPS aus der Konsole
  • wget lädt Dateien aus dem Internet herunter
  • git dient der Verwaltung von Quellcode und CLI-Tools
  • unzip entpackt ZIP-Archive
  • ca-certificates verwaltet Zertifikate für verschlüsselte Verbindungen
  • gnupg stellt Funktionen für kryptografische Signaturen und Schlüssel bereit
  • lsb-release liefert Systemversionsinformationen für Skripte
  • software-properties-common ermöglicht das Hinzufügen von Repositories
  • apt-transport-https erlaubt den Zugriff auf HTTPS-Quellen über APT
  • sudo erlaubt normalen Benutzern temporär erhöhte Rechte
  • build-essential enthält Compiler, Make und Entwicklungsheader
  1. Installation der Werkzeuge:
  • apt install -y curl wget git unzip ca-certificates gnupg lsb-release software-properties-common apt-transport-https sudo build-essential

Das System ist damit vollständig vorbereitet für alle weiteren Installationsschritte.

Schritt 2: Benutzer anlegen und SSH-Zugang vorbereiten

Ein dedizierter Systembenutzer trennt administrativen Zugriff von Anwendungsprozessen. Der Zugriff erfolgt ausschließlich per kryptografischem SSH-Schlüssel.

  1. Auf dem lokalen Client einen SSH-Schlüssel erzeugen (falls nicht vorhanden):
  • ssh-keygen -t ed25519 -C "aiadmin@server"
  • Die öffentliche Schlüsseldatei befindet sich anschließend unter ~/.ssh/id_ed25519.pub
  1. Neuen Benutzer auf dem Server erstellen:
  • adduser aiadmin
  1. Benutzer zur sudo-Gruppe hinzufügen:
  • usermod -aG sudo aiadmin
  1. SSH-Verzeichnis für den Benutzer vorbereiten:
  • mkdir -p /home/aiadmin/.ssh
  • chmod 700 /home/aiadmin/.ssh
  1. Öffentlichen Schlüssel auf den Server übertragen und speichern:
  • nano /home/aiadmin/.ssh/authorized_keys
  • Den vollständigen Inhalt von id_ed25519.pub aus dem lokalen System einfügen
  • chmod 600 /home/aiadmin/.ssh/authorized_keys
  1. Besitzrechte korrekt setzen:
  • chown -R aiadmin:aiadmin /home/aiadmin/.ssh

Der Benutzer aiadmin ist nun vorbereitet für einen sicheren SSH-Zugang per Schlüssel.

Schritt 3: Root-Login über SSH deaktivieren

Zur Erhöhung der Systemsicherheit wird der direkte SSH-Zugang für root abgeschaltet. Zukünftig erfolgt der Zugriff ausschließlich über dedizierte Benutzer mit sudo-Rechten.

  1. SSH-Konfigurationsdatei öffnen:
  • nano /etc/ssh/sshd_config
  1. Folgende Zeile setzen oder anpassen:
  • PermitRootLogin no
  1. Änderung aktivieren:
  • systemctl restart ssh
  1. Verbindung zum Server neu aufbauen, aber ab sofort mit dem neuen Benutzer:
  • ssh aiadmin@server

Alle weiteren Installationsschritte erfolgen ausschließlich unter dem Benutzer aiadmin mit sudo-Rechten.

Schritt 4: Firewall einrichten und aktivieren

Die UFW-Firewall (Uncomplicated Firewall) schützt den Server durch gezielte Freigabe benötigter Ports. Es werden nur Dienste zugelassen, die ausdrücklich aktiviert wurden.

  1. UFW installieren:
  • sudo apt install -y ufw
  1. Standardregeln setzen:
  • sudo ufw default deny incoming
  • sudo ufw default allow outgoing
  1. Erforderliche Dienste freigeben:
  • sudo ufw allow OpenSSH
  • sudo ufw allow 80/tcp
  • sudo ufw allow 443/tcp
  1. Firewall aktivieren:
  • sudo ufw enable
  • Die Frage Command may disrupt existing ssh connections. Proceed with operation (y|n)? muss mit y bestätigt werden.
  1. Status prüfen:
  • sudo ufw status verbose

Die Ausgabe sollte nun wie folgt aussehen:

  • 22/tcp (OpenSSH) ALLOW IN Anywhere
  • 80/tcp ALLOW IN Anywhere
  • 443/tcp ALLOW IN Anywhere
  • 22/tcp (OpenSSH (v6)) ALLOW IN Anywhere (v6)
  • 80/tcp (v6) ALLOW IN Anywhere (v6)
  • 443/tcp (v6) ALLOW IN Anywhere (v6)

Die Firewall ist nun aktiv und schützt das System zuverlässig. Nur SSH, HTTP und HTTPS sind für eingehende Verbindungen erlaubt.

Schritt 5: Fail2Ban installieren und konfigurieren

Fail2Ban schützt den Server vor automatisierten Angriffsversuchen, indem es IP-Adressen temporär blockiert, die mehrfach fehlgeschlagene Loginversuche erzeugen. Die Konfiguration erfolgt über sogenannte Jails.

  1. Fail2Ban installieren:
  • sudo apt install -y fail2ban
  1. Standardkonfiguration duplizieren:
  • sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
  • Nur jail.local wird angepasst. Die Datei jail.conf bleibt unverändert.
  1. Datei jail.local öffnen und bearbeiten:
  • sudo nano /etc/fail2ban/jail.local
  1. Abschnitt [sshd] konfigurieren. Dieser sollte wie folgt aussehen:
  • [sshd]
    
    # To use more aggressive sshd modes set filter parameter "mode" in jail.local:
    # normal (default), ddos, extra or aggressive (combines all).
    # See "tests/files/logs/sshd" or "filter.d/sshd.conf" for usage example and details.
    #mode   = normal
    port    = ssh
    logpath = %(sshd_log)s
    backend = %(sshd_backend)s
    enabled = true
    maxretry = 5
    findtime = 600
    bantime = 3600
  1. Optional: Weitere sinnvolle Jails aktivieren
  • [apache-auth] schützt vor wiederholten fehlerhaften Anmeldeversuchen im Apache-Umfeld
  • [apache-badbots] blockiert bekannte bösartige Bots anhand der User-Agent-Erkennung
  • [apache-overflows] erkennt typische Apache-Exploits und Buffer-Overflow-Versuche
  • Für alle zusätzlichen Jails muss enabled = true gesetzt werden
  1. Fail2Ban starten und dauerhaft aktivieren:
  • sudo systemctl enable fail2ban
  • sudo systemctl restart fail2ban
  1. Status und Funktion prüfen:
  • sudo fail2ban-client status zeigt aktive Jails
  • sudo fail2ban-client status sshd zeigt den Status des SSH-Jails

Fail2Ban ist jetzt aktiv. Der SSH-Dienst und der Apache-Webserver sind gegen typische Brute-Force- und Exploitversuche abgesichert. Angreifer werden nach fünf Versuchen für eine Stunde blockiert.

Schritt 6: Apache Webserver installieren und aktivieren

Apache stellt den Webserver bereit, über den später PHP-Anwendungen, APIs und Webinterfaces ausgeliefert werden. Der Dienst wird systemweit installiert und automatisch gestartet.

  1. Apache installieren:
  • sudo apt install -y apache2
  1. Dienst beim Systemstart aktivieren:
  • sudo systemctl enable apache2
  1. Dienst sofort starten:
  • sudo systemctl start apache2
  1. Status des Webservers prüfen:
  • sudo systemctl status apache2
  1. Funktionsprüfung im Browser:
  • Aufruf von http://server-ip oder http://deine-domain.de
  • Die Apache-Standardseite “It works!” sollte erscheinen

Apache ist jetzt betriebsbereit. Die Konfiguration erfolgt später über virtuelle Hosts und optional SSL-Zertifikate.

Schritt 7: PHP und Standard-Erweiterungen installieren

PHP wird als serverseitige Scriptsprache benötigt. Die folgenden Pakete installieren PHP inklusive Apache-Modul und gängiger Erweiterungen für Webanwendungen.

  1. PHP und empfohlene Erweiterungen installieren:
  • sudo apt install -y php php-cli php-common libapache2-mod-php php-mysql php-curl php-gd php-xml php-mbstring php-zip php-bcmath php-intl php-soap php-readline
  1. Apache neustarten, damit PHP aktiviert wird:
  • sudo systemctl restart apache2
  1. PHP-Version prüfen:
  • php -v
  1. Funktionsprüfung: PHP-Testseite im Browser anzeigen
  • Testdatei erstellen:
    • sudo nano /var/www/html/info.php
    • Inhalt der Datei: <?php phpinfo(); ?>
    • Datei speichern und schließen
  • Die Datei info.php enthält eine PHP-Anweisung, die eine detaillierte Übersicht der PHP-Konfiguration erzeugt
  • Seite im Browser aufrufen: http://server-ip/info.php oder http://deine-domain.de/info.php
  • Es sollte eine Seite mit dem Titel PHP Version erscheinen. Diese bestätigt, dass PHP korrekt funktioniert und mit Apache verbunden ist
  1. Entferne die Testdatei dann wieder.
  • sudo rm /var/www/html/info.php

PHP ist nun vollständig installiert und mit Apache verknüpft. Webanwendungen können ab sofort ausgeführt werden.

Schritt 8: MariaDB installieren und absichern

MariaDB ist ein relationales Datenbanksystem und speichert strukturierte Daten für Anwendungen. Nach der Installation erfolgt eine interaktive Absicherung der Datenbankinstanz.

  1. MariaDB installieren:
  • sudo apt install -y mariadb-server mariadb-client
  1. Datenbankdienst aktivieren und starten:
  • sudo systemctl enable mariadb
  • sudo systemctl start mariadb
  1. Sicherheitskonfiguration durchführen:
  • sudo mysql_secure_installation

Es folgen mehrere interaktive Eingaben. Die empfohlene Antwort ist jeweils angegeben.

  • Switch to unix_socket authentication?
    Antwort: n (nein)
    Erklärung: Wenn y gewählt wird, erfolgt der Login als Root künftig nur über das Unix-Socket und nicht mit Passwort. Das verhindert die Nutzung von mysql -u root -p und macht automatisierte Zugriffe schwieriger. n erlaubt weiterhin klassischen Passwort-Login und ist sinnvoll, wenn Tools oder Skripte verwendet werden, die Root-Zugriff mit Passwort benötigen.
  • Set root password?
    Antwort: y (ja)
    Erklärung: Das Root-Konto von MariaDB hat standardmäßig kein Passwort. Mit y wird ein sicheres Passwort gesetzt. Dies ist zwingend erforderlich, um unbefugten Zugriff auf die Datenbank zu verhindern.
  • New password:
    Erklärung: Hier wird das neue Passwort für das MariaDB-Root-Konto vergeben. Es sollte komplex, lang und eindeutig sein. Notieren und sicher aufbewahren.
  • Re-enter new password:
    Erklärung: Zur Bestätigung muss das Passwort erneut eingegeben werden. Tippfehler würden sonst zu einem unbrauchbaren Root-Konto führen.
  • Remove anonymous users?
    Antwort: y (ja)
    Erklärung: Standardmäßig erlaubt MariaDB Zugriffe ohne Benutzername. Diese anonymen Zugänge stellen ein erhebliches Sicherheitsrisiko dar und sollten entfernt werden.
  • Disallow root login remotely?
    Antwort: y (ja)
    Erklärung: Dadurch kann sich der Datenbank-Root-Nutzer nur lokal anmelden, nicht über das Netzwerk. Diese Einschränkung erhöht die Sicherheit erheblich, besonders bei öffentlich erreichbaren Servern.
  • Remove test database and access to it?
    Antwort: y (ja)
    Erklärung: Die Testdatenbank kann von jedem Benutzer ohne Passwort verwendet werden. Sie ist nur für Entwicklungszwecke gedacht und stellt in produktiven Umgebungen ein Risiko dar.
  • Reload privilege tables now?
    Antwort: y (ja)
    Erklärung: Dadurch werden alle vorgenommenen Änderungen sofort aktiv. Ohne diese Bestätigung würden alte Berechtigungen bis zum Neustart weitergelten.
  1. Datenbankverbindung testen:
  • sudo mysql -u root -p
  • Root-Passwort eingeben
  • Bei erfolgreicher Anmeldung erscheint die MariaDB-Konsole
  • Mit exit beenden

MariaDB ist jetzt sicher eingerichtet und bereit zur Verwendung. Benutzer, Datenbanken und Berechtigungen werden später eingerichtet.

Subdomain oder Domain auf den Server zeigen lassen (DNS-A-Record)

Bevor ein SSL-Zertifikat mit Let's Encrypt eingerichtet werden kann, muss sichergestellt sein, dass die gewünschte Domain oder Subdomain korrekt auf den Server zeigt.

  1. Im DNS-Provider (z. B. IONOS, Cloudflare, All-Inkl, etc.) einen A-Record anlegen:
  • Name: z. B. www oder app
  • Typ: A
  • Ziel: öffentliche IP-Adresse des Servers (z. B. 203.0.113.42)
  1. Optional: Wildcard- oder Hauptdomain konfigurieren
  • Eintrag für @ (Hauptdomain) und www (Subdomain) können auf dieselbe IP zeigen
  1. DNS-Änderung überprüfen:
  • dig deine-domain.de +short
  • Die Ausgabe sollte exakt die Server-IP zeigen

Erst wenn der A-Record korrekt auf den Server zeigt, kann Let's Encrypt ein gültiges SSL-Zertifikat ausstellen. Falls du mehrere Domains oder Subdomains nutzt, muss jede von ihnen vorab aufgelöst werden können.

Let's Encrypt installieren und SSL-Zertifikat einrichten

Let's Encrypt stellt kostenlose, vertrauenswürdige SSL-Zertifikate bereit. Diese verschlüsseln die Verbindung zwischen Browser und Server über HTTPS. Voraussetzung ist, dass die gewünschte Domain oder Subdomain per DNS korrekt auf die IP-Adresse des Servers zeigt.

  1. Vorbereitend: A-Record im DNS anlegen
  • Name: z. B. www oder app
  • Typ: A
  • Ziel: öffentliche IP-Adresse des Servers
  • Beispiel: app.example.com → 203.0.113.42
  1. Certbot und Apache-Plugin installieren:
  • sudo apt install -y certbot python3-certbot-apache
  1. Apache-Module aktivieren (falls noch nicht aktiv):
  1. Apache-Module aktivieren (für SSL- und Weiterleitungsfunktionen):
  • sudo a2enmod ssl
    Aktiviert das SSL-Modul in Apache. Dieses Modul ist notwendig, damit der Webserver HTTPS-Verbindungen akzeptieren kann. Ohne dieses Modul kann kein TLS-Zertifikat eingebunden werden, und verschlüsselte Verbindungen sind technisch unmöglich.
  • sudo a2enmod rewrite
    Aktiviert das Rewrite-Modul. Es erlaubt die dynamische Umschreibung von URLs basierend auf Regeln in .htaccess oder Apache-Konfigurationsdateien. Dieses Modul wird insbesondere von Certbot genutzt, um automatische Weiterleitungen von HTTP auf HTTPS zu konfigurieren. Außerdem benötigen viele Webanwendungen (z. B. Laravel, WordPress, Typo3) dieses Modul zur internen URL-Steuerung.
  • sudo a2enmod headers
    Aktiviert das Headers-Modul. Dieses Modul ermöglicht es, gezielt HTTP-Header zu setzen oder zu verändern. Es ist wichtig für Sicherheit (z. B. Strict-Transport-Security), Caching, Content-Security-Policy oder zur Steuerung von HTTPS-spezifischem Verhalten. Certbot nutzt dieses Modul, um notwendige Header für die automatische Zertifikatsprüfung und Umleitung zu setzen.

Alle drei Module sind für den sicheren und standardkonformen Betrieb eines HTTPS-Webservers erforderlich. Nach der Aktivierung müssen die Änderungen durch einen Apache-Neustart wirksam gemacht werden:

  • sudo systemctl restart apache2
  1. SSL-Zertifikat automatisch ausstellen und konfigurieren lassen:
  • sudo certbot --apache -d deine-domain.de -d www.deine-domain.de --email deine@email.de --agree-tos --non-interactive --redirect
  • Diese Anweisung:
    • fordert das Zertifikat bei Let's Encrypt an
    • hinterlegt es automatisch in der Apache-Konfiguration
    • erzwingt automatische Weiterleitung von HTTP auf HTTPS
  1. Browserprüfung:
  • https://deine-domain.de im Browser aufrufen
  • Die Verbindung muss verschlüsselt sein, mit einem gültigen Zertifikat von „Let's Encrypt“
  1. Automatische Verlängerung testen:
  • sudo certbot renew --dry-run
  • Ein systemd-Timer führt die Erneuerung im Hintergrund regelmäßig aus

Der Server ist nun über HTTPS erreichbar. Die Verbindung ist verschlüsselt und durch ein offiziell signiertes Zertifikat abgesichert.

Python und virtuelle Umgebung einrichten

Python ist eine weit verbreitete Programmiersprache, die in vielen modernen Tools und KI-Systemen verwendet wird. Für den sicheren und wartbaren Betrieb ist es wichtig, projektbezogene Python-Pakete isoliert zu verwalten. Dies geschieht über sogenannte virtuelle Umgebungen.

  1. Python, pip und das venv-Modul installieren:
  • sudo apt install -y python3 python3-pip python3-venv

Diese Pakete erfüllen folgende Funktionen:

  • python3 stellt die Programmiersprache Python in Version 3 bereit. Sie wird für moderne Software, Datenverarbeitung, Webanwendungen und KI-Prozesse benötigt.
  • pip ist der Paketmanager für Python. Mit ihm können zusätzliche Bibliotheken und Module aus dem Python Package Index (PyPI) installiert werden.
  • venv ist das Standardmodul zur Erstellung virtueller Umgebungen. Es erlaubt, Python-Projekte voneinander zu isolieren, sodass sie eigene Paketversionen nutzen können – ohne andere Projekte oder das System zu beeinflussen.
  1. Virtuelle Umgebung erstellen:
  • python3 -m venv ~/venv

Dieser Befehl erstellt im Benutzerverzeichnis einen neuen Ordner mit dem Namen venv. Darin befindet sich eine vollständige, aber isolierte Python-Installation. Diese Umgebung enthält ein eigenes pip, ein eigenes python und eigene Pfade. Alle Pakete, die später installiert werden, betreffen nur diese Umgebung.

  1. Virtuelle Umgebung aktivieren:
  • source ~/venv/bin/activate

Nach der Aktivierung erscheint vor dem Terminal-Prompt der Zusatz (venv). Das bedeutet: Alle folgenden Python- oder pip-Befehle wirken sich nur auf diese Umgebung aus. Die globale Python-Installation bleibt unangetastet.

  1. Aktualisierung des Paketmanagers innerhalb der Umgebung:
  • pip install --upgrade pip

Damit wird die neueste Version von pip in der virtuellen Umgebung installiert. Dies vermeidet Kompatibilitätsprobleme und stellt sicher, dass moderne Bibliotheken korrekt installiert werden.

Die virtuelle Python-Umgebung ist jetzt bereit für projektbezogene Installationen – zum Beispiel Claude CLI, ChromaDB, OpenAI SDKs oder interne Tools. Sie lässt sich jederzeit aktivieren, ohne das restliche System zu verändern.

Die virtuelle Python-Umgebung ist jetzt bereit für projektbezogene Installationen – zum Beispiel Claude CLI, ChromaDB, OpenAI SDKs oder interne Tools. Sie lässt sich jederzeit aktivieren, ohne das restliche System zu verändern.

WICHTIG: Bevor du fortfährst, verlasse die virtuelle Umgebung mit dem Befehl deactivate. Andernfalls könnte es zu Verwechslungen zwischen Python- und Node.js-Umgebungen kommen. Die nächsten Installationsschritte (z. B. Node.js, Claude CLI) erfolgen im globalen Systemkontext und nicht innerhalb des Python-venv.

Node.js installieren

Node.js ist eine sogenannte Laufzeitumgebung für die Programmiersprache JavaScript. Viele moderne Tools, die über die Kommandozeile bedient werden (zum Beispiel Claude CLI), basieren intern auf Node.js. Damit solche Programme auf einem Server funktionieren, muss Node.js zuvor installiert werden. Dazu gehört auch ein Paketmanager namens npm, mit dem zusätzliche Softwaremodule nachinstalliert werden können.

Ubuntu bietet eine veraltete Node.js-Version über seine Standardquellen an. Damit du eine aktuelle, stabile Version verwenden kannst, wird das offizielle Repository des Anbieters „NodeSource“ eingebunden. Dieses enthält die empfohlene Version 20.x von Node.js.

  1. Das Node.js-Installationsskript von NodeSource ausführen:
  • curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -

Dieser Befehl führt ein geprüftes Installationsskript aus, das deinem System eine zusätzliche Paketquelle hinzufügt. Danach kann Ubuntu Node.js in der gewünschten Version korrekt erkennen und installieren.

  1. Node.js und den Paketmanager npm installieren:
  • sudo apt install -y nodejs

Node.js ist die JavaScript-Umgebung selbst. npm steht für „Node Package Manager“ – er funktioniert ähnlich wie ein App Store für Entwicklerwerkzeuge. Viele moderne Software-Tools, darunter auch Claude CLI, lassen sich mit npm installieren.

  1. Installation überprüfen:
  • node -v zeigt die installierte Version von Node.js an, z. B. v20.11.1
  • npm -v zeigt die Version des Paketmanagers, z. B. 10.2.3

Wenn beide Befehle funktionieren und eine Versionsnummer ausgeben, ist Node.js erfolgreich installiert. Du kannst damit nun andere Tools wie Claude CLI installieren, die Node.js als technische Grundlage verwenden.

npm aktualisieren (empfohlen nach der Installation)

npm ist der zentrale Paketmanager von Node.js. Er wird ständig weiterentwickelt. Nach der Installation oder bei späteren Befehlen kann es vorkommen, dass eine Meldung erscheint, die auf eine neue Hauptversion hinweist. Diese Aktualisierung sollte durchgeführt werden, da sie Sicherheitslücken schließt und die Kompatibilität mit modernen Tools wie Claude CLI verbessert.

Beispielhafte Meldung im Terminal:

  • npm notice New major version of npm available! 10.8.2 → 11.5.1
  • npm notice To update run: npm install -g npm@11.5.1
  1. Aktuelle Version prüfen (optional):
  • npm -v zeigt die aktuell verwendete Version an
  1. Aktualisierung auf die empfohlene Version durchführen:
  • sudo npm install -g npm@11.5.1

Wichtig: Die Angabe @11.5.1 bezieht sich auf die empfohlene Version laut Hinweis. Falls dort eine andere Version angezeigt wird, sollte genau diese verwendet werden.

  1. Installation prüfen:
  • npm -v sollte jetzt die neue Version anzeigen, z. B. 11.5.1

Mit der aktuellen npm-Version ist sichergestellt, dass globale Tools wie Claude CLI stabil laufen und zukünftige Pakete korrekt verwaltet werden können.

Claude CLI installieren und einrichten

Claude CLI ist ein Werkzeug für das Terminal, mit dem du direkt mit der KI Claude von Anthropic kommunizieren kannst. Du kannst Fragen stellen, Texte erzeugen, Ideen strukturieren oder automatisierte Abfragen durchführen. Voraussetzung ist, dass Node.js und npm korrekt installiert sind.

Die offizielle Dokumentation findest du hier:
https://docs.anthropic.com/en/docs/claude-code/setup

  1. Claude CLI global installieren:
  • sudo npm install -g @anthropic-ai/claude-code

Wichtig: Da die Installation im systemweiten Verzeichnis /usr/lib/node_modules erfolgt, ist sudo erforderlich. Ohne sudo erhältst du eine EACCES-Fehlermeldung, weil normale Benutzer dort keine Schreibrechte haben.

Persönliche Empfehlung: Wenn du planst, Claude regelmäßig zu nutzen, empfehle ich dir ausdrücklich, ein Claude Pro- oder Claude Max-Abo abzuschließen. Diese Abos gelten für die Nutzung über die Weboberfläche auf claude.ai – nicht für die API – bieten aber ein faires, vorhersehbares Preismodell.

Claude Pro eignet sich für moderate Nutzung. Wenn du jedoch häufiger, länger oder mit vielen Aufgaben arbeitest, ist Claude Max deutlich wirtschaftlicher. Du erhältst Zugriff auf das leistungsstärkste Modell Claude 3.5 Sonnet, inklusive erweiterter Kontextfenster und bevorzugter Rechenleistung. Vor allem bei intensiver Nutzung ist Claude Max im Vergleich zur volumenbasierten API-Nutzung deutlich kostengünstiger.

Die Claude-API, die du über das Claude CLI nutzt, ist leistungsfähig, aber rein nutzungsbasiert abgerechnet. Das bedeutet: Jeder Token kostet Geld – auch Tests, Fehler, Wiederholungen oder versehentlich zu große Prompts. Für Einzelanfragen ist das unproblematisch. Sobald du aber experimentierst, automatisierst oder in größerem Umfang arbeitest, können daraus schnell hohe Kosten entstehen.

Deshalb meine Empfehlung: Nutze die Weboberfläche mit Max-Abo für explorative Arbeit, intensives Prompten, Schreiben, Strukturieren und Denken. Nutze die API erst dann, wenn du weißt, was du automatisieren willst und wie viele Tokens du tatsächlich verbrauchst. So behältst du jederzeit Kontrolle über Aufwand und Kosten.

  1. API-Schlüssel bei Anthropic erstellen:
  • Gehe auf https://console.anthropic.com/
  • Melde dich an oder registriere dich
  • Gehe zu „API Keys“ und erstelle einen neuen Schlüssel
  • Kopiere den Schlüssel und bewahre ihn sicher auf
  1. API-Schlüssel für die aktuelle Sitzung setzen:
  • export ANTHROPIC_API_KEY="dein_schlüssel"

Dieser Schlüssel erlaubt Claude CLI, sich bei Anthropic zu authentifizieren. Er funktioniert ähnlich wie ein Passwort für Maschinen. Ohne ihn sind keine Abfragen möglich.

  1. API-Schlüssel dauerhaft setzen (optional, empfohlen):
  • echo 'export ANTHROPIC_API_KEY="dein_schlüssel"' >> ~/.bashrc
  • source ~/.bashrc

Dadurch wird der API-Schlüssel bei jeder neuen Terminalsitzung automatisch gesetzt. Du musst ihn dann nicht jedes Mal neu eingeben.

  1. Funktionstest ausführen:
  • claude "Erkläre mir den Unterschied zwischen Komplexität und Kompliziertheit."
  • Wenn Claude korrekt antwortet, ist alles einsatzbereit

Claude CLI ist jetzt vollständig eingerichtet. Du kannst es für Einzelabfragen, Text-Generierung oder Automatisierungen nutzen.

ChromaDB installieren

ChromaDB ist eine sogenannte Vektor-Datenbank. Im Gegensatz zu klassischen Datenbanken, bei denen Du nach exakten Wörtern oder IDs suchst, funktioniert ChromaDB mit sogenannten Embeddings. Das sind Zahlenreihen, die die Bedeutung eines Textes darstellen. Dadurch kannst Du später semantisch suchen – also nicht nur nach Begriffen, sondern nach Inhalten mit ähnlicher Bedeutung. Diese Technik ist die Grundlage für moderne KI-Anwendungen mit Kontextgedächtnis oder Wissensspeichern.

In diesem Abschnitt richtest Du ChromaDB so ein, dass es auf einem echten Server zuverlässig und dauerhaft im Hintergrund läuft. Dabei verwendest Du eine sogenannte virtuelle Umgebung. Das bedeutet: Alle Programmteile und Abhängigkeiten von ChromaDB sind sauber vom Rest des Systems getrennt. Das macht die Installation sicher, kontrollierbar und stabil – ideal für den produktiven Einsatz.

Projektverzeichnis anlegen

Zuerst erstellst Du einen eigenen Ordner, in dem später alle Dateien und Einstellungen von ChromaDB liegen. Damit bleibt alles übersichtlich und voneinander getrennt.

  • cd ~
  • mkdir -p services/chromadb
  • cd services/chromadb

Jetzt befindest Du Dich im Arbeitsverzeichnis von ChromaDB. Alle weiteren Schritte finden hier statt.

Virtuelle Umgebung einrichten

Eine virtuelle Umgebung ist ein isolierter Bereich für Python-Programme. Du kannst dort beliebige Pakete installieren, ohne dass andere Programme auf dem Server beeinflusst werden. Das ist wichtig, um Konflikte und ungewollte Seiteneffekte zu vermeiden.

  • python3 -m venv venv
  • source venv/bin/activate

Du siehst jetzt vorne in Deiner Kommandozeile den Zusatz (venv). Das zeigt Dir: Du arbeitest gerade in dieser Umgebung.

ChromaDB installieren und testen

ChromaDB installieren

Jetzt installierst Du ChromaDB direkt aus dem offiziellen Python-Paketverzeichnis. Du bist dabei weiterhin in der virtuellen Umgebung – alle Dateien bleiben also im Projektordner. Ab Version 1.0.15 liefert ChromaDB ein eigenes Kommandozeilenwerkzeug namens chroma mit. Dieses ersetzt den bisherigen Start über python3 -m chromadb.

  • pip install --upgrade pip
  • pip install chromadb

Die Installation dauert ein paar Sekunden. Danach steht Dir der ChromaDB-Server über das neue Kommando chroma zur Verfügung. Dieses wurde automatisch in der virtuellen Umgebung installiert.

Manueller Funktionstest

Bevor Du ChromaDB dauerhaft als Dienst einrichtest, solltest Du testen, ob der Server korrekt startet und Anfragen verarbeitet. So kannst Du sicherstellen, dass Installation und Konfiguration stimmen.

  • mkdir data
  • chroma run --host 127.0.0.1 --port 8000 --path data

Der Server startet nun und wartet auf eingehende Verbindungen. Öffne ein zweites Terminalfenster (das laufende Fenster mit dem Server nicht schließen!) und prüfe die Verbindung:

  • curl http://localhost:8000/api/v2/heartbeat

Wenn alles korrekt eingerichtet ist, erhältst Du eine Antwort wie:

{"nanosecond heartbeat":1753485335493736411}

Diese Antwort zeigt: Der Server läuft stabil, ist über HTTP erreichbar und bereit, Anfragen zu verarbeiten. Der Wert ist ein technischer Zeitstempel in Nanosekunden – er dient nur der Funktionsprüfung und verändert sich bei jedem Aufruf.

Fehlerfall: Wenn keine Antwort erscheint oder eine Fehlermeldung zurückkommt, überprüfe:

  • Läuft der Server noch im ursprünglichen Terminalfenster?
  • Ist der Port 8000 korrekt geöffnet?
  • Gibt es eine aktive Firewallregel, die den Zugriff blockiert?
  • Wurde die virtuelle Umgebung vorher korrekt aktiviert?

WICHTIG: Umgebung verlassen

Bevor Du den ChromaDB-Dienst einrichtest, solltest Du die virtuelle Python-Umgebung wieder verlassen. Damit stellst Du sicher, dass systemweite Konfigurationen korrekt angewendet werden können.

  • deactivate

WICHTIG: Immer wenn Du später in der Kommandozeile mit ChromaDB arbeiten möchtest, musst Du zuerst mit source venv/bin/activate wieder in die virtuelle Umgebung wechseln. Nur so stehen Dir alle installierten Komponenten – darunter auch das chroma-Kommando – zur Verfügung.

ChromaDB als Dienst einrichten

Damit ChromaDB bei jedem Serverstart automatisch ausgeführt wird und im Fehlerfall neu startet, richtest Du nun einen sogenannten systemd-Dienst ein. So läuft der Server im Hintergrund, ohne dass Du ihn jedes Mal manuell starten musst.

  1. Dienstdatei erstellen: Diese Datei definiert, wie und wann ChromaDB gestartet werden soll.

    • sudo nano /etc/systemd/system/chromadb.service

    Füge diesen Inhalt ein. Ersetze dabei aiadmin durch Deinen tatsächlichen Benutzernamen, falls Du einen anderen gewählt hast:

    [Unit]
    Description=ChromaDB Vektorserver
    After=network.target
    
    [Service]
    Type=simple
    User=aiadmin
    WorkingDirectory=/home/aiadmin/services/chromadb
    ExecStart=/home/aiadmin/services/chromadb/venv/bin/chroma run --host 127.0.0.1 --port 8000 --path /home/aiadmin/services/chromadb/data
    Restart=always
    RestartSec=5
    
    [Install]
    WantedBy=multi-user.target
    

    Dieser Dienst sorgt dafür, dass ChromaDB automatisch mit dem System startet, regelmäßig überwacht wird und bei Problemen neu gestartet wird. Das Kommando chroma run ist ab Version 1.0.15 der offizielle Weg, um den Server zu betreiben.

  2. Dienst aktivieren und starten: Damit der neue Dienst wirksam wird, musst Du ihn registrieren, aktivieren und starten.

    • sudo systemctl daemon-reload
    • sudo systemctl enable chromadb
    • sudo systemctl start chromadb

    Mit diesen Befehlen wird der Dienst sofort gestartet und künftig bei jedem Systemstart automatisch aktiviert.

  3. Dienststatus prüfen: Um sicherzugehen, dass alles korrekt läuft, solltest Du jetzt den Status kontrollieren.

    • sudo systemctl status chromadb

    Du solltest dort sehen, dass der Dienst aktiv ist (active (running)) und keine Fehlermeldungen enthält. Falls der Dienst fehlschlägt, prüfe die Dateipfade, Berechtigungen und ob die virtuelle Umgebung korrekt eingerichtet wurde.

Zusammenfassung

  • Du hast ChromaDB sauber in einer eigenen Umgebung installiert.
  • Der Server läuft stabil, getrennt vom restlichen System.
  • Du kannst die Installation jederzeit kontrollieren, erweitern oder sichern.

ChromaDB ist jetzt produktionsfähig eingerichtet. Wenn Du möchtest, kannst Du später Zugriff von außen aktivieren oder Sicherheitsmaßnahmen wie Passwortschutz ergänzen.

Ollama installieren und starten (im Root-Kontext über sudo)

Ollama ist eine lokale Ausführungsumgebung für KI-Sprachmodelle wie LLaMA, Mistral oder Phi. Mit Ollama kannst Du leistungsfähige KI-Modelle direkt auf Deinem eigenen Server ausführen – ohne Cloud-Zugriff, ohne API, vollständig unter Deiner Kontrolle. Ideal für sensible Daten, Offline-Betrieb oder interne Systeme.

Die Installation erfolgt systemweit mit Root-Rechten. Weil Du zuvor den direkten Root-Zugang via SSH gesperrt hast (sicher und korrekt), verwendest Du dafür den Befehl sudo -i, um temporär in den Root-Kontext zu wechseln.

  • Systemvoraussetzungen:
    • Linux x86_64 oder ARM64
    • mindestens 8 GB RAM (besser: 16 GB oder mehr)
    • 64-Bit-Betriebssystem (z. B. Ubuntu Server 22.04)
  • 1. In den Root-Kontext wechseln

    Du bist als aiadmin angemeldet. Wechsle jetzt mit sudo in die Root-Umgebung:

    sudo -i

    Gib Dein Passwort ein, wenn Du dazu aufgefordert wirst. Du erkennst den Root-Kontext daran, dass sich die Eingabeaufforderung von $ zu # ändert.

  • 2. Ollama installieren

    Führe jetzt den offiziellen Installationsbefehl aus:

    curl -fsSL https://ollama.com/install.sh | sh

    Dieser Befehl lädt ein offizielles Installationsskript von der Ollama-Webseite und führt es sofort aus. Es installiert:

    • die ausführbare Datei ollama unter /usr/local/bin
    • einen systemd-Dienst ollama.service für die Hintergrundausführung

    Der Vorgang dauert eine Weile ... hol Dir einen Kaffee. :-)

  • 3. Root-Modus wieder verlassen

    Verlasse die Root-Umgebung nach der Installation mit:

    exit

    Du bist jetzt wieder als Benutzer aiadmin aktiv.

  • 4. Dienst starten und aktivieren

    Starte den Ollama-Dienst im Hintergrund:

    sudo systemctl start ollama

    Damit läuft Ollama dauerhaft im Hintergrund und ist unter http://localhost:11434 erreichbar.

    Damit der Dienst beim Neustart automatisch wieder aktiv wird, führe zusätzlich aus:

    sudo systemctl enable ollama
  • 5. Funktion prüfen

    Zeige den Status des Ollama-Dienstes an:

    sudo systemctl status ollama

    Wenn alles korrekt installiert ist, sollte in der Ausgabe stehen:

    Active: active (running)
  • 6. Erstes KI-Modell herunterladen und testen

    Ollama bringt selbst keine KI-Modelle mit. Stattdessen kannst Du gezielt ein Modell laden, das zu Deinem Einsatzzweck passt. Wir verwenden in dieser Anleitung das Modell gemma3:4b-it-qat.

    Führe den folgenden Befehl aus, um das Modell herunterzuladen und zu starten:

    ollama run gemma3:4b-it-qat

    Ollama lädt nun automatisch das gewünschte Modell aus der offiziellen Modellbibliothek herunter. Der Download umfasst rund 4 GB, abhängig von der Kompression. Sobald der Download abgeschlossen ist, startet automatisch eine interaktive Konsole, in der Du direkt Fragen stellen kannst.

    Was ist gemma3:4b-it-qat?

    • Gemma3 ist ein KI-Sprachmodell der dritten Generation aus der Google-Gemma-Reihe.
    • 4b bedeutet, dass das Modell rund 4 Milliarden Parameter enthält. Diese Parameter repräsentieren das innere Wissen und die Verknüpfungen des Modells. Die Größe ist ein guter Kompromiss zwischen Leistungsfähigkeit und Ausführbarkeit auf normalen Servern.
    • it steht für instruction tuned. Das Modell ist darauf trainiert, klar auf menschliche Anweisungen zu reagieren. Es kann Aufgaben wie Erklären, Zusammenfassen oder Problemlösen zuverlässig umsetzen.
    • qat steht für quantization aware training. Das bedeutet, das Modell wurde so trainiert, dass es auch in komprimierter Form effizient und stabil arbeitet. Dadurch ist es schneller und benötigt weniger Speicher, bei vergleichbarer Antwortqualität.

    Warum verwenden wir dieses Modell?

    • Sehr gute Antwortqualität bei überschaubarem Ressourcenbedarf
    • Effizient auf Servern mit 8 bis 16 GB RAM nutzbar
    • Ideal für lokale Textverarbeitung, Systemdialoge, Erklärungen oder interne Tools
    • Breit trainiert, dennoch moderat im Verbrauch: Geeignet für Alltagsfragen und technische Aufgaben

    Teste das Modell direkt:

    Nach dem Download öffnet sich automatisch die interaktive Konsole. Stelle dort zum Beispiel folgende Frage:

    Erkläre mir in einfachen Worten, wie eine Wärmepumpe funktioniert.

    Das Modell antwortet direkt im Terminal. Du kannst mehrere Fragen stellen. Mit Strg + D beendest Du die Sitzung.

  • 7. Technische Hinweise
    • Der Ollama-HTTP-Dienst läuft standardmäßig unter http://localhost:11434
    • Alle heruntergeladenen Modelle und Daten liegen in ~/.ollama
    • Weitere Modelle: ollama run llama2, ollama run phi, ollama run gemma

Ollama ist nun vollständig installiert, als systemweiter Dienst aktiv und kann für eigene KI-Anwendungen genutzt werden: Lokal, offline und DSGVO-konform.

So weit, so gut.

Du hast jetzt eine ordentliche Umgebung für Deine KI-Experimente und kannst (z. B. unterstützt durch Claude Code CLI) damit jetzt leistungsfähige KI-Anwendungen erstellen.

Optional, aber sehr empfehlenswert: tmux verwenden

tmux (Abkürzung für "Terminal Multiplexer") ist ein Werkzeug, das Dir ermöglicht, mehrere getrennte Terminal-Sitzungen gleichzeitig laufen zu lassen – und das alles in nur einem Fenster. Es ist ideal für Serverarbeiten, bei denen Du Prozesse im Hintergrund starten oder über längere Zeiträume stabil offen halten möchtest – selbst wenn Deine SSH-Verbindung unterbrochen wird.

Gerade bei Diensten wie ChromaDB, Ollama oder Trainingsprozessen kann es sehr hilfreich sein, wenn Du Deine Sitzung nicht verlierst, nur weil die Verbindung abbricht oder Du versehentlich das Terminal schließt.

tmux installieren

  • sudo apt install tmux

Die Installation dauert nur wenige Sekunden. Danach steht Dir tmux sofort zur Verfügung.

Warum tmux eine gute Idee ist

  • Stabilität: Prozesse laufen weiter, auch wenn Deine SSH-Verbindung getrennt wird.
  • Multitasking: Du kannst mehrere Terminal-Sitzungen gleichzeitig öffnen und bequem dazwischen wechseln.
  • Wiederaufnahme: Du kannst später jederzeit zurückkehren und da weitermachen, wo Du aufgehört hast.
  • Teamarbeit: In einer tmux-Session können sogar mehrere Nutzer gleichzeitig arbeiten (zum Beispiel beim Pair Programming oder Debugging).

Die wichtigsten tmux-Kommandos für Einsteiger

tmux arbeitet mit sogenannten "Sessions", also abgeschlossenen Terminal-Umgebungen, die im Hintergrund weiterlaufen.

  • tmux – Neue Sitzung starten (Standardname, automatische Nummerierung)
  • tmux new -s meinprojekt – Neue Sitzung mit Namen meinprojekt starten
  • tmux ls – Liste aller vorhandenen tmux-Sitzungen
  • tmux attach -t meinprojekt – Zu einer bestehenden Sitzung zurückkehren
  • tmux kill-session -t meinprojekt – Eine Sitzung beenden
  • exit – Beendet das aktuelle Fenster in einer Sitzung (z. B. wenn ein Prozess abgeschlossen ist)

Besonderheiten beim Arbeiten mit macOS und iTerm2

Wenn Du von einem Mac aus arbeitest, ist iTerm2 (eine alternative Terminal-App für macOS) besonders empfehlenswert. In Kombination mit tmux bietet iTerm2 viele Vorteile:

  • Copy & Paste: Text auswählen und kopieren funktioniert reibungslos – auch über tmux hinaus
  • Split Views: Du kannst mehrere tmux-Fenster oder Shells nebeneinander im selben iTerm2-Fenster anzeigen
  • Persistenz: iTerm2 kann automatisch beim Start bestehende tmux-Sessions wiederherstellen
  • Mausunterstützung: Du kannst bequem zwischen tmux-Panes mit der Maus wechseln

Wenn Du von einem Mac aus per SSH auf Deinen Server zugreifst, solltest Du in den Einstellungen von iTerm2 die tmux-Integration aktivieren (unter Preferences → Profiles → Terminal den Haken bei Enable tmux integration setzen).

Zusammenfassung

tmux ist ein kleines, aber sehr mächtiges Werkzeug. Wenn Du häufiger mit Servern arbeitest oder KI-Modelle startest, trainierst oder überwachst, solltest Du unbedingt damit arbeiten. Du gewinnst Stabilität, Flexibilität und Komfort – gerade auch bei längeren Aufgaben, mehreren offenen Terminals oder unterbrochenen Verbindungen.

Wenn Du auf dem Laufenden bleiben möchtest, was man mit diesem System jetzt alles Cooles machen kann, dann klick einfach hier: verbindung@karlkratz.de