Hosting von (u.a.) Java- und Node.js Anwendungen

QU3LLC0D3

Mitglied
Hallo zusammen,

ich bin seit einigen Jahren hauptberuflich Java-Entwickler und beschäftige mich seit jeher schon mit vielen Dingen rund um die Programmierung. Daher habe ich viele Projekte, die neben Java und JavaEE auch Node.js oder reine PHP- oder HTML-Projekte sind. Während es bei HTML/PHP ziemlich einfach ist eine Seite zu deployen ist es das für Java und Node.js leider nicht (zumindest für mich). Vor allem aber, weil ich wenig des technischen Aspekts selbst hinbekomme.

Ich habe momentan einen RaspberryPi mit einem DynDNS Dienst laufen, auf welchem zumindest meine PHP- und Node.js Projekte laufen. Einen Tomcat-, bzw. Wildfly habe ich bisher vergeblich versucht einzurichten ohne mein bestehendes Setup über den Haufen zu werfen.

Da mein Internet in letzter Zeit immer häufiger mal Schwierigkeiten macht und ich auch nicht davon abhängig sein möchte, interessieren mich daher vielmehr Hosting-Lösungen wo ich all meine Projekte realisieren kann. Das naheliegendste dürfte ein gemieteter Server sein allerdings kenne ich mich sehr wenig mit der Konfiguration und insbesondere der Domain-Konfiguration eines eigenen Servers aus. Geschweige denn hab ich eine Ahnung davon, wo man am besten überhaupt einen eigenen Server mietet und worauf man da achten muss. Auf meinem RaspberryPi habe ich das auch nur mit einer sehr genauen Step-By-Step Anleitung hinbekommen.

In meinem beruflichen Umfeld muss ich mich nur um meine lokal Lauffähigkeit in einer Wildfly-Umgebung kümmern. Irgendwie ist das ja das Gleiche aber trotzdem fällt es mir schwer, da eine Brücke zu schlagen.

Meine persönlichen Anforderungen sind also:
  • Deployment von Java und JavaEE Anwendungen (mit und ohne MySQL)
  • Deployment von Node.js Applikationen
  • Deployment von PHP Anwendungen

Es würde mich freuen, wenn jemand hier Hilfestellung leisten oder gute Quellen zur Verfügung stellen könnte, damit ich mir dieses Wissen aneignen kann. Ich würde da sehr gern von euren Erfahrungen profitieren auch wenn es sich hierbei nicht direkt um eine Frage zur Programmierung handelt.

Vielen Dank und viele Grüße,
QU3LLC0D3
 
Beste Antwort
Also die Probleme mit gemieteten Servern werden die gleichen sein wie auf deinem pi: Du musst es einrichten.

Das einfachste ist in meinen Augen: du nutzt einen Apache oder nginx Webserver. Das solltest Du ja schon haben und da gibt es genug Lösungen zur Konfiguration.

Tomcat oder was auch immer läuft separat und bietet nur auf 127.0.0.1 Seine Ports an. Der Webserver tritt da dann als Proxy auf und kümmert sich um SSL und co. Das ist dann auch einfach bezüglich letsencrypt oder so.

Damit habe ich gute Erfahrungen gemacht. Und das kannst du so auch mit Containern und so nutzen. Das ist dem Webserver ja egal, wohin er das schickt.


Eine Alternative kann die Cloud sein. Aber zumindest damals gab es kein Limit b er i den Kosten. Ein DDOS...
Also die Probleme mit gemieteten Servern werden die gleichen sein wie auf deinem pi: Du musst es einrichten.

Das einfachste ist in meinen Augen: du nutzt einen Apache oder nginx Webserver. Das solltest Du ja schon haben und da gibt es genug Lösungen zur Konfiguration.

Tomcat oder was auch immer läuft separat und bietet nur auf 127.0.0.1 Seine Ports an. Der Webserver tritt da dann als Proxy auf und kümmert sich um SSL und co. Das ist dann auch einfach bezüglich letsencrypt oder so.

Damit habe ich gute Erfahrungen gemacht. Und das kannst du so auch mit Containern und so nutzen. Das ist dem Webserver ja egal, wohin er das schickt.


Eine Alternative kann die Cloud sein. Aber zumindest damals gab es kein Limit b er i den Kosten. Ein DDOS Angriff kann dann schnell sehr teuer werden, weil die Anfragen bedient werden und jede Transaktion kostet. Aber das geht sehr gut z.B. mit Maven und deployment in die Cloud.
 
Beste Antwort
Hallo KonradN,

danke für deine schnelle Antwort - du bist ja hier wie der Blitz ;-)

In der Tat, einen Apache nutze ich bereits auf meinem Pi. Ich glaube du hast hier genau mein Problem erkannt: Nämlich, dass der Webserver als Proxy fungieren muss um Anfragen dann z.B. an den Tomcat weiterzuleiten. Gut, dass du das so formulieren konntest, denn dann weiß ich wenigstens wonach ich genau suchen muss. Das war mir tatsächlich nämlich nicht so ganz klar.

Die Idee mit dem gemieteten Server liegt eher darin begründet, dass mein Internet momentan so häufig ausfällt - demnach eben auch mein Pi nicht erreichbar ist - das hätte ich gern geändert.

Ich denke, ich werde aber dann zunächst versuchen, das auf dem Pi hinzubekommen denn dann dürfte es ja auch auf einem anderen Server klappen.
 
Bei Apache ist das dann mod_proxy und ist dann eine Konfiguration wie:
Code:
    <Proxy balancer://root>
        BalancerMember http://127.0.0.1:3000
    </Proxy>
    ProxyPass / balancer://root/
(Das ist z.B. bei mir eine Konfiguration für mein Gitea, welches auf Port 3000 läuft - ohne SSL! Das ist Bestandteil der SSL Konfiguration, d.h. der Apache hat das SSL Zertifikat und certbot aktualisiert das automatisch u.s.w.)

Konfiguration kann man sich aber auch sehr einfach machen - ich nutze auf meinem Server z.B. Webmin - da ist das dann ein einfacher Eintrag unter "Proxy Paths".

Und die 127.0.0.1:3000 kann direkt auf einen Container verweisen. Container sind eine gute Lösung um Dinge zu separieren und sauber zu halten.

Ach ja - wenn Du einen Server haben willst: Ich habe zuletzt schlechte Erfahrungen mit vServern gemacht. In der Vergangenheit hatte server4you sehr Gute und günstige, aber das es da günstige und brauchbare vServer für 5 Euro gibt, ist passe wie es mir scheint. Da kann es also lohnen, sich einen richtigen Server zu mieten (wobei die teuren vServer dort bestimmt was taugen! Wenn man also keine Probleme mit dem Blech haben will oder so, dann ist das nicht schlecht. vServer kommen auch meist mit Snapshots, d.h. Du hast ein erstes einfaches Backup.)

Die vServer von z.B. Strato waren sehr enttäuschend. Da habe ich regelmäßig Probleme mit startenden Prozessen. Wenn da zu viel Services starten wollen, dann macht er das öfters einfach nicht was sehr bedenklich ist. Dafür kostet der Scheiß einfach zu viel (Welche Limits da was verhindert haben, konnte ich an den Fehlermeldungen nicht sauber ablesen und mir war das dann auch schnell egal. Müll ist Müll und da muss man nicht mehr klassifizieren).
 
Ich setze auch konsequent auf Docker(-Compose). Auch Apache habe ich durch https://github.com/traefik/traefik/ als Proxy ersetzt. Die Proxykonfiguration erfolgt dann einfach durch das Starten bzw. Stoppen eines Containers. Zusätzlich verwende ich Watchtower. Damit muss man keine Updates mehr irgendwie deployen. Man stellt die Updates in seine Docker-Registrie ein, der Rest passiert automatisch. Wenn man will auch unterbrechungsfrei. Updates und Überwachung des Servers habe ich größtenteils automatisiert. Wartungsaufwändige Anwendungen wie Nextcloud habe ich ersetzt. So kann ich mit minimalem Aufwand mehrere Server betreiben ohne meine gesamte Freizeit zu opfern. Es gibt zwar hin und wieder mal Überreaktionen des Systems aber damit kann ich leben. Allerdings ist das ein Prozess und den ultimativen Endzustand gibt es nicht.
Ach so: "mehrere Server" - es laufen auf jedem Server mehrere Docker-Container, also Server bezeichnet hier Hardware. Ich habe da ebenfalls mit RaspPi angefgangen, nutze die aber nur noch für IoT-Zeug. Ansonsten habe ich noch 2 Mietserver bei Strato - die Verträge sind aber uralt, ich kann gar nicht sagen ob man das noch so mieten kann. Die RaspPi's habe ich durch China-Mini-PC's ersetzt (Vorteil: SSD's, mehr Cores, mehr RAM). Da mir der schlechte Ruf bekannt ist, sind diese so ausgelegt, dass sie sich gegenseitig ersetzen können. Ich hatte aber noch nie ernsthafte Probleme damit.
 

Zurück
Oben