Admin-ui: 500 Internal Server Error

Bei mir ist es übrigens der gleiche Stacktrace:



         */
        private function _checkPwdFile()
        {
            // get the data-path
            if ($this->utils->checkManagementRunning(false)) {
                $hgPath = $this->hg->managementGetConfigurationEntry('main.conf','writeableDataPath');
                if (!$hgPath || $hgPath == '') {
                    $hgPath = $this->hg->managementGetConfigurationEntry('main.conf','dataPath');    
                }
            } else {
                // homegear-management is not running or busy right now, so let's do it the classic way

Wir reden also prinzipiell über die gleiche Fehlerursache.

root@019cb7ff-homegear:/# service homegear-management status
 * homegear-management is running
root@019cb7ff-homegear:/# cat /etc/homegear/main.conf | grep dataPath
# If dataPath is empty, the executable path is used.
# Default: dataPath =
dataPath = /var/lib/homegear
# Default: dataPathPermissions = 770
# dataPathPermissions = 770
# Default: dataPathUser =
# dataPathUser = homegear
# Default: dataPathGroup =
# dataPathGroup = homegear
# If writeableDataPath is empty, dataPath is used. Use this setting, if dataPath is not writeable. Homegear then writes
# Default: writeableDataPath = <dataPath>
# By default the database is stored in "dataPath". With databasePath you can set an alternative directory.
# By default database backups are stored in "dataPath". With databaseBackupPath you can set an alternative backup

Könnte es ein File-Permission-Problem sein? Wie könnte ich das ausschließen?

Es ist auch kein Problem der stable - Eine Installation auf Ubuntu Xenial funktioniert ohne Probleme.

1 Like

Es handelt sich irgendwo, zumindest bei mir wohl um ein Docker Problem (vermute ich).
Schreibe ich folg. Zeilen in mein Dockerfile kann ich das Problem reproduzieren:

Homegear installation - https://homegear.eu/downloads.html
RUN \
    apt update && \
    apt install -y apt-transport-https && \
    curl https://apt.homegear.eu/Release.key | apt-key add - && \
    echo 'deb https://apt.homegear.eu/Ubuntu/ xenial/' > /etc/apt/sources.list.d/homegear.list && \
    \
    apt update && \
    apt install -y homegear homegear-management homegear-adminui homegear-nodes-core homegear-nodes-extra homegear-homematicbidcos \
        homegear-homematicwired homegear-insteon homegear-max homegear-philipshue homegear-sonos homegear-kodi \
        homegear-ipcam homegear-beckhoff homegear-knx homegear-enocean homegear-intertechno homegear-nanoleaf \
        homegear-ccu homegear-mbus homegear-influxdb

Entferne ich diesen Part und führe EXAKT die gleichen Befehle innerhalb des Containers aus, kann ich die Admin UI ohne Probleme aufrufen.

@MiguelESP89: Nutzt du evtl. auch Docker?

Problem ist damit für mich gelöst.

Hm, aber eigentlich sollte Homegear ja auch komplett in nem Docker-Container laufen. Wenn ich die Tage mal etwas Luft hab, schau ich mir das mal an … bin jetzt allerdings auch nicht der Docker-Profi :wink:

– Micha

Ich hab das Installationsskript jetzt in die run.sh statt in das Dockerfile gepackt. Das ist zwar uneffizient, aber funktioniert zumindest :slight_smile:

Korrigiere, funktioniert doch nicht :frowning: - Ich hab echt keine Ahnung was Homegear gegen Docker hat. Exakt das gleiche Installationsskript funktioniert ohne Docker.

Das ist der komplette Docker Code:

Dockerfile:

#Downgrade to 16.04 --> https://forum.homegear.eu/t/varlibdpkginfohomegear-influxdbpostinst-line-31-insserv-command-not-found/3159
ARG BUILD_FROM=homeassistant/base-ubuntu:16.04
FROM ${BUILD_FROM}

# Homegear installation - https://homegear.eu/downloads.html
COPY run.sh /run.sh
RUN chmod +x /run.sh
ENTRYPOINT ["/bin/bash", "-c", "/run.sh"]

run.sh:

#!/bin/bash

#Homegear installation - https://homegear.eu/downloads.html
echo "[INFO] Install Homegear"
apt update 
apt install -y apt-transport-https 
curl https://apt.homegear.eu/Release.key | apt-key add - 
echo 'deb https://apt.homegear.eu/Ubuntu/ xenial/' > /etc/apt/sources.list.d/homegear.list 

apt update 
apt install -y homegear homegear-management homegear-adminui homegear-nodes-core homegear-nodes-extra homegear-homematicbidcos \
    homegear-homematicwired homegear-insteon homegear-max homegear-philipshue homegear-sonos homegear-kodi \
    homegear-ipcam homegear-beckhoff homegear-knx homegear-enocean homegear-intertechno homegear-nanoleaf \
    homegear-ccu homegear-mbus homegear-influxdb

echo "[INFO] Start Homegear"
service homegear start
service homegear-management start
service homegear-influxdb start
tail -f /var/log/homegear/homegear.log

Vielleicht hilft folgende Info schon einmal weiter: Homegear Management kommuniziert mit Homegear über IPC. Die Socketdatei ist standardmäßig /run/homegear/homegearIPC.sock. Auf diese Datei muss das Programm homegear-management zugreifen dürfen. Da letzteres mit Rootberechtigungen läuft (laufen muss, damit es seine Funktion erfüllen kann), sollte es im Normalfall keine Berechtigungsprobleme geben. Interessant wäre der Inhalt der homegear-management.log. Ich schaue mal, ob ich etwas Zeit finde, das Problem zu reproduzieren.

Viele Grüße

Sathya

Hallo @tringler,

mit dem Homegear-Dockerimage scheint schon einmal alles zu funktionieren. Ich habe leider auf homeassistant/base-ubuntu:16.04 keinen Zugriff. Kannst du mir das nicht funktionierende Dockerimage irgendwie zur Verfügung stellen?

Viele Grüße

Sathya

Hallo @tringler,

lösch mal beim Starten des Dockerimages die Datei /var/lib/homegear/homegear_updated. Diese sorgt dafür, dass homegear-management Homegear und sich selbst neustartet - was im Container nicht korrekt funktionert. Hilft das?

Viele Grüße

Sathya

Nachtrag: Symptomatik ist, der erste Containerstart klappt nicht. Wenn /var/lib/homegear extern liegt, klappt dann aber der zweite Containerstart. Weiterhin laufen die Prozesse homegear und homegear-management beim ersten Containerstart doppelt (ps -ejH -1).

Hallo @sathya,

das Image homeassistant/base-ubuntu:16.04 an sich funktioniert ja ohne Probleme, weil wenn ich es starte und die Installation manuell durchführe, habe ich kein Problem - Also einfach per Console die Installation starten:

#Homegear installation - https://homegear.eu/downloads.html
echo "[INFO] Install Homegear"
apt update 
apt install -y apt-transport-https 
curl https://apt.homegear.eu/Release.key | apt-key add - 
echo 'deb https://apt.homegear.eu/Ubuntu/ xenial/' > /etc/apt/sources.list.d/homegear.list 

apt update 
apt install -y homegear homegear-management homegear-adminui homegear-nodes-core homegear-nodes-extra homegear-homematicbidcos \
    homegear-homematicwired homegear-insteon homegear-max homegear-philipshue homegear-sonos homegear-kodi \
    homegear-ipcam homegear-beckhoff homegear-knx homegear-enocean homegear-intertechno homegear-nanoleaf \
    homegear-ccu homegear-mbus homegear-influxdb

und danach die Homegear Services starten.

Die gleiche Installation führe ich per Skript durch und bekomme den 500er Error. Siehe: https://github.com/tringler/hassio-ubuntu-base

Ich sehe auch folg. Fehler im Log: Error: Server could not start listening on port 2000: Cannot assign requested address - Könnte das mit dem Problem zusammenhängen?

Danke! /var/lib/homegear/homegear_updated vor dem Start der Daemons zu removen, scheint tatsächlich die Lösung zu sein :-o

1 Like

Perfekt, das wäre ja super. Auf längere Sicht muss init auch weg aus den Images (der Übeltäter hier). Zumindest für die Umstellung auf Debian Buster (und vermutlich auch neuere Ubuntu-Versionen) muss init eh weichen, da es meines Wissens in den Repositories nicht mehr verfügbar ist. Und systemd in den Containern ist keine Option.

Viele Grüße

Sathya

Korrekt. Siehe: /var/lib/dpkg/info/homegear-influxdb.postinst: line 31: insserv: command not found

2 Likes

Hallo,

entschuldigt, wenn ich dieses Thema wieder aufrolle.
Habe mir die Nightly mit Docker heruntergeladen. Homegear läuft auch und meine bestehende Konfiguration, wurde auch übernommen. Leider komme ich nicht in die Admin ui und kriege Server Error 500. Habe in .env “dev” aktiviert. kriege folgende Ausgabe:

An exception has been thrown during the rendering of a template (“Notice: Undefined variable: interfaces”).

Außerdem 2 ellenlange Stacktraces.
Habt ihr eine Idee, woran es liegen könnte?
Die Datei “Homegear_updated” gibt es bei mir gar nicht.

ErrorException:
Notice: Undefined variable: interfaces

at src/Controller/Admin/DashboardController.php:93
at App\Controller\Admin\DashboardController->getIpAddresses()
(vendor/symfony/http-kernel/HttpKernel.php:158)
at Symfony\Component\HttpKernel\HttpKernel->handleRaw(object(Request), 2)
(vendor/symfony/http-kernel/HttpKernel.php:80)
at Symfony\Component\HttpKernel\HttpKernel->handle(object(Request), 2, false)
(vendor/symfony/http-kernel/HttpCache/SubRequestHandler.php:85)
at Symfony\Component\HttpKernel\HttpCache\SubRequestHandler::handle(object(HttpKernel), object(Request), 2, false)
(vendor/symfony/http-kernel/Fragment/InlineFragmentRenderer.php:81)
at Symfony\Component\HttpKernel\Fragment\InlineFragmentRenderer->render(’/admin/_fragment?_path=_format%3Dhtml%26_locale%3Dde-DE%26_controller%3DApp%255CController%255CAdmin%255CDashboardController%253A%253AgetIpAddresses’, object(Request), array(‘ignore_errors’ => false))
(vendor/symfony/http-kernel/Fragment/FragmentHandler.php:85)
at Symfony\Component\HttpKernel\Fragment\FragmentHandler->render(object(ControllerReference), ‘inline’, array(‘ignore_errors’ => false))
(vendor/symfony/http-kernel/DependencyInjection/LazyLoadingFragmentHandler.php:45)
at Symfony\Component\HttpKernel\DependencyInjection\LazyLoadingFragmentHandler->render(object(ControllerReference), ‘inline’, array())
(vendor/symfony/twig-bridge/Extension/HttpKernelRuntime.php:48)
at Symfony\Bridge\Twig\Extension\HttpKernelRuntime->renderFragment(object(ControllerReference))
(/var/lib/homegear/tmp/admin-ui/cache/dev/twig/cd/cdafbcfb363f3baa1d449fafe90313c261fc468e0b09b8a3e245400a3e06d0af.php:140)
at __TwigTemplate_b6de2fc1624f09864455b5b8d3b89f1e563028628ab5daea2a2437fd7387c22d->block_content(array(‘sect’ => ‘dashboard’, ‘app’ => object(AppVariable), ‘myHost’ => object(Utils), ‘supported_locales’ => array(‘de-DE’, ‘en-US’), ‘default_locale’ => ‘en-US’, ‘host’ => ‘192.168.19.56:2001’, ‘isOSS’ => true, ‘theme’ => ‘light’, ‘osUpdateRunning’ => -1, ‘sidebarCollapsed’ => null), array(‘title’ => array(object(__TwigTemplate_b6de2fc1624f09864455b5b8d3b89f1e563028628ab5daea2a2437fd7387c22d), ‘block_title’), ‘stylesheets’ => array(object(__TwigTemplate_bbc13339ea1a052dd9bef6e546c7005e1ded2560e611e4dc41021a044b160abe), ‘block_stylesheets’), ‘pagetitle’ => array(object(__TwigTemplate_b6de2fc1624f09864455b5b8d3b89f1e563028628ab5daea2a2437fd7387c22d), ‘block_pagetitle’), ‘content’ => array(object(__TwigTemplate_b6de2fc1624f09864455b5b8d3b89f1e563028628ab5daea2a2437fd7387c22d), ‘block_content’), ‘javascripts’ => array(object(__TwigTemplate_b6de2fc1624f09864455b5b8d3b89f1e563028628ab5daea2a2437fd7387c22d), ‘block_javascripts’)))
(vendor/twig/twig/src/Template.php:173)
at Twig\Template->displayBlock(‘content’, array(‘sect’ => ‘dashboard’, ‘app’ => object(AppVariable), ‘myHost’ => object(Utils), ‘supported_locales’ => array(‘de-DE’, ‘en-US’), ‘default_locale’ => ‘en-US’, ‘host’ => ‘192.168.19.56:2001’, ‘isOSS’ => true, ‘theme’ => ‘light’, ‘osUpdateRunning’ => -1, ‘sidebarCollapsed’ => null), array(‘title’ => array(object(__TwigTemplate_b6de2fc1624f09864455b5b8d3b89f1e563028628ab5daea2a2437fd7387c22d), ‘block_title’), ‘stylesheets’ => array(object(__TwigTemplate_bbc13339ea1a052dd9bef6e546c7005e1ded2560e611e4dc41021a044b160abe), ‘block_stylesheets’), ‘pagetitle’ => array(object(__TwigTemplate_b6de2fc1624f09864455b5b8d3b89f1e563028628ab5daea2a2437fd7387c22d), ‘block_pagetitle’), ‘content’ => array(object(__TwigTemplate_b6de2fc1624f09864455b5b8d3b89f1e563028628ab5daea2a2437fd7387c22d), ‘block_content’), ‘javascripts’ => array(object(__TwigTemplate_b6de2fc1624f09864455b5b8d3b89f1e563028628ab5daea2a2437fd7387c22d), ‘block_javascripts’)))
(/var/lib/homegear/tmp/admin-ui/cache/dev/twig/f7/f7eea2ce21b8391aac5cf305d8e4db39bb02b9ef72d25f2b58204dc57d60f67e.php:145)
at __TwigTemplate_bbc13339ea1a052dd9bef6e546c7005e1ded2560e611e4dc41021a044b160abe->doDisplay(array(‘sect’ => ‘dashboard’, ‘app’ => object(AppVariable), ‘myHost’ => object(Utils), ‘supported_locales’ => array(‘de-DE’, ‘en-US’), ‘default_locale’ => ‘en-US’, ‘host’ => ‘192.168.19.56:2001’, ‘isOSS’ => true, ‘theme’ => ‘light’, ‘osUpdateRunning’ => -1, ‘sidebarCollapsed’ => null), array(‘title’ => array(object(__TwigTemplate_b6de2fc1624f09864455b5b8d3b89f1e563028628ab5daea2a2437fd7387c22d), ‘block_title’), ‘stylesheets’ => array(object(__TwigTemplate_bbc13339ea1a052dd9bef6e546c7005e1ded2560e611e4dc41021a044b160abe), ‘block_stylesheets’), ‘pagetitle’ => array(object(__TwigTemplate_b6de2fc1624f09864455b5b8d3b89f1e563028628ab5daea2a2437fd7387c22d), ‘block_pagetitle’), ‘content’ => array(object(__TwigTemplate_b6de2fc1624f09864455b5b8d3b89f1e563028628ab5daea2a2437fd7387c22d), ‘block_content’), ‘javascripts’ => array(object(__TwigTemplate_b6de2fc1624f09864455b5b8d3b89f1e563028628ab5daea2a2437fd7387c22d), ‘block_javascripts’)))
(vendor/twig/twig/src/Template.php:396)
at Twig\Template->displayWithErrorHandling(array(‘sect’ => ‘dashboard’, ‘app’ => object(AppVariable), ‘myHost’ => object(Utils), ‘supported_locales’ => array(‘de-DE’, ‘en-US’), ‘default_locale’ => ‘en-US’), array(‘title’ => array(object(__TwigTemplate_b6de2fc1624f09864455b5b8d3b89f1e563028628ab5daea2a2437fd7387c22d), ‘block_title’), ‘stylesheets’ => array(object(__TwigTemplate_bbc13339ea1a052dd9bef6e546c7005e1ded2560e611e4dc41021a044b160abe), ‘block_stylesheets’), ‘pagetitle’ => array(object(__TwigTemplate_b6de2fc1624f09864455b5b8d3b89f1e563028628ab5daea2a2437fd7387c22d), ‘block_pagetitle’), ‘content’ => array(object(__TwigTemplate_b6de2fc1624f09864455b5b8d3b89f1e563028628ab5daea2a2437fd7387c22d), ‘block_content’), ‘javascripts’ => array(object(__TwigTemplate_b6de2fc1624f09864455b5b8d3b89f1e563028628ab5daea2a2437fd7387c22d), ‘block_javascripts’)))
(vendor/twig/twig/src/Template.php:369)
at Twig\Template->display(array(‘sect’ => ‘dashboard’, ‘app’ => object(AppVariable), ‘myHost’ => object(Utils), ‘supported_locales’ => array(‘de-DE’, ‘en-US’), ‘default_locale’ => ‘en-US’), array(‘title’ => array(object(__TwigTemplate_b6de2fc1624f09864455b5b8d3b89f1e563028628ab5daea2a2437fd7387c22d), ‘block_title’), ‘pagetitle’ => array(object(__TwigTemplate_b6de2fc1624f09864455b5b8d3b89f1e563028628ab5daea2a2437fd7387c22d), ‘block_pagetitle’), ‘content’ => array(object(__TwigTemplate_b6de2fc1624f09864455b5b8d3b89f1e563028628ab5daea2a2437fd7387c22d), ‘block_content’), ‘javascripts’ => array(object(__TwigTemplate_b6de2fc1624f09864455b5b8d3b89f1e563028628ab5daea2a2437fd7387c22d), ‘block_javascripts’)))
(/var/lib/homegear/tmp/admin-ui/cache/dev/twig/cd/cdafbcfb363f3baa1d449fafe90313c261fc468e0b09b8a3e245400a3e06d0af.php:51)
at __TwigTemplate_b6de2fc1624f09864455b5b8d3b89f1e563028628ab5daea2a2437fd7387c22d->doDisplay(array(‘sect’ => ‘dashboard’, ‘app’ => object(AppVariable), ‘myHost’ => object(Utils), ‘supported_locales’ => array(‘de-DE’, ‘en-US’), ‘default_locale’ => ‘en-US’), array(‘title’ => array(object(__TwigTemplate_b6de2fc1624f09864455b5b8d3b89f1e563028628ab5daea2a2437fd7387c22d), ‘block_title’), ‘pagetitle’ => array(object(__TwigTemplate_b6de2fc1624f09864455b5b8d3b89f1e563028628ab5daea2a2437fd7387c22d), ‘block_pagetitle’), ‘content’ => array(object(__TwigTemplate_b6de2fc1624f09864455b5b8d3b89f1e563028628ab5daea2a2437fd7387c22d), ‘block_content’), ‘javascripts’ => array(object(__TwigTemplate_b6de2fc1624f09864455b5b8d3b89f1e563028628ab5daea2a2437fd7387c22d), ‘block_javascripts’)))
(vendor/twig/twig/src/Template.php:396)
at Twig\Template->displayWithErrorHandling(array(‘sect’ => ‘dashboard’, ‘app’ => object(AppVariable), ‘myHost’ => object(Utils), ‘supported_locales’ => array(‘de-DE’, ‘en-US’), ‘default_locale’ => ‘en-US’), array(‘title’ => array(object(__TwigTemplate_b6de2fc1624f09864455b5b8d3b89f1e563028628ab5daea2a2437fd7387c22d), ‘block_title’), ‘pagetitle’ => array(object(__TwigTemplate_b6de2fc1624f09864455b5b8d3b89f1e563028628ab5daea2a2437fd7387c22d), ‘block_pagetitle’), ‘content’ => array(object(__TwigTemplate_b6de2fc1624f09864455b5b8d3b89f1e563028628ab5daea2a2437fd7387c22d), ‘block_content’), ‘javascripts’ => array(object(__TwigTemplate_b6de2fc1624f09864455b5b8d3b89f1e563028628ab5daea2a2437fd7387c22d), ‘block_javascripts’)))
(vendor/twig/twig/src/Template.php:369)
at Twig\Template->display(array(‘sect’ => ‘dashboard’))
(vendor/twig/twig/src/Template.php:381)
at Twig\Template->render(array(‘sect’ => ‘dashboard’), array())
(vendor/twig/twig/src/TemplateWrapper.php:40)
at Twig\TemplateWrapper->render(array(‘sect’ => ‘dashboard’))
(vendor/twig/twig/src/Environment.php:277)
at Twig\Environment->render(‘Admin/Dashboard/dashboard.html.twig’, array(‘sect’ => ‘dashboard’))
(vendor/symfony/framework-bundle/Controller/ControllerTrait.php:235)
at Symfony\Bundle\FrameworkBundle\Controller\Controller->render(‘Admin/Dashboard/dashboard.html.twig’, array(‘sect’ => ‘dashboard’))
(src/Controller/Admin/DashboardController.php:42)
at App\Controller\Admin\DashboardController->indexAction(object(Request))
(vendor/symfony/http-kernel/HttpKernel.php:158)
at Symfony\Component\HttpKernel\HttpKernel->handleRaw(object(Request), 1)
(vendor/symfony/http-kernel/HttpKernel.php:80)
at Symfony\Component\HttpKernel\HttpKernel->handle(object(Request), 1, true)
(vendor/symfony/http-kernel/Kernel.php:201)
at Symfony\Component\HttpKernel\Kernel->handle(object(Request))
(public/index.php:85)

vielen Dank schon mal im Voraus!

Hi @horst23666,

danke fuer den Trace!
Es sieht so aus als koenne die UI die aktuelle IP-Adresse nicht auslesen. Warum kann ich dir so aus’m Stand nicht sagen, ich schaus mir an.

– Micha

Hi Micha,

großartig. Danke schon mal!

Das ganze läuft übrigens in Virtual Station auf einer Qnap mit Ubuntu 18.4. und mit Docker version 19.03.8. und kriegt über Bridge eine eigene IP im lokalen Netz.

Hi @horst23666,

oha … ob ich das 1:1 abbilden kann weiss ich nicht :joy:
Kannst du mir evtl. sagen wie der Name des Netzwerkinterfaces innerhalb des Containers lautet?

– Micha

Moin,

wenn du meinst “ifconfig” im Container dann:

ifconfig

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.17.0.3 netmask 255.255.0.0 broadcast 172.17.255.255
ether 02:42:ac:11:00:03 txqueuelen 0 (Ethernet)
RX packets 35032 bytes 12687723 (12.0 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 61531 bytes 14032404 (13.3 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
loop txqueuelen 1000 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

Sehr strange.

Ich kann nicht sagen ob dir zukuenftig das Interface angezeigt wird, aber der 500er sollte behoben sein. Wenn ich es schaffe, pushe ich den Fix heute noch.

– Micha

Mega!

Vielen Dank, gebe dir dann Rückmeldung.

äähh das ist jetzt wirklich seltsam.
Gerade habe ich die Admin ui noch mal aufgerufen. Habe wirklich kein neues Image gezogen. Nun geht das Interface. Kein Fehler mehr. Das ist wirklich weird. Habe auch kein watchdog laufen. Container wurde nicht neu erstellt. docker ps ergab:

          NAMES
f6cb0551f0d3        homegear/homegear:nightly                        "/bin/bash     -c /start…"   24 hours ago        Up 23 hours         0.0.0.0:2001-2003->2001-2

Das ist tatsaechlich strange :thinking:

Ich hab die Anpassungen eben trotzdem gepushed :wink:

– Micha