Empfehlung Webserver

tecknetz

New Member
Hallo in die Runde!

Vorab ich bin auf dem Gebiet Webserver/Server noch absoluter Laie und hoffe, dass ich hier in der richtigen Sparte meine Frage stelle:

Ich habe vor Daten von Messgeräten der Firma Withings (bieten eine offene Programmierschnittstelle an) abzugreifen und auf meinem Webserver anzeigen und abgreifen zu lassen. Das heißt ich möchte eine API zwischen dem Withings-Server und meinem eigenen Server herstellen. Withings selber hat für den Server folgende Vorgaben:


Die Partner-URL wird von unserem System aufgerufen, um Benachrichtigungen über HTTP-POST-Anfragen zu senden. Stellen Sie sicher, dass Ihr Server eine HTTP-HEAD-Anforderung verarbeiten kann, die aufgerufen wird, um die Gültigkeit Ihrer URL zu überprüfen.

Ihre URL muss:

  • mit https beginnen
  • eine gültige URL sein, die als URL-codierter String bereitgestellt wird
  • nicht größer als 255 Zeichen sein.
  • keine IP oder 'localhost' enthalten. Es sind nur die Ports 80 und 443 zulässig.

Könnte mir vielleicht jemand einen Ratschlag geben, wie ich bei der Serverwahl am besten vorgehen sollte und ob es schon einfache Möglichkeiten gibt das ganze in den ersten Schritten aufzusetzen und zu testen? Wie gesagt, für mich ist dieser Bereich absolutes Neuland und bis jetzt habe ich in vielen Berichten/Videos, in denen lokale kostenlose Server privat aufgesetzt wurden meistens eine URL gesehen, die ein "localhost" enthält und somit lt. der oben genannten Anforderungen nicht erlaubt sind.

Viele Grüße und besten Dank!
 

sascha-sphw

Member
Könnte mir vielleicht jemand einen Ratschlag geben, wie ich bei der Serverwahl am besten vorgehen sollte und ob es schon einfache Möglichkeiten gibt das ganze in den ersten Schritten aufzusetzen und zu testen?
Du könntest ein einfaches Webhosting Packet buchen (bei einem Hoster Deiner Wahl), da ist meist eine Domain und PHP mit dabei. Dann kannst Du Withings einfach die URL zum PHP Skript eintragen und die Daten verarbeiten (z.B. In eine Datenbank schreiben).

Du könntest mit einem NAS zu hause machen, dann musst Du nur über dynDNS eine URL einrichten.

Kommt halt auch etwas drauf an was Du mit den Daten vorhast.

localhost -> https://de.wikipedia.org/wiki/Localhost
Dann verstehst Du auch, warum das nicht funktionieren würde.
 

tecknetz

New Member
Danke erst einmal für die schnelle Antwort.
Ist es denn unausweichlich sich ein Webhosting Paket zu kaufen oder würde es theoretisch auch mit einem lokalen Server funktionieren bei dem man sich mit "ngrok" die lokale URL in eine globale URL transferieren lässt und diese als Callback-URL in Withings angibt? Oder funktioniert das nicht?

Letztendlich möchte ich die Daten zunächst nur auf einem Server hinterlegen (am besten im JSON Format), damit die Daten anschließend von einer eigens entwickelten App abgegriffen und in dieser App angezeigt werden können.
 

sascha-sphw

Member
Ich kenne ngrok nicht. Aber nach einem kurzer Blick auf deren Seite würde ich sagen es hört sich so an als ginge es damit.
 

sascha-sphw

Member
Mal eine Frage an Dich. Muss es denn dieser Push Service von Withings sein? Ich habe gesehen die bieten auch eine API die man selbst aufrufen kann. Damit müsstest Du dann nicht mal Deinen Server nach außen auf machen, auch nicht über ngrok.
 

d4f

Kaffee? Wo?
Ist es denn unausweichlich sich ein Webhosting Paket zu kaufen oder würde es theoretisch auch mit einem lokalen Server funktionieren bei dem man sich mit "ngrok" die lokale URL in eine globale URL transferieren lässt und diese als Callback-URL in Withings angibt?
ngrok-Tunnel, Cloudflare (Argo) Tunnel, ... funktionnieren alle zumindest in Theorie. Das Öffnen des Webserver-Ports nach aussen genau so.
Bei ngrok ist es meines Wissens aber so dass im Free-Tier der Port auf Seite des Anbieters random ist, was laut deinem Anbieter nicht erlaubt ist.

In allen Fällen ist der Aufwand kostenmäßig und technisch jedoch um Größen höher als ein jedes Webhosting-Paket das man für Appel-und-Ei kriegt. Quasi; nur weil es technisch geht heißt nicht dass es sinnvoll ist.
 

tecknetz

New Member
@sascha-sphw
Also ich hoffe dass ich das richtig verstanden habe mit dem push Service aber ich glaube das ist nicht unbedingt das Problem. Letztendlich verwendet withings oauth2 um die Authentifizierung durch den Nutzer zu bekommen (siehe Bild Anhang). Das ganze funktioniert dann so dass man eine Get-Anfrage an den Authorization Server stellt. Dabei wird dann die Callback-Url verwendet. Und genau für diese benötige ich dann einen globalen Server (wegen der oben aufgeführten Anforderungen), der quasi eine Antwort zurücksendet wodurch ein Authentication-Token erstellt wird. Mit diesem Authentication-Token kann ich im weiteren Verlauf dann meinen Access-Token (mit einer Post-Anfrage) erstellen der mir 4 Stunden lang gewährt auf den Withings-Server bzw. auf die gemessenen Daten zuzugreifen. Wenn die 4 Stunden vorbei sind kann ich mithilfe eines refresh-tokens meinen access Token wieder erneuern wenn ich das richtig verstehe. Diesbezüglich bräuchte ich wahrscheinlich nur einmal für diese callback URL einen public Server und ansonsten könnte alles immer lokal laufen. Withings ist da leider recht kompliziert in dieser Sache. Daher kommt eben auch meine Frage/Überlegung ob es dort einen lokalen Lösungsansatz gibt und ob es eventuell mit ngrok klappen könnte.

@d4f Okay das mit dem Port müsste ich mal überprüfen ob das wirklich random ist. Das mit der Sinnhaftigkeit leuchtet mir definitiv ein. Es ging mir zunächst einmal darum alle möglichen Lösungsvarianten aufzustellen und herauszufinden welche Wege alle in Betracht gezogen werden könnten.
 

Attachments

  • Screenshot_20210602-001905_Samsung Internet.jpg
    Screenshot_20210602-001905_Samsung Internet.jpg
    81.5 KB · Views: 49

d4f

Kaffee? Wo?
Diesbezüglich bräuchte ich wahrscheinlich nur einmal für diese callback URL einen public Server und ansonsten könnte alles immer lokal laufen.
Nein dein authentication Token und die Refresh-Tokens haben auch eine begrenzte Lebenszeit, allerdings eher im Bereich Tage/Wochen denn Stunden. Die genaue Dauer hängt von der anbieterseitigen Konfiguration ab.

Withings ist da leider recht kompliziert in dieser Sache
oAuth etablierte sich langsam aber sicher als Standard. Die Besonderheit ist hier nicht Withings sondern dass der Benutzer die Anfrage validieren muss, was halt nur asynchron funktioniert.

Es ging mir zunächst einmal darum alle möglichen Lösungsvarianten aufzustellen und herauszufinden welche Wege alle in Betracht gezogen werden könnten.
Theoretisch sind alle genannten Wege gangbar :)

Anmerkung; das Schema ist unvollständig - laut Grafik gibt es einen direkten Callback vom Authorisierungs-Server zu deiner Client-App, was ja hier offensichtlich nicht möglich ist.
 

sascha-sphw

Member
Das wäre meine erste Basis Idee, für eine mögliche Umsetzung mit Luft zur Optimierung/Verbesserung. So wären, wenn ich nichts übersehen habe, alle Anforderungen erfüllt.
Data Exchange.png
 

tecknetz

New Member
Das sieht gut aus!

Ich habe es heute auch mal über den alternativen Weg mit ngrok probiert, was auch problemlos klappt, jedoch werde ich in Zukunft wohl nicht um das Webhosting Paket herumkommen. Bei den Preisen nun aber auch verschmerzbar.
 
Top