Docker Container mit IP Symcon auf Raspberry PI

Hallo zusammen,

ich wollte IP Symcon (5.3) gerne auf meinem Raspberry Pi in einem Docker Container zum Laufen bringen. Leider klappt das noch nicht ganz.
Ich habe mich am Dockerfile von Tommi2Day orientiert, meines sieht so aus:

FROM raspbian/stretch

ENV TZ=Europe/Berlin

RUN \
    apt-get update &&  apt-get upgrade -y

RUN \
    apt-get -y install dialog apt-utils dpkg

RUN \
    apt-get -y install wget gnupg2 locales tzdata
 
  
RUN \
    wget -qO - http://apt.symcon.de/symcon.key | apt-key add - && \
    echo "deb http://apt.symcon.de/ stable rpi" | tee /etc/apt/sources.list.d/symcon.list && \
    apt-get update && apt-get -y install symcon 

RUN \
    cp -R /usr/share/symcon /usr/share/symcon.org &&\
    cp -R /var/lib/symcon /var/lib/symcon.org &&\
    cp -R /root /root.org
   
#Clean-Up    
RUN \
    apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* 
    
#Setup timezone
#Change for your timezone
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime 

RUN echo $TZ | tee /etc/timezone \
    && dpkg-reconfigure --frontend noninteractive tzdata 

COPY ["docker_entrypoint.sh","set_password.sh","/usr/bin/"]

RUN \
    chmod 700 /usr/bin/docker_entrypoint.sh /usr/bin/set_password.sh

VOLUME \
    /root \
    /var/log/symcon \
    /var/lib/symcon

# Nur als Hinweis für ports (-P nutzt diese); besser: --net=host oder -p 3777 etc bei docker run
EXPOSE  3777 82

#homematic
EXPOSE 2001 2010 5544

WORKDIR /root
ENTRYPOINT ["/usr/bin/docker_entrypoint.sh"]

Ich habe das Einspielen der Datei .symcon extra ausgelassen, da ich damit Probleme habe.

Ich habe das Image geholt: docker pull raspbian/stretch:latest
Und dann mit dem obigen Dockerfile ein Symcon Image erstellt:
docker build -t symcon .

Ich habe dann den Container gestartet:

docker run --restart always \
      -e TZ="Europe/Berlin" \
      --net=host \
      -v /home/pi/symcon/data:/var/lib/symcon \
      -v /home/pi/symcon/log:/var/log/symcon \
      -v /home/pi/symcon:/root \
      --name symcon \
      symcon

Ich habe dann in /home/pi/symcon eine Datei ./symcon erstellt:

Licensee=…
License=…
LimitDemo=0
LimitWebFront=0
LimitVariables=1000
Password=…

Dabei habe ich die … natürlich sinnvoll ersetzt und das Passwort Base64 enkodiert.

Der Container startet und Webfront und Console sind erreichbar (IP:3777/console). Leider bekomme ich immer bei Eingabe der Daten: Ungültige Anmeldedaten

Ich habe dann meine Eingaben überprüft:
docker exec -it symcon /bin/bash
sudo nano /root/.symcon

Der Inhalt der Datei stimmt mit meinem Eingaben überein. Daran kann es also nicht liegen.

Im Symcon Log steht:

02/29/20 13:54:50 | 00000 | MESSAGE | LocalePool           | Detected locale: 
02/29/20 13:54:50 | 00000 | MESSAGE | LocalePool           | Unsupported locale: 
02/29/20 13:54:50 | 00000 | MESSAGE | LicensePool          | Creating...
02/29/20 13:54:50 | 00000 | MESSAGE | LicensePool          | Cannot verify license. Running in Demo mode.

Aus irgendeinem Grund werden die Daten also nicht korrekt gelesen. Ich habe den Container auch mehrmals neugestartet, auch einen Neustart des PIs habe ich gemacht.

Beim Starten des Containers bekomme ich ein paar Fehlermeldungen:

02/29/20 13:54:50 | 00000 | ModuleLoader | Loaded# IPS-868 Stripe Input,
02/29/20 13:54:50 | 00000 | ModuleLoader | Loaded# IPS-868 Thermo,
02/29/20 13:54:50 | 00000 | ModuleLoader | Loaded# IPS-868 Tracker,
02/29/20 13:54:50 | 00000 | ModuleLoader | Loaded# IPS-868 WatchDogTimer,
02/29/20 13:54:50 | 00000 | ModuleLoader | Loaded# Siemens Configurator,
02/29/20 13:54:50 | 00000 | ModuleLoader | Loaded# Siemens Device,
02/29/20 13:54:50 | 00000 | ModuleLoader | Loaded# Siemens Gateway,
02/29/20 13:54:50 | 00000 | ModuleLoader | Loaded# SSDP Control,
02/29/20 13:54:50 | 00000 | ModuleLoader | Loaded# CMI,
02/29/20 13:54:50 | 00000 | ModuleLoader | Loaded# UVR1611,
02/29/20 13:54:50 | 00000 | ModuleLoader | Loaded# WinLIRC,
02/29/20 13:54:50 | 00000 | ModuleLoader | Loaded# WMRS200,
02/29/20 13:54:50 | 00000 | ModuleLoader | Loaded# WMRS200 Gateway,
02/29/20 13:54:50 | 00000 | ModuleLoader | Loaded# WuT Counter,
02/29/20 13:54:50 | 00000 | ModuleLoader | Loaded# WuT Gateway,
02/29/20 13:54:50 | 00000 | ModuleLoader | Loaded# WuT Input,
02/29/20 13:54:50 | 00000 | ModuleLoader | Loaded# WuT Output,
02/29/20 13:54:50 | 00000 | ModuleLoader | Loaded# WuT ThermoHygro,
02/29/20 13:54:50 | 00000 | ModuleLoader | Loaded# XBee Gateway,
02/29/20 13:54:50 | 00000 | ModuleLoader | Loaded# XBee Splitter,
02/29/20 13:54:50 | 00000 | ModuleLoader | Loaded# xComfort Binary Input,
02/29/20 13:54:50 | 00000 | ModuleLoader | Loaded# xComfort Configurator,
02/29/20 13:54:50 | 00000 | ModuleLoader | Loaded# xComfort Dimmer,
02/29/20 13:54:50 | 00000 | ModuleLoader | Loaded# xComfort Energy,
02/29/20 13:54:50 | 00000 | ModuleLoader | Loaded# xComfort Gateway,
02/29/20 13:54:50 | 00000 | ModuleLoader | Loaded# xComfort Humidity,
02/29/20 13:54:50 | 00000 | ModuleLoader | Loaded# xComfort Heating,
02/29/20 13:54:50 | 00000 | ModuleLoader | Loaded# xComfort HRV,
02/29/20 13:54:50 | 00000 | ModuleLoader | Loaded# xComfort Impulse,
02/29/20 13:54:50 | 00000 | ModuleLoader | Loaded# xComfort One Channel Heating,
02/29/20 13:54:50 | 00000 | ModuleLoader | Loaded# xComfort Remote,
02/29/20 13:54:50 | 00000 | ModuleLoader | Loaded# xComfort Room Control,
02/29/20 13:54:50 | 00000 | ModuleLoader | Loaded# xComfort Shutter,
02/29/20 13:54:50 | 00000 | ModuleLoader | Loaded# xComfort Switch,
02/29/20 13:54:50 | 00000 | ModuleLoader | Loaded# xComfort Temperature,
02/29/20 13:54:50 | 00000 | ModuleLoader | Loaded# xComfort Value RX,
02/29/20 13:54:50 | 00000 | ModuleLoader | Loaded# xComfort Value TX,
02/29/20 13:54:50 | 00000 | ModuleLoader | Loaded# Z-Wave Configurator,
02/29/20 13:54:50 | 00000 | ModuleLoader | Loaded# Z-Wave Module,
02/29/20 13:54:50 | 00000 | ModuleLoader | Loaded# Z-Wave Discovery,
02/29/20 13:54:50 | 00000 | ModuleLoader | Loaded# Z-Wave Gateway,
02/29/20 13:54:50 | 00000 | ModuleLoader | Loaded# IMAP,
02/29/20 13:54:50 | 00000 | ModuleLoader | Loaded# POP3,
02/29/20 13:54:50 | 00000 | ModuleLoader | Loaded# SMS,
02/29/20 13:54:50 | 00000 | ModuleLoader | Loaded# SMS REST,
02/29/20 13:54:50 | 00000 | ModuleLoader | Loaded# SMTP,
02/29/20 13:54:50 | 00000 | ModuleLoader | Loaded# VoIP,
02/29/20 13:54:50 | 00000 | BuildInLibrary | Register functions...,
02/29/20 13:54:50 | 10172 | WebFront Configurator | Creating...,
02/29/20 13:54:50 | 37372 | Archive Control | Creating...,
02/29/20 13:54:50 | 37372 | Archive Control | Generating DST timestamps...,
02/29/20 13:54:50 | 30864 | WebHook Control | Creating...,
02/29/20 13:54:50 | 27396 | Module Control | Creating...,
02/29/20 13:54:50 | 26995 | Skin Control | Creating...,
02/29/20 13:54:50 | 28869 | Util Control | Creating...,
02/29/20 13:54:50 | 14426 | SSDP Control | Creating...,
02/29/20 13:54:50 | 50223 | Connect Control | Creating...,
02/29/20 13:54:50 | 40994 | DNSSD Control | Creating...,
*** WARNING: Detected another IPv4 mDNS stack running on this host. This makes mDNS unreliable and is thus not recommended. ***,
*** WARNING: Detected another IPv6 mDNS stack running on this host. This makes mDNS unreliable and is thus not recommended. ***,
Joining mDNS multicast group on interface vethb43dc89.IPv6 with address fe80::d0d6:40ff:fe57:8caa.,
New relevant interface vethb43dc89.IPv6 for mDNS.,
Joining mDNS multicast group on interface vethb43dc89.IPv4 with address 169.254.180.142.,
New relevant interface vethb43dc89.IPv4 for mDNS.,
Joining mDNS multicast group on interface veth98fd64d.IPv4 with address 169.254.80.216.,
New relevant interface veth98fd64d.IPv4 for mDNS.,
Joining mDNS multicast group on interface docker0.IPv6 with address fe80::bb7:10a6:a75a:b10c.,
New relevant interface docker0.IPv6 for mDNS.,
Joining mDNS multicast group on interface docker0.IPv4 with address 169.254.182.99.,
New relevant interface docker0.IPv4 for mDNS.,
Joining mDNS multicast group on interface wlan0.IPv6 with address fe80::10c0:6c21:7f31:28c6.,
New relevant interface wlan0.IPv6 for mDNS.,
Joining mDNS multicast group on interface wlan0.IPv4 with address 192.168.178.56.,
New relevant interface wlan0.IPv4 for mDNS.,
Network interface enumeration completed.,
Registering new address record for fe80::d0d6:40ff:fe57:8caa on vethb43dc89.*.,
Registering new address record for 169.254.180.142 on vethb43dc89.IPv4.,
Registering new address record for 169.254.80.216 on veth98fd64d.IPv4.,
Registering new address record for fe80::bb7:10a6:a75a:b10c on docker0.*.,
Registering new address record for 169.254.182.99 on docker0.IPv4.,
Registering new address record for 172.17.0.1 on docker0.IPv4.,
Registering new address record for fe80::10c0:6c21:7f31:28c6 on wlan0.*.,
Registering new address record for 192.168.178.56 on wlan0.IPv4.,
02/29/20 13:54:50 | 40994 | DNSSD Control | Server registering...,
02/29/20 13:54:50 | 22011 | Notification Control | Creating...,
02/29/20 13:54:50 | 59064 | Store Control | Creating...,
02/29/20 13:54:50 | 43447 | Location Control | Creating...,
02/29/20 13:54:50 | 28936 | WebOAuth Control | Creating...,
02/29/20 13:54:50 | 40321 | Calendar Control | Creating...,
02/29/20 13:54:50 | 34407 | VariableManager | [Calendar\Planned presence] = false,
02/29/20 13:54:50 | 26586 | VariableManager | [Calendar\Planned absence] = false,
02/29/20 13:54:50 | 14216 | Event Control | Creating...,
02/29/20 13:54:50 | 00000 | Kernel | Initializing Complete,
02/29/20 13:54:50 | 00000 | Kernel | Creating message thread...,
02/29/20 13:54:50 | 00000 | EventManager | Creating event thread...,
02/29/20 13:54:50 | 00000 | TimerPool | Creating timer thread...,
02/29/20 13:54:50 | 00000 | DataServer | Starting server...,
02/29/20 13:54:50 | 00000 | Kernel | *** IPS READY,
>> Press CTRL+C to initiate shutdown!,
02/29/20 13:54:51 | 40994 | DNSSD Control | Server is running!,

Im Verbindungsassistenten sehe ich dann auch mehrere Server. Wie kommt das zustande?

Leider habe ich im Forum nichts zu meinem Problem gefunden. Es ist auch sehr speziell, vielleicht könnt ihr mir dennoch helfen.

Vielen Dank im Voraus.

Viele Grüße

Leif

Hast du Password in der .symcon Datei korrekt base64 kodiert?

paresy

Ja, habe ich. Geprüft auch über Base64 Decode and Encode - Online

Mir gibt auch zu denken, dass er keine Lizenzinformationen findet (Cannot verify license. Running in Demo mode.). Die habe ich ja auch eingegeben.

Ich habe weiter geforscht:

Wenn ich den Container mit -p 3777:3777 starte, dann sind schon mal die mDNS Fehler im Log verschwunden. Liegt also an – net=host.

Der Fehler mit der Anmeldung und der Lizenz besteht weiter. Ich habe jetzt im Container getestet:
ls -al /root/.symcon

Ausgabe:
-rw-r–r-- 1 root root 254 Feb 29 13:42 /root/.symcon

Entspricht also 644. Ist das ausreichend?

Auch bei "Detected locale: " steht nichts im Log.

Woran könnte es noch liegen, dass die Datei nicht richtig gelesen wird?

Es war so ein doofer Fehler. Ich greife per VPN auf den Pi zu. Wegen der Bildschirmauflösung wurde wohl der Code bei License umgebrochen. Dadurch konnte die Datei wohl nicht gelesen werden. Oh jeh. Aber vielleicht hilft dieser Thread denjenigen, die Symcon in einem Docker Container auf einem Raspberry PI laufen lassen wollen.

Den Fehler mit der locale habe ich auch behoben. Ich hänge das Dockerfile nochmal an:

# -----------------------------------------------------------------------------
# Based on tommi2day/symcon
# Based on Dockerfile from Dieter Poessling (https://www.symcon.de/forum/threads/26294-IP-Symcon-via-Docker-Engine?p=259037#post259037)
# -----------------------------------------------------------------------------

FROM raspbian/stretch

ENV TZ=Europe/Berlin

RUN \
    apt-get update &&  apt-get upgrade -y

RUN \
    apt-get -y install dialog apt-utils dpkg

RUN \
    apt-get -y install wget gnupg2 locales tzdata
 
  
RUN \
    wget -qO - http://apt.symcon.de/symcon.key | apt-key add - && \
    echo "deb http://apt.symcon.de/ stable rpi" | tee /etc/apt/sources.list.d/symcon.list && \
    apt-get update && apt-get -y install symcon 

RUN \
    cp -R /usr/share/symcon /usr/share/symcon.org &&\
    cp -R /var/lib/symcon /var/lib/symcon.org &&\
    cp -R /root /root.org
   
#Clean-Up    
RUN \
    apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* 

#Set locale
RUN \
    sed -i -e 's/# de_DE.UTF-8 UTF-8/de_DE.UTF-8 UTF-8/' /etc/locale.gen \
    && dpkg-reconfigure --frontend=noninteractive locales \
    && update-locale LANG=de_DE.UTF-8

ENV LANG de_DE.UTF-8 
ENV LC_ALL de_DE.UTF-8  
  
#Setup timezone
#Change for your timezone
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime 

RUN echo $TZ | tee /etc/timezone \
    && dpkg-reconfigure --frontend noninteractive tzdata 

COPY ["docker_entrypoint.sh","set_password.sh","/usr/bin/"]

RUN \
    chmod 700 /usr/bin/docker_entrypoint.sh /usr/bin/set_password.sh

VOLUME \
    /root \
    /var/log/symcon \
    /var/lib/symcon

# Nur als Hinweis für ports (-P nutzt diese); besser: --net=host oder -p 3777 etc bei docker run
EXPOSE  3777 82

#homematic
EXPOSE 2001 2010 5544

WORKDIR /root
ENTRYPOINT ["/usr/bin/docker_entrypoint.sh"]

Die Dateien (docker_entrypoint.sh usw) findet man bei: GitHub - Tommi2Day/ipsymcon-docker