Skip to content

Proxmox Setup 2025

Proxmox
1 1 139
  • Ja, so als Server Spielkind baut man ab und zu, einfach alles um 🙂

    Zuletzt lief mein Proxmox auf folgender Hardware -> https://linux-nerds.org/topic/1450/asrock-n100dc-itx

    Mein Bericht damals zum Umzug auf die neue Hardware -> https://linux-nerds.org/topic/1452/proxmox-umzug-auf-neue-hardware-asrock-n100dc-itx/8

    Lief alles tadellos, aber ich brauchte etwas schnelleres und mit mehr RAM. Ja, das kostet leider auch etwas mehr Strom 😞 (ca. 38W mit meinem aktuellen Ausbau)

    Ich habe hier ein Mini-ITX MSI B550i rumliegen. Das war jetzt auserkoren, meinen Proxmox zu beherbergen. Mein Netzwerksetup sieht ein drei LAN-Schnittstellen Setup vor.

    • WAN
    • LAN
    • OPT1

    Auf dem Board ist eine 2.5G Schnittstelle drauf, die macht dann WAN. Jetzt brauchte ich eine PCIe Karte mit zwei LAN Schnittstellen. Ich wollte die 1G nicht mehr nutzen, man muss ja auch was testen 😉

    Meine Wahl fiel auf diese PCIe- Karte -> https://www.amazon.de/dp/B0C4H4KCRJ?th=1
    Die Karte beinhaltet 2 * RTL8125B Controller.

    Danach pfSense eingerichtet, bzw. den Dump restored. Die Hardware an die neuen Netzwerkkarten angepasst und fertig. Gestartet - läuft.

    Schnell noch ein Speedtest

    root@nas:~# iperf3 -s
    -----------------------------------------------------------
    Server listening on 5201 (test #1)
    -----------------------------------------------------------
    ^Ciperf3: interrupt - the server has terminated
    root@nas:~# iperf3 -c 192.168.3.213
    Connecting to host 192.168.3.213, port 5201
    [  5] local 192.168.3.19 port 33950 connected to 192.168.3.213 port 5201
    [ ID] Interval           Transfer     Bitrate         Retr  Cwnd
    [  5]   0.00-1.00   sec   281 MBytes  2.36 Gbits/sec    0   3.58 MBytes       
    [  5]   1.00-2.00   sec   280 MBytes  2.35 Gbits/sec    0   3.58 MBytes       
    [  5]   2.00-3.00   sec   279 MBytes  2.34 Gbits/sec    0   3.58 MBytes       
    [  5]   3.00-4.00   sec   280 MBytes  2.35 Gbits/sec    0   3.58 MBytes       
    [  5]   4.00-5.00   sec   279 MBytes  2.34 Gbits/sec    0   3.58 MBytes       
    [  5]   5.00-6.00   sec   280 MBytes  2.35 Gbits/sec    0   3.58 MBytes       
    [  5]   6.00-7.00   sec   279 MBytes  2.34 Gbits/sec  184   2.70 MBytes       
    [  5]   7.00-8.00   sec   280 MBytes  2.35 Gbits/sec    0   2.91 MBytes       
    [  5]   8.00-9.00   sec   279 MBytes  2.34 Gbits/sec    0   3.08 MBytes       
    [  5]   9.00-10.00  sec   280 MBytes  2.35 Gbits/sec    0   3.22 MBytes       
    - - - - - - - - - - - - - - - - - - - - - - - - -
    [ ID] Interval           Transfer     Bitrate         Retr
    [  5]   0.00-10.00  sec  2.73 GBytes  2.35 Gbits/sec  184             sender
    [  5]   0.00-10.01  sec  2.73 GBytes  2.34 Gbits/sec                  receiver
    
    iperf Done.
    root@nas:~# iperf3 -R -c 192.168.3.213
    Connecting to host 192.168.3.213, port 5201
    Reverse mode, remote host 192.168.3.213 is sending
    [  5] local 192.168.3.19 port 59378 connected to 192.168.3.213 port 5201
    [ ID] Interval           Transfer     Bitrate
    [  5]   0.00-1.00   sec   280 MBytes  2.35 Gbits/sec                  
    [  5]   1.00-2.00   sec   280 MBytes  2.35 Gbits/sec                  
    [  5]   2.00-3.00   sec   280 MBytes  2.35 Gbits/sec                  
    [  5]   3.00-4.00   sec   280 MBytes  2.35 Gbits/sec                  
    [  5]   4.00-5.00   sec   280 MBytes  2.35 Gbits/sec                  
    [  5]   5.00-6.00   sec   280 MBytes  2.35 Gbits/sec                  
    [  5]   6.00-7.00   sec   280 MBytes  2.35 Gbits/sec                  
    [  5]   7.00-8.00   sec   280 MBytes  2.35 Gbits/sec                  
    [  5]   8.00-9.00   sec   280 MBytes  2.35 Gbits/sec                  
    [  5]   9.00-10.00  sec   280 MBytes  2.35 Gbits/sec                  
    - - - - - - - - - - - - - - - - - - - - - - - - -
    [ ID] Interval           Transfer     Bitrate         Retr
    [  5]   0.00-10.00  sec  2.74 GBytes  2.35 Gbits/sec    0             sender
    [  5]   0.00-10.00  sec  2.74 GBytes  2.35 Gbits/sec                  receiver
    
    iperf Done.
    

    Und wer sich jetzt fragt, was ich als Switch genommen habe -> https://www.amazon.de/dp/B0CFQKYDRM

    Ein China Teil, was laut Kommentaren furchtbar heiß werden soll. In meinem Setup gar nicht. In den Kommentaren schreiben viele, das sie das Webinterface schlecht erreichen konnte. War kein Problem, man sollte halt auch im selben Netzwerk sein. Läuft jetzt hier seit einer Woche ohne Probleme.

    Setup Proxmox

    68eb573d-ca8e-462d-9903-4e8afaf6bea6-grafik.png

    Den Proxmox eingerichtet, das ist ja jetzt nicht so die Herausforderung. Auf dem Board sind zwei NVMe Steckplätze, die auch beide bestückt sind, So mit 500GB jeweils.

    Da bot es sich an, bei der Installation eine ZFS Raid 1 Installation vorzunehmen. Das habe ich dann auch so gemacht. Macht dann

    root@pve2:~# dd if=/dev/zero of=test.img bs=1M count=4096 conv=fdatasync
    4096+0 records in
    4096+0 records out
    4294967296 bytes (4.3 GB, 4.0 GiB) copied, 1.08774 s, 3.9 GB/s
    

    Restore VMs

    Das ist wirklich so mit das Einfachste was es gibt. Mit scp vom alten Proxmox alle Dumps auf den Neuen kopiert. Dann braucht man den letzten Dump nur Auswählen auf Restore klicken, Datenspeicher auswählen und fertig.

    b25eb59a-e40f-412b-aa6e-dedccd9b2a18-grafik.png

    Gut, das war jetzt nicht so die Herausforderung.

    NAS ZFS Pool

    Mein NAS beinhaltet einen ZFS Pool Raid 1, den ich damals mit Proxmox angelegt hatte und dann an die VM durchreiche. Ok, wie bekomme ich das auf den neuen Proxmox?

    Man kopiert die Einstellung vom alten Proxmox.

    zfspool: pool_NAS
            pool pool_NAS
            content rootdir,images
            mountpoint /pool_NAS
            nodes pve2
    

    Man achtet auf den richtigen Namen bei nodes

    Danach muss man den Pool an die VM dran hängen. Meine neue VM für das NAS hat die ID 103, die alte hatte die ID 106. Ich habe das so gelassen, weil ich nicht wusste ob ich den Namen einfach so anpassen konnte. War aber nicht nötig, weil es auch so gut funktionierte.

    qm set 103 --virtio0 /dev/zvol/pool_NAS/vm-106-disk-0
    

    0cc08e40-76d3-4292-9cf1-91ffefafe417-grafik.png

    Der Rest war dann ganz normale Arbeit, VMs restoren, Backups einrichten, Domains konfigurieren, Mail Setup usw.

  • OpenCloud - Docker Compose Hetzner VM

    Verschoben OpenCloud opencloud linux docker
    2
    2
    0 Stimmen
    2 Beiträge
    166 Aufrufe
    FrankMF
    Ich habe mich nochmal mit verschiedenen Aspekten der produktiven Installation beschäftigt. Auch ein wenig die KI befragt und dann ein paar Änderungen vorgenommen. Was hatte mich gestört? Traefik lief als root. Um das zu ändern, habe ich das docker-compose.yml angepasst. Ich habe auch gleich mal auf die aktuelle Version angepasst. services: traefik: image: traefik:v3.4.1 #3.3.1 container_name: traefik user: "1000:1001" # 1000 = dockeruser, 1001=docker group cap_add: - NET_BIND_SERVICE # erlaubt Ports <1024 restart: always networks: - opencloud-net ports: - "80:80" - "443:443" volumes: - ./certs:/certs # bind-mount acme.json - /var/run/docker.sock:/var/run/docker.sock:ro command: - "--log.level=${TRAEFIK_LOG_LEVEL:-ERROR}" # Let's Encrypt HTTP-01 Challenge - "--certificatesResolvers.http.acme.email=${TRAEFIK_ACME_MAIL:-example@example.org}" - "--certificatesResolvers.http.acme.storage=/certs/acme.json" - "--certificatesResolvers.http.acme.httpChallenge.entryPoint=http" - "--certificatesResolvers.http.acme.caserver=${TRAEFIK_ACME_CASERVER:-https://acme-v02.api.letsencrypt.org/directory}" # Dashboard - "--api.dashboard=true" # Entrypoints - "--entryPoints.http.address=:80" - "--entryPoints.http.http.redirections.entryPoint.to=https" - "--entryPoints.http.http.redirections.entryPoint.scheme=https" - "--entryPoints.https.address=:443" - "--entryPoints.https.transport.respondingTimeouts.readTimeout=12h" - "--entryPoints.https.transport.respondingTimeouts.writeTimeout=12h" - "--entryPoints.https.transport.respondingTimeouts.idleTimeout=3m" # Docker Provider - "--providers.docker.endpoint=unix:///var/run/docker.sock" - "--providers.docker.exposedByDefault=false" # Access Log - "--accessLog=true" - "--accessLog.format=json" - "--accessLog.fields.headers.names.X-Request-Id=keep" labels: - "traefik.enable=${TRAEFIK_DASHBOARD:-false}" - "traefik.http.middlewares.traefik-auth.basicauth.users=${TRAEFIK_BASIC_AUTH_USERS:-admin:$$apr1$$4vqie50r$$YQAmQdtmz5n9rEALhxJ4l.}" - "traefik.http.routers.traefik.entrypoints=https" - "traefik.http.routers.traefik.rule=Host(`${TRAEFIK_DOMAIN:-traefik.opencloud.test}`)" - "traefik.http.routers.traefik.middlewares=traefik-auth" - "traefik.http.routers.traefik.tls.certresolver=http" - "traefik.http.routers.traefik.service=api@internal" networks: opencloud-net: volumes: {} Und hierzu - ./certs:/certs # bind-mount acme.json brauch es noch ein paar Anpassungen auf dem Host, also im Verzeichnis von wo wir deployen mit dem dockeruser! mkdir -p ./certs touch ./certs/acme.json chmod 600 ./certs/acme.json chown 1000:1000 ./certs/acme.json # UID muss mit docker-compose user übereinstimmen Das klappt jetzt hier einwandfrei. dockeruser@opencloud:~/opencloud/deployments/examples/opencloud_full$ docker exec -it traefik id uid=1000 gid=1001 groups=1001 Sieht soweit gut aus Die KI meint noch das hier Wenn du maximale Sicherheit willst, kannst du langfristig docker-socket-proxy einsetzen. Er erlaubt Traefik nur lesenden Zugriff auf die Container-API: → Projektseite: Tecnativa/docker-socket-proxy Das muss ich aber erst noch sacken lassen und mich etwas zu einlesen.
  • Crowdsec - Ein fail2ban Ersatz?

    Linux crowdsec linux fail2ban
    2
    1
    0 Stimmen
    2 Beiträge
    980 Aufrufe
    FrankMF
    Ich kann jetzt hier von meiner ersten Erfahrung berichten und wie CrowdSec mich gebannt hat Was war passiert? Ich war gestern sehr intensiv mit der Konfiguration von Nextcloud <-> Collabora Online beschäftigt. Nachdem ich irgendwie nicht weiterkam habe ich mich der Erstellung eines Dokumentes gewidmet. Nach einiger Zeit war die Nextcloud nicht mehr erreichbar. Ok, hatte ich bei der Konfiguration auch schon mal, den Server einmal neugestartet und fertig. Doch jetzt kam es, Server neugestartet - hilft nicht. Gut, schauen wir mal nach, Der SSH Login ging auch nicht Jetzt war guter Rat gefragt. Zu diesem Zeitpunkt ging ich noch davon aus, das auf diesem Server kein CrowdSec installiert war, sondern fail2ban. Und fail2ban hatte eine sehr kurze Bantime vom 10M. Also blieb wohl nur noch das Rescue System von Hetzner. [image: 1694411392066-488866bc-3dcf-4abc-9e98-6107d65aa4c7-grafik.png] Da hatte ich ja so gut wie gar keine Erfahrung mit. Also mal kurz den Nico angetriggert und es kam folgender Link. https://docs.hetzner.com/de/robot/dedicated-server/troubleshooting/hetzner-rescue-system/ Das Laufwerk war schnell bestimmt und schnell nach /tmp gemountet. Danach musste man sich noch mit chroot in diese Umgebung anmelden. chroot-prepare /mnt chroot /mnt Nachdem das klappte, habe ich eben fail2ban disabled. sysmctl disable fail2ban Danach das Rescue beendet. Der Server startete wieder und ich kam wieder per SSH drauf. Puuh. Bei meiner ersten Kontrolle fiel mir was auf root@:~# pstree systemd─┬─2*[agetty] ├─atd ├─cron ├─crowdsec─┬─journalctl │ └─8*[{crowdsec}] ├─crowdsec-firewa───9*[{crowdsec-firewa}] Wie? Da läuft CrowdSec? Da ich dabei bin die Server auf CrowdSec umzustellen, war das wohl hier schon gemacht, aber leider nicht vernünftig. fail2ban hätte mindestens disabled werden müssen und in meiner Dokumentation war das auch nicht enthalten. 6 setzen! CrowdSec besteht ja aus zwei Diensten, CrowdSec und dem Firewall-Bouncer. Der CrowdSec Dienst lief aber nicht, der war irgendwie failed. Ok, starten wir ihn und schauen was passiert. Nachdem er gestarte war mal die Banliste angeschaut. cscli decisions list ergab diesen Eintrag. 2551501 │ crowdsec │ Ip:5.146.xxx.xxx │ crowdsecurity/http-crawl-non_statics │ ban │ │ │ 53 │ 1h5m55.391864693s │ 1671 Meine IP war gebannt. Dann wissen wir ja , woher die Probleme kamen. cscli decisions delete --id 2551501 Nach Eingabe war der Ban entfernt. Na gut, aber da ich aktuell immer noch an der richtigen Konfiguration von NC <-> CODE bastel, könnte das ja wieder passieren. Was machen? Kurz gegoogelt. Es gibt eine Whitelist. Aha! /etc/crowdsec/parsers/s02-enrich/whitelists.yaml name: crowdsecurity/whitelists description: "Whitelist events from private ipv4 addresses" whitelist: reason: "private ipv4/ipv6 ip/ranges" ip: - "127.0.0.1" - "::1" - "5.146.XXX.XXX" cidr: - "192.168.0.0/16" - "10.0.0.0/8" - "172.16.0.0/12" # expression: # - "'foo.com' in evt.Meta.source_ip.reverse" Danach den Dienst neustarten. Jetzt hoffen wir mal, das es hilft. Zum Schluss noch was, was mir aufgefallen war und was mich auch sehr verwirrt hatte. CrowdSec hatte wegen einem crowdsecurity/http-crawl-non_statics gebannt. Dadurch konnte ich meine subdomain.<DOMAIN> nicht erreichen. Ok, logisch, wenn der Ban von da ausgeht. Ich konnte aber gleichzeitig eine andere subdomain mit derselben <DOMAIN> auch nicht erreichen. Komplett verwirrte es mich dann, als ich eine andere <DOMAIN> auf dem selben Server erreichen konnte. Und zum Schluss ging auch der SSH nicht. Also, wieder viel gelernt..
  • PHP - ChatGPT

    PHP php linux chatgpt
    1
    2
    0 Stimmen
    1 Beiträge
    156 Aufrufe
    Niemand hat geantwortet
  • KDE Plasma setzt auf Wayland

    Linux kde linux
    1
    0 Stimmen
    1 Beiträge
    95 Aufrufe
    Niemand hat geantwortet
  • Redis - Zweite Instanz

    Redis redis linux
    1
    0 Stimmen
    1 Beiträge
    311 Aufrufe
    Niemand hat geantwortet
  • Quartz64 - SPDIF Modul

    Verschoben Quartz64 - A quartz64 linux
    2
    3
    0 Stimmen
    2 Beiträge
    343 Aufrufe
    FrankMF
    Für das bequeme Umschalten der Soundkarten kann man das Tool alsamixer benutzen. pacman -S alsa-utils Danach alsamixer [image: 1633791802992-e912744f-8f69-4b28-a50b-7ffc8a3ab399-grafik.png]
  • VS Code - entferntes Verzeichnis einbinden

    Linux vscode linux
    2
    0 Stimmen
    2 Beiträge
    454 Aufrufe
    FrankMF
    Mein kleines Projekt liegt auch noch auf gitlab.com. Man kann prima die beiden Dienste (VSCode & gitlab.com) verknüpfen. Eine Änderung, ein commit und dann git push origin master Und die Änderungen sind oben. Aber, ich stecke da noch ganz am Anfang der Lernkurve
  • NodeBB - spawn npm ENOENT

    NodeBB nodebb linux
    1
    0 Stimmen
    1 Beiträge
    446 Aufrufe
    Niemand hat geantwortet