class: center, middle ## Mein eigener Server mit Proxmox, Fritz!Box und Caddy ### Hauke Goos-Habermann #### https://goos-habermann.de --- ### Über mich - Entwickler des
Softwareverteilungssystems m23
- Organisator der
Kieler Open Source und Linux Tage
-
Dienstleister zu m23, Linux und Freier Software
- Softwareentwicklung (PHP, BASH, C/C++, JS, Python und was sonst so gebraucht wird...) - Administration - Schulungen - Support - Beratung - quasi **alles**, *was mit Linux zu tun hat* - Wöchentlicher Livestream *"Jean und Hauke Show"* auf https://www.youtube.com/c/LinuxGuides - *"Nicht der Weisheit letzter Schluß"* mit **beruflichen** oder **privaten Projekten** auf
tube.tchncs.de/c/ndwls
und
youtube.com/@nichtderweisheit
- Hat einen KiLux-Server mit Proxmox 8.0 aufgesetzt. --- ### Proxmox? Download und Infos: https://www.proxmox.com/de/ * Virtualisierungslösung auf Debian-12-Basis *
KVM
(Vollvirtualisierung) *
LXC
(Container) * Eingebautes ZFS Mehr von mir: * Video
Linux Container (LXC) auf Raspberry Pi
* Video
Proxmox 7.3 mit ZFS
* Video
Proxmox 8.0 ohne Abo, mit RAIDz1 und SSD
--- ### Vorbereitungen Den Server habe ich **zuhause vorbereitet** und wollte ihn **ohne weitere Anpassungen** direkt **am Zielort aufbauen**, ohne nochmals Tastatur + Monitor anschließen zu müssen: *
Paketquellen auf Abo-freie Pakete umstellen
*
Dodger-Tools installieren
*
Automatische Aktualisierung aktivieren
*
SSH-Reverse-Proxy installieren
*
Meinen SSH-Schlüssel für den root-Benutzer importieren * Paßwortlosen SSH-Zugang (über Tunnel) **testen** * SSH-Zugang ausschießlich über SSH-Schlüssel erlauben * **sshguard** und **fail2ban** installieren
* Netzwerkeinstellungen auf Fritz!Box-Bereich umstellen * ***/etc/network/interfaces*** * IP (z.B. 192.168.178.23) * Gateway = 192.168.178.1 * ***/etc/resolv.conf*** * DNS-Server = 192.168.178.1 * Einpacken :-) --- ### Tunnelfragen Aktuell kann ich nur über meinen **SSH-Tunnel zugreifen**. * Ports mit ```bash ssh -p 12345 -o ServerAliveInterval=100 root@mein.proxy\ -L 8006:localhost:8006\ -L 10080:192.168.178.1:80 -L 10443:192.168.178.1:443 ``` tunneln: * Proxmox-Weboberfläche auf https://localhost:8006 * Fritz!Box-Weboberfläche auf http://localhost:10080 und https://localhost:10443 *
**Fehlermeldung:** "Der DNS-Rebind-Schutz Ihrer FRITZ!Box hat Ihre Anfrage aus Sicherheitsgründen abgewiesen"
* In Proxmox eine VM mit Linux Mint aufgesetzt * Mit Firefox auf https://fritz.box zugegriffen * Ausnahme für ***localhost*** hinzugefügt --- ### Fritz!Box konfigurieren Bis auf meinen SSH-Tunnel besteht derzeit noch keine **Zugriffsmöglichkeit** auf den Proxmox-Server oder die darauf laufenden VMs. Das wird nun durch **Portweiterleitungen** geändert. * Über die Fritz!Box-Weboberfläche
Portweiterleitungen einrichten, um interne Systeme öffentlich zugänglich zu machen
* SSH-Port vom Proxmox auf ***irgendeinen Port*** legen * Port 80 (http) und 443 (https) vom Proxmox-Server * **Nicht den Port 8006 der Proxmox-Oberfläche** --- ### Caddy installieren Um mehrere VMs oder Container zu betreiben und die drauf laufenden Webserver nach außen zu bringen, braucht es einen Reverse-Proxy und ggf. mehrere (Sub-)Domains.
Caddy
installieren: ```bash apt install -y debian-keyring debian-archive-keyring apt-transport-https gpg wget 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' -O -\ | gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg wget 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt'\ -O /etc/apt/sources.list.d/caddy-stable.list apt-get update apt-get install -y caddy ``` Mehr Informationen: https://caddyserver.com/docs/install#debian-ubuntu-raspbian --- ### Caddy konfigurieren Nun noch (als **root**) Caddy konfigurieren, indem wir ***/etc/caddy/Caddyfile*** editieren und z.B. 2 Webserver in getrennten VMs definieren: ```bash www1.meinserver.abc { reverse_proxy 192.168.178.42:80 } www2.meinserver.abc { reverse_proxy 192.168.178.43:80 } ``` Anschließend neustarten: ```bash systemctl reload caddy ``` --- class: center, middle ### Informationen zu mir und meinen Dienstleistungen, m23, ... ### https://goos-habermann.de