Probleme beim Installieren / Setup Docker

Moin,

ich habe leider so einige Probleme bei der Installation / Setup.
Ich habe einen Volkszähler aus einem Raspberry 3 laufen, aber da reicht die Rechenpower inzwischen nicht mehr aus. Daher habe ich jetzt die Hardware deutlich aufgerüstet und will nun mit der Software ebenfalls deutlich breiter aufgestellt sein. Alles soll auf einem System laufen. Der Raspberry kommt weg. (Ja, ich weiß, ich könnte ja auch das pihole alleine auf dem Raspberry installieren, das könnte ich ja auch mit allen anderen Applikationen machen, aber das ist nicht das Ziel!!!!)
Ich habe eine ASUS CHROMEBOX 3 Intel i7-8550U 16GB 64GB SSD gejailbreaked und darauf PROXMOX installiert.
Darin läuft ein LXC Container mit Docker.
In Docker will ich einige Applikationen laufen lassen:
Portainer, HomeAssistant, MQTT, CaSSAndRA, Node-RED, Grafana, Octoprint, Volkszähler, AdGuard, Zigbee2MQTT, Watchtower und so weiter.
Noch laufen von den Applikationen keine, es ist alles noch im Aufbau, bzw. im Testbetrieb, bevor es dann produktiv zum Einsatz kommt.

Ich möchte mir nun eine docker-compose.yaml zusammenbauen, damit ich den pihole Container per Docker compose konfigurieren und starten kann (ja, geht auch anders, ich möchte aber genau das, und nichts anderes).

Leider gelingt es mir nur so halb, und ich verstehe nicht warum. Vielleicht kann ja jemand helfen?

Ich möchte zwei Volumes erstellen:


Ich denke, das hat geklappt?!

Meine docker-compose.yaml sieht bisher so aus (habe ich mir zusammenkopiert, über Hinweise, ob das so sinnvoll ist bin ich dankbar):

version: "3.7"

services:
  pihole:
    image: pihole/pihole:latest
    container_name: 07_Pihole
    # For DHCP it is recommended to remove these ports and instead add: network_mode: "host"
    restart: unless-stopped
    ports:
      - "53:53/tcp"
      - "53:53/udp"
      # DHCP Server Usage
      #- "67:67/udp"
      - "80:80/tcp"
      - "443:443/tcp"
    environment:
      TZ: Europe/Berlin
      WEBPASSWORD: raspi
      DNS1: 1.1.1.1
      DNS2: 1.0.0.1
    # Volumes store your data between container upgrades
    volumes:
      - ./data/pihole/conf/:/etc/pihole/
      - ./data/dnsmasq.d/conf/:/etc/dnsmasq.d/
      # run `touch ./var-log/pihole.log` first unless you like errors
      # - './var-log/pihole.log:/var/log/pihole.log'
    dns:
      - 127.0.0.1
      - 1.1.1.1
    labels:
        com.centurylinklabs.watchtower.enable: "true"
    # Recommended but not required (DHCP needs NET_ADMIN)
    #   https://github.com/pi-hole/docker-pi-hole#note-on-capabilities
    #cap_add:
    #  - NET_ADMIN
    networks:
      - app-nw

networks:
  app-nw:
    internal: false
    driver: bridge
    driver_opts:
      com.docker.network.bridge.name: br-pihole

Als Fehlermeldung kommt dann:

Error response from daemon: driver failed programming external connectivity on endpoint 07_Pihole (31516d70f81d9cc873d484a40ec7a54b421578d52d43f4e9a13068): Error starting userland proxy: listen tcp4 0.0.0.0:53: bind: address already in use

Vielen Dank und beste Grüße,
Chris

Pi-hole benötigt auf dem Rechner, auf dem es installiert wird, Zugriff auf eine Reihe von Ports, inbesondere Port 53.

Auf Deinem Rechner beansprucht bereits ein anderer DNS-Server (bind) Port 53.

Ich bin ein wenig weiter gekommen:
Ich habe folgende Datei editiert:

sudo nano /etc/systemd/resolved.conf

und habe "DNSStubListener" auskommentiert und auf "no" gesetzt, nun sieht es so aus: DNSStubListener=no

Jetzt startet der Container ohne Probleme.

Kann man das so machen, oder ist das suboptimal?
Ich habe nicht so richtig eine Ahnung, was das mit den Ports so auf sich hat.
Ich möchte natürlich nicht, dass nun irgendetwas anderes nicht mehr funktioniert.

Danke und beste Grüße,
Chris

Letztendlich kannst nur Du das herausfinden, da das von der von Dir eingesetzten Software abhängt, u.a. vom Betriebssystem, aber u.U. auch von der von Dir geplanten Nutzung weiterer Software.

Da Deine Änderung wohl nur den Stub-Resover des BS abschaltet, und Pi-hole als DNS-Server diesen vollständig ersetzt, stehen die Chancen aber ganz gut, dass es auch weiterhin funktioiniert. :wink:

Ich würde die volume mounts allerdings nicht manuell anlegen, da es dabei u.U. zu Berechtigungsproblemen kommen kann.
Es reicht aus, diese im docker-compose zu definieren. Docker legt diese dann automatisch beim ersten Start eines Containers an, sofern diese noch nicht existieren.

Bezüglich der Konfiguration in docker-compose solltest Du Dich dabei anfangs an Pi-holes Beispieldatei orientieren und dabei zusätzlich auch noch die empfohlenen Umgebungs-Variablen setzen.

Kannst du das beides näher erklären?
Ich versuche das mal zu beschreiben:
Ich bin in einem fernen Land und dessen Sprache nicht mächtig, möchte aber gerne ein Bier bestellen.
Mir reicht es, wenn ich das Bier bekomme. Dafür möchte ich nicht Land, Leute und Spache studieren.
Ich habe meine 'docker-compose.yaml' inzwischen wie folgt abgeändert:

version: "3.7"

services:
  pihole:
    image: pihole/pihole:latest
    container_name: 07_Pihole
    # For DHCP it is recommended to remove these ports and instead add: network_mode: "host"
    restart: unless-stopped    
    environment:
      TZ: Europe/Berlin
      WEBPASSWORD: raspi
      DNS1: 1.1.1.1
      DNS2: 1.0.0.1
    ports:
      - "53:53/tcp"
      - "53:53/udp"
      # DHCP Server Usage
      #- "67:67/udp"
      - "80:80/tcp"
      - "443:443/tcp"     
    # Volumes store your data between container upgrades
    volumes:
      #- ./data/pihole/conf/:/etc/pihole/
      #- ./data/dnsmasq.d/conf/:/etc/dnsmasq.d/
      - 07_Pihole_pihole:/etc/pihole/
      - 07_Pihole_dsnmasq.d:/etc/dnsmasq.d/
      # run `touch ./var-log/pihole.log` first unless you like errors
      # - './var-log/pihole.log:/var/log/pihole.log'
    dns:
      - 127.0.0.1
      - 1.1.1.1
    labels:
        com.centurylinklabs.watchtower.enable: "true"
    # Recommended but not required (DHCP needs NET_ADMIN)
    #   https://github.com/pi-hole/docker-pi-hole#note-on-capabilities
    #cap_add:
    #  - NET_ADMIN
    networks:
      - 07_Pihole_net

volumes:
  07_Pihole_pihole:
    name: "07_Pihole_pihole"
  07_Pihole_dsnmasq.d:
    name: "07_Pihole_dsnmasq.d"

networks:
  07_Pihole_net:
    name: "07_Pihole_net"
    internal: false
    driver: bridge
    driver_opts:
      com.docker.network.bridge.name: br-pihole

Ich finde sie Übersicht im Portainer so (container, volumes, network nummeriert und aufgeräumt) besser, als wenn da irgendwelche automatisch generierten Namen auftauchen, die für mich nicht nachvollziehbar sind.

Was könnte ich da jetzt konkret noch besser machen?

Beste Grüße,
Chris

This topic was automatically closed 21 days after the last reply. New replies are no longer allowed.