Seite 1 von 2

oh3 im Docker mit influxdb

Verfasst: 20. Mai 2022 20:01
von scotty
Hallo Zusammen,

bei mir läuft neben OH3 im Docker auch Influxdb2.1 ebenfalls in einem Container. Mir ist es allerdings bis jetzt noch nicht gelungen, die beiden Programme zusammen zu bringen.
Kennt sich jemand damit aus oder hat gar eine Anleitung für mich?

Hier mal einige Details:
OH3 läuft im Host-Modus
Influxdb im Bridge-Modus (die Programme arbeiten nicht im gleichen Netzwerk, vermutlich der erste Fehler)
In den Einstellungsmöglichkeiten von 0H3 wird unter Persistence lediglich RRD4j angeboten

Es gibt immer wieder mal Probleme, wenn es um die Zusammenarbeit mit Programmen von Drittanbieter geht. Meine Vermutung ist die, weil OH3 im Host-Modus arbeitet.

openhab.json:

Code: Alles auswählen

{
   "CapAdd" : [],
   "CapDrop" : [],
   "cmd" : "gosu openhab tini -s ./start.sh",
   "cpu_priority" : 50,
   "enable_publish_all_ports" : false,
   "enable_restart_policy" : true,
   "enabled" : false,
   "env_variables" : [
      {
         "key" : "PATH",
         "value" : "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
      },
      {
         "key" : "CRYPTO_POLICY",
         "value" : "limited"
      },
      {
         "key" : "EXTRA_JAVA_OPTS",
         "value" : "-Duser.timezone=Europe/Berlin"
      },
      {
         "key" : "EXTRA_SHELL_OPTS",
         "value" : ""
      },
      {
         "key" : "GROUP_ID",
         "value" : "9001"
      },
      {
         "key" : "JAVA_VERSION",
         "value" : "11"
      },
      {
         "key" : "KARAF_EXEC",
         "value" : "exec"
      },
      {
         "key" : "LC_ALL",
         "value" : "de_DE.UTF-8"
      },
      {
         "key" : "LANG",
         "value" : "de_DE.UTF-8"
      },
      {
         "key" : "LANGUAGE",
         "value" : "de_DE.UTF-8"
      },
      {
         "key" : "OPENHAB_BACKUPS",
         "value" : "/openhab/userdata/backup"
      },
      {
         "key" : "OPENHAB_CONF",
         "value" : "/openhab/conf"
      },
      {
         "key" : "OPENHAB_HOME",
         "value" : "/openhab"
      },
      {
         "key" : "OPENHAB_HTTP_PORT",
         "value" : "55555"
      },
      {
         "key" : "OPENHAB_HTTPS_PORT",
         "value" : "66666"
      },
      {
         "key" : "OPENHAB_LOGDIR",
         "value" : "/openhab/userdata/logs"
      },
      {
         "key" : "OPENHAB_USERDATA",
         "value" : "/openhab/userdata"
      },
      {
         "key" : "OPENHAB_VERSION",
         "value" : "3.2.0"
      },
      {
         "key" : "USER_ID",
         "value" : "9001"
      },
      {
         "key" : "JAVA_HOME",
         "value" : "/usr/lib/jvm/default-jvm"
      }
   ],
   "exporting" : false,
   "id" : "b5cd929d020ad8191cec3c4a354639191b0add162f8f7ec10f84eedcec8875e2",
   "image" : "openhab/openhab:3.2.0",
   "is_ddsm" : false,
   "is_package" : false,
   "links" : [],
   "memory_limit" : 6442450944,
   "name" : "openhab3",
   "network" : [
      {
         "driver" : "host",
         "name" : "host"
      }
   ],
   "network_mode" : "host",
   "port_bindings" : [],
   "privileged" : false,
   "shortcut" : {
      "enable_shortcut" : false,
      "enable_status_page" : false,
      "enable_web_page" : false,
      "web_page_url" : ""
   },
   "use_host_network" : true,
   "volume_bindings" : [
      {
         "host_volume_file" : "/docker/openhab/conf",
         "mount_point" : "/openhab/conf",
         "type" : "rw"
      },
      {
         "host_volume_file" : "/docker/localtime",
         "mount_point" : "/etc/localtime",
         "type" : "ro"
      },
      {
         "host_volume_file" : "/docker/openhab/addons",
         "mount_point" : "/openhab/addons",
         "type" : "rw"
      },
      {
         "host_volume_file" : "/docker/openhab/speedtest",
         "mount_point" : "/usr/bin/speedtest",
         "type" : "rw"
      },
      {
         "host_volume_file" : "/docker/openhab/userdata",
         "mount_point" : "/openhab/userdata",
         "type" : "rw"
      }
   ]
}
influxdb.json:

Code: Alles auswählen

{
   "CapAdd" : [],
   "CapDrop" : [],
   "cmd" : "influxd",
   "cpu_priority" : 50,
   "enable_publish_all_ports" : false,
   "enable_restart_policy" : true,
   "enabled" : false,
   "env_variables" : [
      {
         "key" : "PATH",
         "value" : "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
      },
      {
         "key" : "GOSU_VER",
         "value" : "1.12"
      },
      {
         "key" : "INFLUXDB_VERSION",
         "value" : "2.1.1"
      },
      {
         "key" : "INFLUX_CLI_VERSION",
         "value" : "2.2.1"
      },
      {
         "key" : "INFLUX_CONFIGS_PATH",
         "value" : "/etc/influxdb2/influx-configs"
      },
      {
         "key" : "INFLUXD_INIT_PORT",
         "value" : "9999"
      },
      {
         "key" : "INFLUXD_INIT_PING_ATTEMPTS",
         "value" : "600"
      },
      {
         "key" : "DOCKER_INFLUXDB_INIT_CLI_CONFIG_NAME",
         "value" : "default"
      },
      {
         "key" : "INFLUXDB_WRITE_USER_PASSWORD",
         "value" : "openhab"
      },
      {
         "key" : "INFLUXDB_WRITE_USER",
         "value" : "openhab"
      },
      {
         "key" : "INFLUXDB_READ_USER_PASSWORD",
         "value" : "grafana"
      },
      {
         "key" : "INFLUXDB_READ_USER",
         "value" : "grafana"
      },
      {
         "key" : "INFLUXDB_ADMIN_PASSWORD",
         "value" : "007"
      },
      {
         "key" : "INFLUXDB_ADMIN_USER",
         "value" : "bond"
      },
      {
         "key" : "INFLUXDB_HTTP_AUTH_ENABLED",
         "value" : "TRUE"
      },
      {
         "key" : "INFLUXDB_DB",
         "value" : "OpenHAB3_DB"
      }
   ],
   "exporting" : false,
   "id" : "f8d6dc2f643c6caf87064e33eb73e224108b1e070109649b3dbcbb1538b6c1a1",
   "image" : "influxdb:2.1",
   "is_ddsm" : false,
   "is_package" : false,
   "links" : [],
   "memory_limit" : 0,
   "name" : "influxdb1",
   "network" : [
      {
         "driver" : "bridge",
         "name" : "bridge"
      }
   ],
   "network_mode" : "bridge",
   "port_bindings" : [
      {
         "container_port" : 8086,
         "host_port" : 38065,
         "type" : "tcp"
      }
   ],
   "privileged" : true,
   "shortcut" : {
      "enable_shortcut" : false,
      "enable_status_page" : false,
      "enable_web_page" : false,
      "web_page_url" : ""
   },
   "use_host_network" : false,
   "volume_bindings" : [
      {
         "host_volume_file" : "/docker/influxdb",
         "mount_point" : "/var/lib/influxdb",
         "type" : "rw"
      }
   ]
}

Re: oh3 im Docker mit influxdb

Verfasst: 20. Mai 2022 21:12
von udo1toni
Nein, das hat nichts mit dem Host Mode zu tun.

Der Host Mode bedeutet lediglich, dass der Container eine eigene IP aus dem Subnetz bekommt, an dem auch der Host angeschlossen ist. Die Adresse wird gewöhnlich per DHCP zugewiesen, dafür ist dann normalerweise Dein Router zuständig.
Der Bridge Mode nutzt stattdessen ein eigenes Subnetz, der Host routet die konfigurierten Ports. Das heißt, Du musst als IP die IP des Docker Host angeben, in Kombination mit dem korrekten Port. Der Container hat aber eine IP aus einem anderen Adressbereich (meist ein Klasse-B-Netz, 172.[16-31].0.0). Diese IP ist aber nicht die, welche Du in openHAB angibst. Sie ist höchstens interessant, wenn Du einen anderen Container aufsetzt, der bridged im selben Subnetz läuft.

Natürlich musst Du die Influxdb Persistence installieren, um openHAB an die Datenbank anbinden zu können.

Re: oh3 im Docker mit influxdb

Verfasst: 20. Mai 2022 22:00
von scotty
udo1toni hat geschrieben: 20. Mai 2022 21:12
Natürlich musst Du die Influxdb Persistence installieren, um openHAB an die Datenbank anbinden zu können.
Das Problem ist doch, dass nur RRD4j zur Verfügung steht. Wie lässt sich das ändern?

Re: oh3 im Docker mit influxdb

Verfasst: 20. Mai 2022 22:35
von peter-pan
scotty hat geschrieben: 20. Mai 2022 22:00 Das Problem ist doch, dass nur RRD4j zur Verfügung steht. Wie lässt sich das ändern?
Ich bin da auch nicht so drin, aber schau mal unter Einstellungen/...other Add-ons. Da kann man influxDB-Persistence installieren. Ist es das was du suchst ?

Re: oh3 im Docker mit influxdb

Verfasst: 20. Mai 2022 22:56
von scotty
Ja genau, vielen Dank. Manchmal sieht man den Wald...

Brauche ich dann den Container RRD4j noch? So wie ich das sehe, wäre das Programm doch dann doppelt vorhanden, oder?

Re: oh3 im Docker mit influxdb

Verfasst: 20. Mai 2022 23:13
von udo1toni
Einen Container brauchst Du für rrd4j nicht, das ist Bestandteil von openHAB.

Grundsätzlich: Alles, was über die Oberfläche von openHAB installiert wird, sind Addons.

rrd4j nimmt hier aber eine Sonderstellung ein (genau wie mapdb), denn diese Persistence läuft ohne externe Software. Im Gegensatz dazu muss für InfluxDB nicht nur das Addon installiert werden, sondern auch InfluxDB selbst (und bei jdbc muss die gewünschte Datenbank Engine zusätzlich zum Binding installiert werden).

Wenn man openHABian kennt, kann man auch folgendes als Faustregel nutzen: Reicht es unter openHABian, etwas in openHAB einzurichten, so reicht es auch mit Docker. Muss hingegen in openHABian einer der Menüpunkte ausgewählt werden, um ein Zusatzpaket einzurichten, so wird man in Docker einen zusätzlichen Container benötigen.

Re: oh3 im Docker mit influxdb

Verfasst: 21. Mai 2022 01:04
von scotty
Sorry Udo, ich habe mich verschrieben, es sollte heißen: brauche ich dann den Container InfluxDB noch?

Re: oh3 im Docker mit influxdb

Verfasst: 21. Mai 2022 05:27
von udo1toni
scotty hat geschrieben: 21. Mai 2022 01:04 Sorry Udo, ich habe mich verschrieben, es sollte heißen: brauche ich dann den Container InfluxDB noch?
Ah. Ja, InfluxDB hat nichts mit openHAB zu tun, muss also separat installiert sein.

Re: oh3 im Docker mit influxdb

Verfasst: 21. Mai 2022 14:16
von scotty
Ich denke, mit dieser Seite

https://www.laub-home.de/wiki/OpenHAB_3 ... stallation

eine gute Vorlage gefunden zu haben, um meine Idee zu verwirklichen.

Allerdings wundere ich mich, dass die Container im ' / ' -Bereich (also dort, wo das Dateisystem der NAS liegt) angelegt werden. Ich habe meine Container zur Zeit alle hier ' ~/ ' platziert. Unter Linux ist das die Home-Partition.

Kann mir das jemand von euch erklären?

Re: oh3 im Docker mit influxdb

Verfasst: 21. Mai 2022 16:58
von udo1toni
Grundsätzlich ist es erst mal egal, wo die Daten abgelegt werden. Ich arbeite z.B. mit Portainer, welches selbst in einem Container läuft :) und Portainer erzeugt ein Verzeichnis /portainer/ und legt alle Volumes usw. für die Container dort an.
Das home-Verzeichnis ist allerdings in meinen Augen eine eher mäßig gute Idee, weil damit eine Abhängigkeit zum User geschaffen wird, der den Container startet.