← Übersicht der Anleitungen · cloud-host

Skript-Cockpit

Alle ausführbaren Werkzeuge und zugehörigen Dateien an einem Ort: Parameter wählen, Befehl kopieren, Terminal öffnen und jeden Quelltext direkt prüfen.

Skripte & Dateien

Die ausführbaren Werkzeuge liegen in scripts/ und laufen mit Windows PowerShell 5.1; RemoteSigned reicht für die lokale Nutzung. Die Beispiele gehen vom Repo-Wurzelverzeichnis aus. Jeder Eintrag nennt Zweck, Wirkung und einen kopierbaren Beispielaufruf. Nachbardateien werden über $PSScriptRoot gefunden. Die Inhalte aller .ps1-, .sh- und .yaml-Dateien sind beim jeweiligen Eintrag standardmäßig geschlossen und lassen sich zum Lesen aufklappen.

Anbieter
Risiko
Dateityp
Thema
Bedienung

Alle Filter lassen sich miteinander kombinieren. Die Risikofilter berücksichtigen den gesamten Funktionsumfang eines Skripts.

Terminal-Startverzeichnis

Standard: Ordner dieser skripte.html

Terminal-Link einmalig einrichten

Browser dürfen lokale Programme nicht direkt starten. Dieser Befehl registriert deshalb den eingeschränkten cloudhost-terminal:-Link nur für deinen Windows-Benutzer; beim ersten Öffnen kann der Browser noch nachfragen. Klicke auf Einrichtung kopieren, drücke Win+R, füge den Befehl ein und bestätige mit Enter.

.\scripts\register-terminal-links.ps1

Server & Plattformen

scripts/cloud.ps1PowerShell

Zweck: Verwaltet einen einzelnen Hetzner-Podman-Host mit up, down, toggle, status und ssh.

Wirkung: up baut den Server aus dem neuesten Snapshot oder erstmals per Cloud-init auf und setzt die Podman-Verbindung. down erstellt einen Snapshot und löscht danach den kostenpflichtigen Server.

.\scripts\cloud.ps1 status
scripts/k3s.ps1PowerShell

Zweck: An/Aus-Workflow für den einzelnen Kubernetes-Server k3s-host.

Wirkung: Beim Hochfahren werden Kubeconfig und KUBECONFIG auf dem Laptop aktualisiert; beim Herunterfahren wird k3s sauber gestoppt, gesichert und der Server gelöscht.

.\scripts\k3s.ps1 status
scripts/sno.ps1PowerShell + WSL2

Zweck: Installiert und verwaltet ein vollständiges OKD/OpenShift als Single-Node-Cluster auf Hetzner.

Wirkung: install durchläuft Rescue, SCOS-kexec und bootstrap-in-place. down sichert den Node als Snapshot; destroy entfernt Server, Snapshot, reservierte IP und Firewall.

.\scripts\sno.ps1 status
scripts/jenkins.ps1PowerShell

Zweck: Betreibt den Jenkins-Server für CI-Deployments auf den OKD-Single-Node.

Wirkung: install baut das Image aus shared/enterprise-infrastructure/jenkins/; up/down verwenden Snapshots und pflegen die OKD-Firewallregel für Port 6443.

Passwort: Ohne -AdminPassword erzeugt das Skript selbst ein Passwort. Bei manueller Eingabe erscheint es im erzeugten und kopierten Befehl im Klartext.

.\scripts\jenkins.ps1 status
scripts/cluster.ps1PowerShell

Zweck: Status und Kostenkontrolle für den mehrteiligen OKD-Cluster.

Achtung: down ist ein Kill-Switch und löscht alle okd-*-Server, den Load Balancer und das private Netz in einem Durchlauf.

.\scripts\cluster.ps1 status
scripts/snapshot.ps1PowerShell

Zweck: Sichert und restauriert mehrere konfigurierte Hetzner-Server; mit -Only auch gezielt einen einzelnen.

Wirkung: Zeigt Laufzeitkosten und Snapshot-Inventar, stoppt Dienste vor dem Snapshot, kann reservierte IPs wieder anhängen und mit prune -Keep N alte Sicherungen entfernen.

.\scripts\snapshot.ps1 status
scripts/netcup-server.ps1PowerShell + Netcup REST

Zweck: Meldet den Laptop per OAuth-Gerätecode am Netcup-SCP an und verwaltet einen bereits gebuchten VPS oder Root-Server.

Wirkung: Bietet Liste, Status, Start, Stop, Umschalten und SSH. Das Token wird mit Windows-DPAPI geschützt. Ausschalten beendet den Vertrag und seine Kosten nicht.

.\scripts\netcup-server.ps1 status
scripts/_netcup-api.ps1gemeinsamer PowerShell-Baustein

Zweck: Kapselt OAuth-Geräteanmeldung, verschlüsselten Refresh-Token, REST-Aufrufe, Aufgabenstatus, Serverauflösung und SSH-Wartezeiten.

Nutzung: Wird von den vier Netcup-Skripten eingebunden und nicht direkt aufgerufen.

scripts/netcup.config.example.psd1Konfigurationsvorlage

Zweck: Enthält getrennte Profile für normalen Server, k3s und OKD-SNO.

Nutzung: Als netcup.config.psd1 kopieren und dort Server-ID, Name, SSH-Benutzer und lokale Pfade eintragen. Die lokale Kopie wird nicht eingecheckt.

scripts/netcup-k3s.ps1PowerShell + SSH

Zweck: Steuert k3s und die zugehörige Netcup-VM kontrolliert.

Wirkung: Startet und stoppt k3s, holt die kubeconfig, setzt KUBECONFIG und erzeugt auf Wunsch einen Offline-Snapshot.

.\scripts\netcup-k3s.ps1 status
scripts/netcup-snapshot.ps1PowerShell + Netcup REST

Zweck: Verwaltet Netcup-Snapshots für normale Server, k3s und OKD-SNO.

Wirkung: Erstellt standardmäßig einen Offline-Snapshot und startet einen zuvor laufenden Server danach wieder. Wiederherstellung und Löschen verlangen eine ausdrückliche Freigabe.

.\scripts\netcup-snapshot.ps1 list -Profile Server
scripts/netcup-sno.ps1PowerShell + WSL2

Zweck: Bereitet die OKD-Single-Node-Installation für einen bestehenden Netcup-x86-Server vor und betreibt sie danach.

Wirkung: Erzeugt die geheime Ignition-ISO, legt eine hochgeladene ISO per API ein, überwacht die Installation, setzt die kubeconfig und steuert den Node.

.\scripts\netcup-sno.ps1 status
scripts/netcup-sno-wsl.shBash + WSL2

Zweck: Linux-Teil der Netcup-SNO-Installation.

Wirkung: Lädt Installer und Client, erzeugt Single-Node-Ignition, bettet sie in eine Fedora-CoreOS-ISO ein und überwacht die Installation.

scripts/rates.psd1PowerShell-Datendatei

Zweck: Enthält die Stundensätze der Hetzner-Skripte. Netcup verwendet stattdessen den in der lokalen Konfiguration dokumentierten monatlichen Vertragspreis.

Dienste, DNS & Deployment

scripts/dienste-stack.ps1PowerShell + SSH

Zweck: Steuert alle Compose-Stacks unter /opt/stacks auf dem konsolidierten Server.

Wirkung: Erkennt Stacks automatisch, startet Traefik und gemeinsame Datenbanken zuerst und fährt sie umgekehrt herunter. Unterstützt Status, Start, Stop, Neustart, Pull und Logs sowie -Only.

.\scripts\dienste-stack.ps1 status
scripts/cf-dns.ps1PowerShell + Cloudflare

Zweck: Erstellt, aktualisiert oder löscht Cloudflare-A-Records, wenn ein neu aufgebauter Server eine andere IPv4 erhält.

Wirkung: Nutzt $env:CF_API_TOKEN, akzeptiert eine IP direkt oder liest sie bei Hetzner per hcloud und bei Netcup per SCP-REST-API aus. -DryRun zeigt die geplante Änderung ohne Schreibzugriff.

.\scripts\cf-dns.ps1 -Zone example.com -Name 'app' -IP 203.0.113.10 -DryRun
scripts/deploy.ps1PowerShell + SSH

Zweck: Überträgt eine statische Website oder einen Compose-Stack auf den geschützten Projekt-Host.

Wirkung: Nutzt bevorzugt rsync, sonst tar über SSH. -Stack startet anschließend Compose; -Delete entfernt mit rsync veraltete Zieldateien und -Logs folgt den Container-Logs.

.\scripts\deploy.ps1 blog -Source .\dist -DryRun

Windows-Automation

scripts/create-shortcuts.ps1PowerShell

Zweck: Legt Windows-Verknüpfungen für up, down und status einer oder aller Plattformen an.

Wirkung: -For wählt eine Hetzner- oder Netcup-Plattform, darunter netcup, netcup-k3s und netcup-sno. -ForAll verarbeitet alle.

.\scripts\create-shortcuts.ps1 -ForAll
scripts/install-autodown.ps1PowerShell + Aufgabenplanung

Zweck: Installiert ein tägliches down als Windows-Aufgabe.

Wirkung: Ruft zur mit -Time gewählten Uhrzeit das passende Skript auf. Bei Hetzner dient das als Kostenschutz. Bei Netcup ist es nur eine Betriebspause, weil der Vertrag weiterläuft.

.\scripts\install-autodown.ps1 -For cloud -Time '03:00'
scripts/register-terminal-links.ps1PowerShell + HKCU

Zweck: Aktiviert die drei Terminal-Schaltflächen oberhalb dieser Liste.

Wirkung: Registriert cloudhost-terminal: nur für den aktuellen Benutzer und verweist auf den fest eingeschränkten Handler. Mit -Unregister lässt sich die Registrierung wieder entfernen.

.\scripts\register-terminal-links.ps1
scripts/open-terminal-link.ps1interner Handler

Zweck: Startet Windows Terminal, PowerShell oder Bash im Wurzelverzeichnis dieses Repositories.

Sicherheit: Der Handler akzeptiert drei fest codierte Terminalziele, eine Whitelist lesender Skriptaktionen und ein vorhandenes Dateisystem-Verzeichnis; URL-Inhalte werden nie direkt als Befehl ausgeführt. Bash verwendet Git Bash, ersatzweise WSL.

Parameter: -Url ist ein Pflichtparameter an Position 0 und enthält ausschließlich den registrierten cloudhost-terminal:-Link. Nicht manuell aufrufen; der Browser übergibt ihn an den Handler.

scripts\open-terminal-link.ps1

Suche, Hooks & gemeinsame Bausteine

scripts/build-suchindex.ps1PowerShell

Zweck: Erzeugt aus allen anleitungen/*.html den Volltextindex suchindex.js.

Wann ausführen: Nach Inhaltsänderungen an Anleitungen, damit die Suche oben nicht nur Kartentexte, sondern auch den eigentlichen Seiteninhalt findet.

Parameter: keine; Quellordner und Zieldatei werden relativ zum Skript ermittelt.

.\scripts\build-suchindex.ps1
scripts/install-hooks.ps1PowerShell + Git

Zweck: Aktiviert einmalig pro Klon den lokalen pre-commit-Hook.

Wirkung: Setzt core.hooksPath auf .githooks; vor dem Commit werden bei geänderten Anleitungen suchindex.js und bei geänderten Skript-/YAML-Dateien script-inhalte.js neu gebaut und mit aufgenommen.

Parameter: keine; das Repository wird aus dem Speicherort des Skripts bestimmt.

.\scripts\install-hooks.ps1
scripts/_common.ps1Bibliothek

Zweck: Gemeinsame Hetzner-, Firewall-, SSH-, Snapshot- und Kostenfunktionen der An/Aus-Skripte.

Nutzung: Wird von den Hauptskripten per Dot-Sourcing geladen und normalerweise nicht direkt gestartet.

Skriptparameter: keine; einzelne interne Funktionen besitzen eigene Funktionsparameter.

scripts\_common.ps1
scripts/_dauer.ps1Bibliothek

Zweck: Misst die Laufzeit und gibt am Ende eines Skripts Ausfuehrungszeit: X s aus.

Nutzung: Wird von den anderen PowerShell-Dateien eingebunden und nicht eigenständig aufgerufen.

Skriptparameter: keine.

scripts\_dauer.ps1
scripts/rates.psd1Konfiguration

Zweck: Zentrale Preistabelle für die ungefähre Stunden- und Monatskostenanzeige der Verwaltungsskripte.

Hinweis: Die Werte sind lokale Rechengrundlagen und sollten bei Preisänderungen des Anbieters aktualisiert werden.

scripts\rates.psd1
suchindex.jsgeneriert

Zweck: Enthält den von build-suchindex.ps1 erzeugten Volltext aller Anleitungen für die Suche in index.html.

Hinweis: Nicht manuell bearbeiten. Fehlt die Datei, sucht die Seite weiterhin, aber nur innerhalb der sichtbaren Karten.

suchindex.js
scripts/build-script-inhalte.ps1PowerShell

Zweck: Erzeugt script-inhalte.js mit den Quelltexten aller scripts/*.ps1, *.sh und *.yaml für die aufklappbare Anzeige.

Parameter: keine; Quellordner und Zieldatei werden relativ zum Skript ermittelt.

.\scripts\build-script-inhalte.ps1
scripts/deploy-pages.ps1PowerShell + Cloudflare Pages

Zweck: Baut die Browserindizes, stellt nur die veröffentlichten Website-Dateien in einem temporären Verzeichnis bereit und deployt sie nach Cloudflare Pages.

Sicherheit: Ohne -Preview wird der Production-Branch aktualisiert; Tests rufen dieses Skript deshalb niemals selbst auf.

.\scripts\deploy-pages.ps1 -Preview test
script-inhalte.jsgeneriert

Zweck: Liefert die eingebetteten Quelltexte für die aufklappbaren Leser in diesem Bereich.

Hinweis: Nicht manuell bearbeiten; nach Änderungen an PowerShell-, Bash- oder YAML-Dateien neu erzeugen.

script-inhalte.js

Cloud-init & Installationshelfer

scripts/cloud-init.yamlCloud-init

Zweck: Standard-Erstinstallation eines Ubuntu-Servers als Podman-Host.

Wirkung: Wird von cloud.ps1 nur beim allerersten up verwendet, solange noch kein Snapshot existiert.

.\scripts\cloud.ps1 up -CloudInit cloud-init.yaml
cloud-init.docker.yaml / .k3s.yaml / .host.yamlCloud-init

Zweck: Fertige Erstinstallationen für Docker, einen k3s-Node oder den geschützten Projekt-Host.

Nutzung: Die gewählte Datei wird mit -CloudInit übergeben; eigene Varianten folgen dem Namen cloud-init.<name>.yaml.

.\scripts\cloud.ps1 up -CloudInit cloud-init.docker.yaml
scripts/sno-wsl.sh / sno-kexec.shBash-Helfer

Zweck: Technische Teilschritte von sno.ps1 install.

Wirkung: sno-wsl.sh erzeugt in WSL2 Installationsdateien und wartet auf OKD; sno-kexec.sh startet im Hetzner-Rescue das SCOS-Live-System mit eingebetteter Ignition.

Parameter von sno-wsl.sh: Position 1 ist der Befehl tools, latest, stream, ignition, wait, finish, kubeadmin-password oder remediate. tools erwartet danach die OKD-Version, ignition Clustername und Node-IP, finish den Windows-Zielpfad der Kubeconfig; die anderen Befehle haben keine weiteren Positionsparameter.

Eingaben für sno-kexec.sh: Pflicht sind die Umgebungsvariablen KERNEL_URL, INITRD_URL und ROOTFS_URL; IGN ist optional und verwendet standardmäßig /root/sno.ign. Keine Positionsparameter.

scripts\sno-wsl.sh | scripts\sno-kexec.sh
scripts/jenkins-setup.shBash-Helfer

Zweck: Richtet bei jenkins.ps1 install den frischen Jenkins-Server ein.

Wirkung: Installiert Podman, konfiguriert Registries, baut das Jenkins-Image, startet den Container und richtet den Neustartdienst ein. Danach liegt der Zustand im Snapshot.

Eingaben: ADMIN_PASSWORD ist als Umgebungsvariable Pflicht; ADMIN_USER ist optional und hat die Vorgabe admin. Keine Positionsparameter.

scripts\jenkins-setup.sh
scripts/cloud-init.selfdestruct.yamlCloud-init

Zweck: Podman-Erstinstallation mit automatischer Selbstlöschung nach zwölf Stunden.

Achtung: Der Server löscht sich per Hetzner-API selbst. Nur mit einem separaten, eng berechtigten API-Token und Projekt verwenden.

.\scripts\cloud.ps1 up -CloudInit cloud-init.selfdestruct.yaml
README.md / README.htmlDokumentation

Zweck: Kurze Einstiegsübersicht zu Voraussetzungen, Installation und täglichem Gebrauch.

Enthält: Benötigte Winget-Pakete, Hetzner-Kontext, SSH-Schlüssel und die wichtigsten Aufrufe.

README.html
Gemeinsames Prinzip: Der Laptop ist nur Client (hcloud + podman/docker/kubectl/oc). Nach außen ist nur SSH (Port 22) offen, gesperrt auf deine eigene IP. Die Container-/Cluster-Schnittstelle läuft durch einen SSH-Tunnel bzw. hinter einem Load Balancer. Hetzner rechnet stundenweise ab – poweroff spart nichts, nur löschen.