> ## Content Index
> Fetch the complete content index at: https://sakis.tech/llms.txt
> Use this file to discover other available public pages before exploring further.

# Pi-hole auf Proxmox installieren: LXC-Anleitung
- URL: https://sakis.tech/pi-hole-proxmox-lxc-installieren/
- Published: 2026-08-31T08:11:18.000Z
- Updated: 2026-09-01T04:57:24.000Z
- Description: Kein Raspberry Pi nötig: Wie du Pi-hole in einem schlanken LXC-Container auf Proxmox aufsetzt, den Router richtig umbiegst — und den NTP-Fehler umgehst, der fast jeden erwischt.
- Author: Sakis Tech
- Tags: homelab, pi-hole, netzwerk

Werbung blockt man am besten dort, wo sie ins Haus kommt: bei der Namensauflösung. Pi-hole fängt die Anfragen nach Werbe- und Tracker-Domains ab, bevor dein Handy, der Fernseher oder der Smart-Speaker sie überhaupt laden. Und wenn bei dir eh schon ein Proxmox brummt, brauchst du dafür keinen extra Raspberry Pi im Regal.

Ein LXC-Container reicht völlig: ein Kern, 512 MB RAM, ein paar Gigabyte Platte. Das ist weniger, als dein Browser gerade für diesen Tab verbraucht.

**Kurz gesagt:** Am Ende läuft Pi-hole in einem eigenen Debian-Container auf deinem Proxmox-Host, filtert Werbung und Tracker fürs ganze Heimnetz und zeigt dir in einer Web-Oberfläche, was deine Geräte den lieben langen Tag so anfragen. Dauer: rund 20 Minuten. Schwierigkeitsgrad: Einsteiger — jeder Proxmox-Schritt steht doppelt da: einmal zum Klicken, einmal für die Shell.

![Pi-hole auf Proxmox in 3 Schritten: LXC anlegen, Pi-hole installieren, Router umbiegen](https://sakis.tech/content/images/2026/08/grafik-15.png)

Der ganze Weg auf einen Blick — drei Schritte, und Schritt drei ist der, den die meisten vergessen.

## Was du brauchst

- Einen laufenden **Proxmox-VE-Host** mit Internetzugang. Ich gehe hier von Version 9 aus; unter 8 funktioniert derselbe Weg, dort nimmst du gegebenenfalls die Debian-12-Vorlage.
- Eine **freie IP-Adresse** in deinem Heimnetz, die dauerhaft Pi-hole gehört.
- Zugriff auf deinen **Router** — ohne den letzten Schritt filtert Pi-hole für genau niemanden.
- Etwa 20 Minuten. Ein schwarzes Fenster brauchst du nur für Pi-holes eigenen Installer — alles an Proxmox geht auch per Klick.

Mit diesen Werten rechnet die Anleitung. Du musst sie nirgendwo „eintragen" — sie tauchen in den Schritten von selbst auf, und dort ersetzt du sie durch deine:

- IP-Adresse für Pi-hole: `192.168.178.53/24`
- Gateway (die Adresse deines Routers): `192.168.178.1`
- Container-ID: `110` — Hostname: `pihole`
- Storage: `local-lvm` (heißt bei ZFS oft `local-zfs`)
- Größe: 8 GB Platte, 1 Kern, 512 MB RAM
- DNS-Server nur für die Installation: `9.9.9.9`

**LXC?** Ein Linux-Container: Er teilt sich den Kernel mit Proxmox, statt ein komplettes zweites Betriebssystem zu simulieren. Denk an eine abgetrennte Wohnung im selben Haus statt an ein eigenes Haus nebenan — gleiche Heizung, eigene Tür. Startet in Sekunden, frisst kaum Ressourcen, ideal für einen kleinen Dienst wie Pi-hole.

**So liest du diese Anleitung:** Alles, was du selbst tun sollst, steht in einem farbigen Kasten. **\[ per klick \]** heißt: Das erledigst du mit der Maus in einer Web-Oberfläche — hier Proxmox, dein Router oder das Pi-hole-Dashboard. **\[ über die shell \]** heißt: Den Befehl kopieren, ins Terminal einfügen, Enter. Stehen beide Kästen direkt untereinander, führen sie zum selben Ergebnis — du gehst EINEN davon, nicht beide.

## Schritt 1: Debian-Vorlage herunterladen

Proxmox baut Container aus Vorlagen — fertigen Mini-Abbildern eines Betriebssystems. Wir holen die aktuelle Debian-13-Vorlage (Stand Proxmox VE 9):

1. Links im Baum deinen Node aufklappen und den Speicher **local** anklicken.
2. Rechts **CT Templates** wählen, dann oben auf die Schaltfläche **Templates**.
3. In der Liste **debian-13-standard** suchen, markieren, **Herunterladen**. Der Fortschrittsbalken läuft einmal durch, fertig.

Links deinen Node und dort **Shell** öffnen:

```bash
pveam update
pveam available --section system | grep debian-13
pveam download local debian-13-standard_13.1-1_amd64.tar.zst
```

Die mittlere Zeile zeigt dir den exakten Dateinamen — die Versionsnummer hinter `debian-13-standard_` kann bei dir abweichen, dann nimmst du deine.

Warum Debian? Pi-hole unterstützt offiziell nur aktiv gepflegte Systeme, und Debian steht seit jeher ganz oben auf der Liste. Außerdem ist die Standard-Vorlage klein und langweilig — beides Komplimente.

## Schritt 2: Den LXC-Container anlegen

Jetzt der eigentliche Bauauftrag. Alle Werte kommen aus der Beispiel-Box oben — hier siehst du nur noch, wo sie hingehören.

Oben rechts **Create CT**. Der Assistent fragt Seite für Seite ab:

- **General:** Hostname `pihole`, ein Root-Passwort deiner Wahl. Der Haken *Unprivileged container* ist schon gesetzt — so lassen.
- **Template:** die eben geladene Debian-13-Vorlage auswählen.
- **Disks:** 8 GB auf deinem Storage. (Pi-hole braucht laut Doku mindestens zwei GB, empfohlen vier — mit acht hast du Luft für die Abfrage-Datenbank.)
- **CPU / Memory:** 1 Kern, 512 MB RAM, 512 MB Swap.
- **Network:** IPv4 von *DHCP* auf *Static* umstellen, dann die Pi-hole-IP `192.168.178.53/24` und das Gateway `192.168.178.1` eintragen. Die feste Adresse ist keine Kür: Sie darf sich nie ändern, sonst zeigen deine Geräte irgendwann ins Leere.
- **DNS:** als DNS-Server `9.9.9.9` eintragen. Klingt paradox für einen werdenden DNS-Server, ist aber nötig — Pi-hole muss ja erst einmal heruntergeladen werden.

Nach dem **Finish** noch eine Sache, die der Assistent nicht abfragt: im Container-Menü unter **Options → Start at boot** auf *Yes* stellen. Ohne das steht nach dem nächsten Stromausfall das halbe Heimnetz.

Ein Befehl statt sechs Assistenten-Seiten:

```bash
pct create 110 local:vztmpl/debian-13-standard_13.1-1_amd64.tar.zst \
  --hostname pihole \
  --cores 1 --memory 512 --swap 512 \
  --rootfs local-lvm:8 \
  --net0 name=eth0,bridge=vmbr0,ip=192.168.178.53/24,gw=192.168.178.1 \
  --nameserver 9.9.9.9 \
  --onboot 1 \
  --unprivileged 1
```

`110` ist die Container-ID — nimm eine, die bei dir frei ist. `--onboot 1` und `--unprivileged 1` entsprechen den beiden Haken des Assistenten. Ein Root-Passwort setzt dieser Weg nicht — das holst du im nächsten Schritt mit `passwd` nach.

**Unprivilegierter Container?** Wer da drinnen „root“ ist, ist auf dem Proxmox-Host trotzdem nur ein rechtloser Niemand. Falls jemand im Container Unsinn baut, bleibt der Unsinn im Container. Kostet dich nichts — und erklärt später einen der Stolpersteine.

## Schritt 3: Container starten und vorbereiten

Den Container links auswählen, oben **Start**, dann **Console** — Anmeldung als `root` mit dem Passwort aus dem Assistenten.

```bash
pct start 110
pct enter 110
```

`pct enter` setzt dich auch ohne Passwort direkt hinein.

Ab jetzt sitzt du auf beiden Wegen im selben Terminal. Erstmal aufräumen:

```bash
apt update && apt full-upgrade -y
apt install -y curl
```

Kam dein Container per `pct create`, fehlt noch das Root-Passwort — einmal `passwd`, fertig. Ohne es kommst du später nicht per SSH hinein, sondern nur über den Umweg Proxmox-Host. Wenn du den Container tatsächlich per SSH erreichbar machen willst, schau vorher kurz in unsere Anleitung zum [SSH-Absichern auf Debian und Ubuntu](https://sakis.tech/ssh-absichern-auf-debian-ubuntu-schritt-fur-schritt/) — ein frisch aufgesetzter Container mit Passwort-Login ist eine Einladung.

## Schritt 4: Pi-hole installieren

Hier gibt es ausnahmsweise keinen Klick-Weg — Pi-holes offizieller Installer ist ein Skript, direkt aus der Doku:

```bash
curl -sSL https://install.pi-hole.net | bash
```

Ja, das ist ein `curl` in eine Shell. Wenn du lieber erst liest, was du da ausführst — das Projekt bietet den Weg selbst an:

```bash
wget -O basic-install.sh https://install.pi-hole.net
bash basic-install.sh
```

Der Installer führt dich durch ein paar blaue Dialoge: Upstream-DNS-Anbieter, Blockliste, Web-Oberfläche, Abfrage-Protokollierung. Die Voreinstellungen sind für den Anfang völlig in Ordnung — einmal durchklicken reicht, das Feintuning kommt gleich unten in den ersten Einstellungen.

**Upstream-DNS?** Pi-hole ist kein Auskunftsbüro, sondern das Vorzimmer davor. Für jede Domain, die nicht auf der Blockliste steht, fragt es selbst bei einem großen DNS-Server nach — das ist der Upstream. Cloudflare, Quad9, dein Provider: freie Wahl, jederzeit änderbar.

## Schritt 5: Passwort setzen und einloggen

Der Installer würfelt dir am Ende zwar ein Passwort aus, aber eins zum Merken ist bequemer:

```bash
pihole setpassword
```

Im Browser die IP deines Containers mit `/admin` dahinter aufrufen, im Beispiel also `http://192.168.178.53/admin`. Login mit dem gerade gesetzten Passwort, und du landest im Dashboard. Noch ist es leer — logisch, es fragt ja niemand.

## Schritt 6: Den Router auf Pi-hole umbiegen

Das ist der Schritt, an dem die meisten Anleitungen aufhören und die meisten Nutzer sich wundern, warum immer noch Werbung kommt. Solange deine Geräte Pi-hole nicht als DNS-Server benutzen, ist es nur ein hübsches Dashboard.

Dein Handy→ fragt „wo ist X?“ →Pi-hole→ nur wenn erlaubt →Upstream-DNS

An der FRITZ!Box führt der Weg laut Pi-hole-Doku über **Heimnetz → Netzwerk → Netzwerkeinstellungen → IP-Adressen → IPv4-Konfiguration → Heimnetz**. Dort trägst du die Pi-hole-IP als **Lokaler DNS-Server** ein. Ab dann bekommt jedes Gerät, das sich per DHCP anmeldet, Pi-hole als DNS-Server mitgeteilt.

Anderer Router, gleiche Idee: Such in den LAN- oder DHCP-Einstellungen nach einem Feld für den DNS-Server, den die Clients bekommen sollen.

Eine Warnung, die sich die Pi-hole-Doku ausdrücklich nicht spart: Trag Pi-hole nicht gleichzeitig als Upstream deiner FRITZ!Box ein, während die FRITZ!Box Upstream von Pi-hole ist. Dann fragen sich beide gegenseitig im Kreis, und deine Namensauflösung dreht sich mit.

Und noch ein Klassiker: Deine Geräte merken von der Änderung erst etwas, wenn sie sich ihre DHCP-Daten neu holen. WLAN aus, WLAN an — das ist der schnellste Weg, das zu erzwingen.

## Die ersten Einstellungen

Installiert ist Pi-hole in zwanzig Minuten — eingerichtet ist es damit noch nicht. Vier Dinge, die den Unterschied machen (Stand Pi-hole v6):

**1\. Upstream-DNS bewusst wählen.** Im Installer hast du einmal durchgeklickt, hier lohnt der zweite Blick: Der Upstream sieht jede Anfrage, die Pi-hole durchlässt. Quad9 oder Cloudflare statt des Provider-DNS heißt, dein Anbieter führt nebenher kein Verzeichnis darüber, welche Seiten dein Haushalt aufruft. Jederzeit änderbar, wirkt sofort.

Dashboard: **Settings → DNS**, Upstream ankreuzen, *Save*.

**2\. Privacy-Level prüfen.** Ab Werk protokolliert Pi-hole jede Domain samt anfragendem Gerät. Zum Einrichten und Fehlersuchen ist das Gold wert — dauerhaft ist es ein Klick-Tagebuch aller Mitbewohner. Die Stufen 1 bis 3 anonymisieren schrittweise bis zur reinen Statistik. Ich würde es so machen: alles sichtbar lassen, bis das Setup eine Woche rund läuft, dann hochdrehen.

Dashboard: **Settings**, Abschnitt **Privacy**, Stufe wählen.

**3\. Einmal ein Teleporter-Backup ziehen.** Das kleine Archiv enthält deine Listen, Ausnahmen und Einstellungen; leg es zu deinen übrigen Backups. Der Container selbst ist in Minuten neu gebaut — die Whitelist, die du über Wochen gepflegt hast, nicht.

Dashboard: **Settings → Teleporter**, dann *Export*.

**4\. Updates zur Gewohnheit machen.** Pi-hole aktualisiert sich nicht von selbst. Das Dashboard meldet unten, wenn eine neue Version bereitsteht; eingespielt wird sie im Container-Terminal:

```bash
pihole -up
```

Ein DNS-Filter, durch den das ganze Heimnetz läuft, ist ein Sicherheitsbauteil — der gehört aktuell gehalten. Um die Blocklisten musst du dich dagegen nicht kümmern, die holt Pi-hole wöchentlich automatisch neu.

## Häufige Stolpersteine

**„Failed to adjust time during NTP sync: Insufficient permissions“**  
Der mit Abstand häufigste Schreck bei Pi-hole im Proxmox-Container. Pi-hole v6 bringt einen eigenen Zeit-Client mit und will die Systemuhr stellen. Ein unprivilegierter Container darf das nicht — die Uhr gehört dem Host. Der Pi-hole-Entwickler DL6ER empfiehlt für genau diesen Fall, die Zeitsynchronisation abzuschalten:

```bash
pihole-FTL --config ntp.sync.active false
systemctl restart pihole-FTL
```

Du verlierst dabei nichts: Die Uhrzeit im Container kommt ohnehin vom Proxmox-Host.

**Die Web-Oberfläche ist nicht erreichbar**  
Pi-hole v6 bringt seinen eigenen Webserver mit und versucht zuerst Port 80\. Ist der belegt, weicht es klammheimlich auf 8080 aus. Nachsehen kannst du im Container:

```bash
pihole-FTL --config webserver.port
```

Steht dort 8080, rufst du eben `http://192.168.178.53:8080/admin` auf. Wer stattdessen wissen will, welcher Dienst sich Port 80 unter den Nagel gerissen hat: Wir haben aufgeschrieben, wie du [einen belegten Port findest und wieder frei bekommst](https://sakis.tech/port-belegt-so-findest-du-den-schuldigen-und-gibst-ihn-frei/).

**Es wird einfach nichts geblockt**  
Neben dem DHCP-Lease von oben gibt es einen zweiten Verdächtigen: ein zusätzlicher, öffentlicher DNS-Server im Router. Steht neben Pi-hole noch 8.8.8.8 in den Einstellungen, fragen deine Geräte fröhlich daran vorbei. Ein Alternativ-DNS ist kein Backup, sondern eine Umgehungsstraße.

**Pi-hole aus, Internet gefühlt aus**  
Wenn der Container steht, löst im Heimnetz niemand mehr Namen auf — und Besuch am Küchentisch findet das mäßig witzig. Wer nachts ruhig schlafen will, stellt entweder ein zweites Pi-hole daneben oder sorgt zumindest dafür, dass er den Ausfall früh mitbekommt, etwa mit [Uptime Kuma als Wachhund](https://sakis.tech/uptime-kuma-mit-docker-installieren-schritt-fur-schritt/).

## Fazit

Nach 20 Minuten hast du einen Container, der einen Kern und ein halbes Gigabyte RAM belegt und dafür in jedem Gerät im Haus Werbung wegräumt — auch auf dem Smart-TV, wo dich kein Browser-Add-on rettet. Das Aufwand-Nutzen-Verhältnis ist im Homelab schwer zu schlagen.

Ehrlich bleiben muss man trotzdem: Pi-hole blockt auf DNS-Ebene, also anhand von Domainnamen. YouTube-Werbung kommt von derselben Domain wie das Video und geht deshalb durch. Wer mit dieser Erwartung startet, ist enttäuscht.

**Meine Einschätzung:** Wer schon einen Proxmox-Host betreibt, setzt das heute Abend auf — der Container kostet praktisch nichts und liefert nebenbei den ersten ehrlichen Blick darauf, wie oft die eigenen Geräte nach Hause telefonieren. Und noch in derselben Woche kommt der Wachhund daneben: Ein DNS-Filter, an dem das ganze Netz hängt, gehört überwacht und gesichert, nicht in die Kategorie „einmal aufgesetzt und vergessen“.

Wie hast du es gelöst — filterst du zentral über den Router für alle Geräte, oder trägst du Pi-hole nur bei ausgewählten Clients ein und lässt Gäste bewusst außen vor? Und ist ein zweites Pi-hole für dich Pflicht oder Paranoia? Schreib's in die Kommentare.

Solche Anleitungen erscheinen hier regelmäßig — wenn du keine verpassen willst, wirf den Newsletter an: Die Anmeldung steht gleich unter diesem Beitrag, und abbestellen ist ein Klick.

sakis@homelab:\~$ echo "bleib neugierig — und mach backups" 

## Quellen

- [Pi-hole Docs — Basic Install](https://docs.pi-hole.net/main/basic-install/?ref=sakis.tech)
- [Pi-hole Docs — Prerequisites (Hardware, unterstützte Systeme, Ports)](https://docs.pi-hole.net/main/prerequisites/?ref=sakis.tech)
- [Pi-hole Docs — pihole command (setpassword, update, gravity)](https://docs.pi-hole.net/main/pihole-command/?ref=sakis.tech)
- [Pi-hole Docs — pihole.toml (ntp.sync, webserver.port)](https://docs.pi-hole.net/ftldns/configfile/?ref=sakis.tech)
- [Pi-hole Docs — Privacy levels](https://docs.pi-hole.net/ftldns/privacylevels/?ref=sakis.tech)
- [Pi-hole Docs — FRITZ!Box (deutsch)](https://docs.pi-hole.net/routers/fritzbox-de/?ref=sakis.tech)
- [Proxmox VE Docs — Linux Container (pct, pveam)](https://pve.proxmox.com/pve-docs/chapter-pct.html?ref=sakis.tech)
- [Pi-hole Discourse — Failed to adjust time during NTP sync](https://discourse.pi-hole.net/t/failed-to-adjust-time-during-ntp-sync-insufficient-permissions/70966?ref=sakis.tech)