dkx777
Goto Top

Welcher Server ist sinvoll - Bin total ratlos

Hi an alle Profis des Forums!

Ich stehe vor einem Problem, was mich seit einer Woche nicht schlafen lässt.

Als kleiner Webentwickler hatte ich vor 3 Monaten eine Idee und bin dabei diese als erstes eigenes Projekt zu realisieren. Die Entwicklung geht eigentlich gut voran, jedoch komme ich jetzt an einen Punkt, an dem ich nicht weiterweiß, da meine Kenntnisse hier komplett fehlen.

Ich habe ein kleines Webtool entwickelt, welches sich über eine API mit z.B. YouTube LiveStreams connecten kann.

Die Zuschauer der Streams können dann Interaktionen in meinem Webtool ausführen. Diese werden als Aktivität in einer Datenbank gespeichert und der Streamer hat eine Source (quasi eine kleine PHP-Page), die er in seinen Stream einbinden kann. Diese Page checkt alle 3 Sekunden die Datenbank auf neue Aktivitäten ausgelöst durch Zuschauer.

Wenn eine Aktivität gefunden wird, wird diese im Stream ausgeführt.

Ob ich das weiterhin über einen 3Sek. Timer und eine direkte PDO Abfrage an die Datenbank über meine API mache oder dafür vielleicht doch lieber später Echtzeit-Tools wie Pusher.io nutze, die dann eine Info an die PHP-Page des Streamers, vom Backend beim Auslösen einer Interaktion, senden, weiß ich noch nicht. Aber natürlich habe ich hier diese Thematik mit maximalen Verbindungen zur Datenbank im Hinterkopf. Das hatte ich irgendwo mal gelesen, weiß jedoch nicht mehr so genau was es da tatsächlich zu bedenken gibt.

Nun stehe ich jedoch vor der großen Frage was brauche ich für eine Infrastruktur, wenn meine kleine Idee über Nacht groß werden sollte.

Bisher ist meine Testumgebung lediglich in einem Hosting Paket aufgebaut. Noch gibts auch keine Streamer, die die Idee nutzen und erst recht keine Zuschauer, die Requests zur Datenbank bzw. Backend aufbauen müssen.

Und hier wende ich mich jetzt an euch Spezialisten in der Hoffnung, dass ihr mich in die richtige Richtung lenken könnt.

Vor folgender Situation habe ich nämlich wirklich Sorge. Klar könnte ich jetzt einfach ein Hosting-Paket nutzen. Da kann es dann passieren, dass irgendwann der Hoster sagt, ok Freund du blockierst die Seiten der anderen Kunden so geht das nicht.

Ich könnte ausweichen auf einen V-Server oder Managed Server, hierbei kenne ich mich jedoch null aus, welche CPUs Arbeitsspeicher und Co man mieten müsste um X Aufrufe / Requests / Connections stabil halten zu können.

Ich könnte auch einen Root Server mieten oder selber zusammenbauen? Bei dem ich dann aber 100%ig komplett an der eigentlichen Konfiguration zusammenbrechen werde ^^

Meine Sorge ist, wenn die Idee anlaufen sollte und tatsächlich die Runde macht und vielleicht sogar große Streamer mit 40 - 100k Zuschauern die Idee einsetzen wollen, dass dann der Server einfach aufgibt und das ganze Offline geht. Ab dem Moment würde es keiner der Streamer nochmal nutzen und die Chance wäre vertan.

Wie kann ich jetzt hier die richtige Entscheidung treffen um vorsorglich save zu sein und das mit kleinen finanziellen Mitteln.

Vielleicht muss man noch wissen, wie die Requests ablaufen dazu hier eine kleine Zusammenfassung:

1. Website (einmaliger Call durch einen Streamer)
Es gibt eine Website. Über die kann sich ein Streamer Anmelden und einloggen. Der Streamer erhält dort einen Link zu seiner PHP-Page, die er in seinen Stream einbinden kann.

2. PHP-Page (alle 3 Sekunden Calls)
Ab da gibt es dann alle 3 Sekunden einen Verbindungsaufbau zu der MySQL Datenbank, um zu prüfen ob es Aktivitäten gibt.

3. Iframe Page (Calls durch Buttons)
Es gibt eine andere Page die z.B. bei YouTube per IFrame geladen werden kann und die jeder Zuschauer sieht, wenn er einen Stream anschaut. Die Page ist statisch und noch leer solange bis der Zuschauer einen Button drückt. So stell ich sicher, dass nicht bereits vorab für jeden einzelnen Zuschauer des Streams die Datenbank Dinge ausgelesen werden, obwohl der Zuschauer gar nichts machen will. So verhindere ich dann zusätzlich Traffic.

Hat er den Button gedrückt erfolgt ein Request zur API meines Backends. Diese liest aus der Datenbank alle möglichen Aktivitäten / Interaktionen und sendet sie zurück an das Iframe. Dadurch wird eine Liste aller Interaktionen angezeigt und der Zuschauer kann über einen Button pro Integration diese starten. Startet er eine Interaktion folgt ein weiterer Request zur API und in die Datenbank wird diese Aktivität geschrieben, die gestartet werden soll.

Die PHP-Page unter 2. merkt jetzt ok da ist eine Aktivität die ich ausführen soll und macht das. Nachdem die Aktivität ausgeführt wurde wird von der PHP-Page ein weiterer Request an die API gesendet und diese setzt die Aktivität in der Datenbank als ausgeführt / abgeschlossen / done.

- - - - - - - -

Das war es im Grunde auch schon. Im Hinterkopf muss man jetzt behalten, dass es Hunderttausende gar Millionen potentielle Streamer weltweit mit x Millionen Zuschauern gesamt gibt. Aber wie man so etwas am besten skalieren kann, da weiß ich einfach nicht weiter.

Ich bin wirklich sehr gespannt ob ihr mir bei meinem ersten eigenen Projekt helfen könnt - VIELEN DANK - für eure Zeit face-smile

LG

Content-ID: 12738833768

Url: https://administrator.de/contentid/12738833768

Printed on: October 16, 2024 at 01:10 o'clock

QDaniel
QDaniel Mar 09, 2024 at 17:04:38 (UTC)
Goto Top
Wenn du viele Requests erwartest, solltest du dir Gedanken machen auf ein System zu wechseln welches nur ein einmal auf dem Server läuft. Z.b. mit .Net Core und kein PHP verwenden.
Auch Pushsysteme wie SSE, WebSockets, SignalR sind damit einfach zu realisieren und dämmt die Requestflut.

Dann halten sich die Datenbankanfragen auch in Grenzen. Zudem ist es dann ein leichtes die App zu skalieren und weitere Instanzen mit nem Load-Balancer davor zu verbinden.
StefanKittel
StefanKittel Mar 09, 2024 at 20:42:02 (UTC)
Goto Top
Moin,
dafür gibt es keine einfache Antwort face-smile
Ohne ein Ziel in der Auslastung auf die man sein System auslegt, wirst Du, wenn alles gut läuft, Deine Infrastruktur mehrmals umbauen müssen. Die Super-Duper-Lösung wird jetzt schlicht zu teuer sein. Hosting-Kosten von 10-20 TEUR sind für einen frequentierten Online-Shop normal.


Kurz 2 Basics zu Zuverlässig und Leistung.

Die meisten normalen Hosting-Systeme und v-Server laufen mit einer Zuverässigkeit von 99%.
Klingt viel, aber ein Ausfall von 3,65 Tagen pro Jahr auf einmal ist schon doof. Mehr gibt es mit HA (Hochverfügbarkeit) was die Hostingkosten um ca. den Faktor 5 verteuert.

Und ja, meine Hetzner-Server haben keinen Ausfall von 3,65 Tagen im Jahr. Aber wenn Du Verträge mit Kunden machst, kommen da auch SLAs zum tragen.

Zu Leistung muss man wissen, dass neben der reinen CPU-Leitung auch eine IO-Lestung zum tragen kommen.
Statt einem Super-Server (Epic 256 Cores) sind 10 Server mit 24 Core deutlich schneller.


Tipp. Nimmer ein halbfertiges Hosting-System was man skalieren kann.
z.B. ein skalierbaren managed Root-Server mit Plesk. Damit kannst Du mit 2-3 Probekunden Dein System sowohl von der Logik als auch Leistung testen. Danach sieht man dann weiter.

Stefan
DKX777
DKX777 Mar 09, 2024 at 23:57:02 (UTC)
Goto Top
Vielen Dank für deine schnelle Antwort!

Das klingt nach einem interessanten Ansatz für mich jedoch nicht so einfach realisierbar, da ich mit .Net noch nie in Berührung kam. Auf den ersten Blick scheint die Syntax Javascript zu ähneln und bei SignalR ist es dann eher ähnlich zu PHP Classes. Ich hab jedoch etwas Bedenken ohne damit je gearbeitet zu haben diese Techniken einzusetzen.

Der Tipp ist super und ich werde mir das in der Zukunft nochmal näher ansehen spannend!
DKX777
DKX777 Mar 10, 2024 at 00:23:18 (UTC)
Goto Top
Moin Stefan,

vielen Dank für deine ausführlichen Infos.

Hochverfügbarkeit wäre schon nett, aber ich denke gerade am Anfang kostentechnisch nicht ganz realisierbar.
Das mit den 3,65 Tagen werde ich mir gleich mal merken.

Das Leistungsthema ist auch interessant. So ne kleine Serverfarm wäre schon ganz schön man wird ja träumen dürfen ^^


Einen "skalierbaren managed Root-Server mit Plesk" das klingt nach einem Plan mit dem ich arbeiten kann, also glaube ich zumindest. Hatte mir dazu schon ein paar Anbieter angeschaut. Kosten liegen ja irgendwo zwischen 40 und 100 Euro je nach Power.

Ich verstehe die Idee dahinter mit den 2 oder 3 Probekunden um überhaupt skalieren zu können, aber das wird etwas schwierig, da ich mit kleineren Streamern (Kunden) anfangen muss, die vielleicht 100 Zuschauer haben um überhaupt eine Akzeptanz zu bekommen und die Idee bekannt zu machen. Hierbei kann ich natürlich dann nur schwer skalieren wenn von diesen 100 dann vielleicht 10 User das System testen.

Wenn das ganze erfolgreich und stabil läuft, werden große Streamer meist darauf aufmerksam oder ich kann diese direkt kontaktieren. Bis zu diesem Zeitpunkt muss dann aber die Infrastruktur gesichert sein, dass wenn wirklich Streamer mit 30k oder 100k Zuschauern testen wollen, alles läuft.

Hast du da eine Empfehlung mit viel CPUs, RAM und Co man starten sollte. Was würdest du als Basis nehmen? Es gibt ja scheinbar große Unterschiede auch von Anbieter zu Anbieter.
Frank
Frank Mar 10, 2024 updated at 10:19:30 (UTC)
Goto Top
Hi,

Wenn du viele Requests erwartest, solltest du dir Gedanken machen auf ein System zu wechseln welches nur ein einmal auf dem Server läuft. z.b. mit .Net Core und kein PHP verwenden.
Auch Pushsysteme wie SSE, WebSockets, SignalR sind damit einfach zu realisieren und dämmt die Requestflut.

PHP ist hier nicht das Problem, unsere Seite hier läuft mit Millionen von Zugriffen und mit PHP. Du solltest als Webserver z.B. NGINX nehmen und kein Apache. Das Problem würde ich eher bei der MySQL sehen, diese skaliert nicht wirklich gut. Da würde ich eher zu einer In-Memory DB wie DragonflyDB oder Redis tendieren.

Ein WebSocket Server wie Open Swoole funktioniert sehr gut und sehr schnell mit PHP. Wenn du es mit PHP richtig performant haben willst, dann schau dir FrankenPHP an - das ist ein PHP App Server geschrieben in GO.

Wenn keine In-Memory DB gewünscht ist, dann schau dir mal die NoSQL DBs wie z.B. MongoDB oder CouchDB an. Diese sind alle schneller und skalierbarer als eine MySQL und haben eine komfortable PHP Schnittstelle oder Bibliothek dazu.

Für das Hosting würde ich einen beliebigen Cloud-Anbieter nutzen, z.B. OVH oder Amazon AWS , etc. Eigene Server oder Hardware kann ich nicht mehr empfehlen, macht nur Arbeit und ist auf Dauer zu teuer.

Gruß
Frank
StefanKittel
StefanKittel Mar 10, 2024 at 09:04:00 (UTC)
Goto Top
Moin,

die Sprache PHP ist, wie der Name schon sagt, nur eine Sprache.
Ja, C++ ist schneller als PHP, aber in der Praxis spielen andere Faktoren, wie z.B. die Logik und Abläufe eine viele größere Rolle.

Man kann immer mehr und schnellere Server mieten um bestimmte Daten immer on the Fly zu berechnen.
Bis man irgendwann feststellt, dass man diese zentrale und nur einmal alle 5 Minuten berechnet und sonst nur die fertigen Ergebnisse ausliefern kann und damit 2% Rechenleistung benötigt.

Beispiel 1: Ich habe einen Kunden der für ein Festival in Hamburg einen Vorverkauf zu einem bestimmten bekannten Zeitpunkt gestartet hat. Die ersten 1000 Tickets waren günstiger. Also saßen 10.000 Leute vor Ihren Computer, meist sogar 2-3 und ab 17:55 Uhr drückten alle im Sekundentakt F5. Das sind dann schnell 40.000 Anfragen pro Sekunde. Die Meisten Shop-Systeme, wie z.B. Magento schaffe mit guter Hardware 100 pro Sekunde. Wir haben dann eine Warteschlange programmiert wo jeder eine Nummer bekommen hat. Fand die Marketingabteilung nicht gut weil es die Spannung nahm, funktionierte aber. Aktuell werden immer kleine Gruppen gestaffelt angeschrieben die schon man da war.

Beispiel 2: Eine Firma hatte ein Skript in Ihrem Web-Shop welches eine Export-Datei aus dem Onlinebanking mit den Rechungen abgliech um diese als bezahlt zu markieren. Irgendwie lief das Skript 600 Sekunde statt 10 am Anfang. Ich hatte mir das Skript angeschaut und festgestellt, dass sie die Datei immer mit allen Rechnungen abglichen. Auch jenen aus vergangen Jahren und schon bezahlten Rechnungen. Also wurde das Skript umgestellt dass es nur aktuelle unbezahlte Rechnungen geprüft hat. Laufzeit: 2 Sekunden.

Fazit: Server heutzutage sind ganz schön schnell. Aber mit einer falschen Logik kannst Du alles Platt machen.
Nutze wenn möglich verteilte Rechenleistung und verteilte Daten. Ein Javascript im Browser hat auch einen lokalen Speicher. Dort einfach nur Updates hinsenden und der Javascript-Webclient macht die Arbeit für Dich.

Stefan
Jaggl
Jaggl Mar 10, 2024 at 09:06:20 (UTC)
Goto Top
Ich würde auch eher in die Cloud gehen, da kannst du jederzeit Ressourcen dazubuchen oder auch abschalten.

Ich will ja keine Werbung machen aber meine Firma wo ich Arbeite bietet auch Cloud Dienste an > https://www.hivehero.cloud
StefanKittel
StefanKittel Mar 10, 2024 updated at 09:09:59 (UTC)
Goto Top
Nachtrag zum Theme Software.
Definiert wird Deine Software durch den Browser.
Der kann: HTML, CSS, Javascript und neuerdings WebAssemblys.

Info: Full-Stack-Webentwickler werden sehr schnell wahnsinnig.
Wer schlau ist und die Möglichkeit hat macht nur Front-End oder nur Backend.

Ich persönlich finde CSS und Javascript unglaiublich schlecht. Über die Jahre immer wieder aufgepuscht und erweitert und in vielen Bereichen einfach unlogisch.

Ich mag Backend. Frontend mache ich das nötigste mit Bootstrap.
Dein Feinschliff übernimmt mein Kollege.

Sinnvoll wären aber Lösungen wie z.B. React oder Vue.
Da die aber zwangsweise auf Javascript basieren müssen, der Browser kann halt nix anderes, sind die genauso verkorkst.
Ich habe mich mal eine Woche damit beschäftigt und kann damit auch arbeiten. Es führt aber zu psychischen Nebenwirkungen face-smile

Allgemein halte ich es für sinnvoll Frontend und Backend zu trennen und mit APIs zu verbinden.

Stefan
StefanKittel
StefanKittel Mar 10, 2024 at 10:01:24 (UTC)
Goto Top
Wenn sich jetzt Jemand fragt warum der Kittel hier solche Romane schreibt: Ich komme aus der Softwareentwicklung aus dem Desktop-Bereich. in Visual-Studio mit C++ eine kleine Desktop-Software zu schreiben ist meist nur eine Sache von wenigen Stunden. Primäre Fragen sind dann eher C# oder C++, Console oder Desktop, welche .net version. Go.

Im Web-Bereich dauert alles viel länger. Alleien für ein Projekt die Frage zu klären welches Framework, welche Sprache, welche EDI, welche Server, etc kann schon so lange dauern, dass man gar nicht erst anfängt. Und dann ist da noch das HTTP-Konzept in der Kommunkation und der Browser mit CSS und JS. Ein Logging von Fehlern oder Debugging von JS-Anwendung live im Feld ist ein graus.

Ich habe, glaube ich, mein System für meine kleine Web-Anwendung gefunden.
Aber das hat 2 Jahre gedauert, eigentlich länger und enthält mehrere Dutzend Kompromisse.
Meine frustrierten 50 Pfennige.

Stefan
DKX777
DKX777 Mar 10, 2024 at 15:40:58 (UTC)
Goto Top
Hi Frank,

vielen Dank für die vielen Infos und deine Zeit. Das hilft mir wirklich sehr.

PHP ist hier nicht das Problem, unsere Seite hier läuft mit Millionen von Zugriffen und mit PHP. Du solltest als Webserver z.B. NGINX nehmen und kein Apache. Das Problem würde ich eher bei der MySQL sehen, diese skaliert nicht wirklich gut. Da würde ich eher zu einer In-Memory DB wie DragonflyDB oder Redis tendieren.


In-Memory DB klingt super, allerdings habe ich mir dazu jetzt einmal ein paar Videos angeschaut und mich versucht einzulesen. Das Ganze übersteigt noch meinen Horizont. Das jetzt auf die "Schnelle" umzusetzen ist glaube ich keine so gute Idee face-smile Dennoch werde ich in den nächsten Monaten das Thema mal genauer unter die Lupe nehmen. Geniale Technik und war mir bis dato noch komplett unbekannt.


Ein WebSocket Server wie Open Swoole funktioniert sehr gut und sehr schnell mit PHP.
Das meinst du als Alternative zu Pusher.io oder?

Wenn du es mit PHP richtig performant haben willst, dann schau dir FrankenPHP an - das ist ein PHP App Server geschrieben in GO.

Ok ich muss das ganze hier irgendwie sortiert bekommen. Bisher komme ich aus der reinen Hosting-Abteilung. Das Heißt irgendein Premium Hostingpaket gebucht, Datenbank übers das Hostingportal angelegt, Domains dazugebucht und aktiviert und Dateien auf den Server geschoben.

Wenn wir jetzt hier von FrankenPHP Server Sprechen, dann meinst du damit, dass man einen V Server mietet und darauf dann diese Server-Software laufen lässt?

Sorry falls diese Frage komplett dumm sein sollte, aber ich habe mich bisher leider noch nicht aus dem Hosting-Kosmos raus getraut ^^



Wenn keine In-Memory DB gewünscht ist, dann schau dir mal die NoSQL DBs wie z.B. MongoDB oder CouchDB an. Diese sind alle schneller und skalierbarer als eine MySQL und haben eine komfortable PHP Schnittstelle oder Bibliothek dazu.

Über MongoDB oder CouchDB bin ich tatsächlich schon mal gestolpert, da ich jedoch von den Hostern bisher nur MySQL Möglichkeiten hatte ist natürlich auch meine aktuelle Idee damit umgesetzt. Ich befürchte, wenn ich jetzt eine komplett andere Datenbanklösung implementieren wollen würde, dass es zum einen sehr lange Dauern könnte, bis ich diese Technik tatsächlich erst einmal verstanden habe und dann das umschreiben des gesamten aktuellen Codes mich völlig fertig machen wird *eine Träne ist beim Schreiben dieses Satzes schon geflossen*


Für das Hosting würde ich einen beliebigen Cloud-Anbieter nutzen, z.B. OVH oder Amazon AWS , etc. Eigene Server oder Hardware kann ich nicht mehr empfehlen, macht nur Arbeit und ist auf Dauer zu teuer.

Ok einen eigenen Server haken wir schon mal ab. OVH und Amazon AWS habe ich mir heute mal genauer angesehen. Jedoch scheitere ich hier an dem bisherigen Problem nämlich was soll ich nehmen. Welche Komponenten machen Sinn, welche Größe, Leistung, Geschwindigkeit. Das man bereits am Anfang so viel konfigurieren kann / muss ist sicher sinnvoll als Server-Admin, aber für mich ohne Kenntnisse aus dem Bereich ja doch recht schwierig.

AWS hat meinen Kopf zum platzen gebracht. Alleine die anfangs Konfigurationsmöglichkeiten der ganzen verschiedenen Arten und Plattformen die dort bereitgestellt werden überfordern ja komplett. Ich denke für jemanden, der damit schon lange arbeitet und daher das Verständnis mitbringt und weiß was welcher Type-Server oder welche Plattform dort macht bzw. wofür man jetzt was einsetzen kann, für den ist AWS der heilige Gral. Aber für mich der noch keine Ahnung außerhalb von Hosting-Paketen hat ist der Einstieg leider eine Nummer zu groß.

Viele Creator von Videos zum Thema Serverauswahl / V Server und Co sprechen von https://www.netcup.de/vserver/arm-server/#details kannst du dazu etwas sagen? Glaubst du ich könnte mit einem dieser Server: VPS 1000 ARM G11 oder VPS 2000 ARM G11 oder VPS 3000 ARM G11 schon gut starten?
DKX777
DKX777 Mar 10, 2024 at 15:42:17 (UTC)
Goto Top
Hi Jaggl,

Danke für deine Antwort! Du meinst mit Cloud nen V Server oder?
DKX777
DKX777 Mar 10, 2024 at 15:48:11 (UTC)
Goto Top
die Sprache PHP ist, wie der Name schon sagt, nur eine Sprache.
Ja, C++ ist schneller als PHP, aber in der Praxis spielen andere Faktoren, wie z.B. die Logik und Abläufe eine viele größere Rolle.

Man kann immer mehr und schnellere Server mieten um bestimmte Daten immer on the Fly zu berechnen.
Bis man irgendwann feststellt, dass man diese zentrale und nur einmal alle 5 Minuten berechnet und sonst nur die fertigen Ergebnisse ausliefern kann und damit 2% Rechenleistung benötigt.

Beispiel 1: Ich habe einen Kunden der für ein Festival in Hamburg einen Vorverkauf zu einem bestimmten bekannten Zeitpunkt gestartet hat. Die ersten 1000 Tickets waren günstiger. Also saßen 10.000 Leute vor Ihren Computer, meist sogar 2-3 und ab 17:55 Uhr drückten alle im Sekundentakt F5. Das sind dann schnell 40.000 Anfragen pro Sekunde. Die Meisten Shop-Systeme, wie z.B. Magento schaffe mit guter Hardware 100 pro Sekunde. Wir haben dann eine Warteschlange programmiert wo jeder eine Nummer bekommen hat. Fand die Marketingabteilung nicht gut weil es die Spannung nahm, funktionierte aber. Aktuell werden immer kleine Gruppen gestaffelt angeschrieben die schon man da war.

Beispiel 2: Eine Firma hatte ein Skript in Ihrem Web-Shop welches eine Export-Datei aus dem Onlinebanking mit den Rechungen abgliech um diese als bezahlt zu markieren. Irgendwie lief das Skript 600 Sekunde statt 10 am Anfang. Ich hatte mir das Skript angeschaut und festgestellt, dass sie die Datei immer mit allen Rechnungen abglichen. Auch jenen aus vergangen Jahren und schon bezahlten Rechnungen. Also wurde das Skript umgestellt dass es nur aktuelle unbezahlte Rechnungen geprüft hat. Laufzeit: 2 Sekunden.

Fazit: Server heutzutage sind ganz schön schnell. Aber mit einer falschen Logik kannst Du alles Platt machen.
Nutze wenn möglich verteilte Rechenleistung und verteilte Daten. Ein Javascript im Browser hat auch einen lokalen Speicher. Dort einfach nur Updates hinsenden und der Javascript-Webclient macht die Arbeit für Dich.

Stefan

Das macht absolut Sinn. Deine Beispiele sprechen für sich. Ich denke die Logik hinter meiner Idee ist eigentlich schon maximal sinnvoll aufgestellt bzw. umgesetzt. Es kommt eben jetzt nur noch auf den richtigen Server drauf an also glaube ich oder glaube ich das nicht mehr? Es macht sich langsam eine kleine Verunsicherung breit, ob das alles so funktionieren kann mit der Basis die aktuell umgesetzt habe.
StefanKittel
StefanKittel Mar 10, 2024 at 15:56:05 (UTC)
Goto Top
Ein Mistding bei Webprojekten ist die Vielzahl an Variationsmöglichkeiten face-smile
Trenne Dich von der Vorstellung eine Liste mit allen Optionen zu erstellen um diese zu testen.
Wenn Du damit fertig ist, ist sie schon überholt.

Da Du Dich mit PHP auskennst würde ich erst einmal da bleiben.
Ich mag die Server von Netcup. Alles funktioniert, die Preise sind günstig und der Support ist nett und meist kompetent.

Bedenke bitte, dass Du bei so einem Server einen nakten Server mit SSH-Zugang bekommst.
Dinge wie LAMP musst Du selber installieren und konfigurieren.
Auch für die Sicherheit bist Du verantwortlich.

Stefan
DKX777
DKX777 Mar 10, 2024 at 15:57:08 (UTC)
Goto Top
Ich muss hier einmal ein großes DANKE da lassen an euch alle. So schnell wie ihr hier zur Stelle seid um mir zu helfen, das ist wirklich großartig! Vielen lieben Dank!

Leider merke ich aktuell, dass sich eine totale Verunsicherung breit macht. Bisher war es ja lediglich das Kopfzerbrechen welchen Server ich nehmen könnte um die Lasten zu stemmen. Ich war ja bisher noch nie über den Hosting-Paket-Kosmos hinaus. Daher ist alles was mit V Server, oder Systemen, Server-Software und Konfigurationen zu tun hat komplett neu für mich.

Die Vorschläge für alternative Datenbank-Systeme geben mir gerade, wie ich feststelle den Rest, denn ich fange an zu rotieren und mein Kopf wirft die ganze Zeit die Frage in den Raum

"Kann das was du schon aktuell hast überhaupt funktionieren oder muss alles über den Haufen geworfen werden und erstmal neue Techniken gelernt werden, damit das überhaupt funktioniert."

Ich meine der Aufbau den ich bisher habe läuft - für mich - bisher - ja gut. Jedoch fehlt mir das Wissen zu Servern. Das kann ich aber nicht auf die Schnelle erlernen das wird sicher Monate dauern und ich habe natürlich auch nicht die Möglichkeit mir Wissen im LIVE-Betrieb durch potentielle Kunden anzueignen.

Für mich bleibt jetzt ein sehr großes Fragezeichen. Kann das Projekt mit dem Code und der Datenbank die ich aktuell verwende doch an den Start gehen, oder macht das so überhaupt keinen Sinn?

Stefan, die psychischen Nebenwirkungen sind bei mir eingetroffen bevor es überhaupt richtig losgeht ^^
DKX777
DKX777 Mar 10, 2024 updated at 20:05:55 (UTC)
Goto Top
Zitat von @StefanKittel:

Ein Mistding bei Webprojekten ist die Vielzahl an Variationsmöglichkeiten face-smile
Trenne Dich von der Vorstellung eine Liste mit allen Optionen zu erstellen um diese zu testen.
Wenn Du damit fertig ist, ist sie schon überholt.

Ok wichtig - notiert!



Da Du Dich mit PHP auskennst würde ich erst einmal da bleiben.
Ich mag die Server von Netcup. Alles funktioniert, die Preise sind günstig und der Support ist nett und meist kompetent.

Bedenke bitte, dass Du bei so einem Server einen nakten Server mit SSH-Zugang bekommst.
Dinge wie LAMP musst Du selber installieren und konfigurieren.
Auch für die Sicherheit bist Du verantwortlich.


Ach so warte mal, ist das bei V Servern grundsätzlich so? Also das ich mich um Installationen und Sicherheit kümmern muss oder ist das speziell bei Netcup der Fall? Falls ja dann sollte ich doch auf eine andere Lösung zugreifen. Sicherlich blick ich dahinter wie das geht, aber bevor ich da dann ne Fehlkonfiguration mache oder irgendwelche Sicherheitslücken unbewusst implementiere, dann lieber auf Nummer Sicher gehen.
Frank
Frank Mar 11, 2024 updated at 00:28:23 (UTC)
Goto Top
FrankenPHP

Ja, das funktioniert nicht über ein Hostingpaket. Dafür braucht man einen eigenen Cloud Server, auf dem Linux installiert ist und den man FrankenPHP installiert. Im Prinzip ist es ein eigener HTTP- und PHP-Server, der kein NGINX etc. braucht. Aber klar, das ist etwas relativ Neues und daher am Anfang schwer einzuordnen. Schau es dir einfach mal an.

Was ich nicht genau weiß ist ob FrankenPHP auf der ARM64 Plattform (die du bei netcup gewählt hast) läuft. Da der FrankenPHP Kern auf Caddy basiert und dieser für ARM64 verfügbar ist, sollte es aber gehen.

Thema Serverauswahl / V Server und Co

Ein Webhosting-Paket ist natürlich ein sehr einfaches, in der Regel nicht sehr leistungsfähiges Angebot. Vorteil: einfach zu handhaben, Nachteil: keine Kontrolle über das System und unflexibel.

Ein V-Server oder VPS ist immer ein virtueller Server mit IP Adresse, CPU, Speicher, Festplatte, auf dem z.B. ein Linux System deiner Wahl, Ubuntu oder Debian läuft - Windows hat in diesem Bereich nichts zu suchen (sorry). Die benötigten Komponenten wie PHP, Webserver oder Datenbank musst du dann selbst von Hand installieren. Im Prinzip so, als hättest du einen eigenen Server. Dank der aktuellen Linux-Distributionen ist das aber meist sehr einfach. Oft haben die Cloud Anbieter auch eine Benutzeroberfläche, um die wichtigsten Dinge automatisch zu installieren. Oder du bekommst einen SSH-Zugang und musst das selbst machen. Du solltest dich auf jeden Fall mit Linux auseinandersetzen.

Der Vorteil eines V-Servers oder VPS ist, dass du dich nicht um Hardware oder Skalierung kümmern musst. Wenn du jetzt ein kleines Paket bestellst, sollte der Anbieter jederzeit in der Lage sein, die Hardware auf Wunsch nach oben zu skalieren, also mehr CPU, Speicher oder SSD-Platz, etc. Gute Cloud-Anbieter können das. Natürlich muss man nicht gleich bei AWS anfangen, das ist wirklich unübersichtlich und kompliziert, ein kleiner VPS-Server reicht völlig aus.

netcup.de kannte ich noch nicht, aber die Angebote scheinen sehr fair zu sein. Ich werde mir das bei Gelegenheit mal genauer anschauen. In deinem Link geht es um einen ARM64 Server. Der ist sehr, sehr günstig, aber noch nicht alltäglich. D.h. man muss dann auch ein ARM64 Linux installieren und auch die restliche Software wie Webserver, DB etc. muss ARM64 kompatibel sein. Von Ubuntu gibt es eine ARM64 Version, also sollte das funktionieren. Ich denke, ich werde mir das kleinste ARM64 Paket für 6,95 bestellen, nur um es zu testen face-wink

Also das ich mich um Installationen und Sicherheit kümmern muss oder ist das speziell bei Netcup der Fall?

Bei virtuellen Servern muss man sich um die Sicherheit des Linux-Systems immer selbst kümmern. Gegen Angriffe auf die IP von außen (DDoS etc.) schützt in der Regel der Cloud-Anbieter. Du kannst bei der Ubuntu Installation das System so einstellen, dass es Sicherheitsupdates automatisch installiert, sobald sie veröffentlicht werden. Für die Sicherheit deiner PHP-Skripte bist du selbst verantwortlich (ist aber beim Hosting schon jetzt so). Das alles ist keine unlösbare Aufgabe.

In-Memory DB

Ja, In-Memory-DBs sind faszinierend und verdammt schnell, unsere Seite läuft z.B. mit der oben erwähnten DragonflyDB. D.h. alle Detailseiten und Kommentare kommen direkt aus dem Speicher. Der Nachteil solcher DBs ist die permanente Speicherung der Daten. D.h. alles wird zunächst nur im Arbeitsspeicher gehalten, wenn der Server abgeschaltet wird, ist theoretisch alles weg. Gute In-Memory DBs haben aber die Möglichkeit, jederzeit einen Snapshot der DB zu erstellen, der dann auch beim Start geladen wird. Wird ein System aktualisiert und muss dafür neu gestartet werden, erstellt die In-Memory DB einen aktuellen Snapshot, fährt herunter und startet neu. Beim Hochfahren wird dieser Snapshot wieder geladen und alle Daten sind wieder vorhanden. Der einzige Nachteil von Snapshots ist, dass die Daten nicht in Echtzeit gespeichert werden können. Die DragonflyDB ist jedoch so schnell, dass man Snapshots jede Minute erstellen könnte (was aber nicht empfohlen wird). Besser man erstellt einen 3er Cluster aus der In-Memory DB und die Daten können bei einem VPS Server mit 99,9% Verfügbarkeit eigentlich nicht mehr verloren gehen. So kompliziert ist eine In-Memory DB von der Ansteuerung auch nicht, man arbeitet mit ihr eher wie mit einem PHP-Array. Im Vergleich zur redis DB hat die dragonflyDB direkt native JSON Unterstützung (ohne Module) und ist einfach viel, viel schneller.

MySQL

Ich habe auch vor 30 Jahren mit MySQL angefangen. MySQL ist nicht schlecht und ziemlich einfach. Der wirkliche Nachteil im Web ist die fehlende Skalierbarkeit. So kann ein normaler MySQL Server maximal 500 bis 600 Verbindungen gleichzeitig verarbeiten. Mehr habe ich mit sehr schneller Server-Hardware (32 Cores, 256 GB RAM, SSDs, etc.) nie hinbekommen. Bei Hostingpaketen wird der Wert wahrscheinlich deutlich niedriger liegen (200 bis 300 gleichzeitige Verbindungen). Überlege dir also gut, ob du für dein Projekt wirklich darauf setzen willst.

Es gibt jedoch Alternativen, wenn du bei SQL bleiben möchtest. Schau dir die CockroachDB an. Diese ist vollständig kompatibel mit den PostgreSQL-Befehlen, die wiederum fast identisch mit denen von MySQL sind (natürlich gibt es kleine Unterschiede, aber die kann man schnell lernen). Sie wurde speziell für die Cloud und Skalierbarkeit entwickelt. Die DB hat sogar eine eigene Admin GUI und ist für ARM64 verfügbar. Sie kann mehrere tausend Clients gleichzeitig bedienen, je nachdem wie viele Instanzen man laufen lässt. Sie ist OpenSource und das Beste ist, dass sie mit dem offiziellen PHP PostgreSQL PDO Client Driver (pdo_pgsql) funktioniert. Wenn du PDO für MySQL verwendest, musst du fast nichts in deinen PHP-Skripten ändern (du solltest MySQLi sowieso nicht verwenden, PDO ist viel besser und schneller).

Für mich bleibt jetzt ein sehr großes Fragezeichen. Kann das Projekt mit dem Code und der Datenbank die ich aktuell verwende doch an den Start gehen, oder macht das so überhaupt keinen Sinn?

Lass dich nicht entmutigen. Das sind alles nur Tipps. Mach einfach weiter mit dem, was du hast, oder passe es ein bisschen an. Wenn es erfolgreich wird, kannst du es sowieso immer wieder verändern oder erweitern. Ich habe das hier mit meiner Seite auch so gemacht und bis jetzt hat es ganz gut funktioniert face-smile

Probiere es aus, nur so kannst du Erfahrungen sammeln.

P.S. Ich wollte gar nicht so viel schreiben, sorry für die langen Texte. Die WhatsApp oder Twitter Generation hat bestimmt nur die ersten 256 Zeichen gelesen und hat längst weiter gescrollt. Ich hoffe trotzdem, dass ich dir oder jedem der das liest, ein wenig weiterhelfen und einen kleinen Einblick geben konnte.

Gruß
Frank
StefanKittel
StefanKittel Mar 11, 2024 at 07:26:40 (UTC)
Goto Top
Zitat von @DKX777:
Ach so warte mal, ist das bei V Servern grundsätzlich so? Also das ich mich um Installationen und Sicherheit kümmern muss oder ist das speziell bei Netcup der Fall? Falls ja dann sollte ich doch auf eine andere Lösung zugreifen. Sicherlich blick ich dahinter wie das geht, aber bevor ich da dann ne Fehlkonfiguration mache oder irgendwelche Sicherheitslücken unbewusst implementiere, dann lieber auf Nummer Sicher gehen.

You get what you pay for face-smile
Die meisten günstigen Server sind root-server wo Du nur den nakten Server bekommst.
Mehr als ein Reset auf Werkseinstellungen bietet der Support meist nicht an.

Ein managed-Server ist meist vorinstalliert mit Plesk oder ähnlichen und man darf keine oder nur ausgewählte Software installieren. Wenn man alles installieren könnte wäre der Support-Aufwand zu groß.

Die 3. Alternative sind SaaS-Systeme. Wenn man z.B. bei AWS einen reinen DB-Server mietet.

Stefan
DKX777
DKX777 Mar 11, 2024 at 15:02:59 (UTC)
Goto Top
Zitat von @Frank:

FrankenPHP

Ja, das funktioniert nicht über ein Hostingpaket. Dafür braucht man einen eigenen Cloud Server, auf dem Linux installiert ist und den man FrankenPHP installiert. Im Prinzip ist es ein eigener HTTP- und PHP-Server, der kein NGINX etc. braucht. Aber klar, das ist etwas relativ Neues und daher am Anfang schwer einzuordnen. Schau es dir einfach mal an.

Was ich nicht genau weiß ist ob FrankenPHP auf der ARM64 Plattform (die du bei netcup gewählt hast) läuft. Da der FrankenPHP Kern auf Caddy basiert und dieser für ARM64 verfügbar ist, sollte es aber gehen.

Thema Serverauswahl / V Server und Co

Ein Webhosting-Paket ist natürlich ein sehr einfaches, in der Regel nicht sehr leistungsfähiges Angebot. Vorteil: einfach zu handhaben, Nachteil: keine Kontrolle über das System und unflexibel.

Ein V-Server oder VPS ist immer ein virtueller Server mit IP Adresse, CPU, Speicher, Festplatte, auf dem z.B. ein Linux System deiner Wahl, Ubuntu oder Debian läuft - Windows hat in diesem Bereich nichts zu suchen (sorry). Die benötigten Komponenten wie PHP, Webserver oder Datenbank musst du dann selbst von Hand installieren. Im Prinzip so, als hättest du einen eigenen Server. Dank der aktuellen Linux-Distributionen ist das aber meist sehr einfach. Oft haben die Cloud Anbieter auch eine Benutzeroberfläche, um die wichtigsten Dinge automatisch zu installieren. Oder du bekommst einen SSH-Zugang und musst das selbst machen. Du solltest dich auf jeden Fall mit Linux auseinandersetzen.

Der Vorteil eines V-Servers oder VPS ist, dass du dich nicht um Hardware oder Skalierung kümmern musst. Wenn du jetzt ein kleines Paket bestellst, sollte der Anbieter jederzeit in der Lage sein, die Hardware auf Wunsch nach oben zu skalieren, also mehr CPU, Speicher oder SSD-Platz, etc. Gute Cloud-Anbieter können das. Natürlich muss man nicht gleich bei AWS anfangen, das ist wirklich unübersichtlich und kompliziert, ein kleiner VPS-Server reicht völlig aus.

netcup.de kannte ich noch nicht, aber die Angebote scheinen sehr fair zu sein. Ich werde mir das bei Gelegenheit mal genauer anschauen. In deinem Link geht es um einen ARM64 Server. Der ist sehr, sehr günstig, aber noch nicht alltäglich. D.h. man muss dann auch ein ARM64 Linux installieren und auch die restliche Software wie Webserver, DB etc. muss ARM64 kompatibel sein. Von Ubuntu gibt es eine ARM64 Version, also sollte das funktionieren. Ich denke, ich werde mir das kleinste ARM64 Paket für 6,95 bestellen, nur um es zu testen face-wink

Also das ich mich um Installationen und Sicherheit kümmern muss oder ist das speziell bei Netcup der Fall?

Bei virtuellen Servern muss man sich um die Sicherheit des Linux-Systems immer selbst kümmern. Gegen Angriffe auf die IP von außen (DDoS etc.) schützt in der Regel der Cloud-Anbieter. Du kannst bei der Ubuntu Installation das System so einstellen, dass es Sicherheitsupdates automatisch installiert, sobald sie veröffentlicht werden. Für die Sicherheit deiner PHP-Skripte bist du selbst verantwortlich (ist aber beim Hosting schon jetzt so). Das alles ist keine unlösbare Aufgabe.


Danke für die umfangreichen Infos! Ok also müsste ich mich tatsächlich erst einmal in die ganze Thematik Linux & Co. einlesen. Um hier weiterzukommen. Ich bin auf dein Feedback zum eigenen Netcup-Test gespannt face-smile

Ich hatte gestern den VPS 1000 ARM G11 VIE einmal geordert. War denn heute morgen direkt freigeschaltet.

Ja gut, Login in das Customer Controlpanel klappt und per SCP kam ich auch auf den Server. Dann hab ich mich erst einmal im Customer Controlpanel umgesehen z.B. nach der Firewall gesucht (das scheint ja eines der ersten Dinge zu sein, die man angehen muss).. Überraschung Netcup hat keine Firewall... oooh wow... gut dann hab ich nach vordefinierten Software-Paketen gesucht ... und nächste Überraschung gibts nicht...

Ich breche weg.

So hatte ich also einfach nur ein Linux System mit einer Konsole. Vermutlich ist es genau das was man braucht, wenn man weiß das man es braucht und was man dann zu tun hat. Ich hatte mir das jedoch blauäugig komplett anders vorgestellt - Wunschdenken - und nach 4 Stunden weiteren Videos und Recherche im Netz nach ungefähr: "was muss ich jetzt tun wenn ich plötzlich einen VPS habe" und vielen, sehr vielen Meinungen zu Sicherheit und immer wieder dem Hinweis "DU BIST FÜR ALLES VERANTWORTLICH... Auch das dein Server nicht übernommen wird und daraus ein Spam-Server wird" hab ich das Ding sofort wieder gekündigt.

Ja ich bin extrem neugierig und ja ich hätte auch am liebsten angefangen jetzt hier das Konfigurieren, Installieren von Datenbanken, PHP etc. mir anzueignen, aber ich weiß ja wie simple es ist schon alleine bei PHP in ein System einzubrechen, wenn man als Entwickler nicht die richtigen Vorkehrungen trifft, wie soll das dann erst bei einem Root-Server laufen, bei dem ich als "Admin" überhaupt keine Ahnung habe was ich tue *PANIK*


In-Memory DB

Ja, In-Memory-DBs sind faszinierend und verdammt schnell, unsere Seite läuft z.B. mit der oben erwähnten DragonflyDB. D.h. alle Detailseiten und Kommentare kommen direkt aus dem Speicher. Der Nachteil solcher DBs ist die permanente Speicherung der Daten. D.h. alles wird zunächst nur im Arbeitsspeicher gehalten, wenn der Server abgeschaltet wird, ist theoretisch alles weg. Gute In-Memory DBs haben aber die Möglichkeit, jederzeit einen Snapshot der DB zu erstellen, der dann auch beim Start geladen wird. Wird ein System aktualisiert und muss dafür neu gestartet werden, erstellt die In-Memory DB einen aktuellen Snapshot, fährt herunter und startet neu. Beim Hochfahren wird dieser Snapshot wieder geladen und alle Daten sind wieder vorhanden. Der einzige Nachteil von Snapshots ist, dass die Daten nicht in Echtzeit gespeichert werden können. Die DragonflyDB ist jedoch so schnell, dass man Snapshots jede Minute erstellen könnte (was aber nicht empfohlen wird). Besser man erstellt einen 3er Cluster aus der In-Memory DB und die Daten können bei einem VPS Server mit 99,9% Verfügbarkeit eigentlich nicht mehr verloren gehen. So kompliziert ist eine In-Memory DB von der Ansteuerung auch nicht, man arbeitet mit ihr eher wie mit einem PHP-Array. Im Vergleich zur redis DB hat die dragonflyDB direkt native JSON Unterstützung (ohne Module) und ist einfach viel, viel schneller.

Dass das Ganze über JSON läuft finde ich schon mal sympathisch. Wobei diese Thematik mit dem Severneustart und der Möglichkeit dadurch, dass die gesamte Datenbank auf einmal weg ist, mich doch noch etwas abhalten würde, so eine Technik nutzen zu wollen. Natürlich den Workflow den du da beschreibst, um Snapshots bei einem Neustart wieder einzuspielen klingt gut, aber für mich an dieser Stelle noch zu komplex




MySQL

Ich habe auch vor 30 Jahren mit MySQL angefangen. MySQL ist nicht schlecht und ziemlich einfach. Der wirkliche Nachteil im Web ist die fehlende Skalierbarkeit. So kann ein normaler MySQL Server maximal 500 bis 600 Verbindungen gleichzeitig verarbeiten. Mehr habe ich mit sehr schneller Server-Hardware (32 Cores, 256 GB RAM, SSDs, etc.) nie hinbekommen. Bei Hostingpaketen wird der Wert wahrscheinlich deutlich niedriger liegen (200 bis 300 gleichzeitige Verbindungen). Überlege dir also gut, ob du für dein Projekt wirklich darauf setzen willst.

OK DAS ist mal eine Aussage die ich höchstinteressant finde, da ich das immer nur am Rande mitbekommen hatte, jedoch nie genau wusste was da dran ist und schon gar nicht in welchen Dimensionen. Wenn ich dich hier richtig verstehe wäre tatsächlich bei 200 - 300 gleichzeitigen Request an die Datenbank Feierabend. Das ist ja ein absoluter Witz. Ich bin da von deutlich mehr ausgegangen. Selbst wenn ich dann dein Beispiel mit den 500 bis 600 Verbindungen auf einem extrem schnellen Server bringt mir ja überhaupt nix, wenn ich z.B. einfach nur von einem größeren Streamer ausgehe, der LIVE 40k Zuschauer hat und dann erwähnt, dass er dieses neue Tool (meine Idee) hat. Wenn dann auch nur 50% der Zuschauer einen Button drücken und davon 10% im gleichen Moment, ja, dann kommt da nix im Stream an ha oh mein Gott was habe ich hier nur vor.



Es gibt jedoch Alternativen, wenn du bei SQL bleiben möchtest. Schau dir die CockroachDB an. Diese ist vollständig kompatibel mit den PostgreSQL-Befehlen, die wiederum fast identisch mit denen von MySQL sind (natürlich gibt es kleine Unterschiede, aber die kann man schnell lernen). Sie wurde speziell für die Cloud und Skalierbarkeit entwickelt. Die DB hat sogar eine eigene Admin GUI und ist für ARM64 verfügbar. Sie kann mehrere tausend Clients gleichzeitig bedienen, je nachdem wie viele Instanzen man laufen lässt. Sie ist OpenSource und das Beste ist, dass sie mit dem offiziellen PHP PostgreSQL PDO Client Driver (pdo_pgsql) funktioniert. Wenn du PDO für MySQL verwendest, musst du fast nichts in deinen PHP-Skripten ändern (du solltest MySQLi sowieso nicht verwenden, PDO ist viel besser und schneller).

Das schau ich mir gleich mal an - Danke für den Hinweis!



Für mich bleibt jetzt ein sehr großes Fragezeichen. Kann das Projekt mit dem Code und der Datenbank die ich aktuell verwende doch an den Start gehen, oder macht das so überhaupt keinen Sinn?

Lass dich nicht entmutigen. Das sind alles nur Tipps. Mach einfach weiter mit dem, was du hast, oder passe es ein bisschen an. Wenn es erfolgreich wird, kannst du es sowieso immer wieder verändern oder erweitern. Ich habe das hier mit meiner Seite auch so gemacht und bis jetzt hat es ganz gut funktioniert face-smile

Probiere es aus, nur so kannst du Erfahrungen sammeln.

Danke für die ermutigenden Worte. Es ist wirklich frustrierend, wenn man voller Tatendrang in eine Idee reinspringt und es mit den Mitteln umgesetzt bekommt, die man bis dato hat und kennt und dann kommt der Punkt wo eigentlich alles steht, aber man feststellt, dass die Kapazitäten nicht funktionieren werden oder schlimmer noch das Grundgerüst welches man entwickelt hat zusammenbrechen wird.

Aber du hast natürlich vollkommen recht klein anfangen testen und dann sehen was passiert und erweitern. Das ist der einzig richtige Weg! Danke dir face-smile



P.S. Ich wollte gar nicht so viel schreiben, sorry für die langen Texte. Die WhatsApp oder Twitter Generation hat bestimmt nur die ersten 256 Zeichen gelesen und hat längst weiter gescrollt. Ich hoffe trotzdem, dass ich dir oder jedem der das liest, ein wenig weiterhelfen und einen kleinen Einblick geben konnte.

Ich kann da nicht für alle sprechen, weiß aber genau was du meinst. Ich für meinen Teil habe alles gelesen und bin dir für die Infos wirklich extrem dankbar! So einen Einblick zu bekommen ist nicht selbstverständlich und das weiß ich wirklich zu schätzen. Vielen Dank für deine Zeit und Mühe!

LG
DKX777
DKX777 Mar 11, 2024 at 15:10:26 (UTC)
Goto Top
Zitat von @StefanKittel:

Zitat von @DKX777:
Ach so warte mal, ist das bei V Servern grundsätzlich so? Also das ich mich um Installationen und Sicherheit kümmern muss oder ist das speziell bei Netcup der Fall? Falls ja dann sollte ich doch auf eine andere Lösung zugreifen. Sicherlich blick ich dahinter wie das geht, aber bevor ich da dann ne Fehlkonfiguration mache oder irgendwelche Sicherheitslücken unbewusst implementiere, dann lieber auf Nummer Sicher gehen.

You get what you pay for face-smile
Die meisten günstigen Server sind root-server wo Du nur den nakten Server bekommst.
Mehr als ein Reset auf Werkseinstellungen bietet der Support meist nicht an.


Das habe ich heute am eigenen Leib festgestellt. Hatte wie oben an Frank beschrieben einen Testserver geordert und bin mit den großen P´s in den Augen zum Kündigungsbutton gesprungen

Das ist noch nichts für mich, da ist mir die Gefahr viel zu groß irgendwelche Dinge nicht zu kennen, die ich aber hätte machen müssen, damit die Nummer sicher bleibt und vor allem auch funktioniert.

Ein managed-Server ist meist vorinstalliert mit Plesk oder ähnlichen und man darf keine oder nur ausgewählte Software installieren. Wenn man alles installieren könnte wäre der Support-Aufwand zu groß.


Ich denke es wird jetzt ein managed Server werden. Bisher habe ich nur noch kein Angebot gefunden, was finanziell tragbar für den Anfang wäre. Bei meiner Idee werden die Streamer nämlich nichts bezahlen müssen. Es fällt lediglich eine prozentuale Gebühr bei Transaktionen durch die Zuschauer an. Heißt am Anfang muss ich die Kosten komplett selber tragen ohne zu wissen ob sich überhaupt ein Streamer auf meine Idee einlässt.

Ich suche hier heute nochmal weiter nach einem passenden Angebot face-smile


Die 3. Alternative sind SaaS-Systeme. Wenn man z.B. bei AWS einen reinen DB-Server mietet.

Ein interessanter Hinweis, aber AWS da bin ich erstmal raus zu komplex das Ganze


Ich danke dir für deine Hilfe!

LG
Frank
Frank Mar 11, 2024 updated at 22:38:02 (UTC)
Goto Top
Überraschung Netcup hat keine Firewall...

Doch, das haben sie. Aber für dich nicht sichtbar. Der Datenverkehr, der in das Netcup-Netzwerk gelangt, geht durch ihre Firewall. Sie werben damit, dass sie DDoS Attacken erkennen und filtern.

Was du meinst und brauchst ist die Firewall auf deinem virtuellen Server. Diese wird vom jeweiligen Linux-Kernel der virtuelle Maschine verwaltet. Unter Ubuntu wird sie z.B. über UFW verwaltet. Das ist ein sehr einfaches Linux Kommando, das die Firewall ein- und ausschaltet, verwaltet und die Einstellungen und den Status anzeigt. Es ist sehr einfach aufgebaut.

Generell ist ein Linux-Server von Haus aus ziemlich sicher, so dass man sich keine großen Sorgen um Sicherheitslücken machen muss. Mit einem ufw enable schaltet man einmalig die Firewall ein und mit ufw status kann man den aktuellen Status auslesen. Da man sich nicht als 'root' einloggen kann (Standard bei Ubuntu), braucht man sich darüber nicht so viele Gedanken zu machen.

Wie gesagt, um ein bisschen Linux-Administration kommst du nicht herum. Installiere doch einfach zu Hause ein Ubuntu in einer virtuellen Maschine und schau dir die Grundlagen an.

In-Memory DB

Die Snapshot-Funktion macht die In-Memory DB automatisch beim Starten und Herunterfahren, du brauchst nichts zu tun. Du kannst das noch zusätzlich so einstellen, dass sie jede Stunde einen Snapshot machen. Auch hier einfach etwas weniger Angst vor dem Neuen haben, die kochen auch alle nur mit Wasser.

Einen KI-Assistenten fragen

Was dir helfen könnte, ist ein KI-Assistent wie Chatgpt, CoPilot (oder natürlich unsere Seite hier). Du kannst ihn alles über die Ubuntu-Installation, die Datenbank oder die Firewall fragen und bekommst im Regelfall eine sehr hilfreiche Antwort, z.B. "Wie greife ich mit PHP und Redis auf meine Daten zu" oder "Wie schreibe und lese ich einen Datensatz in Redis". Redis und DragonflyDB sind vom Befehlssatz her vollständig kompatibel, so dass alles, was in Redis geht, auch in der schnelleren DragonflyDB funktioniert. Auch Fragen wie "wie kann ich unter Ubuntu mit ufw den Status der Firewall abfragen?" funktionieren gut.

Gruß
Frank
derret
derret Mar 11, 2024 at 22:49:52 (UTC)
Goto Top
Hallo,
ich hab mich jetzt extra hier angemeldet um dir ein paar Infos zu schreiben. Ich finde das viele Kommentare zwar hilfreich sind, aber dich vielleicht zu sehr verunsichern. Jeder fängt mal irgendwo an, sammelt Erfahrungen und weis dann was man hätte besser machen können. Der Grundstein für Version 2.0 ;)

Darum möchte ich dir hier ein paar Tipps für den Server zu deinem Projekt mitgeben:

Hab keine Angst vor einem Root Server. Kein Hoster möchte in einer Tour irgendwelche Zombies im Netzwerk stehen haben, daher sind die ab Werk schon nicht ganz doof konfiguriert.

Einen managed Server möchtest du dir nicht ans Bein hängen, du kannst in der Regel keine Konfigurationen selbst ändern, sondern musst immer zum Support des Hosters. Daher kosten die auch so viel. Und es gibt nix blöderes als ständig aufgehalten zu werden oder gar im Notfall nicht reagieren zu können!

Ich würde dir sogar zu "Blech", also einem real existierenden Server raten. Hier bekommst du viel Leistung für vergleichsweise wenig Geld. Je nach Konditionen sind auch diese monatlich kündbar, so dass dein finanzielles Risiko überschaubar bleibt.

1. generiere einen Private und einen Public Key. Wie das für dein Betriebssystem geht, dafür gibts Anleitungen. Auch Windows 11 kann das mittlerweile ab Werk.
2. Wenn möglich gib den Public Key bereits beim Erstellen des Servers an. Bei Hetzner z.B. geht das bereits während dem Bestellvorgang.
3. Wenn das nicht möglich ist, logge dich via SSH in deinen Server als root ein und mach folgendes (ich gehe jetzt mal von Debian/Ubuntu aus):

nano /etc/ssh/sshd_config.d/custom.conf
Port 666
PasswordAuthentication no
PubkeyAuthentication yes
STRG + X zum speichern und schließen
systemctl restart sshd.service
Was passiert hier? Mit nano ... erstellst du eine Abweichende, updatesichere Konfiguration für deinen SSH Server. Port 666 ändert den Standardport 22 auf 666. Das senkt die Anzahl der Loginversuche von 1000/m auf 0 ;) Du darfst auch jeden anderen Port verwenden. Mit den beiden letzten Befehlen schaltest du die Authentifizierung via Passwort ab, nur noch Public/Private Key ist dann möglich. Dies ist viel sicherer als Benutzername / Passwort.

4. Als nächstes installierst du die Programme die du brauchst. Vermutlich PHP und MySQL und einen Webserver. Ich lege dir mal MariaDB ans Herz. Ist im Prinzip gleich mit MySQL, unterscheidet sich nur in Feinheiten. Als Webserver verwende ich nginx. fail2ban überwacht deine Loginversuche bei SSH und bannt dann automatisch. Kann man noch auf andere Dienste ausweiten, aber es reicht erstmal SSH. Certbot wird benötigt um dir ein SSL Zertifikat zu besorgen
apt install -y nginx unzip zip certbot python3-certbot-nginx fail2ban mariadb-server php8.1 php8.1-{common,bcmath,bz2,intl,gd,mbstring,mysql,zip,soap,xml,curl,fpm,imagick,dom,pdo}

5. Wie du nginx für deine Bedürfnisse konfigurierst -> Google, oder ChatGPT.
Hier mal ein Beispiel welches ich z.B. für meine Laravel Installationen verwende:
server {
        server_name     your.domain.tld;
        root            /var/vhosts/domain/sub/public;
        index          index.php index.html;

        location / {
                try_files $uri /index.php?$query_string;
        }

    location ~* \.php$ {
        fastcgi_pass unix:/run/php/php8.1-fpm.sock;
        include         fastcgi_params;
        fastcgi_param   SCRIPT_FILENAME    $document_root$fastcgi_script_name;
        fastcgi_param   SCRIPT_NAME        $fastcgi_script_name;
    }
}

6. Der PHP FPM ist dafür zuständig dass der PHP Code ausgeführt wird. Der FPM hat sogenannte Worker, diese kümmern sich um den einzelnen Seitenaufruf. Sind alle Worker verbraucht (also gerade beschäftigt), dann bekommt dein Besucher nur eine 500 Seite zu Gesicht. Hier ist das super gut erklärt, und wenn du viele gleichzeitige Zugriffe erwartest ist es sehr sehr wichtig die pm.max_children usw. Werte anzupassen -> https://geekflare.com/php-fpm-optimization/

7. echtes Blech hat in der Regel viel RAM, also nutzes es und gib es deiner Datenbank. Der passende Config Eintrag dazu ist "innodb_buffer_pool_size". Du kannst ihn hier hinterlegen: /etc/mysql/mariadb.conf.d/50-server.cnf
Das hat zufolge das MySQL mehr RAM belegen darf und folglich mehr Indezes und häufig benötigte Daten in den Speicher lädt. Erklärt wird das hier: https://scalegrid.io/blog/calculating-innodb-buffer-pool-size-for-your-m ...


Ich hoffe ich konnte dir ein bisschen erläutern wie man PHP auch mit hohen Zugriffszahlen zum laufen bekommt. Für Detailfragen helfe ich dir gerne weiter.

Viele Grüße und viel Erfog
Martin
StefanKittel
StefanKittel Mar 12, 2024 at 07:21:56 (UTC)
Goto Top
Moin, ich werfe noch zwei Begriffe in den Raum.

LoadBalancer (LB).

Das ist ein Server der Zugriffe (Web, API, etc) auf mehrere Server verteilt.
So etwas gibt es bei jedem IaaS-Anbieter und bei vielen Root-Server-Anbietern.

Damit kannst Du recht einfach weitere Web-Server hinzubuchen um die Leistung zu erhöhen.
Natürlich muss die Datenbasis stimmen.

Meine Empfehlung wäre hier Hetzner mit seinen Cloud-Servern.
Skalierbar, mit Firewall-ähnlichen Regeln, Load-Balancer und Backup.

ELK-Stack
Das ist eine Sammlung von mehreren Komponenten.
Ich greife damit z.B. auf Protokolle einer Web-Application-Firewall zu und kann innerhalb von Sekunden ca. 100 Millionen Einträge filtern.

Stefan
DKX777
DKX777 Mar 18, 2024 at 18:51:43 (UTC)
Goto Top
Hi Frank,

sorry für das Delay ich bin gerade von einem Seminar zurück. Vielen Dank für die weitere Informationen!

Zitat von @Frank:

Überraschung Netcup hat keine Firewall...

Doch, das haben sie. Aber für dich nicht sichtbar. Der Datenverkehr, der in das Netcup-Netzwerk gelangt, geht durch ihre Firewall. Sie werben damit, dass sie DDoS Attacken erkennen und filtern.

Ja das mit den DDoS hatte ich gesehen, mir fehlte nur eine grafische Oberfläche für die Einstellungen. Dachte das gäbe es irgendwo

Was du meinst und brauchst ist die Firewall auf deinem virtuellen Server. Diese wird vom jeweiligen Linux-Kernel der virtuelle Maschine verwaltet. Unter Ubuntu wird sie z.B. über UFW verwaltet. Das ist ein sehr einfaches Linux Kommando, das die Firewall ein- und ausschaltet, verwaltet und die Einstellungen und den Status anzeigt. Es ist sehr einfach aufgebaut.

Generell ist ein Linux-Server von Haus aus ziemlich sicher, so dass man sich keine großen Sorgen um Sicherheitslücken machen muss. Mit einem ufw enable schaltet man einmalig die Firewall ein und mit ufw status kann man den aktuellen Status auslesen. Da man sich nicht als 'root' einloggen kann (Standard bei Ubuntu), braucht man sich darüber nicht so viele Gedanken zu machen.

Wie gesagt, um ein bisschen Linux-Administration kommst du nicht herum. Installiere doch einfach zu Hause ein Ubuntu in einer virtuellen Maschine und schau dir die Grundlagen an.

Das werde ich mal machen um das zu testen. Ich denke als Einstieg eine super Sache!


In-Memory DB

Die Snapshot-Funktion macht die In-Memory DB automatisch beim Starten und Herunterfahren, du brauchst nichts zu tun. Du kannst das noch zusätzlich so einstellen, dass sie jede Stunde einen Snapshot machen. Auch hier einfach etwas weniger Angst vor dem Neuen haben, die kochen auch alle nur mit Wasser.

Ja ich muss das unbedingt alles einmal ausprobieren. Mich reizen ja neue Dinge und wenn man sie dann erst einmal verstanden hat, dann machst auch gleich doppelt so viel Spaß sie zu verwenden



Einen KI-Assistenten fragen

Was dir helfen könnte, ist ein KI-Assistent wie Chatgpt, CoPilot (oder natürlich unsere Seite hier). Du kannst ihn alles über die Ubuntu-Installation, die Datenbank oder die Firewall fragen und bekommst im Regelfall eine sehr hilfreiche Antwort, z.B. "Wie greife ich mit PHP und Redis auf meine Daten zu" oder "Wie schreibe und lese ich einen Datensatz in Redis". Redis und DragonflyDB sind vom Befehlssatz her vollständig kompatibel, so dass alles, was in Redis geht, auch in der schnelleren DragonflyDB funktioniert. Auch Fragen wie "wie kann ich unter Ubuntu mit ufw den Status der Firewall abfragen?" funktionieren gut.

Die Idee mit ChatGPT finde ich interessant. Daran hatte ich bisher noch gar nicht gedacht. Das könnte wirklich sehr hilfreich sein. Ich check das mal aus ! Danke!


Gruß
Frank
DKX777
DKX777 Mar 18, 2024 updated at 18:56:29 (UTC)
Goto Top
Zitat von @derret:

Hallo,
ich hab mich jetzt extra hier angemeldet um dir ein paar Infos zu schreiben. Ich finde das viele Kommentare zwar hilfreich sind, aber dich vielleicht zu sehr verunsichern. Jeder fängt mal irgendwo an, sammelt Erfahrungen und weis dann was man hätte besser machen können. Der Grundstein für Version 2.0 ;)

Darum möchte ich dir hier ein paar Tipps für den Server zu deinem Projekt mitgeben:

Hab keine Angst vor einem Root Server. Kein Hoster möchte in einer Tour irgendwelche Zombies im Netzwerk stehen haben, daher sind die ab Werk schon nicht ganz doof konfiguriert.

Einen managed Server möchtest du dir nicht ans Bein hängen, du kannst in der Regel keine Konfigurationen selbst ändern, sondern musst immer zum Support des Hosters. Daher kosten die auch so viel. Und es gibt nix blöderes als ständig aufgehalten zu werden oder gar im Notfall nicht reagieren zu können!

Ich würde dir sogar zu "Blech", also einem real existierenden Server raten. Hier bekommst du viel Leistung für vergleichsweise wenig Geld. Je nach Konditionen sind auch diese monatlich kündbar, so dass dein finanzielles Risiko überschaubar bleibt.

1. generiere einen Private und einen Public Key. Wie das für dein Betriebssystem geht, dafür gibts Anleitungen. Auch Windows 11 kann das mittlerweile ab Werk.
2. Wenn möglich gib den Public Key bereits beim Erstellen des Servers an. Bei Hetzner z.B. geht das bereits während dem Bestellvorgang.
3. Wenn das nicht möglich ist, logge dich via SSH in deinen Server als root ein und mach folgendes (ich gehe jetzt mal von Debian/Ubuntu aus):

nano /etc/ssh/sshd_config.d/custom.conf
Port 666
PasswordAuthentication no
PubkeyAuthentication yes
STRG + X zum speichern und schließen
systemctl restart sshd.service
Was passiert hier? Mit nano ... erstellst du eine Abweichende, updatesichere Konfiguration für deinen SSH Server. Port 666 ändert den Standardport 22 auf 666. Das senkt die Anzahl der Loginversuche von 1000/m auf 0 ;) Du darfst auch jeden anderen Port verwenden. Mit den beiden letzten Befehlen schaltest du die Authentifizierung via Passwort ab, nur noch Public/Private Key ist dann möglich. Dies ist viel sicherer als Benutzername / Passwort.

4. Als nächstes installierst du die Programme die du brauchst. Vermutlich PHP und MySQL und einen Webserver. Ich lege dir mal MariaDB ans Herz. Ist im Prinzip gleich mit MySQL, unterscheidet sich nur in Feinheiten. Als Webserver verwende ich nginx. fail2ban überwacht deine Loginversuche bei SSH und bannt dann automatisch. Kann man noch auf andere Dienste ausweiten, aber es reicht erstmal SSH. Certbot wird benötigt um dir ein SSL Zertifikat zu besorgen
apt install -y nginx unzip zip certbot python3-certbot-nginx fail2ban mariadb-server php8.1 php8.1-{common,bcmath,bz2,intl,gd,mbstring,mysql,zip,soap,xml,curl,fpm,imagick,dom,pdo}

5. Wie du nginx für deine Bedürfnisse konfigurierst -> Google, oder ChatGPT.
Hier mal ein Beispiel welches ich z.B. für meine Laravel Installationen verwende:
server {
        server_name     your.domain.tld;
        root            /var/vhosts/domain/sub/public;
        index          index.php index.html;

        location / {
                try_files $uri /index.php?$query_string;
        }

    location ~* \.php$ {
        fastcgi_pass unix:/run/php/php8.1-fpm.sock;
        include         fastcgi_params;
        fastcgi_param   SCRIPT_FILENAME    $document_root$fastcgi_script_name;
        fastcgi_param   SCRIPT_NAME        $fastcgi_script_name;
    }
}

6. Der PHP FPM ist dafür zuständig dass der PHP Code ausgeführt wird. Der FPM hat sogenannte Worker, diese kümmern sich um den einzelnen Seitenaufruf. Sind alle Worker verbraucht (also gerade beschäftigt), dann bekommt dein Besucher nur eine 500 Seite zu Gesicht. Hier ist das super gut erklärt, und wenn du viele gleichzeitige Zugriffe erwartest ist es sehr sehr wichtig die pm.max_children usw. Werte anzupassen -> https://geekflare.com/php-fpm-optimization/

7. echtes Blech hat in der Regel viel RAM, also nutzes es und gib es deiner Datenbank. Der passende Config Eintrag dazu ist "innodb_buffer_pool_size". Du kannst ihn hier hinterlegen: /etc/mysql/mariadb.conf.d/50-server.cnf
Das hat zufolge das MySQL mehr RAM belegen darf und folglich mehr Indezes und häufig benötigte Daten in den Speicher lädt. Erklärt wird das hier: https://scalegrid.io/blog/calculating-innodb-buffer-pool-size-for-your-m ...


Ich hoffe ich konnte dir ein bisschen erläutern wie man PHP auch mit hohen Zugriffszahlen zum laufen bekommt. Für Detailfragen helfe ich dir gerne weiter.

Viele Grüße und viel Erfog
Martin

Hallo Martin,

ich weiß gar nicht was ich sagen soll! Extra angemeldet und dann auch noch so detaillierte Hilfe. VIELEN LIEBEN DANK ! Auch an dich ein Sorry für das Delay, ich bin gerade erst von einem Seminar zurück und konnte daher erst jetzt alles durchlesen und antworten.

Die Schritte die du hier aufzählst sind super hilfreich für den Start. Ich werde das alles einmal in Ruhe ausprobieren und schauen wie weit ich komme - wirklich großartig DANKE! face-smile
DKX777
DKX777 Mar 18, 2024 at 19:01:22 (UTC)
Goto Top
Moin Stefan,

auch an dich ein Sorry für das Delay, ich bin gerade erst von einem Seminar zurück und konnte daher erst jetzt alles durchlesen und antworten.


Zitat von @StefanKittel:

Moin, ich werfe noch zwei Begriffe in den Raum.

LoadBalancer (LB).

Das ist ein Server der Zugriffe (Web, API, etc) auf mehrere Server verteilt.
So etwas gibt es bei jedem IaaS-Anbieter und bei vielen Root-Server-Anbietern.

Damit kannst Du recht einfach weitere Web-Server hinzubuchen um die Leistung zu erhöhen.
Natürlich muss die Datenbasis stimmen.

Meine Empfehlung wäre hier Hetzner mit seinen Cloud-Servern.
Skalierbar, mit Firewall-ähnlichen Regeln, Load-Balancer und Backup.


Diesem Begriff bin ich schon mal über den Weg gelaufen. Das klang auch wichtig, aber verstanden hatte ich das bisher natürlich ohne die Kenntnisse von Servern allgemein noch nicht. Aber ich kann mir vorstellen, dass ein solcher LoadBalancer zukünftig sehr wichtig werden kann. Wobei ich mich aktuell dazu noch frage, wie das dann Codetechnisch ausschaut.

Ich tippe und hoffe darauf, dass dieser LoadBalancer dann die Requests einfach eigenständig auf die Server verteil, die dann am Ende alle auf eine Datenbank zugreifen? Oder müssen dann auch an jedem Server eigene Datenbanken hängen? Falls ja dann wird das ja ein Riesen Chaos alá welcher User ist denn nu in welcher DB? ^^

ELK-Stack
Das ist eine Sammlung von mehreren Komponenten.
Ich greife damit z.B. auf Protokolle einer Web-Application-Firewall zu und kann innerhalb von Sekunden ca. 100 Millionen Einträge filtern.

Das klingt auch sehr praktisch. Das check ich mal aus DANKE !


Stefan
derret
derret Mar 18, 2024 at 22:01:30 (UTC)
Goto Top
Hallo DKX777,
mir fällt gerade auf das ich zu Punkt 3 nochwas wichtiges vergessen habe. Wenn dein Hoster es nicht anbietet den Public Key bei der Installation zu hinterlegen, dann kannst du das nachträglich auch selbst machen.
Dazu kopierst du deinen Public Key und gibst folgendes ein:
mkdir ~/.ssh
nano ~/.ssh/authorized.keys
anschließend fügst du den Publick Key ein und beendest den Nano Editor mit STRG + X.
Das Tilde ~ Symbol verweist in Linux immer auf das Home Verzeichnis des aktuell verwendeten Users, also z.B. /root/ oder wenn du als Benny eingeloggt bist zu /home/benny/

Aber ich kann mir vorstellen, dass ein solcher LoadBalancer zukünftig sehr wichtig werden kann. Wobei ich mich aktuell dazu noch frage, wie das dann Codetechnisch ausschaut.

Ein Load Balancer nimmt die ankommenden Anfragen entgegen und reicht diese dann an andere Server weiter. Dabei gibt es verschiedene verfahren, am geläufigsten ist jedoch "round robin" wo z.B. 3 Server mit der selben Logik zur Verfügung stehen und der Load Balancer sendet ankommende Anfragen an Server 1, dann S2, S3 und wieder S1 usw.
Du hast quasi deine PHP Logik auf 2, 3 oder mehr Servern am laufen und die beantworten dann die Anfragen. Dadurch verteilst du die Last gleichmäßig auf mehrere Server.
Mit PHP ist das noch easy skalierbar, aber bei MySQL würdest du so inkonsistenzen erzeugen, das will man natürlich nicht. Hier würde dann z.B. für MariaDB ein "Galera Cluster" ins Spiel kommen. Aber das brauchst du zum Anfrang noch gar nicht. Ich weis zwar nicht was du genau vor hast, aber ich bin mir sicher das ein guter Server sogar mit dem Traffic und der Last eines Montana Black zurecht kommt ;)

Viele Grüße
Martin
DKX777
DKX777 Mar 21, 2024 updated at 18:29:30 (UTC)
Goto Top
Hi zusammen,

es sind ein paar Tage vergangen und nachdem ich mich bei Netcup komplett in die Nesseln gesetzt hatte mit dem Managed-Server, den ich jetzt dank versteckter Kündigungsfrist doch nicht monatlich kündigen kann stattdessen 3 Monate bezahlen darf OH WOW 150€ für nix und feststellen durfte das so ein managed server noch viel schlimmer ist, da einfach nichts aktiv ist, der Support aber erst Tage später antwortet per mail, ja da war mein Ehrgeiz doppelt geweckt und ich hab mir doch wieder einen RootServer geholt.

Dieses mal (ja wir lernen ja noch) weg von dem Netcup Verein zu Hetzner und dann ran ans Werk.

Dank Martins "Tutorial" konnte ich auch sofort loslegen - nochmal vielen Dank!

Das mit dem Public Key hat mich einen Tag wahnsinnig gemacht, da ich diesen zwar über mein Terminal super schnell anlegen und beim Server-Anmieten eingeben konnte, jedoch hab ich dem File einen eigenen Namen gegeben worauf es nicht per default im richtigen Verzeichnis landete, damit mein Terminal die SSH-Verbindung automatisch damit herstellen konnte. Es kam lediglich immer die Frage nach dem Passwort... welches ich aber ja nie erhalten hatte.

Das man die Dateien dann verschieben muss hab ich relativ schnell rausfinden können, aber was niemand im Netz verraten hat ist, dass man dieses auch noch umbenennen musste. Naja alles Neuland und ich lerne fleißig.
Verbindung war also da.

Mit den Commands von Martin (derret) hab ich also losgelegt und es lief erstaunlich gut durch. Als dann der Webbrowser beim Aufruf der IP "Hi" anzeigte war ich aber komplett aus dem Häuschen!!! WIE GUT IST BITTE SO EIN ROOT SERVER FREUNDE!!!

Bis hierhin soweit so gut, jetzt ging es jedoch an den Umzug der einzelnen Dinge, die bisher ja über meine Hostingpakete entwickelt wurden und hier wird es langsam aber sicher schwierig.

Als erstes musste ich mal dafür sorgen, dass der 2. der 4 Teile die ich brauche funktioniert.

PHP Files kann ich ja bisher schon ausführen also ist Teil 1 die API bzw. das Backend und die Website zur Idee theoretisch funktionsfähig. Ich lade die Dateien jedoch erst später hoch. (Das war auch ein Kampf rauszufinden wie ich überhaupt per Terminal Dateien hoch und runterladen kann - ist das bescheuert im Vergleich zu FTP)

Mit Teil 2 ist jetzt der erste NodeJS Server, denn wenn ich schon ein RootServer habe - dachte ich mir so - warum sollte ich dann externe Dienste wie Pusher nutzen, dran. Jetzt sind ja endlich die Grenzen des Hostingpakets gesprengt und alles ist möglich *freu*

Also NodeJS installiert, Files hochgeladen, bei Hetzner über das Controlpanel den passenden Port freigegeben, App gestartet und verrückt meine Client-Verbindung von der lokalen HTML Datei klappte sofort. Gutes Gefühl!

Ohne Portangabe kam meine PHP-Index Datei mit "Hi" wieder zum Vorschein, verrückt beides lief.

Dann jedoch das Problem als ich von meiner API bzw. meinem Backend, das ja noch bei meinem Hostinganbieter liegt an NodeJS einen Request senden wollte, Fehler im Browser Mixed Content. Ok kurz auf die Suche begeben und klar, der Request läuft an http, mein Backend jedoch auf https. Browser mögen das nicht mehr, Holy was jetzt.

Idee 1 SSL-Zertifkat für die Ip erstellen. Ergebnis LetsEncrypt macht das nicht für IPs... verdammt.

Einen weiteren Tag der Verzweiflung fand ich dann den passenden weg. Die Domains liegen alle bei meinem Hostinganbieter und der Umzug ist erstmal keine Option, also nach langer Recherche eine Sub-Domain angelegt und die per DNS auf meine IP des Hetzner-Servers gelegt.

Mit Certbot dann ein SSL-Zertifikat erstellt und auf die Domain gesetzt. Also wollte ich, aber der Server nicht, nach vielen weiteren Stunden in der Nginx Server-Konfiguration die Zertifikate hinterlegt alles irgendwie verbunden (ja ich weiß absolut nicht was ich da tu, aber ChatGPT und das Netz sagen mir mach es dann geht es), heute morgen um 9 und einer heftigen Nachtschicht hat dann der allererste Request an meine https SubDomain an meinen neuen Server geklappt. Gott war ich froh.

Was mich etwas wunderte war, dass mein PHP-Script nicht mehr aufzurufen war. Es öffnete sich plötzlich im Browser immer eine NGINX Willkommens-Seite. Nach dem ich dann etwas weiter gesucht habe, fand ich raus, dass ich den Standard-Host-Dispatcher von Nginx löschen muss. Warum ich das vorher nicht musste keine Ahnung, aber aus irgendeinem Grund wurde dieser jetzt immer geladen oder gewählt wie man das hier auch immer ausdrücken mag.

Gesagt getan, Default gelöscht und siehe da mein "HI" kam wieder zum Vorschein.

An dieser Stell möchte ich mich bereits noch einmal bedanken für eure Hilfe und all die Tipps und Vorschläge. Ich denke der Weg und das Herantrauen an einen eigenen RootServer ist das einzig sinnvolle. Alleine die Möglichkeiten die ich jetzt habe, schon mit NodeJS und Composer arbeiten zu können (was der Hostinganbieter offiziell verboten hat aber über komplizierte halbfunktionierende Workarrounds doch irgendwie ging) ist ein Traum.

Die Tatsache, dass ich eigene Websockets-Server bauen kann, was auch vom Hostinganbieter verboten und in PHP zusätzlich deaktiviert wurde und 24/7 NodeJS Server + Webserver alles auf einem RootServer zusammensetzen kann ist für mich unglaublich. Vorher war alles immer bei vielen Anbieter irgendwie untereinander kombiniert damit es überhaupt realisierbar war.

Lange Rede kurzer Sinn, VIELEN LIEBEN DANK!

4 Fragen würde ich jetzt gerne noch in den Raum stellen und falls ihr einen Moment Zeit habt, dann freue ich mich auf eure Antwort face-smile

Frage 1:
Bei Hetzner habe ich meinen Serverbereich in dem ich neue Server hinzufügen kann, oder Bestehende Verwalten kann. Da gibts den Bereich Firewall über den ich Ports für Aus-& Eingehende-Verbindungen hinzufügen kann.

Aktuell habe ich hier folgendes:

Eingehend:

Any ip4 / Any Ip6 TCP 22
Any ip4 / Any Ip6 ICMP
Any ip4 / Any Ip6 TCP 80
Any ip4 / Any Ip6 TCP 4444 (ehemaliger nodejs vor ssl)
Any ip4 / Any Ip6 TCP 443

Ausgehend:

NIX

Ist das ganze so richtig? Fehlt mir hier noch etwas oder hab ich gar irgendwas was so auf keinen Fall sein darf?

Und

Ist das alles was ich Mit Firewalls machen muss? Wenn ich bei ChatGPT nach Firewall RootServer frage, dann gibt er mir irgendwelche Commands für Firewalls die, ja was eigentlich genau, als Package existieren? Oder am Ende das gleiche machen wie die GUI bei Hetzner?

Frage 2:

Frank, du hattest dazu ja schon was von "UFW" geschrieben. Das meinte auch ChatGPT in verschiedenen Formen.

Wenn ich über "ufw status" den Status abrufe, dann erhalte ich "Status: inactive"

Obwohl die Firewall im Hetzner-Portal auf aktiv bzw. "vollständig angewendet" steht. Sind das doch zwei verschiedene und falls ja brauch ich sie beide?


Frage 3:
Muss ich noch irgendwas speziell absichern?

Frage 4:

Meine NGINX Konfiguration sieht jetzt so aus, muss hier noch irgendwas rein, damit ich nichts gegen die Wand fahre? :D

server {
        listen 443 ssl;
        server_name     sockets.meinedomain.de;
        root            /var/www/testwebsite;
        index          index.php index.html;

	ssl_certificate /etc/letsencrypt/live/sockets.meinedomain.de/fullchain.pem;
	ssl_certificate_key /etc/letsencrypt/live/sockets.meinedomain.de/privkey.pem;

        location / {
                try_files $uri /index.php?$query_string;
        }

    location ~* \.php$ {
        fastcgi_pass unix:/run/php/php8.1-fpm.sock;
        include         fastcgi_params;
        fastcgi_param   SCRIPT_FILENAME    $document_root$fastcgi_script_name;
        fastcgi_param   SCRIPT_NAME        $fastcgi_script_name;
    }
}


Ich freue mich auf eure Antworten und wünsche eine schöne restliche Woche face-smile
derret
derret Mar 21, 2024 at 20:59:23 (UTC)
Goto Top
Hi DKX777

Frage 1:
Sieht soweit in Ordnung aus. Vergiss nicht die Ports auf zu machen die du benötigst. Wenn du z.B. den SSH Port geändert hast ;)
Ansonsten.... Dienste die nicht existieren beantworten keinen Portscan und haben keine Sicherheitslücken. Also nicht benötigte Dienste wieder deinstallieren.

Frage 2:
UFW ist die Linux interne Firewall. Da du bereits eine von Hetzner nutzt, kannst du UFW deaktiviert lassen.

Frage 3:
Alles fine. Deine Firewall blockt eh alles weitere weg in der Einstellung.

Frage 4:
Auch einwandfrei.

Nebenkriegsschauplätze:

Das war auch ein Kampf rauszufinden wie ich überhaupt per Terminal Dateien hoch und runterladen kann - ist das bescheuert im Vergleich zu FTP
https://winscp.net/eng/download.php -> WinSCP
Geht auch mit jedem anderen Client der SFTP verwendet. Damit kannst du dich genauso mit deinen SSH Zugangsdaten einloggen, geht aber erheblich schneller beim Dateitransfer. Und ist genauso einfach wie FTP

Nach dem ich dann etwas weiter gesucht habe, fand ich raus, dass ich den Standard-Host-Dispatcher von Nginx löschen muss.
Nein musst du eigentlich nicht. Nginx kann die Anfrage anhand der Domain identifizieren und dann die entsprechenden Einstellungen verwenden. Ich kann aber ohne weiteres Wissen den Fehler nicht identifizieren. Deine Konfig ist eigentlich korrekt.

Lange Rede kurzer Sinn, VIELEN LIEBEN DANK!
Ja bitte gerne doch. Drop zu gegebenen Zeitpunkt an was du arbeitest. Also sobald du es veröffentlichen kannst face-smile

Gruß Martin