Ist bei mir vor kurzem über den Mindstar RSS Feed eingeflattert. Nett... ![]()
Beiträge von whoami0501
-
-
Ich habe mir da mal selbst was gebaut, habe das in einem kleinen Webhosting laufen.
Das ist prinzipiell nur eine PHP Datei die ziemlich rustikal ist. Als Backend hab ich da ne MySQL Datenbanktabelle benutzt.
PHP: s.php
Alles anzeigen<?php //create the database connection $pdo = new PDO('mysql:host=DBIP;dbname=DBNAME', 'DBUSER', 'DBPASSWD'); //check whether a string is given via $_GET as input or not, then execute the program block for the situation if (isset($_GET['v'])) { //if yes, search for the string in the database $moveto = $_GET['v']; $mode = 'redirect'; $title = 'My URL Shortener | Sie werden in Kürze weitergeleitet...'; //check whether the length of the input string is correct (3 chars) if (strlen($moveto) == 3) { //if yes, check whether the string is given in the database $statement = $pdo->prepare('SELECT `link` FROM `links` WHERE `short` = "'. $moveto .'" LIMIT 1'); $statement->execute(); $data = $statement->fetch(); //check whether we got link out of the database if (isset($data['link'])) { //if yes, finally redirect (redirection could be found in the header) $link = $data['link']; $result = '<div class="text">Sie werden in Kürze weitergeleitet...<br><br>Sollten sie nicht weitergeleitet werden, dann klicken sie <a href="'. $link .'" target="_self">hier</a>.</div>'; } else { //if not, then set the result to not found $result = '<div class="text">Der angefragte Link wurde nicht gefunden!<br><br><a href="'. $_SERVER['SCRIPT_NAME'] .'">Zurück zur Startseite</div>'; } } else { //if not, $moveto is invalid, so put the error in the result $result = '<div class="text">Ungültiger Link!<br><br><a href="'. $_SERVER['SCRIPT_NAME'] .'">Zurück zur Startseite</div>'; } } else { //if not, try to create a short link or show the options to create a short link $mode = 'create'; $title = 'My URL Shortener'; if (isset($_POST['link']) and isset($_POST['password'])) { //check whether the link is valid if (! strpos($_POST['link'], '.') OR strlen($_POST['link']) < 5 OR substr($_POST['link'], 0, 1) == '.') { //if the link is invalid (doesn't contain at least one dot), put a error to the result $result = '<div class="text">Ungültige Eingabe!<br><br><a href="'. $_SERVER['SCRIPT_NAME'] .'">Zurück zur Startseite</div>'; //check whether the password is correct } else if ($_POST['password'] == 'PASSWORT') { //if yes, make a short link //before we create a short link, we check whether the link is already in the database $buffer = $_POST["link"]; $buffer = (substr($buffer, 0, 4 ) === "http" || substr($buffer, 0, 6 ) === "ftp://"?$buffer:'http://'.$buffer); $statement = $pdo->prepare('SELECT `short` FROM `links` WHERE `link` = "'. $buffer .'" LIMIT 1'); $statement->execute(); $data = $statement->fetch(); //if we didn't found a the short link in the database, we're going to create it if (! isset($data['short'])) { //chars defines the possible chars, that can be part of a short link $chars = 'abcdefghujklmmnopqrstuvwxyzABDEFGHIJKLMNOPQRSTUVWXYZ0123456789'; //possible contains the possibility, whether a short link is already in use $possible = FALSE; $i = 0; //try as long as necessary to find a short link, that doesn't exist in the database while ($possible == FALSE AND $i <= 1000) { //increase $i $i++; //generate a short link $short = substr(str_shuffle($chars), 0, 3); //search for the generated short link in the database $statement = $pdo->prepare('SELECT `ID` FROM `links` WHERE `short` = "'. $short .'" LIMIT 1'); $statement->execute(); $data = $statement->fetch(); //if there's a result, set possible to TRUE $possible = (isset($data['short'])?FALSE:TRUE); } //check whether the loop exited with $i < 1000 if ($i < 1000) { //if we found a possible short string, we will insert them to the database $timestamp = time(); $statement = $pdo->prepare('INSERT INTO `links`(`short`, `link`, `timestamp`) VALUES ("'. $short .'","'. $buffer .'","'. $timestamp .'")'); $statement->execute(); $data = $statement->fetch(); } else { $error = 'databasefull'; } } else { $short = $data['short']; } //check whether we have a error if (! isset($error)) { //return the short link $result = '<div class="text">Der Link wurde erfolgreich gekürzt!</div>'; $request = 'https://' . $_SERVER["SERVER_NAME"] .'?v='. $short; $result .= '<p class="link"><a href="'. $request .'" target="_blank">'. $request .'</a></p>'; $result .= '<center><input type="text" value="'. $request .'" style="width: 200px; height: 20px; text-align: center;" readonly></center>'; $result .= '<div class="smalltext">Text markieren und mit Strg+C kopieren</div><br><br>'; $result .= '<div class="text"><a href="'. $_SERVER["SCRIPT_NAME"] .'">Zurück zur Startseite</a>'; } else { //Error! Maybe the database must be cleaned up $result = '<div class="text">Datenbankfehler! Es konnte kein verfügbarer kurzer Link gefunden werden!<br><br><a href="'. $_SERVER["SCRIPT_NAME"] .'">Zurück zur Startseite</a></div>'; } } else { //if not, return a error message $result = '<div class="text">Das Passwort ist falsch!<br><br><a href="'. $_SERVER["SCRIPT_NAME"] .'">Zurück zur Startseite</a></div>'; } } else { $result = '<form action="'. $_SERVER['SCRIPT_NAME'] .'" id="input" method="post">'; $result .= '<h2>My URL Shortener</h2>'; $result .= '<table border=0 width="100%"><tr><td align="right"><label for="link" class="text">Link: </label></td><td><input type="text" name="link" id="link" maxlength="1024" style="width: 100%;"></td></tr>'; $result .= '<tr><td align="right" width="10%"><label for="password" class="text">Passwort: </label></td><td><input type="password" name="password" id="password" maxlength="64" style="width: 100%;"></td></tr></table>'; $result .= '<center><button type="submit" class="button">Link kürzen</button></center>'; $result .= '</form>'; } } //append the head to the output $output = '<!DOCTYPE html><html><head><title>'. $title .'</title><meta name="robots" content="noindex, nofollow" /><link rel="shortcut icon" type="image/x-icon" href="/favicon.ico">'; $output .= (isset($link)?'<meta http-equiv="refresh" content="1; URL='. $link .'">':''); //append the css style $output .= '<style>body {background-color:#333333;}'; $output .= 'h2 {font-family: Arial,sans-serif; font-size: 16pt; font-weight: bold; text-align: center;}'; $output .= '.text {font-family: Arial,sans-serif; font-size: 12pt; font-weight: bold; text-align: center;}'; $output .= '.smalltext {font-family: Arial,sans-serif; font-size: 8pt; font-weight: bold; text-align: center;}'; $output .= '.button {font-family: Arial,sans-serif; font-size: 12pt; font-weight: bold; width: 40%; height: 25px;}'; $output .= '.link {font-family: Arial,sans-serif; font-size: 12pt; font-weight: bold; font-style: italic; text-align: center;}'; $output .= '.box {background-color: #ffffff; width: 40%; padding: 10px; border: 0px; border-radius: 15px; opacity: 0.95;}</style>'; $output .= '</head><body><br><br>'; //append the body to the output $output .= '<span style="display: flex; align-items: center; justify-content: center;" width="100%"><div class="box">'. $result. '</div></span>'; //append the footer to the output $output .= '</body></html>'; //output of the document echo $output; ?>SQL: links.sqlCREATE TABLE `links` ( `ID` int(11) NOT NULL, `link` varchar(1024) NOT NULL, `short` varchar(3) NOT NULL, `timestamp` int(11) NOT NULL ) DEFAULT CHARSET=latin1;Macht bei mir was er soll und arbeitet zuverlässig. Aber ohne Gewähr...

-
Danke für den tipp. Schaue ich mir mal an. Ich werde mir wohl hier beim hoster im Ort was eigenes zusammen stellen lassen ? hol also über jeden Tipp dankbar
Das meinte ich übrigens auch mit "lass dir das managed von jemanden hier bereitstellen" - es gibt meines Wissens hier Leute, die sowas professionell und offiziell machen. Wenn du natürlich deinen Hoster vor Ort bevorzugst, dann ist das auch okay, aber prinzipiell ist es ja dann das selbe.
Grundsätzlich bevorzuge ich wie gesagt eigenes Hosting bzw. die Möglichkeit, alles selbst konfigurieren zu können, da man da oft bei so kleinen Details noch etwas rausholen kann. Das betrifft halt Verschlüsselung und Webserver, aber auch die Konfiguration der Interpreter und der Datenbank und vieles mehr.
Zudem natürlich auch die Verbesserung der Security usw., weil man eben Dinge implementieren/konfigurieren kann, die es im Webhosting einfach nicht gibt.
Da muss man dann halt selbst abwegen... erhöhter Aufwand und dafür Performance, Flexbilität und Security vs. wenig Aufwand und einfaches Klicki-Bunti...
-
Ich selber finde die ladezeiten nicht optimal
Vielleicht nochmal als expliziter Hinweis: Benutz mal ein ECDSA Zertifikat statt RSA. Unterstützt LetsEncrypt auch.
Mit ECDSA Zertifikaten erreicht man i.d.R. schnellere Handshakes, was in meinen Augen die Schwuppdizität bei meinen Anwendungen erheblich erhöht hat.
Ich glaube aber, dass das im Webhosting nicht möglich ist... deswegen halt selbst hosten...
-
Hi,
ich hatte ja letztens schon mal angekündigt, dass ich mich zu diesem Thema nochmal äußern wollte, da ich mein ShiftPhone ja jetzt habe und diese Woche bereits auch im Alltagseinsatz hatte.Ich habe das ganze auch zum Anlass genommen, um mich von Google und WhatsApp zu befreien, aber dazu später.
Erstmal zum Gerät selbst. Genau genommen habe ich ein Shift5me mit 3GB RAM und 32GB Storage gekauft. Ich bin gerade im Moment bloß etwas angepisst, weil der Preis in den letzten Tagen um 55€ gesenkt wurde. Nunja... passiert halt.
Das ShiftPhone hat die "Besonderheiten", dass...
- es modular aufgebaut ist und selbst repariert werden kann
- es aus nachhaltig gewonnenen Rohstoffen besteht und die Mitarbeiter möglichst fair bezahlt werden
- man aus jenem Grund einen geringen Gerätepfand zahlen muss (der ist aber im Preis inkl.)
- und der Hersteller selbst sowohl ein Google-verseuchtes als auch ein Google-freies Android ausliefert.
Wenn man keinen Aufpreis zu 45€ zahlen möchte, muss man 5-10 Wochen auf sein bestelltes Phone warten. Ich habe mich für Variante 2 entschieden und das Smartphone nach ca. 5 Wochen erhalten. Das müsste jeder dann für sich und seine Situation selbst entscheiden, was man da möchte.
Gemäß der aktuellen Lieferumfangsbeschreibung bin ich zu blöd zum Lesen. Oder die wurde vor kurzem aktualisiert. Ich meine gelesen zu haben, dass die Smartphones komplett ohne jegliches Zubehör ausgeliefert werden. Daher habe ich Hülle, Folie, Kabel und Netzteil extra bestellt. Dooferweise war bis auf das Netzteil alles inklusive - nun, ich bin jetzt halt etwas umfangreicher ausgestattet. Lehrgeld oder so...
Ich habe das Gerät nach kurzem begutachten des Google-verseuchten Androids per OTA Update auf ShiftOS Lite ohne Google-Verseuchung aktualisiert. Nach etwas testen wollte ich es dann noch mit Magisk rooten, was sich aber etwas schwierig gestaltet hat, da das Bootimage sich irgendwie nicht flashen ließ. Ich habe das ShiftOS Lite dann nochmal per Flashtool völlig neu geflasht und anschließend das von Magisk gepatchte Bootimage nochmal geflasht, das klappte super und damit arbeite ich jetzt auch.
ShiftOS Lite ist ein völlig normales Android, nur eben ohne Google Integration und ohne Google Services. Zweiteres gilt zu beachten, da Apps die auf Google Cloud Messaging für Push Benachrichtigungen zurückgreifen (das machen so ziemlich fast alle aus dem Playstore). Die gehen dann nämlich nicht mehr und mann muss sich mit microG einen Ersatz bauen. Das habe ich aber nicht getan, weil ich es nicht benötige.
Der überwiegende Teil meiner Apps stammt aus dem F-Droid Store, manche sind direkt per APK installiert und wenige weitere habe ich mir über den Aurora Store aus dem Playstore gezogen. Ich komme gut damit zurecht und kann auf Wunsch auch nochmal eine App-Liste posten (bzgl. F-Droid). Ich habe mich beim Absichern an der LineageOS Artikelreihe von Mike Kuketz orientiert und nutze auch afwall+ und adaway.
Was nicht so geil ist: ShiftOS liefert (wenn auch Tracker frei) Firefox Klar und TeamViewer QuickSupport mit. Und Nur der Firefox Klar lässt sich deaktivieren. Deinstalliert habe ich trotz root keinen der beiden bekommen...
Als Messenger setze ich nur noch auf Telegram, Signal und Threema. WhatsApp ist rausgeflogen... die Leute aus meinem Umfeld, die noch keine anderen Messenger hatten, waren dezent überrascht (obwohl das seit nem Monat in meinem Status stand - egal) und direkt nach der Frage "Warum?" (Datenschutz, Privatsphäre und Datensouveränität) kam dann gleich "Wie erreiche ich dich jetzt?"
Telegram und Signal haben ihre eigenen Dienste für Push Benachrichtigungen, Threema betreibt alle 15 Minuten Polling. Damit kann ich leben.
Die Google Dienste vermisse ich garnicht, WhatsApp auch nicht - es ist ruhiger geworden und man wird weniger zugemüllt, sehr entspannend. Man lebt ruhiger und ist auch entspannter, weil man weiß, dass der tägliche Wegbegleiter nur noch so ein kleines bisschen Wanze ist.
Das ShiftOS Lite ist aktuell noch in einer Beta Phase - dort ist es stabiler als das stabile Android auf meinem vorigen CAT S41. In meinen Augen ist es eigentlich produktiv nutzbar, wenn man das möchte. Ich habe jedenfalls noch keinen Bug oder so gefunden.
Zur Hardware:
- Audio: ist in Aufnahme sowie Wiedergabe in Ordnung, man sollte halt bei so einem lachhaft kleinem Lautsprecher keine Wunder erwarten
- Kamera: Ich habe mir etwas mehr erhofft und mit den großen Flaggschiffen hält sie nicht annähernd mit, aber für kurze Schnappschüsse, mal ein Dokument abfotografieren, o.Ä. sehr gut ausreichend
- CPU: Deka Core... die läuft nie vollständig, zumindest nicht bei mir. Und trotzdem läuft alles flüssig und super.
- Akku: Von meinem S41 kenne ich entspannte 2 Tage Durchhaltevermögen. Hier nicht. Der Akku hält bei geringer Nutzung und schwieriger Netzsituation aktuell gerade so einen Tag. Ich schaue aber keine Serien, spiele Spiele o.Ä., nutze es also eher wenig. Dafür lädt es allerdings auch sehr schnell wieder auf - und da man heutzutage ja fast überall aufladen kann, ist das für mich kein Problem.
- Handling usw: Der Powerbutton und die Lauter/Leiser-Buttons sind sehr sensibel. Nichts für Grobmotoriker oder Menschen mit großen Händen.
- Bildschirm: normal groß und die Farbgebung und Auflösung sind in Ordnung.
- Verarbeitung: wertig - ist auf jeden Fall kein Plastemüll oder so, vom Gefühl her
So. Ehm. Mehr fällt mir gerade explizit garnicht ein. Wenn ihr noch Fragen habt, dann stellt sie gerne hier.

-
Ja Mist, ne? Billig einkaufen und teuer weiter verkaufen bedeutet halt auch ein bißchen Arbeit.
Und ist der Handel noch so klein, so bringt er mehr als Arbeit ein.
Das sehe ich immer wieder heutzutage. Ich bin ja noch recht jung und ich höre von Leuten in meinem Alter immer "Lass dies und das machen, Business, da kann man einfaches Geld verdienen".
"Dies und das" sind dann so Sachen wie z.B. ne billige Immobilie einkaufen und weitervermieten. Was die nicht wissen - keiner mag in ne Ruine ziehen, man muss die Gebäude und das drumherum erstmal sanieren und herrichten, vorher geht da garnichts. Und was das dann wieder an Arbeit und investierten Geld bedeutet, das weiß wieder keiner. Oder ne Fertigteilgarage kaufen, die sich bei Weitervermietung zu gängigen Preisen nach 15 Jahren armortisiert... kann man ja irgendwo machen, aber die ist von der Substanz her in 15 Jahren aber auch hin, weil sie vom Material her nicht viel taugt...
Nirgendwo kann man einfach Geld verdienen (außer vielleicht mit irgendwelchen schmutzigen/illegalen Geschäften) - wenn man das denkt, dann kennt man nicht den Aufwand der nötig ist, um es ordentlich zu machen. Behaupte ich jedenfalls.
//EDIT: "Einfach" wird es vielleicht dann, wenn man ein Fachgebiet extrem gut beherrscht und sich gewisse Dinge clever baut und evtl. auch automatisiert. Aber das geht halt nicht mit Fertigprodukten, das muss man sich selbst bauen. Und dafür muss man es halt drauf haben und zumindest initial mal ne größere Menge arbeit investieren, die sich dann über die Zeit gesehen wiederum armotisiert.
//EDIT 2: Ehh, aber falls daraus jetzt ne Metadiskussion entstehen sollte, sollten wir die nicht in diesem Thread fortführen...
-
Wieso willst du dein ZFS unkomprimiert betreiben? Das macht keinen Sinn, egal ob SSD oder HDD. Du verschenkst Performance damit.
Sorry - aber versuchst du mich gerade zu trollen oder hast du meinen Beitrag bloß überflogen?
Weder tu ich das, noch habe ich das vor. Mir ist klar, dass das sinnlos wäre. Das habe ich aber auch geschrieben.
Ich habe 400GB Storage, das ist für mich durchaus ausreichend. Auch wenn das eigentlich keine Rolle spielt... Hier daheim auf dem NAS habe ich sogar noch viel mehr.
Mir geht es nur darum, dass alle LXC Container durch das OS zu eigentlich mindestens 50% gleich sind und man da beim Backup ja eigentlich ein bisschen Storage verschenkt, wenn man das jedes mal für jeden Container extra speichert... und ich überlege, wie man das am elegantesten vermeiden kann.
Ich habe genügend Storage - ich überlege doch nur, wie ich ihn effizienter nutzen kann.
-
Achso - wusste ich nicht. Wieder etwas gelernt.
Naja umbauen kann ich da jetzt nichts mehr (bzw. nur mit hohem Aufwand), will ich auch nicht...
Habe nur der Optimierung halber drüber überlegt, was man so machen könnte.
Aktuell ist es halt auf meinem eigenen Server so, dass die Container in lzo komprimierten tarballs per vzdump auf einer ext4 Partition mit großer Blockgröße gespeichert werden. Und die werden dann nochmal per borg auf mein NAS gesichert, wo sie dann auch nochmal etwas länger liegen.
Die Container selbst laufen live auf ZFS mit lzo. Ist ne feine Sache und dadurch, dass ich die 8GB RAM kaum nutze, kann man da sowohl von der Performance als auch vom Speicherverbrauch her gut was rausholen. Performance nur im Rahmen der Schwuppdizität, ungemessen.
Mein Gedanke lag darin, dass bei den Container ja der Debian (also OS) Unterbau z.B. immer der selbe ist. Allein schon auf Basis der Tatsache, dass jeder Container in einen eigenen Tarball gesichert und anschließend komprimiert wird, verschwendet man da Storage. Denn prinzipiell müsste man das ja z.B. nur einmal speichern. War halt so meine Idee...
Nochmal aus der Theorie heraus die Idee - würde es dann Sinn machen, die tarballs alle unkomprimiert zu speichern und dann alle per Script in einen großen Tarball "reinzukomprimieren"? Oder was würde sich hier anbieten? -
Jetzt mal rein theoretisch - wenn ihr euch hier jemanden sucht (ich glaube hier sind so Menschen unterwegs, die sowas machen, habe ich mal irgendwo gelesen), der Netcup Produkte einkauft und diese euch managed verkauft? (Ich scheide da aber schon deswegen aus, weil ich sowas nebenberuflich nicht darf - nur zur Info. ^^)
Aber halt mal nur so als grundsätzliche Idee... ich denke mal, dass man da auch etwas flexibler wäre. Fragen kostet nichts...
-
Erstelle einfach unkomprimierte vzdump Backups. Dann sollte Borg das diffen sauber hinbekommen. Alles andere riskiert die Integrität des Backups.
Also ich hatte das mal auf dem Server eines Kumpels getestet, den ich für diesem administriere. Da läuft ein ZFS Filesystem mit lzo - im Normalfall sollte das ja auch deduplizieren bzw. live komprimieren. Da haben zwei nahezu gleiche unkomprimerte Tarballs null Kompression o.Ä. gezeigt... jeweils ca. 25 GB, ca. 50 GB waren dann auch belegt.
Ich tendiere da also eher zu einem Backupscript, dass die von m_ueberall angesprochenen Gesichtspunkte beachtet... aber vielleicht teste ich auch erstmal unkomprimierte Tarballs, das wäre tatsächlich einfacher... mal schauen. Danke auf jeden Fall für die Infos!

-
Jetzt mal rein theoretisch... wenn man LXC Container betreibt, dann hat man ja irgendwo die Platten der Container im Filesystem gemountet und kann vom Hostsystem aus direkt darauf zugreifen.
Könnte man dann also hergehen und die Container direkt per Borg sichern, indem man den entsprechenden Ordner angibt, in den dessen rootfs gemountet ist?
Weil so Gerätedateien und sowas liegen ja in RAMdisks, die können einem da nicht in die Quere kommen... oder habe ich da noch irgendwas übersehen, was da Probleme verursachen könnte?
Hintergrund wäre der, dass man mit borg halt einfach Storage sparen kann. Weil die komprimierten vzdump Images brauchen immer so viel Storage und lassen sich auch nicht wirklich inkrementiell speichern. Ist zwar praktisch, weil man die einfacher restoren kann, aber ich sehe irgendwo halt nicht ein, Dateien die sich so ziemlich nie ändern, doppelt und dreifach zu speichern...
-
Ich hatte bis jetzt auf dem StorageServer die PHP-Anwendung laufen und auch die Daten liegen. Jetzt habe ich auf einem anderen Server die Anwendung laufen und wollte nur den Speicherplatz einbinden. (Beides bei netcup) Auf das Virtuelle "CD-Rom" kann ich auch per SFTP zugreifen. Und da der Server nur ein Virtueller ist und dieser ja bestimmt von einem Linuxserver gehostet ist, dachte ich es gäbe eine direkten Zugriff auf den reinen Speicher. Ich wollte mir das ganze Server verwalten sparen.
Mit dem Notfallsystem habe ich es hinbekommen was jedoch nicht Arbeitstauglich ist.
Du kannst hier bei Netcup keinen zusätzlichen Blockstorage einbinden, auch nicht von Storageservern. Storageserver <--> Storage
Wenn du dir den administrativen Aufwand sparen möchtest, musst du auf Storagespace zurückgreifen.
-
Du würdest mir also zu EINEM Server raten und nicht mehrere "getrennte" Lösungen?
Schwierig. Einerseits würde ich das, wie tab schon sagte, von der Zugriffsart deiner Kunden abhängig machen.
Andererseits würde ich Webhosting und Server eher nicht mischen. Der Hintergrund ist der, dass gewisse Bedingungen bzw. die Umgebung einfach nicht gleich sein könnten. Sprich: Baust du deine AU im Webhosting auf und machst die PU auf den Server, könntest du in die Situation rennen, dass es in der PU nicht läuft, obwohl es in der AU lief. Fände ich jetzt eher nicht so geil, sowas.
Als Mensch der eher administrativ erfahren ist, würde ich sowas zunächst mal komplett selbst aufbauen. Auf Root Servern.
Ich würde dann auf Container hinter einem reverse Proxy setzen. Dazu kann man Kubernetes+Docker oder auch Ansible+LXC nehmen. Ich würde AU, PU und Mailserver auf zwei Server verteilen, die ich dann Auslastungstechnisch entsprechend skaliere. Als Speichermedium würde ich der PU- und Mailserver SSD geben, dem AU Server eine größere HDD. Die AU braucht nicht so viel Peformance, wie der Rest, daher reichen da in meinen Augen HDD's und du kannst dem Server dann auch für (inkrementielle) Backups nutzen, da du ja da mehr Storage hast.
Zusätzlich würde ich noch einen kleinen VPS bei einem anderen Provider für das Monitoring der Seiten anmieten. Alternativ könntest du hier aber auch auf Lösungen wie Worldping zurückgreifen, dass lässt sich evtl. leichter managen. Mit genügend E-Mail Adressen und einer einzigen Grafana Instanz mit mehreren Umgebungen hat man da ja quasi kostenlos unbegrenzt viele Checks...
Also nochmal Klartext, wie ich es machen würde:
PU + Mail - RS 4000 SSD x4 G8SE - 20,99€
AU - RS 2000 SAS G8 - 12,99€ (wenn du was weniger Leistung und Storage brauchst, dann geht auch ein 1000er G8 SAS für 6,99€)
Summe - 33,98€/Monat + administrativer Aufwand deinerseits
-
Alternativ würde ich mir einfach einen Server für alles hinstellen, da wird es aber iwann mit dem Speicher knapp.
Ohne jetzt auf das große und ganze einzugehen.
Ist dir bekannt, dass du zusätzlichen Storagespace per NFS anbinden kannst und du ggf. bei private Servern mit Netcup reden kannst, ob Sie dir ein individuelles Angebot machen?
-
Ich würde an der Stelle die Festplatte des Storage Servers einfach per LVM entsprechend aufteilen/partitionieren.
Dann packst du da halt ein minimales CentOS oder Debian mit einem NFS Server drauf, dass du in ein logical Volume mit meinentwegen 10GiB (also als rootfs) packst und den Rest des Storages packst du in ein zweites logical Volume, dass du dann per NFS freigibst und auf einem anderen Server mountest.
Deinen Server und den Storageserver kannst du ja per VXLAN oder VPN verbinden, damit könntest du vermeiden, dass der NFS Server z.B. von außen angegriffen wird.
-
Pff, Kaffee. Schwarzer Tee, das ist das Wundermittel! Wir haben hier zuhause sowie auf Arbeit immer losen Ceylon - einen starken NetCup voll davon trinken und du fühlst dich wie Asterix nach einem Schluck Zaubertrank.

Nur nicht vor dem Schlafen gehen trinken - das habe ich einmal gemacht, da habe ich tatsächlich die halbe Nacht gebraucht, eh ich richtig in den Tiefschlaf gekommen bin.
-
Na doch, das ist für nginx selbst. Das heißt, dass nginx den Header immer setzen soll (also unabhängig vom Response Code). Siehe hier. Daran liegt das eigentlich nicht.

-
Doofe Frage... in nginx habe ich für einen vhost, der eine Datei enthält, die per iframe eingebunden werden soll, folgenden Header gesetzt:
add_header X-Frame-Options "ALLOW-FROM https://seite1.domain.de/" always;
Auf der im Header erwähnten Domain habe ich dann das iframe eingebunden, das funktioniert auch. Aber Firefox meckert trotzdem in der Konsole:
ZitatUngültige X-Frame-Options: "ALLOW-FROM https://seite1.domain.de/"-Kopfzeile von "https://seite2.domain.de/iframedatei.html" in "https://seite1.domain.de/zielseite.html" geladen.
Warum sollte der Header denn jetzt ungültig sein? Irgendwie etwas merkwürdig...
In RFC 7034 steht das genauso drin..
-
Sieht wirklich nicht schlecht aus. Gibt es bei GoAccess die Möglichkeit Server übergreifend die logs zu analysieren oder müsste ich die logs aller Webserver sammeln und auf dem Host auf dem GoAccess läuft ablegen? Auf der Website bzw. im Manual konnte ich hierzu so nicht finden.
Jain, tendenziell eher nein. Du hast die Wahl zwischen einer GoAccess Instanz pro Server oder Logs zusammensammeln.
Ich habe einen zentralen nginx der als reverse Proxy arbeitet. Da läuft also zentral jeder Request durch und so habe ich die Logs auch zentral.
-
Für den Webserver eignet sich evtl. GoAccess. Benutze ich und finde ich ganz gut.
