solectrus / hosting

Step-by-stypes guides for installing and hosting Solectrus
9 stars 4 forks source link

Lokale Rasperry Installation parallel zu div Anwendungen #28

Closed JuergenKir closed 1 year ago

JuergenKir commented 1 year ago

Auf meinem Raspberry pi 4 - 4GB (aarch64) laufen u.a. iobroker, InfluxDB (1.8.10) und Grafana ohne Docker Container. Ich möchte Solectrus zusätzlich drauf installieren und habe 3 Fragen dazu:

Danke im Voraus.

ledermann commented 1 year ago

Zu 1) Grundsätzlich lässt sich Docker parallel zu bereits bestehenden Anwendungen betreiben. Da sehe ich keine Probleme, auch wenn die limitierenden Faktoren natürlich RAM (in erster Linie) und möglicherweise auch CPU-Power sind. Hier mal der Speicherbedarf der Docker-Container, die für SOLECTRUS zusammen kommen, als reine Momentaufnahme (per docker stats) auf meinem Raspi 8GB:

solectrus-app-1                 128.3MiB 
solectrus-forecast-collector-1  27.18MiB 
solectrus-senec-collector-1     38.43MiB 
solectrus-influxdb-1            338.8MiB 
solectrus-redis-1               11.05MiB 
solectrus-db-1                  38.09MiB 

Zusammen also etwa 600 MB. Ich weiß nicht, wie viel RAM Deine bestehenden Anwendungen benötigen. Wenn free -h genügend freien Platz anzeigt, wäre es einen Versuch wert.

Zu 2) SOLECTRUS verwendet (zwingend) InfluxDB 2, was sich grundlegend von Version 1 unterscheidet. Aber auch das ist kein Problem, Du kannst InfluxDBv1 als native installierte Anwendung weiter betreiben und parallel dazu InfluxDBv2 in einem Docker-Container. Bei Docker-Containern, die irgendwas speichern sollen, also z.B. Datenbanken, legt man per Volume den Ordner fest, wo die Daten abgelegt werden soll. Solange InfluxDB2 im Docker-Container ein Volume verwendet, das einen eigenen Ordner hat, gibt es keine Probleme mit der bereits bestehenden Installation.

Zu 3) Der Port von SOLECTRUS kann verändert werden, 3000 ist nur die Standardvorgabe. Die Einstellung ist per Environment-Variable zu definieren. Um beispielsweise auf den Port 4000 zu wechseln, ist die docker-compose.yml folgendermaßen anzupassen:

services:
  app:
    ports:
      - 4000:4000
    environment:
      - PORT=4000

Viel Erfolg beim Installieren! :-)

JuergenKir commented 1 year ago

Vielen Dank für die schnelle Hilfe. Nach Ausführen des "docker compose up" klappt leider die Erstellung der Container nicht. Ich erhalte folgenden Fehler: no matching manifest for linux/arm/v8 in the manifest list entries Gibt es dafür eine Erklärung bzw. Abhilfe? Vielen Dank :)

ledermann commented 1 year ago

Hm, das Problem hatten wir schon mal, siehe #22. Die Lösung des betroffenen Users war, seinen Raspi komplett neu aufzusetzen, was für Dich wohl eher nicht infrage kommt.

Das Docker-Image für SOLECTRUS wird für linux/arm64 bereitgestellt, nicht für linux/arm/v8. Das würde ich gerne auch beibehalten. Mir ist nicht ganz klar, warum Dein Raspi linux/arm/v8 erfordert.

Könntest Du bitte den Output von dpkg --print-architecture sowie uname -a posten?

JuergenKir commented 1 year ago

Ich hatte das Pi OS ursprünglich als 32 bit-Version installiert und später den Kernel auf 64 bit geändert. "uname -a " zeigt zumindest das gewünschte Ergebnis. Aber es halt wohl doch kein vollständiges 64 bit-System? Vielleicht liegt es daran?

image

Docker info spuckt folgendes aus: _pi@iobroker:~ $ docker info Client: Context: default Debug Mode: false Plugins: buildx: Docker Buildx (Docker Inc.) Version: v0.10.4 Path: /usr/libexec/docker/cli-plugins/docker-buildx compose: Docker Compose (Docker Inc.) Version: v2.17.2 Path: /usr/libexec/docker/cli-plugins/docker-compose

Server: Containers: 1 Running: 1 Paused: 0 Stopped: 0 Images: 2 Server Version: 23.0.3 Storage Driver: overlay2 Backing Filesystem: extfs Supports d_type: true Using metacopy: false Native Overlay Diff: true userxattr: false Logging Driver: json-file Cgroup Driver: systemd Cgroup Version: 2 Plugins: Volume: local Network: bridge host ipvlan macvlan null overlay Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog Swarm: inactive Runtimes: io.containerd.runc.v2 runc Default Runtime: runc Init Binary: docker-init containerd version: 2806fc1057397dbaeefbea0e4e17bddfbd388f38 runc version: v1.1.5-0-gf19387a init version: de40ad0 Security Options: seccomp Profile: builtin cgroupns Kernel Version: 6.1.21-v8+ Operating System: Raspbian GNU/Linux 11 (bullseye) OSType: linux Architecture: aarch64 CPUs: 4 Total Memory: 3.704GiB Name: iobroker ID: bf920985-a5bd-480f-a5ed-0cb47e9d10f1 Docker Root Dir: /var/lib/docker Debug Mode: false Registry: https://index.docker.io/v1/ Experimental: false Insecure Registries: 127.0.0.0/8 Live Restore Enabled: false

WARNING: No memory limit support WARNING: No swap limit support_

ledermann commented 1 year ago

Die entscheidende Stelle ist das armhf. Es handelt sich also um einen 64bit Kernel, aber mit 32bit Userland. Das ergibt sich, wenn man nachträglich in der /boot/config.txt den Eintrag arm_64bit=1 vornimmt. Ich habe meine Anleitung angepasst.

Nach meinem Kenntnisstand gibt es leider keinen (einfachen) Weg, voll auf 64bit umzustellen. Es bleibt somit nur die Möglichkeit, Deinen Raspi komplett neu aufsetzen. Das ist zwar fix gemacht (mit dem Raspberry Pi Imager), aber die bestehenden Anwendungen wären dann ebenfalls neu einzurichten.

JuergenKir commented 1 year ago

Den Raspi platt machen für das 64bit OS möchte ich aktuell (noch) nicht und habe eine neue Alternative gesucht: Ich habe einen Proxmox-Server aufgesetzt und dort einen lxc-Container mit debian-11 Template erstellt. Dann funktioniert die Anleitung für für die Synology NAS mit minimalen Änderungen. Bingo - Solectrus läuft !!!

ledermann commented 1 year ago

@JuergenKir Großartig! :)