Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
| dienste:bytecluster0002 [05.10.2020 20:47] – [Container] chaos | dienste:bytecluster0002 [02.12.2023 21:36] (aktuell) – mape2k | ||
|---|---|---|---|
| Zeile 3: | Zeile 3: | ||
| bytecluster0002 ist ein Virtualisierungsserver, | bytecluster0002 ist ein Virtualisierungsserver, | ||
| Er löst [[bytecluster0001]] ab. | Er löst [[bytecluster0001]] ab. | ||
| + | |||
| + | ====== Virtuelle Hardware ====== | ||
| + | |||
| + | * 4 Kerne | ||
| + | * 16 GB RAM | ||
| + | * Volumes | ||
| + | * 160 GB / // | ||
| + | * 100 GB /mnt/data // | ||
| + | |||
| + | ====== Migration ====== | ||
| + | |||
| + | * mehr zur Migration unter [[dienste: | ||
| ====== Festlegungen (Diskussionsgrundlage) ====== | ====== Festlegungen (Diskussionsgrundlage) ====== | ||
| Zeile 14: | Zeile 26: | ||
| ====== Container ====== | ====== Container ====== | ||
| - | * [[dienste: | + | * siehe [[dienste: |
| - | * [[dienste: | + | |
| - | * [[dienste: | + | |
| - | * [[dienste: | + | |
| - | * [[dienste: | + | |
| ====== Administratoren ====== | ====== Administratoren ====== | ||
| Zeile 25: | Zeile 34: | ||
| * [[user: | * [[user: | ||
| * [[user: | * [[user: | ||
| - | |||
| - | ====== ToDo ====== | ||
| - | |||
| - | * Traefik-Container | ||
| ====== IPs /DNS ====== | ====== IPs /DNS ====== | ||
| Zeile 83: | Zeile 88: | ||
| ===== Betriebssystem ===== | ===== Betriebssystem ===== | ||
| - | * Debian | + | * Debian |
| ==== Vorkonfiguration ===== | ==== Vorkonfiguration ===== | ||
| Zeile 92: | Zeile 97: | ||
| ==== Grundeinrichtung ==== | ==== Grundeinrichtung ==== | ||
| + | ====== Migration ====== | ||
| - System aktualisieren | - System aktualisieren | ||
| Zeile 114: | Zeile 120: | ||
| - NFS / rpcbind deaktivieren und beenden (wird nicht benötigt, offene Ports schließen) | - NFS / rpcbind deaktivieren und beenden (wird nicht benötigt, offene Ports schließen) | ||
| - | * **systemctl disable --now rpcbind.service rpcbind.socket** | + | * **< |
| - sudo installieren und konfigurieren | - sudo installieren und konfigurieren | ||
| * **apt-get install sudo** | * **apt-get install sudo** | ||
| Zeile 123: | Zeile 129: | ||
| - SSH - Login als root und mit Passwort deaktivieren | - SSH - Login als root und mit Passwort deaktivieren | ||
| * Vorher mindestens einen Benutzer einrichten, der einen SSH-Schlüssel hinterlegt hat! | * Vorher mindestens einen Benutzer einrichten, der einen SSH-Schlüssel hinterlegt hat! | ||
| - | - Konfiguration anpassen< | + | - Konfiguration anpassen< |
| - | ... | + | |
| PermitRootLogin no | PermitRootLogin no | ||
| - | ... | ||
| PasswordAuthentication no | PasswordAuthentication no | ||
| - | ... | + | KbdInteractiveAuthentication |
| - | ChallengeResponseAuthentication | + | |
| - | ... | + | |
| </ | </ | ||
| - SSH-Daemon neustarten | - SSH-Daemon neustarten | ||
| Zeile 173: | Zeile 175: | ||
| * Aktuelle Regeln nicht speichern | * Aktuelle Regeln nicht speichern | ||
| - NAT (portbasiert) für IPv4 | - NAT (portbasiert) für IPv4 | ||
| - | * **iptables -t nat -A POSTROUTING -o eth0 -s '10.2.0.0/24' | + | * **iptables -t nat -A POSTROUTING -o eth0 -s 10.2.0.0/24 -j MASQUERADE** |
| + | - NAT-Reflection für IPv4 (Zugriff von intern auf externe IP-Adresse für Ports 80/443) | ||
| + | * **< | ||
| + | * **< | ||
| + | * **< | ||
| - NAT (prefixbasiert) für IPv6 | - NAT (prefixbasiert) für IPv6 | ||
| * **< | * **< | ||
| * **< | * **< | ||
| + | - NAT-Reflection für IPv6 (Zugriff von intern auf externe IP-Adresse) | ||
| + | * **< | ||
| - Regeln speichern | - Regeln speichern | ||
| * **netfilter-persistent save** | * **netfilter-persistent save** | ||
| Zeile 193: | Zeile 201: | ||
| ==== Eingerichtete Forwards ==== | ==== Eingerichtete Forwards ==== | ||
| - | - NAT-Reflection (um interne Dienste über externe IPv4-Adressen zu erreichen)< | + | |
| - | iptables -t nat -A POSTROUTING | + | * **iptables |
| + | * **iptables -t nat -A PREROUTING | ||
| + | |||
| + | * NGINX default im web-container< | ||
| + | iptables -t nat -A PREROUTING -d 138.201.246.25/32 -p tcp --dport 8089 -j DNAT --to 10.2.0.10: | ||
| </ | </ | ||
| - | | + | |
| - | iptables -t nat -A PREROUTING -p tcp -i eth0 --dport | + | iptables -t nat -A PREROUTING |
| </ | </ | ||
| - | Dokuwiki | + | * Nextcloud |
| - | < | + | iptables -t nat -A PREROUTING |
| - | iptables -t nat -A PREROUTING -p tcp -i eth0 --dport | + | |
| </ | </ | ||
| - | Nextcloud | + | * Wordpress |
| - | < | + | iptables -t nat -A PREROUTING |
| - | iptables -t nat -A PREROUTING -p tcp -i eth0 --dport | + | |
| </ | </ | ||
| + | |||
| ===== Proxmox ===== | ===== Proxmox ===== | ||
| Zeile 304: | Zeile 315: | ||
| Task OK | Task OK | ||
| </ | </ | ||
| + | |||
| + | ==== SSH-Forward-Hook einrichten ==== | ||
| + | |||
| + | - Skript hinterlegen< | ||
| + | # | ||
| + | # Hook script to automatically forward SSH-Port to Container | ||
| + | |||
| + | VMID=$1 | ||
| + | PHASE=$2 | ||
| + | |||
| + | |||
| + | NETWORK_INTERFACE_EXTERNAL=eth0 | ||
| + | NETWORK_INTERFACE_INTERNAL=vmbr0 | ||
| + | SSH_DESTINATION_PORT=22 | ||
| + | SSH_FORWARD_BASE_PORT=22000 | ||
| + | |||
| + | # Determine container details | ||
| + | IP_ADDRESS_INTERNAL=$(pct config $VMID | grep " | ||
| + | # IP_LAST_OCTET=$(pct config $VMID | grep " | ||
| + | SSH_FORWARD_PORT=$(expr $SSH_FORWARD_BASE_PORT + $VMID) | ||
| + | |||
| + | echo "GUEST HOOK on VMID $VMID for phase $PHASE" | ||
| + | |||
| + | echo " | ||
| + | echo " | ||
| + | |||
| + | case " | ||
| + | |||
| + | # First phase ' | ||
| + | # ist started. Exiting with a code != 0 will abort the start | ||
| + | pre-start) echo "$VMID is starting, doing preparations.\n" | ||
| + | | ||
| + | ;; | ||
| + | |||
| + | # Second phase ' | ||
| + | # successfully started. | ||
| + | post-start) echo "$VMID started successfully.\n" | ||
| + | ;; | ||
| + | |||
| + | # Third phase ' | ||
| + | # via the API. Will not be executed if the guest is stopped from | ||
| + | # within e.g., with a ' | ||
| + | pre-stop) echo "$VMID will be stopped.\n" | ||
| + | ;; | ||
| + | |||
| + | # Last phase ' | ||
| + | # This should even be executed in case the guest crashes or stopped | ||
| + | # unexpectedly. | ||
| + | post-stop) echo "$VMID stopped. Doing cleanup.\n" | ||
| + | | ||
| + | ;; | ||
| + | |||
| + | *) echo "Got unknown phase ' | ||
| + | exit 1 | ||
| + | ;; | ||
| + | esac | ||
| + | </ | ||
| + | - Skript ausführbar machen | ||
| + | * **chmod +x / | ||
| + | |||
| + | ==== Zusätzliches Volume einrichten ==== | ||
| + | |||
| + | - Volume vorbereiten als /mnt/data | ||
| + | - Volume in Proxmox einbinden | ||
| + | * **pvesm add dir data -content rootdir, | ||
| ==== Anpassung des Standard-Templates auf Debian-Basis ==== | ==== Anpassung des Standard-Templates auf Debian-Basis ==== | ||
| Zeile 312: | Zeile 388: | ||
| * **pveam update** | * **pveam update** | ||
| - Verfügbare Images anzeigen | - Verfügbare Images anzeigen | ||
| - | * **< | + | * **< |
| - | system | + | system |
| - | system | + | - Debian |
| - | - Debian | + | * **pveam download local debian-12-standard_12.2-1_amd64.tar.zst** |
| - | * **pveam download local debian-10.0-standard_10.0-1_amd64.tar.gz** | + | |
| - Template in neuen Ordner entpacken | - Template in neuen Ordner entpacken | ||
| * **mkdir / | * **mkdir / | ||
| * **cd / | * **cd / | ||
| - | * **< | + | * **< |
| - In das Template-System wechseln | - In das Template-System wechseln | ||
| * **systemd-nspawn -D / | * **systemd-nspawn -D / | ||
| Zeile 329: | Zeile 404: | ||
| - Template: Konfiguration und Software anpassen | - Template: Konfiguration und Software anpassen | ||
| - APT-Quellen auf Hetzner festlegen | - APT-Quellen auf Hetzner festlegen | ||
| - | * **echo "deb http:// | + | * **< |
| - | * **echo "deb http:// | + | * **< |
| - | * **echo "deb http:// | + | * **< |
| - | * **echo "deb http:// | + | * **< |
| - Alle Änderungen aus Betriebssystem von bytecluster0002 vornehmen | - Alle Änderungen aus Betriebssystem von bytecluster0002 vornehmen | ||
| * Ausnahmen: NFS deaktivieren und SSH neustarten | * Ausnahmen: NFS deaktivieren und SSH neustarten | ||
| Zeile 341: | Zeile 416: | ||
| * **logout** | * **logout** | ||
| - Template packen und temporären Ordner entfernen | - Template packen und temporären Ordner entfernen | ||
| - | * **< | + | * **< |
| * **cd** | * **cd** | ||
| * **< | * **< | ||
| Zeile 363: | Zeile 438: | ||
| - Unter **network** statische IPs vergeben: IPv4: 10.2.0.x/24 Gateway 10.2.0.0 IPv6: fd00: | - Unter **network** statische IPs vergeben: IPv4: 10.2.0.x/24 Gateway 10.2.0.0 IPv6: fd00: | ||
| - Im letzten Tab bestätigen und ggfs. Container sofort starten. | - Im letzten Tab bestätigen und ggfs. Container sofort starten. | ||
| + | |||
| + | === Automatischen SSH-Forward für Container konfigurieren === | ||
| + | |||
| + | - Per SSH auf dem Host einloggen | ||
| + | - Hook-Skript an Container binden | ||
| + | * **sudo pct set <CT ID> -hookscript local: | ||
| + | - Container ist nach dem (Neu)Start per SSH auf Port 22000 + <CT ID> (z.B. 22149 für Container mit ID 149) direkt erreichbar | ||
| === In Container einloggen === | === In Container einloggen === | ||
| + | |||
| * Vor weiteren Konfigurationen ist der Container nicht von aussen erreichbar, sondern nur über den Host | * Vor weiteren Konfigurationen ist der Container nicht von aussen erreichbar, sondern nur über den Host | ||
| - | * Die Nutzeraccounts | + | * Die Benutzer-Accounts |
| - | * Ein Login ist über public key möglich, | + | * Ein Login ist über mittels SSH-Key |
| * Es empfiehlt sich, SSH Agent forwarding zu nutzen, statt seinen private key auf den Host zu kopieren | * Es empfiehlt sich, SSH Agent forwarding zu nutzen, statt seinen private key auf den Host zu kopieren | ||
| < | < | ||
| - | * Dazu vom Heimrechner | + | * Dazu am eigenen Rechner |
| - | * Alternativ | + | * Zum Passwort ändern |
| - | * aus dieser | + | * Von der Konsole des Hosts aus mit **sudo |
| - | * Sobald das Nutzerpasswort bekannt ist, kann auch eine Konsole im Web-Frontend (Rechtsklick auf den Container) genutzt werden | + | * Über das Web-Frontend kann man die " |
| - | * Alle bekannten Nutzer sind sudoer | + | * In der Konsole |
| + | * Alle bekannten Nutzer sind sudo-fähig | ||