Mehrere Anwendungen auf einem Raspberry

Wenn ich zwei oder mehr Anwendungen auf einem Raspberry mir Raspi OS habe
und jedes mit eimem Web-Browser local oder über LAN bedienen möchte,
geht der Aufruf jeder Anwendung ja über die IP.

Nun habe ich aber nur eine NW-Karte mit nur einer IP.
Wie wähle ich die Gewünschte Anwendung aus?
Unter Windows gibt es ja die Möglichkeit über die erweiterten TCP/IP-Einstellungen
weitere IP-Adressen der Karte hinzu zu fügen.
Ob das auch bei Linux geht, weiss ich nicht.

Eine möglicherweise einfachere Weise wäre über unterschiedliche Ports.
Doch wie kann ich den Anwendungen je eigene Ports zuweisen?

Wie löse ich (am einfachsten) das?

Hustler

Normalerweise lauscht jede Anwendung auf unterschiedlichen Ports.
Edit: Erklärung für IPv4 ! Mit IPv6 läuft es meist ein wenig anders, hier bekommt jeder Service meist wirklich eine eigene IP, allerdings hab ich da weniger Ahnung weil ich noch nie ein IPv6 Heimnetz betrieben habe.

Sagen wir mal dein Raspi wird mithilfe deiner Fritzbos auf der Domain raspi.home angesprochen,
also dass dein Heimrouter ein DNS service hat, der die IP des Raspis mit der Domain raspi.home verbindet sodass alle Anfragen automatisch an die richtige IP weitergeleitet werden.

Wenn du zB. mit deinem Browser die Seite: raspi.home eintippst, dann erweitert der Browser automatisch die Anfrage mit dem standart Internetprotokoll https: https://raspi.home:443 und dein Router ändert quasi die Anfrage auf https://192.168.1.5:443 (oder was dein Raspi auch immer für eine IP hat).
Der Standartport für Verschlüsseltes HTTP ist 443 und dein Browser bekommt nur eine Antwort, wenn es auf dem Raspi ein Programm gibt, welches auf Netzwerktraffick auf dem Port 443 lauscht und antwortet.

Auf Linux kann man den Programmen meist sagen, welchen Port sie bedienen sollen. Für Ports unter 1000 bracuhst du Adminrechte, alles darüber kannst du so laufen lassen.

Meist bringt jedes Programm schon seinen eigenen Port mit, kleinere Webserver laufen zB. meist auf 8080, du kannst diesen Service dann mittels http://raspi.home:8080 erreichen. (80 ist der http port, also der unverschlüsselte Internetverkehr. 8080 hat sich desegen für eigene Webserver ohne Admin permissions eingebürgert. Mit Adminrechten würde man natürlich den Port 80 nehmen.)

Hast du jetzt zwei Webserver auf dem Gerät laufen, dann kannst du einfach einen anderen Port einstellen:
Webserver 1: http://raspi.home:8080
Webserver 2: http://raspi.home:8081
Webserver 3: http://raspi.home:8082
usw.

Die Ports sind natürlich nicht auf http beschränkt, jedes Netzwerkprotokoll könnte verwendet werden. Hast du einen Miningverteiler, dann brauchst du zB. stratum+tcp://raspi.home:3333 und einen Miningservice, welcher auf Port 3333 lauscht. Dann kannst du noch einen Teamspeak server aufsetzen, einen Mastodon server usw. Alle würden einfach einen oder mehrere andere Ports bekommen. Das kann alles auf einem einzigen Raspi laufen, nur dass mit der Anzahl der laufenden Services irgendwann doch die Rechenkapazität für die eintreffenden Anfragen fehlt.

Wie du den Port einer Anwendung festlegst hängt von der Anwendung/dem Service ab, den du betreiben willst. Meistens reicht es im Startbefehl den Port anzugeben, also zB:

$ webserver -p 8080
$ webserver -p 8081

Oder das Programm bietet eine Konfigurationsdatei, die du ändern musst.

Oh, ausführlich, danke.

Ich habe einen 4er, auf dem RaspiBlitz ohne Lightning läuft.
Aktive Ports sind:
80 HTTP
443 HTTPS
Der Aufruf von RaspiBlitz über HTTP erfolgt über die IP ohne Angabe eines Port´s.
RaspiBlitz fordert also bei der Installation keine eigenen Port´s an.

Ein 3er läuft testweise erst mal mit einer Anwendung.
OS ist Raspios-Bullseye
Aktive Ports sind:
139 NetBIOS
445 SMB
3000 HBCI
Der Aufruf der Anwendung über HTTP erfolgt über die IP mit Angabe des Port´s 3000.
Port 3000 wurde bei der Installation gefordert.

Samba ist wohl vom OS mit installiert worden?
Wo und wie sage ich jetzt einem zusätzlichem Programm,
auf welchem Port es lauschen soll,
wenn es nicht bereits seinen eigenen Port mitbringt?

Hustler

Nein, RaspiBlitz Web UI nimmt sich standardmäßig die HTTP/S Ports 80 und 443 (was auch Sinn ergibt, da es ja die „Hauptanwendung“ des Raspiblitz OS ist).
Der verwendete Webserver hierfür ist Nginx (siehe raspiblitz/home.admin/config.scripts/blitz.web.sh at 67335444b398729bad8565ef80269e3d3517c5c5 · raspiblitz/raspiblitz · GitHub).
Um auch andere Services laufen zu lassen (auf anderen Ports) muss man das pro service konfigurieren. Wie genau man den Port einstellt, hängt vom Programm ab, dafür müsstest du uns sagen, was genau du alles installieren willst.
Folgendes kann ich aber im Allgemeinen sagen:
Aus Sicherheits- und Stabilitätsgründen ist davon abzuraten, auf einem Raspiblitz „Fremdsoftware“ zu installieren.
Das Prinzip von Raspiblitz verfolgt den Ansatz der „Reproducibility by Defined State“
Das heißt, dass bei jedem Major-Update, also z.B. v1.8.0 > v1.9.0 die gesamte SD-Karte, auf der sich das Betriebssystem und alle Laufzeitdaten der Programme befinden, gelöscht und neu beschrieben wird. Das ist deshalb so, weil dann Randfälle und Probleme durch Überbleibsel („State“) des alten Systems nahezu nicht mehr auftreten, was die Entwicklung von so einem komplexen System stark vereinfacht.
Im Klartext: Um zu vermeiden, dass deine selbst installierten Anwendungsdaten vom System überschrieben werden, müsstest du die Daten auf die HDD auslagern (mit korrekten Permissions usw.) und die Anwendung dann bei jedem Update neu installieren bzw. rekonfigurieren.
Das ist nicht trivial, aber auf jeden Fall machbar
Ein besserer Ansatz wäre hier, ein anderes OS zu verwenden, welches dafür gedacht ist, vom Benutzer angepasst zu werden. Dafür gibt es zwei sinnvolle Möglichkeiten:

  1. Selbst auf Raspbian bzw. Debian aufsetzen, z.B. via C-lightning, clboss und RTL selbst auf Debian 11 aufsetzen
  2. Nix-Bitcoin verwenden, dieses System (basiert auf NixOS) verfolgt den Ansatz der „Reproducibility by Declarative Configuration“ und ist deshalb ganz gut geeignet. Pluspunkte gibt es auch im Punkto Sicherheit usw… (https://nixbitcoin.org/)

Aber hier würde ich dann evtl auch schon zu „professionellerer“ Hardware greifen, da ein Pi 4 schon mal ins schwitzen kommen kann bei mehreren Anwendungsbereichen gleichzeitig. (Kommt auch darauf an, wie viel RAM du hast).
Außerdem ist dann bei anderen Services evtl vllt die Datensicherheit noch wichtiger, da wäre evtl ein RAID ganz gut
Meine persönliche Empfehlung wäre sowas wie das hier: Intel NUC 12 NUC12WSHi5 ab 421,90 € | Preisvergleich bei idealo.de

Nix-Bitcoin läuft im Moment nicht auf RPI4, der macht da eher Probleme (ist in Arbeit) und ist generell eher was für Erfahrenere Anwender. (aber der Aufwand lohnt sich, vor allem mit guter HW :smiley: )

Auch zu beachten ist natürlich, dass so ein Custom-Setup mehr Eigenarbeit erfordert für Updates usw…
Falls du da mehr Interesse dran hast, kann ich dir gerne eine Basiskonfiguration für Nix-Bitcoin schicken.
Wenn du auf Raspiblitz bleiben willst, dann kannst du uns ja mal schicken, was du so installieren willst, dann können wir dir vielleicht helfen, die Ports umzustellen

1 „Gefällt mir“

Klar soweit, aber mein Router zeigt im Gegensatz dazu keine freigegebenen Ports an.
Ist aber eh akademisch.
Der 4er mit der Node hat 8GB.
Wollte aber jetzt nichts zusätzlich raufpacken.
Hatte das nur als Vergleich der verwendeten Ports angeführt.

Auf dem 3er läuft testweise Balance.
Ich wolte da jetzt nicht haufenweise Anwendung parallel drauf laufen lassen.
Wenn kommt dann wahrscheinlich nur noch die BitBox-App dazu.
Ich glaube nicht, dass das den Raspberry in die Knie zwingt.
Wenn ich beide Raspberrys 24/7 laufenlasse ist die Gesammtlast 15W.
Das erscheint etwas hoch, liegt aber daran, dass ich die Installationen nicht auf SD-Karten sondern auf SSD´s habe.

Hustler