viewtopic.php?f=78&t=47718
Anbei die Installationsscripts:
Lauffähig (getestet) mit LXC-Container, Docker-Container, VM (vollemuliert) und natuerlich nativ auf Debian 9 (amd64). (Proxmox, QNAP und EsXi, Synology 918+)
Plugin Installation fuer XML-Api, Cuxd und email ist inkludiert.
Ich habe das Script gründlich getestet, trotzdem sind Fehler nicht ausgeschlossen und es gibt auch noch ein paar bekannte Schwachstellen. z.b. Backups einspielen...
Speziellen Dank an Uwe fuer die Anpassung von cuxd auf x86, Christian fürs Testen auf qnap und Bernhard fürs Testen auf Esxi!
Grundsätzliches:
Es wird eine saubere Debian9 (amd64) (oder Debian basierend z.b. Ubuntu) Installation vorausgesetzt (egal welche Platform).
Weiters ist für die HMIP Unterstützung ein RF-USB-Stick notwendig:
https://www.elv.at/elv-homematic-ip-rf- ... usatz.html
Für HMIP ist das Script im Moment auf Netzwerk-Share des Sticks ausgelegt, d.h. es wird der Stick nicht direkt an die virtuelle CCU angesteckt. (Direktes Anstecken des Sticks an die CCU erfordert Anpassungen. Siehe Posts Seite 1/2).
Auch fuer Bidcos sind im Moment nur Lan-GWs angedacht.
Ich kann da später Tips geben wie man USB-Sticks (HMIP oder Bidcos) bei Bedarf nativ durchreicht und welche Stellen wo editiert werden müssen.
Falls man nur Bidcos benötigt, geht das auch.
Installation:
Grundkenntnisse werden vorausgesetzt! Ich kann nicht jeden Schritt im Detail beschreiben.
Wir arbeiten, soweit es geht mit SSH Verbindungen für die Installation.
HMIP: (kann weggelassen werden, wenn nicht benötigt)
Es wird ein Raspberry PI mit Debian benötigt (geht vermutlich auch auf jedem anderen Debian basierendem System und Hardware, z.b. PC mit Ubuntu ist auch moeglich uvm.):
Dieses Image installieren:
https://www.raspberrypi.org/downloads/raspbian/
Raspbian Stretch Lite
Statische IP vergeben (ist besser) und SSH aktivieren (Details zur SSH (root) siehe unten).
Wenn die Installation sauber durchgelaufen stecken wir den RF-USB-Stick an den Raspi.
Dann verbinden uns mit SSH auf den Raspi (am besten gleich als root) oder loggen uns mit default-username an und wechseln auf root (sudo su)
Dann kopieren wir das install Script auf den Raspberry:
"nano /opt/install.sh"
Das Raspi-script mittels copy/paste einfügen.
Dann Script ausführbar machen:
"chmod 777 /opt/install.sh"
...und starten...
"/opt/install.sh"
fertig, falls "nano" nicht installiert ist, nachinstallieren mit...
"apt-get update"
"apt-get install nano"
Dann "reboot" und Raspi-Installation ist abgeschlossen.
CCU-VM:
Es muss ein Debian9 amd64 (oder Debian basierend) installiert worden sein (welche Platform ihr nehmt bleibt euch überlassen, es gibt da viele Wege. Für Docker gibts unten eine Anleitung um ein sauberes Debian ans Laufen zu bekommen).
z.b. "https://www.debian.org/distrib/netinst" fuer amd64 -> "https://gensho.ftp.acc.umu.se/debian-cd ... etinst.iso"
Für LXC gibts fertige Container...
Grundsatzlich nehmt was "Kleines". Wir brauchen keinen Schnickschnack wie Grafik oder so...
Statische IP waere wieder meine 1. Wahl, geht aber auch via DHCP und ssh sollte auch installiert werden.
Dann verbinden wir uns mit SSH auf Debian (am besten gleich als root) oder loggen uns mit default-username an und wechseln auf root (sudo su)
Dann kopieren wir das install Script auf Debian:
"nano /opt/install.sh"
Das CCU-script mittels copy/paste einfügen.
Dann Script ausführbar machen:
"chmod 777 /opt/install.sh"
...und starten...
"/opt/install.sh"
Beim Install script wird die IP vom Raspi (fuer HMIP) abgefragt!
Meldung:
"Enter IP Adress of the HmIP-USB-Stick Host (Usually Raspberry Pi):"
z.b. das eingeben:
192.168.0.107
Falls "nano" nicht installiert ist, nachinstallieren mit...
"apt-get update"
"apt-get install nano"
Dann "reboot" und CCU-Installation ist abgeschlossen.
Allgemein zur SSH:
Um ssh zu installieren, falls das nicht gemacht wurde bei Installation:
"apt-get update"
"apt-get install ssh"
Um ssh fuer root freizugeben (egal welche (Debian) Platform):
Mit default username anmelden
Auf root wechseln
"sudo su"
Passwort setzten:
"passwd"
"nano /etc/ssh/sshd_config"
Suchen nach der Zeile:
"#PermitRootLogin prohibit-password"
editieren auf"
"PermitRootLogin yes"
...und neu starten "reboot"
fertig, falls "nano" nicht installiert ist, nachinstallieren mit...
"apt-get update"
"apt-get install nano"
Backup Einspielen von bereits (via meiner "alten" Anleitung) emulierter CCU:
Backup von alter VM-CCU erstellen.
Dann neu starten und ihr habt eure Settings wieder.
Backup Einspielen von Stock-CCU:
Windows:
1. Backup der Stock-CCU erstellen
2. winscp und 7zip auf Windows installieren
3. navigiert (Windows Explorer) zu eurem Backup. Rechtsklick "mit 7-zip offnen"
4. usr_local.tar.gz Doppelklick
5. usr_local.tar Doppelklick
6. usr Doppelklick
7. local Doppelklick
8. etc Doppelklick
9. config Doppelklick
10. alles markieren und lokal entpacken
11. winscp starten
12. Starten und Protokoll "sftp" auswaehlen
13. Hostename: IP der ccu
14. Username: root
Verbindung sollte da sein
15. Navigiert (rechtes Fenster) zu: /etc/config
16. Navigiert (linkes Fenster) zu eurem extrahiertem backup
17: Kopiert folgende Dateine/Verzeichnisse (drag and drop) (Ueberschreiben):
rfd (Verzeichnis)
hs485d (Verzeichnis)
crRFD (Verzeichnis)
homematic.regadom (Datei)
hs485d.conf (Datei)
ids (Datei)
rfd.conf (Datei) ACHTUNG. Hier nicht die komplette Datei kopieren, sondern nur die Interfaces! -> Texteditor. Falls nicht klar was gemeint ist, die Datei weglassen, und die Lan-Gateways mittels WebUI neu einstellen.
keys (Datei) -> nur bei Verschluesselung vorhanden.
Jetzt CCU ABWUERGEN und neu starten, fertig.
Docker:
Bei Docker ist das Einzige was tricky ist, ein sauberes Debian ans Laufen zu bekommen. Wenn das der Fall ist, könnt ihr wie oben beschrieben weitermachen:
Ich weise darauf hin, dass Docker von mir NUR (bis jetzt) mit Synology 918+ getestet wurde!
Ps: Ein sauberes Debian ist nicht nur fuer CCU sehr nuetzlich. Ich verwende das auch ich vielen anderen Fällen.
1. Schritt, openvswitch aktivieren (ohne wars bei mir instabil):
Control Panel -> Network -> Network interface -> Select connection (bei mir bond0, ansonsten eth0 oder was auch immer wählen)-> Manage -> Open VSwitch settings -> Enable open vswitch
2. docker via Package center installieren (Docker DSM wird nicht benötigt)
3. ssh der Synology aktivieren
Control Panel -> Terminal & SNMP -> Enable ssh service
4. auf Synology via ssh verbinden:
ssh username@192.168.0.150
auf root wechseln:
"sudo su"
5. Jetzt aufgepasst: Folgendes Commando dient als Beispiel und muss editiert werden, Ich kann leider nicht ins Detail gehen, Netzwerk Grundkenntnisse müssen vorhanden sein.:
"docker network create -d macvlan --subnet=192.168.0.0/24 --gateway=192.168.0.1 --ip-range=192.168.0.250/32 -o parent=ovs_bond0 ccu"
"--subnet=192.168.0.0/24" ist mein Lan Bereich. Wenn ihr also z.b. 10.0.0.0 verwendet muss das geändert werden. Die /24 ist die Subnetmask was bei mir 255.255.255.0 entspricht.
"--gateway=192.168.0.1" sollte klar sein, das ist normalerweise euer Router.
"--ip-range=192.168.0.250/32" wichtig! Das wird am Ende der IP Bereich der "virtuellen Netzwerkkarte", auch wenn das nicht ganz stimmt.
Im Prinzip soll das die IP eures Docker-Debians für die CCU werden. Klartext, das ist nachher die IP der CCU und das /32 heißt nur, die Range ist eine einzige IP.
parent=ovs_bond0 ist eure Netzwerk-Karte auf der Synology die angebunden werden soll. Das ist die Netzwerkkarte die ihr oben für den OpenVswitch freigegeben habt.
Zum Check könnt ihr folgendes eingeben in der SSH:
"ifconfig"
Da kommt dann ca sowas:
Code: Alles auswählen
ash-4.3# ifconfig
docker0 Link encap:Ethernet HWaddr 02:42:7D:94:66:D1
inet addr:172.17.0.1 Bcast:0.0.0.0 Mask:255.255.0.0
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
eth0 Link encap:Ethernet HWaddr 00:11:32:94:1C:CF
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:892658 errors:0 dropped:0 overruns:0 frame:0
TX packets:245600 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:544665089 (519.4 MiB) TX bytes:57054094 (54.4 MiB)
eth1 Link encap:Ethernet HWaddr 00:11:32:94:1C:D0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:668428 errors:0 dropped:0 overruns:0 frame:0
TX packets:312335 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:799470858 (762.4 MiB) TX bytes:36449254 (34.7 MiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:70839 errors:0 dropped:0 overruns:0 frame:0
TX packets:70839 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1
RX bytes:10434558 (9.9 MiB) TX bytes:10434558 (9.9 MiB)
ovs_bond0 Link encap:Ethernet HWaddr 00:11:32:94:1C:CF
inet addr:192.168.0.150 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::211:32ff:fe94:1ccf/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1000 errors:0 dropped:0 overruns:0 frame:0
TX packets:646 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1
RX bytes:389772 (380.6 KiB) TX bytes:257362 (251.3 KiB)
Und ganz zum Schluss des Kommandos steht noch der Name der Netzwerkbruecke die erstellt werden soll. Kann beliebig sein, ich hab "ccu" genommen.
Wenn das Commando adaptiert ist, ausfuehren. Keine Sorge, das kann man auch jederzeit wieder loeschen/aendern wenn was schief geht.
6. Docker oeffnen und das Netzwerk checken:
Packet Center -> Installed -> Docker -> open
Dort Network anwahlen
Hier sollte jetzt die "ccu" (oder welchen Namen ihr auch immer gewaehlt habt fuer die Netzwork Bridge) zu sehen sein. Checkt auch die Details.
Falls etwas nicht stimmt, loescht die Network Verbindung und nochmal von Punkt 5 zurueck.
7. Wir laden ein Docker image:
Im Docker WebUI "Registy" waehlen und folgendes Images suchen:
"minimum2scp/systemd-stretch"
Am besten oben nach "systemd" suchen, sollte dann auf Seite 1 im oberen Drittel sein.
Markieren und runterladen.
8. Im Docker WebUI "Image" waehlen:
Dort sollte "minimum2scp/systemd-stretch:latest" su sehen sein
Anwaehlen und "Launch" druecken. Es kommt ein Popup.
Container name egal, ich nehme auch "ccu"
"execute container using high privilege" selectieren
"Advanced settings"
Autostart usw nach belieben
"Network" -> auf "+" druecken und "ccu" wahelen (die Network-Bridge). Dann "bridge" (default Network Bridge) mit "-" wegmachen.
"Port Settings" koennen wir die Port 22 Weiterleitung auch loeschen. (warum erklaere ich unten)
Zuletzt: "Apply" -> "Next" -> "Apply"
Jetzt ist das Debian Docker Image fertig und kann unter "Container" gestartet werden.
9. SSH
Um ssh fuer root freizugeben, muss man ueber Docker-WebUI -> Terminal rein.
Docker-WebUI -> Container -> Doppelklick -> Terminal ... das wird leer sein daher:
"Create" oder "Create" -> Launch via command" -> "bash"
Dann siehe "Allgemein zur SSH"
Rest dann wie oben CCU-VM.
Ein paar Erklearungen. Die Netzwerkbridge ist dafuer gedacht, dass ich von aussen "nativ" auf die CCU komme. (Ja ich weiss Docker, ist anders gedacht etc.)
Darum brauchen wir auch keine Portweiterleitung mehr weil wir nativ drauf kommen (ja ich weiss, alles unsicher).
Und zum Schluss, wir nehmen Debian mit systemd Integration (ja ich weiss, das muss alles nicht sein und braucht nur Resourcen)
Es kann jeder sein Docker bauen wie er will, aber wenn das Script ohne Anderungen laufen soll, wird halt ein relativ "seriennahes" Debian vorrausgesetzt.
Ich kann leider nicht fuer jede Platform meine Anleitung anpassen.
Ps:
Nach einem Docker-VM restart muss der SSH Key rueckgesetzt werden. Ich hab da noch keinen Workaround gefunden.
PPs:
Loesung fuer SSH via Docker:
"nano /opt/init-wrapper/sbin/entrypoint.sh"
Folgende Zeile auskommentieren oder loeschen:
"run-parts --exit-on-error /opt/init-wrapper/pre-init.d"