Private Cloud: Von zuhause in die Cloud — derselbe Stack, andere Hardware

Inhaltsverzeichnis
Neuer Admin-Rechner. Frisch aufgesetzt, leeres Terminal, und in einer halben Stunde soll der erste Eingriff am Cluster laufen. Kein Tag Zeit, um ein Setup mit hundert Plugins nachzubauen, das beim ersten Versionssprung sowieso wieder bricht.
Genau für dieses Szenario ist mein Werkzeugkasten gebaut: Ghostty,
Zellij und Neovim — drei Tools, die zusammen weniger Konfiguration
brauchen als eine durchschnittliche .vimrc von 2015. Und trotzdem reicht das,
um den ganzen Tag produktiv darin zu leben.
Die Idee dahinter #
Konfiguration ist Wartung. Jede Zeile, die ich anpasse, muss ich verstehen, synchron halten und im Zweifel debuggen, wenn ein Update sie umwirft. Plugins sind dasselbe Problem in groß: praktisch, bis das eine, von dem alles abhängt, nicht mehr gepflegt wird.
Wer sich für Neovim interessiert, stößt schnell auf 30-Minuten-YouTube-Videos,
in denen jemand eine init.lua mit vierzig Plugins, fünf Layern an
Tastenkürzeln und einem komplett umgebauten Dashboard vorführt. Beeindruckend —
und genau das, was viele wieder verschreckt. Der Eindruck bleibt: „So aufwendig
ist das also." Dabei ist das Gegenteil wahr. Man kommt erstaunlich weit mit fast
nichts.
Mein Gegenentwurf ist nicht „so wenig wie möglich um des Minimalismus willen", sondern: nur das, was sich selbst trägt. Die Tools bringen heute von Haus aus genug mit, dass die meisten alten Config-Berge schlicht überflüssig sind.
Ghostty — die Ebene, die man vergisst #
Ein Terminal soll schnell sein, gut aussehen und nicht im Weg stehen. Ghostty ist GPU-beschleunigt und in Zig geschrieben — einer Low-Level-Sprache, die auf Geschwindigkeit und schlanke, abhängigkeitsfreie Binaries zielt. Für genau das braucht es fast keine Einstellungen:
theme = Catppuccin Frappe
background-opacity = 0.95
font-size = 14
window-width = 120
window-height = 40
macos-option-as-alt = left
quit-after-last-window-closed = true
Sieben Zeilen. macos-option-as-alt = left ist der einzige Eintrag, der
echtes Nachdenken erfordert — er macht die linke Alt-Taste unter macOS für
Tastenkombinationen nutzbar, ohne mir die Sonderzeichen-Eingabe zu nehmen.
Ich brauche die Alt-Taste konkret für Zellij: Damit greife ich direkt auf ein
paar Shortcuts für die Panes zu, ohne erst in einen eigenen Modus wechseln zu
müssen. Indem ich nur die linke Alt-Taste umwidme, bleibt die rechte für
Sonderzeichen wie @, | oder ~ frei — beides gleichzeitig, kein Kompromiss.
Der Rest ist Geschmack: Theme, etwas Transparenz, eine vernünftige
Fenstergröße. Kein Tab-Management, keine Splits — das übernimmt die nächste
Ebene.
Zellij — Multiplexer ohne Config #
Hier wird es fast lächerlich: Ich habe für Zellij keine Konfiguration. Keine. Zellij ist ein Terminal-Multiplexer — also das, was Sessions, Tabs und Splits am Leben hält, auch wenn die SSH-Verbindung wegbricht. Geschrieben ist es in Rust, und das bringt zwei Dinge mit: Geschwindigkeit und Speichersicherheit. Rusts Speichermodell schließt eine ganze Klasse von Fehlern schon zur Compile-Zeit aus — bei einem Werkzeug, das den ganzen Tag zwischen mir und allen anderen Tools sitzt, ist mir das nicht egal.
Was bei tmux traditionell eine ausgewachsene .tmux.conf voraussetzt, liefert
Zellij direkt brauchbar aus:
- Die Tastenkürzel stehen permanent am unteren Rand — kein Auswendiglernen.
- Sessions überleben Verbindungsabbrüche;
zellij attachholt mich zurück. - Layouts und Floating-Panes sind eingebaut, nicht nachgerüstet.
Wer von tmux kommt: Das alles geht dort natürlich auch — nur eben mit
Konfigurationsaufwand, den ich mir hier spare. Auf einem neuen Rechner tippe
ich
zellijund arbeite. Das ist der ganze „Setup"-Schritt.
Neovim — ein Plugin, kein Manager #
Der Editor ist das Herzstück, und hier zeigt sich am deutlichsten, wie weit man heute ohne Ballast kommt.
Kurz zur Einordnung, warum überhaupt Vim/Neovim: Das modale Editieren — der Wechsel zwischen Bewegen und Schreiben — fühlt sich nach den ersten Tagen sperrig an und wird dann zur zweiten Natur. Der Text wird zur Sprache: „lösche bis zur Klammer", „ändere innerhalb der Anführungszeichen", „springe zum nächsten Wort". Hat man das einmal verinnerlicht, will man es nirgends mehr missen. Dazu kommt der praktische Punkt: Vim ist auf praktisch jedem Server vorinstalliert, Neovim in Sekunden nachgerüstet. Die Investition ins Lernen zahlt sich überall aus — nicht nur in einer einzelnen IDE.
Meine init.lua nutzt keinen Plugin-Manager und genau ein Plugin — das
Farbschema. Alles andere sind Bordmittel.
Die Basis ist schnell erzählt: zwei Leerzeichen Einrückung, relative Zeilennummern fürs schnelle Springen, System-Zwischenablage als Standard, intelligente Suche.
vim.opt.relativenumber = true
vim.opt.clipboard = "unnamedplus"
vim.opt.ignorecase = true
vim.opt.smartcase = true
relativenumber zusammen mit number zeigt die absolute Nummer der aktuellen
Zeile und relative Abstände für alle anderen — so wird aus „spring elf Zeilen
runter" ein schnelles 11j. smartcase sucht klein-geschrieben unscharf, aber
sobald ich einen Großbuchstaben tippe, exakt.
Die Navigation läuft über die Leertaste als Leader und ein paar Strg-Griffe. Drei Aufgaben decke ich damit ab — zwischen Buffern wechseln, neue anlegen, bestehende schließen:
vim.g.mapleader = ' '
-- Zwischen Buffern wechseln
vim.keymap.set('n', '<C-l>', ':bnext<CR>', { silent = true })
vim.keymap.set('n', '<C-h>', ':bprevious<CR>', { silent = true })
-- Neuen Buffer / neuen Tab erstellen
vim.keymap.set('n', '<leader>b', ':enew<CR>', { silent = true })
vim.keymap.set('n', '<leader>t', ':tabnew<CR>', { silent = true })
-- Buffer / Tab schließen
vim.keymap.set('n', '<leader>xb', ':bdelete<CR>', { silent = true })
vim.keymap.set('n', '<leader>xt', ':tabclose<CR>', { silent = true })
<C-l> und <C-h> blättern durch die offenen Buffer, <leader>b öffnet einen
leeren — der Tab-Variante davon entspricht <leader>t. Geschlossen wird mit
<leader>xb (Buffer) beziehungsweise <leader>xt (Tab). Sechs Zeilen, und die
tägliche Navigation sitzt.
Das einzige Plugin ist das Theme, nachgeladen über vim.pack — Neovims
eingebauten Paket-Mechanismus, kein externer Manager:
vim.pack.add { { src = "https://github.com/catppuccin/nvim", name = "catppuccin" } }
require("catppuccin").setup({ flavour = "frappe" })
vim.cmd.colorscheme "catppuccin"
Den Datei-Explorer übernimmt netrw — in Neovim eingebaut, kein nvim-tree
nötig. Ein kleiner Lua-Block macht daraus einen Toggle auf <leader>e: ist der
Explorer offen, schließt er; sonst öffnet er sich links. Ein paar Zeilen
selbstgeschrieben statt eines Plugins, das ich pflegen müsste.
Was bewusst fehlt #
Kein LSP, keine Auto-Completion. Das ist eine Entscheidung, kein Versäumnis. Für die Arbeit, um die es hier geht — Configs editieren, YAML anpassen, schnelle Eingriffe auf fremden Maschinen — brauche ich keine Sprachintelligenz, sondern einen Editor, der überall sofort läuft und sich nicht an einem fehlenden Sprachserver verschluckt. Für ein vollwertiges Entwicklungs- Setup würde ich LSP ergänzen; das ist dann aber ein anderer Anwendungsfall mit anderen Trade-offs.
Installation — überall dasselbe #
Meine Arbeitsumgebung ist macOS, also läuft die Installation komplett über Homebrew:
brew install ghostty zellij neovim
Auf einem Linux-Client — bei mir ist das Arch Linux — funktioniert exakt
dasselbe, nur über den jeweiligen Paketmanager (pacman beziehungsweise das
AUR). Die Tools sind plattformübergreifend, die Configs identisch: dieselbe
init.lua, dieselbe Ghostty-Datei, bei Zellij ohnehin nichts. Genau das ist der
Komfort — egal ob Mac oder Linux, der Werkzeugkasten ist überall derselbe.
Warum das zusammen funktioniert #
Die drei Ebenen greifen sauber ineinander, ohne sich zu überschneiden: Ghostty ist das Fenster, Zellij verwaltet Sessions und Splits, Neovim editiert. Keine doppelten Zuständigkeiten, keine konkurrierenden Tastenkürzel.
Der eigentliche Gewinn zeigt sich am neuen Rechner: drei Pakete installieren,
eine init.lua und eine kleine Config-Datei kopieren — fertig. Kein
Plugin-Sync, kein „warum lädt das nicht", kein halber Nachmittag verloren. In
wenigen Minuten produktiv, und genau das ist der Punkt.
Quelloffen — und das ist kein Zufall #
Alle drei Tools sind vollständig Open Source: Ghostty und Zellij stehen unter der MIT-Lizenz, Neovim unter Apache 2.0. Für mich ist das keine Fußnote, sondern Teil der Entscheidung. Wer auf eigene Infrastruktur und digitale Souveränität setzt, sollte das nicht bei den Werkzeugen aufgeben, mit denen er den ganzen Tag arbeitet. Quelloffene Tools bedeuten: keine Telemetrie, keine SaaS-Abhängigkeit, kein Anbieter, der morgen die Lizenzbedingungen ändert oder das Produkt einstampft. Der Code ist einsehbar, der Datenfluss bleibt lokal, und im Zweifel kann die Community ein Projekt weitertragen. Genau diese Unabhängigkeit ist es, die ein Setup langfristig tragfähig macht — nicht nur am ersten Tag.
Und wenn die Ansprüche wachsen? #
Das Schöne an dieser Kombination: Sie ist eine Basis, kein Korsett. Wer mehr
braucht, baut mehr — jedes der drei Tools lässt sich praktisch beliebig
erweitern. Neovim wird mit LSP, Treesitter, Lintern, Formattern und einem
Completion-Framework zur vollwertigen IDE oder, wenn man will, zum ausgewachsenen
Config-Monster mit Dutzenden Plugins. Zellij lässt sich über eigene Layouts,
Keybindings und Plugins anpassen, Ghostty über Shaders und feinere Tastatur-Maps.
Und über zusätzliche Werkzeuge — fzf, ripgrep, lazygit, ein Sprachserver
hier, ein Debugger da — wächst der Werkzeugkasten in jede Richtung mit.
Der entscheidende Punkt ist die Reihenfolge: Erst die schlanke, überall sofort lauffähige Basis — dann gezielt das, was ein konkreter Anwendungsfall wirklich verlangt. Jede Erweiterung ist dann eine bewusste Entscheidung mit klarem Grund, kein vorsorglich mitgeschleppter Ballast. Das Minimal-Setup ist nicht das Gegenteil eines mächtigen Setups — es ist sein Fundament.