Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Einsteigerfragen
    4. Installation
    5. Docker iobroker und Wireguard

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Docker iobroker und Wireguard

    This topic has been deleted. Only users with topic management privileges can see it.
    • W
      wusa last edited by

      Hallo zusammen,

      ich habe mir einen VPS gekauft um ein wenig zu testen und neues zu lernen.

      Mir wurde empfohlen, einen Docker Container zu machen und darin Wireguard zu nutzen,
      Außerdem soll ich iobroker auch als Docker Container nutzen und die zwei Container miteinander zu verbinden.

      Ich bin jetzt leider an einem Punkt, an dem ich nicht mehr weiter komme.
      Der Wireguard Tunnel steht mit eine Site2Site Verbindung.

      Der Wireguard Tunnel selbst hat die IP 192.168.77.5/32
      Der Wireguard Container hat das Netz 172.18.0.0/16 bzw. die IP 172.18.0.2 bekommen.

      Der Docker Container hat die IP 172.18.0.3 bekommen.

      Ich komme jetzt durch den Tunnel nur auf den Wireguard Container. Allerdings nicht auf den iobroker Container.

      Rufe ich allerdings die Docker Console von einem Container auf, dann kann ich den anderen Container pingen.

      Wie schaffe ich es die 2 Container zu verbinden und auch durch den Tunnel beide zu erreichen?
      Reicht es das Gateway von iobroker auf den Wireguard Container zu ändern oder wie müsste ich hier vorgehen?
      Danke

      OliverIO 1 Reply Last reply Reply Quote 0
      • OliverIO
        OliverIO @wusa last edited by OliverIO

        @wusa

        Du kannst für einen Container verschiedene Netzwerk Modes zu ordnen.
        Die wichtigsten, sind der Host Mode, der Bridge Mode und der macvlan Mode

        Bei Host wird das Netzwerk des Containers zu 100% auf den Host gemappt. Also alle notwendigen Ports sind dann auf dem Host auch belegt. Dadurch funktioniert dann auch evtl. notwendiges broadcast. Ein ummachen ist nicht möglich.

        Bei Bridge werden nur die angegebenen Ports auf den Host gemappt. Dort kann man dann auch die Nummern ummappen. Broadcast Funktionen gehen hier nicht.

        Bei macvlan kann man dem Container eine ip aus dem lan zuordnen. Hier hat man am wenigsten Probleme mit Mapping Konflikte und broadcast funktioniert ebenfalls, ist aber etwas aufwändiger zum konfigurieren, da ein eigenes macvlan Network angelegt werden muss und die ipadressen nicht durch den Router dhcp vergeben werden dürfen.

        Der Vorteil von docker, neben der Applications kapselung ist auch die netzwerkkapselung (nicht im Host Mode). D.h. Du kannst sehr genau vorgeben welcher Container mit welchem Container kommunizieren darf. Du kannst beliebig viele Netzwerke definieren. Das ist dann im Container so wie wenn mehrere Netzwerkkarten eingesteckt sind.

        Du hast jetzt leider nichts zu deiner Konfiguration geschrieben. Wenn du Hostmode verwendest musst eigentlich nichts machen. Bei Bridge Mode müssen beide Container mit dem Bridge Network verbunden sein oder einem eigenen definierten. Aber am Anfang nicht unbedingt notwendig.

        Verwende für die Konfiguration keine ip Adressen, sondern immer nur den containername. Dieser wird automatisch als hostname angelegt.
        Wenn 2 Container im gleichen Netz sind und du dichnin einen Container auf die Shell begibst kannst du den anderen Container dann unter dem containernamen anpingen.

        Die 172er ip Adressen sind immer nur die internen Adressen mit denen du nix anfangen kannst. Dein Container hat bei Host und Bridge immer die ip Adresse deines Hosts, bei macvlan das was man konfiguriert.

        Für eine übersichtlichere Konfiguration empfehle ich docker compose (ist schon bei docker mit dabei)
        Für eine gui zur besseren leichteren Verwaltung empfehle ich portainer. Lässt sich auch als Container installieren.

        W 1 Reply Last reply Reply Quote 0
        • W
          wusa @OliverIO last edited by wusa

          @oliverio

          Bezüglich den internen Adressen, dachte ich, dass man diese für die Vernetzung verwenden sollte?

          Bevor ich jetzt meine ganze Konfig poste, kann du mir sagen, was das beste vorgehen wäre?
          Dann versuche ich das umzusetzen.

          Bezüglich der Netzwerkmodis, hatte ich noch nichts zu tun. Daher ist macvlan Neuland für mich.

          Aber da ich gerne teste, würde ich mich über das beste Setup freuen und ich versuche mich daran.

          Docker Compose und Portainer laufen bereits. Die grafische Oberfläche gefällt mir übrigens auch sehr 😉

          OliverIO 2 Replies Last reply Reply Quote 0
          • OliverIO
            OliverIO @wusa last edited by

            @wusa

            Zur Konfiguration von Container zu Container, immer den Hostnamen/Container Namen verwenden. Für Konfiguration außerhalb von docker nimmst du die IP Adresse des Hosts beziehungsweise bei macvlan halt dann die konfigurierte IP

            Hier ein konkretes Beispiel
            Du hast einen ioBroker Container und
            Du hast beispielsweise eine MySQL Datenbank als separaten Container
            Beide sind über das gleiche Netzwerk miteinander verbunden.
            Wenn du nun im ioBroker den SQL Adapter konfigurieren willst, dann gibst du nicht die IP Adresse des Containers an, sondern einfach den Containern Namen. Die finden sich dann

            W 1 Reply Last reply Reply Quote 0
            • W
              wusa @OliverIO last edited by

              @oliverio

              Ok das verstehe ich.

              Aber was wäre in meinem Fall das beste vorgehen?
              Wireguard läuft im Container. Darin ist eine Site2Site Verbindung.

              Jetzt will ich den iobroker Container erreichen. Wie muss ich vorgehen, damit ich durch den Tunnel den iobroker erreiche?

              1 Reply Last reply Reply Quote 0
              • OliverIO
                OliverIO @wusa last edited by OliverIO

                @wusa
                Hier mal ein Beispiel meinre docker-compose definition.
                durch dies werden 2 container erzeugt. einmal iobrokertest und einmal redis5
                wenn ich den iobroker für redis konfiguriere muss ich anstatt einer ip adresse einfach nur redis5 eintragen. dieser name ist innerhalb des netzwerks iobrokertest eindeutig diesem container zugeordnet. welche konkrete ip adresse das dann ist, kann dir egal sein (wahrscheinlich schon eine von diesen 172er.
                das ist zwar ein macvlan netz, aber bis auf die unterdefinition zur ipadresse ist das identisch zu einer bridge mode definition.
                bei macvlan muss man ebenfalls die zu öffnenden ports nicht angegeben. bei bridge muss man das allerdings.

                version: '3'
                
                services:
                  iobrokertest:
                    container_name: iobrokertest
                    image: buanet/iobroker:latest-v8
                    hostname: iobrokertest
                    restart: always
                    volumes:
                      - /home/iobroker/docker/volume/iobroker/test/iobroker:/opt/iobroker
                    environment:
                      DEBUG: "true"
                    networks:
                      macvlanipv6:
                        ipv4_address: 192.168.1.85
                      iobrokertest:
                  redis5:
                    image: "redis:alpine"
                    volumes:
                      - /home/iobroker/docker/volume/iobroker/test/redis:/data
                    networks:
                      iobrokertest:
                networks:
                  macvlanipv6:
                    external: true
                  iobrokertest:
                  
                
                W 2 Replies Last reply Reply Quote 0
                • W
                  wusa @OliverIO last edited by

                  @oliverio

                  services:
                    wireguard:
                      image: lscr.io/linuxserver/wireguard:latest
                      container_name: wireguard
                      cap_add:
                        - NET_ADMIN
                        - SYS_MODULE #optional
                      environment:
                        - PUID=1000
                        - PGID=1000
                        - TZ=Europe/Berlin
                       
                      volumes:
                        - /root/docker/wg-s2s/config:/config
                  #      - /lib/modules:/lib/modules #optional
                  #    ports:
                  #      - 13231:13231/udp
                      sysctls:
                        - net.ipv4.conf.all.src_valid_mark=1
                      restart: unless-stopped
                  
                  
                  
                    iobroker:
                      restart: always
                      image: buanet/iobroker:latest
                      container_name: iobroker
                      hostname: iobroker
                      ports:
                        - "8081:8081"
                      volumes:
                        - /root/docker/iobroker:/opt/iobroker
                  

                  So sieht momentan meine Compose Datei aus.
                  In dem Wireguard Container ist meine wg.conf Datei hinterlegt. So komme ich auf den Container. Allerdings nicht weiter auf den iobroker. Vielleicht lässt sich das mit dem macvlan lösen?

                  1 Reply Last reply Reply Quote 0
                  • W
                    wusa @OliverIO last edited by

                    @oliverio
                    Oder anders gefragt, wie lege ich -richtig- ein macvlan an?
                    Dann baue ich deine Compose mit meinen Sachen mal nach.

                    1 Reply Last reply Reply Quote 0
                    • OliverIO
                      OliverIO last edited by

                      @wusa

                      ne das dürfte an deiner wireguard konfiguration liegen.
                      prüfe mal die folgenden punkte aus diesem post

                      https://discourse.linuxserver.io/t/wireguard-server-access-homenetwork/2046

                      es steht zwar nicht so deutlich dran, aber die einstellung zu
                      net.ipv4.ip_forward müsste auf dem host gemacht werden
                      das verhindert, das der host pakete an andere rechner weiterleitet
                      https://linuxconfig.org/how-to-turn-on-off-ip-forwarding-in-linux
                      der host müsste dann neu gestartet werden.

                      W 1 Reply Last reply Reply Quote 0
                      • W
                        wusa @OliverIO last edited by

                        @oliverio

                        Ich bin mit deinen Links leider nicht weiter gekommen.
                        Ich habe allerdings nochaml das Internet durchsucht und bin auf folgende Lösung gekommen:

                        SaveConfig = true
                        PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
                        PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

                        Sobald ich dies bei Interface eingefügt habe, funktioniert jetzt glaube ich alles wie gewollt.

                        OliverIO 1 Reply Last reply Reply Quote 0
                        • OliverIO
                          OliverIO @wusa last edited by

                          @wusa

                          Ok sieht ziemlich genau nach der Konfiguration aus dem Post aus

                          359c3f0d-0fc9-4b5b-9993-b01a5aeb1156-image.png

                          1 Reply Last reply Reply Quote 0
                          • First post
                            Last post

                          Support us

                          ioBroker
                          Community Adapters
                          Donate

                          918
                          Online

                          31.7k
                          Users

                          79.7k
                          Topics

                          1.3m
                          Posts

                          2
                          11
                          190
                          Loading More Posts
                          • Oldest to Newest
                          • Newest to Oldest
                          • Most Votes
                          Reply
                          • Reply as topic
                          Log in to reply
                          Community
                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                          The ioBroker Community 2014-2023
                          logo