Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Entwicklung
    4. VisualStudio Code und Devcontainer

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    VisualStudio Code und Devcontainer

    This topic has been deleted. Only users with topic management privileges can see it.
    • OliverIO
      OliverIO @Asgothian last edited by OliverIO

      @Asgothian
      so ähnlich habe ich das gemacht:
      1.) neuer Ordner irgendwo in Windows angelegt
      2) VS code lokal geöffnet (also normal geöffnet) und den obigen Ordner als Workspace geöffnet
      3) Dann Befehl "add Developement container configuration files" ausgeführt
      4) Dann die Inhalte gegen die 3 Dateien aus dem loxone-Adapter ersetzt und überall wo "loxone" steht gegen "dev" getauscht. Wenn man vis nutzen möchte sollte auch der port 8082 in docker-compose noch geöffnet werden
      5) Rebuild container ausgeführt (das erste mal dauert, da so 300-500MB heruntergeladen werden, festplattenspeicher sollte man auch ordentlich frei haben, da das endgültige Image ca 1,2GB groß ist und buanet ebenfalls noch da ist. )
      6) Ergebnis: Container startete und iobroker lief
      7) Dann create-adapter remote im workspace ordner ausgeführt
      8 ) dann workspace auf den neu erzeugten ordner gesetzt (open folder)
      9) dann rebuild container ausgeführt
      10) nun ist das problem, das zwar 2 container laufen (iobroker und nginx), aber iobroker nicht erreichbar ist und im gegensatz zu oben steht in der statuszeile von vscode nun "0 ports available" steht.

      Ergänzung nach weiteren 2h:
      also ich habe jetzt einige zeit mit der Konfiguration direkt aus dem create-adapter rumprobiert.
      die container laufen zwar, aber ich komme mit dem browser einfach nicht drauf.
      irgendwas mit der nginx-kombination für den reverse-proxy scheint da nicht zu stimmen.
      mit localhost:8081 oder auch localhost:80 kommt nichts.
      wenn ich localhost:8082 aufrufe kommt bad gateway.
      wenn ich noch das access_log und das error_log dazu konfiguriere, dann kommt da kein zugriff an. das errorlog zeigt keinen fehler an.

      daher switche ich nochmal zur oben beschriebenen Schrittanleitung bis Schritt 7 um, da funktioniert für mich alles. auch die admin-oberfläche

      Was ist nochmal der Grund warum der nginx als reverse proxy hier eingesetzt wird?

      sorry für den langen post, habe aber die Schrittanleitung etwas ausgebaut, damit andere das ebenfalls nachvollziehen können.

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

        @OliverIO sagte in VisualStudio Code und Devcontainer:

        Man braucht aber dann auf jeden Fall eine Node-Installation unter Windows (und nur dafür)

        Sofern du im devcontainer weiterarbeiten willst, ist das korrekt.

        @OliverIO sagte in VisualStudio Code und Devcontainer:

        Was ist nochmal der Grund warum der nginx als reverse proxy hier eingesetzt wird?

        Damit du im Devcontainer die Admin-UI bearbeiten kannst, ohne bei jeder Änderung ein iobroker upload machen zu müssen. Mit dem reverse proxy kommt die Admin-UI für deinen Adapter direkt aus dem Dev-Verzeichnis.

        @OliverIO sagte in VisualStudio Code und Devcontainer:

        irgendwas mit der nginx-kombination für den reverse-proxy scheint da nicht zu stimmen.
        mit localhost:8081 oder auch localhost:80 kommt nichts.
        wenn ich localhost:8082 aufrufe kommt bad gateway.

        Teile doch mal deine Konfiguration inkl. docker-compose.yml und welche Ports ioBroker (web/vis/...) in seinem container nutzt. Da passt garantiert was nicht zusammen.

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

          @AlCalzone
          Ich habe initial ja nur den adaptercreator ausgeführt und den container gestartet, sonst nichts.
          Zur Sicherheit habe ich das soeben komplett nochmal von vorne gemacht.
          Ich selbst habe nichts an den Dateien verändert.
          Ergebnis:
          Gemäß docker Desktop laufen die beiden container iobroker+nginx
          iobroker ist über localhost:8081 aber nicht erreichbar

          Wenn du noch weitere Dateien benötigst, sag Bescheid.

          Datei .devcontainer

          // For format details, see https://aka.ms/vscode-remote/devcontainer.json or this file's README at:
          // https://github.com/microsoft/vscode-dev-containers/tree/v0.101.1/containers/docker-existing-docker-compose
          // If you want to run as a non-root user in the container, see .devcontainer/docker-compose.yml.
          {
              "name": "ioBroker Docker Compose",
          
              // Update the 'dockerComposeFile' list if you have more compose files or use different names.
              // The .devcontainer/docker-compose.yml file contains any overrides you need/want to make.
              "dockerComposeFile": [ "docker-compose.yml" ],
          
              // The 'service' property is the name of the service for the container that VS Code should
              // use. Update this value and .devcontainer/docker-compose.yml to the real service name.
              "service": "iobroker",
          
              // The optional 'workspaceFolder' property is the path VS Code should open by default when
              // connected. This is typically a file mount in .devcontainer/docker-compose.yml
              "workspaceFolder": "/workspace",
          
              // Set *default* container specific settings.json values on container create.
              "settings": {},
          
              // Add the IDs of extensions you want installed when the container is created.
              "extensions": ["dbaeumer.vscode-eslint"],
          
              // Uncomment the next line if you want start specific services in your Docker Compose config.
              // "runServices": [],
          
              // Uncomment the next line if you want to keep your containers running after VS Code shuts down.
              // "shutdownAction": "none",
          
              // When creating the container, delete unnecessary adapters, disable error reporting, set the license as confirmed, and install/update this adapter
              "postCreateCommand": "iob del discovery && iob plugin disable sentry && iob object set system.config common.licenseConfirmed=true && NPM_PACK=$(npm pack) && iob url \"$(pwd)/$NPM_PACK\" --debug && rm \"$NPM_PACK\""
          
              // Uncomment to connect as a non-root user. See https://aka.ms/vscode-remote/containers/non-root.
              //"remoteUser": "iobroker"
          }
          

          Datei docker-compose

          version: '3'
          
          services:
              iobroker:
                  build: ./iobroker
                  container_name: iobroker-mytest
                  hostname: iobroker-mytest
                  # This port is only internal, so we can work on this while another instance of ioBroker is running on the host
                  expose:
                      - 8081
                  volumes:
                      - ..:/workspace:cached
                      - iobrokerdata-mytest:/opt/iobroker
                  environment:
                      - LANG=en_US.UTF-8
                      - LANGUAGE=en_US:en
                      - LC_ALL=en_US.UTF-8
                      - TZ=Europe/Berlin
                      - SETGID=1000
          
              # Reverse proxy to load up-to-date admin sources from the repo
              nginx:
                  image: nginx:latest
                  depends_on:
                      - iobroker
                  links:
                      - iobroker
                  container_name: nginx-mytest
                  volumes:
                      - ./nginx/nginx.conf:/etc/nginx/nginx.conf
                      - ..:/workspace:cached
                  ports:
                      # Make the ioBroker admin available under http://localhost:8082
                      - 8082:80
          
          volumes:
              iobrokerdata-mytest:
          

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

            @OliverIO sagte in VisualStudio Code und Devcontainer:

            iobroker ist über localhost:8081 aber nicht erreichbar

            Nein, er ist unter :8082 erreichbar. Steht auch in der README im .devcontainer-Ordner 😉 UND in docker.compose.yml

            # Make the ioBroker admin available under http://localhost:8082
            

            Ist deswegen nicht der Standardport, weil es sein kann, dass schon eine Instanz unter 8081 läuft.

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

              @Asgothian sagte in VisualStudio Code und Devcontainer:

              ebnis ist aber das gleiche - ich hab keinen Adapter für d

              Hi, bei mir klappt das Debuggen nicht, es kommt ein Fehler:

              /usr/bin/node ./main.js --debug 0
              Process exited with code 6
              

              meine launch.json:

              {
                  // Use IntelliSense to learn about possible attributes.
                  // Hover to view descriptions of existing attributes.
                  // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
                  "version": "0.2.0",
                  "configurations": [
                      
                      { 
                           "type": "node",
                          "request": "launch",
                          "name": "Launch TypeScript Adapter",
                          "skipFiles": ["<node_internals>/**"],
                          "program": "${workspaceFolder}/main.js",
                          "args": ["--debug", "0"],
                          "outFiles": ["${workspaceFolder}/build/**/*.js"]
                      }
                  ]
              }
              

              jemand eine Idee?
              E

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

                @AlCalzone

                @OliverIO sagte in VisualStudio Code und Devcontainer:

                wenn ich localhost:8082 aufrufe kommt bad gateway.

                auch hier unverändert, wie ich oben geschrieben habe.

                EdgarM AlCalzone 2 Replies Last reply Reply Quote 0
                • EdgarM
                  EdgarM Developer @OliverIO last edited by EdgarM

                  @OliverIO Bei mir lag da daran, dass auf dem Rechner schon lokal iobroker lief, und er Post 8082 für den web adapter reserviert war.

                  Habe den Port in der docker-compose.yml einfach auf 9092 gesetzt, dann ging es auch:

                      nginx:
                          image: nginx:latest
                          depends_on:
                              - iobroker
                          links:
                              - iobroker
                          container_name: nginx-countstates
                          volumes:
                              - ./nginx/nginx.conf:/etc/nginx/nginx.conf
                              - ..:/workspace:cached
                          ports:
                              # Make the ioBroker admin available under http://localhost:8082
                              - 9082:80
                  
                  1 Reply Last reply Reply Quote 1
                  • AlCalzone
                    AlCalzone Developer @OliverIO last edited by

                    @OliverIO sagte in VisualStudio Code und Devcontainer:

                    auch hier unverändert, wie ich oben geschrieben habe.

                    Dann zeig mir bitte noch deine nginx.conf

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

                      Bei mir war es ein echter Fehler im Adapter.

                      grüße
                      E

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

                        @AlCalzone

                        Auch hier nix verändert, stammt alles so aus dem adapter-creator.

                        nginx.conf

                        worker_processes 1;
                        events { worker_connections 1024; }
                        
                        http {
                          sendfile           on;
                          keepalive_timeout  65;
                        
                          server {
                            listen 80;
                        
                            location / {
                              proxy_redirect off;
                              proxy_pass     http://iobroker:8081;
                            }
                        
                            location /socket.io/ {
                              proxy_pass         http://iobroker:8081;
                              proxy_http_version 1.1;
                              proxy_set_header   Upgrade $http_upgrade;
                              proxy_set_header   Connection "Upgrade";
                            }
                        
                            location /adapter/mytest/ {
                              alias /workspace/admin/;
                            }
                            access_log /var/log/nginx/accessx.log combined;
                          }
                        }
                        error_log /var/log/nginx/errorx.log warn;
                        

                        Ich denke nicht das es an nginx liegt, siehe mein nächsten Post

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

                          @EdgarM Auf dem Windowsrechner läuft sonst kein weiterer Server und iobroker lief da noch nie, da mein Produktionssystem auf einem NUC läuft.

                          @AlCalzone
                          ich hab nun ein wenig weiter recherchiert und im iobroker log die folgende Warnung gefunden:

                          warn: host.iobroker-mytest does not start any instances on this host
                          

                          Nach ein bisschen Suche im Forum soll man den admin adapter installieren

                          iobroker add admin
                          

                          Danach klappt der Zugriff auf iobroker, aber ich habe nun 2 admin instanzen (0=inaktiv und 1=aktiv)
                          an was könnte das liegen?

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

                            @OliverIO sagte in VisualStudio Code und Devcontainer:

                            host.iobroker-mytest does not start any instances on this host

                            Das gibts eigentlich nur, wenn sich der Hostname ändert. Ist mir beim Devcontainer noch nicht untergekommen, vielleicht ist das wegen deiner Container-zu-Container-Migration passiert?

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

                              @AlCalzone
                              kann natürlich alles sein, aber ich habe visual studio mit dem ordner, der durch den adapter creator erzeugt wurde neu geöffnet und den container mit diesen Informationen neu erzeugt (rebuild). Wo stehen den in den ganzen Dateien noch irgendwelche hostnamen?

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

                                @OliverIO Nicht im Adapter, aber in dem ioBroker, der im Container läuft. Der ordnet Instanzen bestimmten Hosts zu, was bei manuellen Umzügen gern mal für "does not start any instances" sorgt.

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

                                  @AlCalzone
                                  aber es gibt doch nur einen iobroker container und der wird auf basis der konfigurationsdaten, welche mit dem adapter-creator erzeugt werden, komplett, auf basis von buanet und den weiteren Anweisungen, neu aufgebaut. der erste container hat doch damit nix mehr zu tun.
                                  wenn ich ins logfile schaue dann ist der hostname genau so wie es im docker-compose angegeben ist.

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

                                    @OliverIO Einfache Lösung: mach mal "Rebuild Remote Container" in VS Code. Schlimmstenfalls musst du noch das Volumen löschen, aber das sollte eigentlich automatisch geschehen.

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

                                      @UncleSam
                                      auch schon gemacht. (also rebuild, oder container gelöscht und sogar die images gelöscht und neu runtergeladen.)
                                      wie gesagt. ich verwende unverändert die daten die der adapter-creator erzeugt und baue daraus ein container.
                                      iobroker startet erst, wenn ich manuell einen admin adapter hinzufüge (dann habe ich 2, wie oben beschrieben), ohne das Fehlermeldung wie oben beschrieben.

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

                                        @OliverIO Komisch, ich habe genau dasselbe vorgestern gemacht und das funktioniert. Kannst du sonst mal diesen Adapter herunterladen und versuchen, ob du den in Devcontainer öffnen kannst?
                                        https://github.com/UncleSamSwiss/ioBroker.luxtronik2

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

                                          @UncleSam
                                          Ergebnis ist identisch. Bei Aufruf von http://localhost:8082/ kommt Bad gateway.
                                          Wenn ich dann auf der console mir das logfile anschaue, dann wieder diese Fehlermeldung

                                          warn: host.iobroker-luxtronik2 does not start any instances on this host
                                          

                                          wenn ich dann noch einen admin adapter hinzufüge mit iob add admin
                                          kann ich über den browser den iobroker aufrufen, hab dann 2 admin instanzen 0 und 1.
                                          0 ist inaktiv

                                          wenn es bei euch funktioniert, muss es ja noch an irgendwelchen Einstellungen liegen. Aber eigentlich ist doch alles in docker gekapselt

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

                                            Nachtrag: Es scheint an postCreateCommand zu liegen.
                                            Kommentiere ich diese komplett aus, dann läuft iobroker auf anhieb.
                                            Sobald irgendein 'Befehl drin steht, dann ist es vorbei.
                                            In einem anderen Thread, ich meine da ging es zum Zeitpunkt der Erstellung des buanet-docker-images, hat @AlCalzone geschrieben, das jeder einzelne Befehl intern in einem virtuellen Container ausgeführt wird und deswegen die Hostname sich dort jeweils ändert und es dadruch zu Problemen kommt da iobroker denk es sei ein multihost system und daher die obige warnung ausgibt.

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            820
                                            Online

                                            31.7k
                                            Users

                                            79.8k
                                            Topics

                                            1.3m
                                            Posts

                                            adapter entwicklung docker remote vscode
                                            13
                                            127
                                            13565
                                            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