# Eigenen Rechner als Server?



## モストウォンテッド (25. Aug 2022)

Hallo,
ich möchte eine Webanwendung programmieren über die man sich einloggen kann und dann halt sein Profil und seinen anderen Kram den man in der Webanwendung machen kann dann halt sieht.

Das Ding ist ich brauche ja einen Server, was in dem Fall mein Rechner wäre auf dem aber nur in einer Textdatei der Username und das Passwort aller Nutzer gespeichert werden soll.. Den Stuff den die Clients dann von ihrem Rechner aus machen der soll bei denen auf dem Rechner gespeichert werden. 
Was aber bedeuten würde dass mein Rechner doch immer laufen müsste und das Programm auch oder? Denn ansonsten wird in meiner Abwesenheit ja kein neuer Client sich anmelden können oder?
Ich hab jetzt drei Probleme:
1. Ich möchte natürlich nicht das mein Rechner immer läuft, aber sich trotzdem jederzeit Clients sich anmelden können
2. Weiß ich nicht wie ich die Kommunikation mit den Rechnern hinbekomme
3. Weiß ich nicht wie ich meinen Rechner als Server einrichte.

Ich weiß das ich ziemlich elementare Dinge nicht weiß, aber das ist ja der Grund weshalb ich es machen möchte.
Es wäre nett, wenn ihr mir einfach links oder Empfehlungen geben könntet wo ich mich in das Thema am besten einlesen kann oder welche Bibliotheken ich mir mal anschauen sollte.

Vielen Dank schonmal


----------



## temi (25. Aug 2022)

モストウォンテッド hat gesagt.:


> Ich weiß das ich ziemlich elementare Dinge nicht weiß, aber das ist ja der Grund weshalb ich es machen möchte.


Das sind auch ziemlich komplexe Dinge, besonders auch was Datenschutz und Sicherheit angeht. Ein Server, der immer läuft, wird auch zum Angriffspunkt von bösen Menschen.

Ich würde mich an deiner Stelle zum Ausprobieren und Üben erst mal auf dein lokales Netz beschränken (dann halt ohne Gäste von außerhalb). Setz dir dazu z. B. einen virtuellen Server auf, mit dem du dich verbinden kannst. Damit bist du erst mal gut beschäftigt. Stichworte mit denen du dich da beschäftigen kannst wären etwa REST, Spring Boot.

Viel später irgendwann kannst du dir einen virtuellen Server mieten, auf dem deine Software laufen kann. Oder du beschaffst dir einen Raspi, den du zuhause ständig laufen lassen kannst (geht natürlich nicht, wenn du Millionen von Gästen hast).



モストウォンテッド hat gesagt.:


> Textdatei der Username und das Passwort


Nö, so nicht. In der Praxis speichert man Username und Hashwert des Passworts.


----------



## Jw456 (25. Aug 2022)

モストウォンテッド hat gesagt.:


> 2. Weiß ich nicht wie ich die Kommunikation mit den Rechnern hinbekomme


Kommt auch darauf an auf welcher Protokollebne du arbeiten willst.


----------



## KonradN (25. Aug 2022)

モストウォンテッド hat gesagt.:


> 1. Ich möchte natürlich nicht das mein Rechner immer läuft, aber sich trotzdem jederzeit Clients sich anmelden können


Also Anmelden können sich die Clients nur am Server und der muss nun einmal laufen. Wenn Dein Rechner nicht immer laufen soll, dann muss eben ein anderer Rechner immer laufen und auf dem läuft dann der Server.



モストウォンテッド hat gesagt.:


> 2. Weiß ich nicht wie ich die Kommunikation mit den Rechnern hinbekomme


Das hast Du mit "Webanwendung" doch schon gesagt. Dann läuft die Kommunikation über http(s) und Du hast da nichts weiter zu machen. Das Protokoll wird Dir auf Serverseite ein Framework abnehmen und auf Clientseite hast Du dann vermutlich einfach den Browser.
Wenn es um die reine Netzwerk-Erreichbarkeit angeht: Wenn Du nur im lokalen Netz bist, dann sollte es gehen. Wenn es über das Internet gehen soll: Da musst Du Dich tiefer mit beschäftigen. Hier geht es um elementare Security! Da keine Ahnung zu haben ist einfach grob fahrlässig.



モストウォンテッド hat gesagt.:


> 3. Weiß ich nicht wie ich meinen Rechner als Server einrichte.


Da ist nichts groß einzurichten. Ein Server ist auch nur ein Computer. Er läuft dann halt durch. 
Wenn Du eine Anwendung hast, dann kann man sich Dinge überlegen wie: Services, d.h. der Computer startet beim Start direkt die Applikation auch ohne dass ein User angemeldet ist. Das sind aber Dinge, die man machen kann, wenn es soweit ist.

Generell solltest Du Dir genau überlegen, was Du überhaupt willst. Du hast mehrere Bereiche abzudecken von der Software Entwicklung hin zur Administration. In beiden Bereichen ist die Sicherheit wichtig. Da wäre mein Ratschlag: Mach nicht alles auf einmal - das kann eigentlich nur schief gehen. Evtl. fängst Du einfach mal an, und nutzt bestehende Software. Also erste Schritte mit z.B. XAMPP oder so und da einen Apache zum laufen zu kriegen und so.


----------



## yfons123 (25. Aug 2022)

was ich empfehlen würde ist hyper V oder Vmware aufsetzen und darauf mal einen Server zu installieren

dein Computer "spielt" dann den client und auf den Server läuft deine Anwendung
damit ist auch alles in deinem netzwerk und du kannst dich mit deiner web anwendung spielen

der unterschied ist halt der "server" sollte in der theorie tag und nacht durchlaufen.. der braucht das aber nicht können wenn du keine anwendung hast


----------



## temi (25. Aug 2022)

モストウォンテッド hat gesagt.:


> 3. Weiß ich nicht wie ich meinen Rechner als Server einrichte.


Ich hab es oben schon angedeutet, aber noch mal etwas konkreter.

Zum Ausprobieren ist es am einfachsten, wenn du dir z. B. Virtualbox installierst und damit auf einer virtuellen Maschine ein Server-Betriebssystem deiner Wahl (Linux-Systeme wie Ubuntu Server sind kostenlos zu haben) einrichtest. Auf diesem Serversystem kannst du dann prima alles mögliche testen ohne Gefahr (die virtuelle Maschine lässt sich einfach klonen oder du nutzt Snapshots). Das Tolle ist, das dieser virtuelle Server auf deinem Computer laufen kann und du dich mit dem Webbrowser darauf verbinden kannst. Du benötigst also keinen zusätzlichen Rechner.

Aber alle deine oben erwähnten Themen sind jedes "eine Wissenschaft für sich". Du wirst erst mal einiges zu tun und zu lernen haben. Mach nicht zu viel auf einmal, lieber Stück für Stück.


----------



## KonradN (25. Aug 2022)

Ich selbst würde explizit davon abraten, da noch mehr Komplexität hinein zu bringen. Es gibt absolut keine Notwendigkeit für eine VM oder so. Und wenn dann da noch ein unbekanntes System installiert wird: Wie soll dies klappen?

Daher wirklich Stück für Stück vorgehen - und egal mit was für einem Software Stack er arbeiten möchte: Das geht mit jedem (üblichen) Betriebssystem.

Und wenn, dann wäre mein Ratschlag ggf. ein Raspberry Pi oder so - dann hat er einen dedizierten Server und sein Computer muss nicht durchlaufen. Aber auch das ist einfach nur Overkill für die ersten Schritt. Und da würde ich vor allem Wert auf Security legen.


----------



## temi (25. Aug 2022)

KonradN hat gesagt.:


> Ich selbst würde explizit davon abraten, da noch mehr Komplexität hinein zu bringen. Es gibt absolut keine Notwendigkeit für eine VM oder so. Und wenn dann da noch ein unbekanntes System installiert wird: Wie soll dies klappen?
> 
> Daher wirklich Stück für Stück vorgehen - und egal mit was für einem Software Stack er arbeiten möchte: Das geht mit jedem (üblichen) Betriebssystem.
> 
> Und wenn, dann wäre mein Ratschlag ggf. ein Raspberry Pi oder so - dann hat er einen dedizierten Server und sein Computer muss nicht durchlaufen. Aber auch das ist einfach nur Overkill für die ersten Schritt. Und da würde ich vor allem Wert auf Security legen.


Das Thema ist komplex und besteht aus mehreren Themenfeldern mit denen sie/er sich intensiv beschäftigen muss. Der Betrieb eines Servers ist nur ein kleiner Teil davon und von "durchlaufen" ist sie/er noch meilenweit entfernt. Falls er einen Raspi hat, dann in Ordnung (der muss allerdings auch installiert werden), aber die virtuelle Lösung erfordert keinen Kostenaufwand und *ich* würde nicht das Risiko eingehen mir mein Arbeitsystem mit allen möglichen XAMPP und sonstigen Installationen zu zerschießen. Das ist ausdrücklich meine persönliche Meinung.

Wenn sie/er zunächst mit seiner Webanwendung und beispielsweise mit Spring Boot beginnt, dann braucht sie/er sich natürlich erst mal noch gar nicht um einen Server zu kümmern. Das kommt dann später.


----------



## KonradN (25. Aug 2022)

temi hat gesagt.:


> *ich* würde nicht das Risiko eingehen mir mein Arbeitsystem mit allen möglichen XAMPP und sonstigen Installationen zu zerschießen.


Das Risiko ist ganz klar da, ja.

Aber ich sehe halt auch das große Risiko, dass der TE schlicht überfordert ist vom Umfang und den ganzen Notwendigkeiten. Und auch mit Virtualbox hast Du direkt eine Installation, die Du durchführen musst. Und ggf. beisst sich das dann noch mit einem vorhandenen Hyper-V oder BIOS Einstellungen sind ggf. anzupassen, ... Das Risiko wird sich also so oder so ergeben.


----------



## temi (25. Aug 2022)

KonradN hat gesagt.:


> Das Risiko ist ganz klar da, ja.
> 
> Aber ich sehe halt auch das große Risiko, dass der TE schlicht überfordert ist vom Umfang und den ganzen Notwendigkeiten. Und auch mit Virtualbox hast Du direkt eine Installation, die Du durchführen musst. Und ggf. beisst sich das dann noch mit einem vorhandenen Hyper-V oder BIOS Einstellungen sind ggf. anzupassen, ... Das Risiko wird sich also so oder so ergeben.


Also eines sollte dem TE jetzt klar sein: Es gibt viel zu tun!


----------



## モストウォンテッド (25. Aug 2022)

temi hat gesagt.:


> Das sind auch ziemlich komplexe Dinge, besonders auch was Datenschutz und Sicherheit angeht. Ein Server, der immer läuft, wird auch zum Angriffspunkt von bösen Menschen.
> 
> Ich würde mich an deiner Stelle zum Ausprobieren und Üben erst mal auf dein lokales Netz beschränken
> Nö, so nicht. In der Praxis speichert man Username und Hashwert des Passworts.


Ja ich habe auch nicht vor das Größer zu machen eigentlich ist es nur zum probieren und mich selbst herausfordern ob ich das schaffe. Vielen Dank für deine Antwort


----------



## モストウォンテッド (25. Aug 2022)

temi hat gesagt.:


> Also eines sollte dem TE jetzt klar sein: Es gibt viel zu tun!


Das auffjeden fall 😅


----------



## モストウォンテッド (25. Aug 2022)

Vielen Dank für all eure Antworten. Auch das mit der Sicherheit. Ich denke da ich nicht vorhabe irgendwas größeres zumachen wird es bei mir zuhause im Netzwerk bleiben(falls ich es überhaupt schaffe)... und dann sollte das eher unproblematisch sein oder?


----------



## temi (25. Aug 2022)

モストウォンテッド hat gesagt.:


> Vielen Dank für all eure Antworten. Auch das mit der Sicherheit. Ich denke da ich nicht vorhabe irgendwas größeres zumachen wird es bei mir zuhause im Netzwerk bleiben(falls ich es überhaupt schaffe)... und dann sollte das eher unproblematisch sein oder?


Daheim bist du dein größtes Sicherheitsrisiko 

Pass halt auf, dass du nicht versehentlich Ports nach außen öffnest, so dass dein Netzwerk plötzlich öffentlich erreichbar wird. Das wäre dann das nächste Thema für dich. Wie geschrieben, alles sehr komplex und vielfältig. Da kann man sich gut eine längere Zeit mit beschäftigen.

Das Projekt insgesamt gesehen berührt halt viele verschiedene Aufgabenbereiche, von der Softwareentwicklung über die Netzwerk- zur  (Linux-) Serveradministration. Aber durchaus spannend und lohnenswert mal reinzuschnuppern.


----------



## M.L. (25. Aug 2022)

Ein Server ist (erstmal) ein Programm auf einem Rechner, welches auf Eingaben (vorzugsweise) von aussen wartet und Ausgaben (vorzugsweise) nach aussen liefert. Ein 24/7-Betrieb mit potentiell vielen Nutzern hat hierbei andere Anforderungen an z.B. Hardware oder Sicherheitsaspekte. Weiterhin kann man Passwörter "salzen" und "pfeffern": https://www.security-insider.de/was-ist-ein-salt-a-1052450/


----------



## Oneixee5 (25. Aug 2022)

Vom Sicherheitsaspekt mal abgesehen, kannst du mit einem RaspberryPi (oder ähnliches) schon vieles lösen. Der ist stark genug um einen Server + Datenbank zu betreiben, verbraucht wenig Strom und kann immer laufen.





						Raspberry Pi - Tomcat installieren
					






					java.xrheingauerx.de
				



In deinem Router kannst du bestimmt DyDNS und eine Portweiterleitung einrichten (kann man auch weglassen, wenn nur im eigen Netzwerk erreichbar ausreicht). Damit hast du einen 24/7 laufenden Server der aus dem Internet erreichbar ist, für ein paar Euro.
Die Wartung und Konfiguration des RaspberryPi kannst du über SSH von deinem Rechner aus erledigen. Es ist also kein separater Monitor/Tastatur erforderlich.
Die Kommunikation ist auch unproblematisch, entweder mit einem Netwerkkabel am WLan-Router anstecken ober ein WLan-Stick anbringen (wenn nicht bereits vorhanden).
Es ist auch unproblematisch auf dem RaspberryPi eine Firewall etc. zu installieren. Linux bringt da ganz viel mit und es gibt eine Unzahl von Anleitungen und Tutorials.
Ich habe auch mal so angefangen. Zuerst RaspberryPi als Minecraft-Server für die Kinder, dann ein paar eigene Anwendungen.


----------



## mihe7 (26. Aug 2022)

Was mir spontan einfällt:

1. Alle (Netzwerk-)Dienste, die nicht benötigt werden, abschalten.
2. Alle Ports sperren, die nicht benötigt werden.
3. SSH-Zugang: root sperren, keine Passwörter nur per Public Key Authentifizierung, nur sichere Verfahren verwenden, alles andere am besten abschalten.
4. fail2ban aufsetzen (man könnte auch über Sperren ganzer IP-Bereiche nachdenken)
5. System aktuell halten.
6. Testen. Insbesondere nmap ist Dein Freund. 

Dann könntest Du noch

7. einen Reverse Proxy aufsetzen und
8. den Spaß in Containern laufen lassen.

Natürlich achtest Du auf sichere Passwörter, sofern Du welche hast. Passwörter werden nicht gespeichert sondern gehasht - und zwar wenigstens gesalzen, ggf. auch gepfeffert. Eine Anmeldung mit Passwort darf ruhig dauern, da spielen ein paar Sekunden mehr keine Rolle.


----------

