Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
dienste:bytecluster0002 [28.09.2020 17:41] – mape2k | dienste:bytecluster0002 [02.12.2023 22: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: | + | |
====== Administratoren ====== | ====== Administratoren ====== | ||
Zeile 22: | Zeile 34: | ||
* [[user: | * [[user: | ||
* [[user: | * [[user: | ||
- | |||
- | ====== ToDo ====== | ||
- | |||
- | * Traefik-Container | ||
====== IPs /DNS ====== | ====== IPs /DNS ====== | ||
Zeile 34: | Zeile 42: | ||
===== intern ===== | ===== intern ===== | ||
+ | |||
+ | * Vergabe siehe [[dienste: | ||
* Netzwerk für Internetzugang und Traefik | * Netzwerk für Internetzugang und Traefik | ||
Zeile 78: | Zeile 88: | ||
===== Betriebssystem ===== | ===== Betriebssystem ===== | ||
- | * Debian | + | * Debian |
==== Vorkonfiguration ===== | ==== Vorkonfiguration ===== | ||
Zeile 87: | Zeile 97: | ||
==== Grundeinrichtung ==== | ==== Grundeinrichtung ==== | ||
+ | ====== Migration ====== | ||
- System aktualisieren | - System aktualisieren | ||
Zeile 109: | 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 118: | 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 168: | 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 186: | Zeile 199: | ||
* **< | * **< | ||
+ | ==== Eingerichtete Forwards ==== | ||
+ | |||
+ | * Port 80/443 für Container [[dienste: | ||
+ | * **iptables -t nat -A PREROUTING -d 138.201.246.25/ | ||
+ | * **iptables -t nat -A PREROUTING -d 138.201.246.25/ | ||
+ | |||
+ | * NGINX default im web-container< | ||
+ | iptables -t nat -A PREROUTING -d 138.201.246.25/ | ||
+ | </ | ||
+ | * Dokuwiki im web-container< | ||
+ | iptables -t nat -A PREROUTING -d 138.201.246.25/ | ||
+ | </ | ||
+ | * Nextcloud im nextcloud.test container< | ||
+ | iptables -t nat -A PREROUTING -d 138.201.246.25/ | ||
+ | </ | ||
+ | * Wordpress im wordpress.test container< | ||
+ | iptables -t nat -A PREROUTING -d 138.201.246.25/ | ||
+ | </ | ||
+ | |||
===== Proxmox ===== | ===== Proxmox ===== | ||
Zeile 283: | 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 291: | 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 308: | 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 320: | Zeile 416: | ||
* **logout** | * **logout** | ||
- Template packen und temporären Ordner entfernen | - Template packen und temporären Ordner entfernen | ||
- | * **< | + | * **< |
* **cd** | * **cd** | ||
* **< | * **< | ||
Zeile 342: | 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 |