Ich möchte Dir kurz zeigen wie ich meine FHEM Installation in einen Docker Container umgezogen habe. Warum Mein FHEM in einen Docker Container umzieht? Eigentlich habe ich ja alles aus meiner FHEM Installation bereits auf Home Assistent umgezogen. Wirklich ALLES? Nein mit einem kleinen Part habe ich noch zu kämpfen. Meine PCA301 Steckdosen, diese habe ich noch nicht direkt über Home Assistent zum Laufen bekommen. Hierfür habe ich noch eine FHEM Instanz am Start. Über MQTT bekomme ich die Schaltzustände auch in Home Assistent angezeigt und kann die Steckdosen schalten.
Ich habe ja in meinem Beitrag „Home Assistant Docker Installation umziehen“ bereits geschrieben wie ich meine Home Assistant Installation auf einen Esprimo PC umgezogen habe. Einer der Gründe war ja nicht mehr so viele Einplatinen Rechner am Laufen zu haben. Aus diesem Grund möchte ich nun die FHEM Installation ebenfalls auf diesem Rechner laufen haben. Jedoch in einem Docker-Container. Ich verspreche mir hier auch etwas Erleichterung. Denn ich werde weiter testen, ob ich die Steckdosen nicht doch unter Home Assistant direkt zum laufen bekomme. Außerdem werde ich wieder einen kleinen Rechner abschalten können.
Zielsystem vorbereiten
Hierzu habe ich mich zunächst per ssh auf dem Esprimo PC angemeldet und dann mit dem folgenden Kommando ersteinmal ein Verzeichnis für fhem angelegt.
sudo mkdir /srv/docker/fhem
FHEM auf dem alten System Abschalten
Im Anschluss dann ebenfalls wieder über ssh auf dem Cubitruck angemeldet und fhem via dem folgenden Kommando angehalten.
/etc/init.d/fhem stop
Noch ein schnell nachgeschaut ob kein fhem Prozess mehr läuft.
ps -aef | grep fhem
Nun kopiere ich das ganze fhem Verzeichniss welches bei mit unter /opt/fhem liegt auf den neuen Rechner. Ich kopiere es zunächst in meinen Benutzerordner.
scp -r /opt/fhem ENTSPRECHENDERNUTZERNAME@192.168.2.55:/home/ENTSPRECHENDERNUTZERNAME/fhem
Letzte arbeiten auf dem Zielsystem
Nachdem ich wieder auf dem Esprimo Rechner mit ssh angemeldet bin. Kopiere ich den Inhalt von „/home/ENTSPRECHENDERNUTZERNAME/fhem“ in das bereits angelegt Verzeichnis „/srv/docker/fhem“. Ich verschiebe es nicht, da eine lokale Kopie zu haben erstmal nicht schlecht ist.
sudo cp -R /home/ENTSPRECHENDERNUTZERNAME/fhem /srv/docker/fhem
Nun Wechsel ich noch mit cd in das entsprechende Verzeichnis
cd /srv/docker/fhem
Da ich in der Regel immer mit docker-compose arbeite benötige ich noch die entsprechende docker-compose.yml. Den benötigten Inhalt habe ich bereits im FHEM Forum gefunden. Ich konnte meine ganzen FHEM Probleme immer mit Hilfe des Forums lösen. Manchmal gab es bereits das exakte Problem, manchmal waren es die Infos wie man an ein Problem herangeht die dann zur Lösung führten. Habt Ihr also Probleme mit FHEM nutzt das Forum und vergesst nicht erst im Forum zu suchen. 😉
Meine docker-compose.yml Datei sieht nun wie folgt aus:
version: '3.3'
services:
fhem:
container_name: fhem
image: ghcr.io/fhem/fhem-experimental:dev
ports:
- "8083:8083"
volumes:
- ./fhem:/opt/fhem
devices:
- "/dev/ttyUSB0:/dev/ttyUSB0"
environment:
- LOGFILE=./log/fhem-%Y-%m.log
- FHEM_PERM_DIR:0754
- FHEM_PERM_FILE:0644
- UMASK=0033
- TZ=Europe/Berlin
- TELNETPORT=7073
network_mode: host
restart: 'always'
Der Docker Container wird das erste mal gestartet
Ich verwende wie bereit erwähnt Docker Compose für alle meine Docker Container. Mit dem folgenden Kommando starte ich erst einmal den Docker zum Test
docker-compose up
Nun sehe ich quasi alles was normalerweise ins Logfile geschrieben. Im großen und ganzen sieht auch alles gut aus. Ich hatte nur eine Fehlermeldung das keine Verbindung zum MYSQL Server hergestellt werden konnte. Ok das war eigentlich absehbar da der MYSQL Server noch auf dem alten System läuft.
Mittesl <Strg>+c den Docker container gestoppt und dann mit dem Editor die db.conf Datei anpassen. Hier einfach den Part localhost durch die IP-Adresse des alten System ersetzen.
Nun habe ich den Docker Container noch zweimal neu gestartet zunächst mit dem oben bereits genannten Kommando. Hier sind nun keine Fehler mehr bzgl. des MYSQL Servers erschienen. Dann habe ich den Container wieder mit <Strg>+c beendet und dann mit
docker-compose up -d
wieder neu gestartet. Nun läuft der Container wieder im Hintergrund.
Der nächste Schritt wird dann sein alles in FHEM zu entfernen was wirklich nicht mehr benötigt wird. Ebenfalls werde ich hierbei vermutlich auch das speichern in die MYSQL Datenbank wieder entfernen. Dann steht dem abschalten des zweiten Einplatinen Rechner nichts mehr im Weg.
Be the first to comment