[Gelöst] "WEB: Can't open server port at 8083: Address already in use. Exiting."

Begonnen von HankMoody, 26 Oktober 2020, 21:26:57

Vorheriges Thema - Nächstes Thema

HankMoody

Guten Abend zusammen,

ich habe meine funktionierende Fhem-Installation auf Docker umgezogen. Also das offizielle Fhem-Image gezogen, gestartet und die Erstinstallation auf das Volume laufen lassen. Dann habe ich mein Backup von der alten Fhem-Installation über die neue entpackt.

Nun bekomme ich bei jedem Starten eine Fehlermeldung. Hier mal das ganze Log, der Fehler in der letzten Zeile:

2020.10.26 20:27:38 1: Including fhem.cfg
2020.10.26 20:27:38 3: WEB: port 8083 opened
2020.10.26 20:27:38 2: eventTypes: loaded 200 events from ./log/eventTypes.txt
2020.10.26 20:27:38 3: Opening CUL0 device /dev/ttyACM0
2020.10.26 20:27:38 3: Setting CUL0 serial parameters to 9600,8,N,1
2020.10.26 20:27:38 3: CUL0: Possible commands: ABbCeFGhiKkLlMmNRTtUuVWXxYZ
2020.10.26 20:27:38 3: CUL0 device opened
2020.10.26 20:27:38 2: Switched CUL0 rfmode to MAX
2020.10.26 20:27:39 3: CUL_MAX_Check: Detected firmware version 167 of the CUL-compatible IODev
2020.10.26 20:27:39 3: telnetPort: port 7072 opened
2020.10.26 20:27:39 1: Including ./log/fhem.save
2020.10.26 20:27:39 1: usb create starting
2020.10.26 20:27:39 1: usb create end
2020.10.26 20:27:39 0: Featurelevel: 5.8
2020.10.26 20:27:39 0: Server started with 23 defined entities (fhem.pl:17329/2018-09-12 perl:5.028001 os:linux user:fhem pid:4031)
2020.10.26 20:27:52 1: Including fhem.cfg
2020.10.26 20:27:52 1: WEB: Can't open server port at 8083: Address already in use. Exiting.


Es sieht so aus, als wird versucht die fhem.cfg zweimal zu includen und dabei dann abgebrochen.

Hier ist meine fhem.cfg:

attr global userattr cmdIcon devStateIcon devStateStyle icon sortby webCmd webCmdLabel:textField-long widgetOverride
attr global autoload_undefined_devices 1
attr global logfile ./log/fhem-%Y-%m-%d.log
attr global modpath .
attr global motd SecurityCheck:\
  WEB is not password protected\
\
Protect this FHEM installation by defining an allowed device with define allowed allowed\
You can disable this message with attr global motd none
attr global statefile ./log/fhem.save
attr global verbose 3

define WEB FHEMWEB 8083 global
attr WEB stylesheetPrefix default

# Fake FileLog entry, to access the fhem log from FHEMWEB
define Logfile FileLog ./log/fhem-%Y-%m-%d.log fakelog

define autocreate autocreate
attr autocreate filelog ./log/%NAME-%Y.log

define eventTypes eventTypes ./log/eventTypes.txt

# Disable this to avoid looking for new USB devices on startup
define initialUsbCheck notify global:INITIALIZED usb create
define CUL0 CUL /dev/ttyACM0@9600 0000
attr CUL0 rfmode MAX
define cm CUL_MAX AF0815
attr cm IODev CUL0

define MAX_123abc MAX HeatingThermostat 123abc
attr MAX_123abc IODev cm
attr MAX_123abc alias HT_WZ_Links
attr MAX_123abc room MAX
define FileLog_MAX_123abc FileLog ./log/MAX_123abc-%Y.log MAX_123abc
attr FileLog_MAX_123abc logtype text
attr FileLog_MAX_123abc room MAX

... weitere MAX! HeatingThermostat-Blöcke ...

define telnetPort telnet 7072


Sieht so aus, als wird FHEMWEB mit dem Port 8083 nur einmal definiert.

Ich weiß nicht, ob das eine Eigenheit des Docker-Images ist oder ob es an der "Misch-Installation" durch das Enpacken des alten Backups liegt.

Hat jemand eine Idee?

Viele Grüße
Roman

amenomade

Wie wird fhem gestartet? Als Dienst? Manuell noch dazu?

Was sagt ps aux |grep perl?
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

my-engel

Hallo Roman,

lösch mal alles wieder (Container, FHEM-Ordner usw.) und lege dann dein altes fhem (den kompletten Ordner fhem) z.B. nach
/srv/docker/volumes/fhem
dann mach neu mit gemountetem Volume
-v /srv/docker/volumes/fhem:/opt/fhem

also bei mir funktioniert dass so

MfG
Uwe

HankMoody

Es wird über das folgende Command des offiziellen Fhem-Docker-Images gestartet:
/entry.sh start

Die entry.sh findest du hier:
https://github.com/fhem/fhem-docker/blob/dev/src/entry.sh

Eine weitere Instanz läuft nicht.

Ausgabe von "ps aux | grep perl" im Container:

fhem      4036  0.2  2.9  37420 29192 ?        S    21:38   0:01 perl fhem.pl fhem.cfg
root     12588  0.0  0.0   7080   540 pts/0    S+   21:45   0:00 grep perl

HankMoody

Hallo Uwe,

also ich habe den Container und das Volume gelöscht, dann das Volume neu erstellt. Nun habe ich vor dem ersten Container-Start und der Erstinstallation mein altes Backup in das Volume entpackt und erst dann den Container das erste Mal gestartet.

Ich habe dazu folgende Befehle ausgeführt:


docker stop fhem
docker rm fhem
docker volume rm opt-fhem
docker volume create opt-fhem
sudo tar -xzf docker_files/FHEM-20201018_213925.tar.gz -C /var/lib/docker/volumes/opt-fhem/_data/
docker run -d --name fhem --restart always -p 8083:8083 -v opt-fhem:/opt/fhem --device=/dev/ttyACM0 fhem/fhem


Das Ergebnis waren zunächst noch viel mehr Fehlermeldungen, der ursprüngliche war auch noch dabei. Es fehlten ihm wohl die ganzen Docker-spezifischen Module. Ich habe daraufhin ein "update", dann "shutdown restart" und später noch einen Reboot vom ganzen Raspi gemacht (mein Docker-Container startet ja automatisch). Dann nochmal das Logfile gelöscht zur Übersichtlichtkeit.

Nun funktioniert es, der Fehler ist weg.

Also nochmal zur Info an alle, die mit ihrem alten Fhem-Backup auf den Docker-Container umteigen wollen:
Zuerst das Backup entpacken in das Volume dann erst den Container das erste Mal starten für die Ersteinrichtung.
"update" und "shutdown restart" danach scheint auch noch notwendig und ist eh zu empfehlen.

Vielen Dank!

Wernieman

2020.10.26 20:27:52 1: WEB: Can't open server port at 8083: Address already in use. Exiting.
Warscheinlich lief bei Dir noch FHEM (oder irgendetwas anderes auf Port 8083) und durch den reboot hast Du es erst abgeschaltet ...
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

HankMoody

Nein, der Reboot löste das Problem nicht. Ich hatte mehrfach neu gestartet. Das Problem bestand auch über mehrere Tage, wo der Raspi zwischendurch ausgeschaltet war.

Zumal ist das ein frisch aufgesetztes Raspbian OS ohne Fhem oder sonstige Serverdienste. Die einzige Fhem-Installation ist wirklich nur im Docker-Containter.

Wernieman

Dann währe es wichtig gewesen zu gucken, was denn den Port blockiert, als root:
netstat -lntp
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

HankMoody

Okay, könnte ich noch machen, habe mir das alte Volume gebackupped. Aber eigentlich ist das Problem ja schon gelöst.

Meinst du nicht, dass aus dem Logfile in meinem Start-Post ersichtlich ist, dass irgendwie die fhem.cfg zwei mal included/geladen wurde? Siehe:

2020.10.26 20:27:38 1: Including fhem.cfg
2020.10.26 20:27:38 3: WEB: port 8083 opened
...
2020.10.26 20:27:39 0: Server started with 23 defined entities (fhem.pl:17329/2018-09-12 perl:5.028001 os:linux user:fhem pid:4031)
2020.10.26 20:27:52 1: Including fhem.cfg
2020.10.26 20:27:52 1: WEB: Can't open server port at 8083: Address already in use. Exiting.



Wernieman

- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html