ubuntuusers.de

Webseitenzugriff auf Redis

Status: Ungelöst | Ubuntu-Version: Ubuntu 18.04 (Bionic Beaver)
Antworten |

Sentinel.Knight

Anmeldungsdatum:
13. Juli 2020

Beiträge: Zähle...

Hallo zusammen, ich bin sozusagen noch "Grundschüler" in Linux, aber ich versuche mich durchzubeißen. Ich habe folgendes Problem, dessen Zusammenhänge ich nicht verstehe um es zu lösen:

Ich habe mir einen Rootserver im RZ gemietet, auf dem ich Ubuntu 18.04 fahre. Dieser soll im finalen Stand eine Webseite hosten, eine Subdomain bereitstellen, Mailverkehr ermöglichen und die NextCloud hosten.

LAMP kann ich ohne Knochenbrüche ziemlich sicher einrichten, auch mit unterschiedlichen PHP Versionen ect. ABER um bestimmte Dinge komfortabel zu halten, würde ich gerne KeyHelp als Administrationspanel nutzen. Die Installation ist ja auch super einfach, KeyHelp installiert sich ja auf einem nackten System alles, was es benötigt.

So, Domain und Subdomain laufen, SSL und Mail auch. Wenn ich jetzt als Benutzer in meinen zugewiesenen Web-Speicherort die NextCloud installiere, fährt auch da eine saubere Installation und die Grundfunktion ist über die Domain aufrufbar. Nun geht es ans Tuning. Die NextCloud hätte gerne ein MemoryCaching, vorzugsweise das Redis PHP Modul. Ok, installiert, läuft - mit "ps ax" sehe ich den Prozess, welcher auch www-data zugewiesen wurde ("usermod -a -G redis www-data"). Nun soll in die config.php der NextCloud folgendes eingetragen werden:

1
2
3
4
5
'memcache.distributed' => '\OC\Memcache\Redis',
'redis' => [
     'host' => 'redis-host.example.com',
     'port' => 6379,
],

Sobald aber auch nur die Zeile mit "memcache" eingebunden wird, steigt nach dem Apache restart die komplette NextCloud Weboberfläche aus.

In der Config sind ja auch die Zugangsdaten für die mysql Tabelle vermerkt - ich schließe daraus, dass ein Zugriff auf Systemquellen außerhalb des Webseitennutzers möglich ist. Ich wäre sehr dankbar über ein paar Tipps, ich versuche jetzt seit einer Woche selbst eine Lösung zu finden, merke aber, das wird so nix 😉

Vielen Dank!

Moderiert von ChickenLipsRfun2eat:

Thema in einen passenden Forenbereich verschoben. Bitte beachte die als wichtig markierten Themen („Welche Themen gehören hier her und welche nicht?“) in jedem Forenbereich. Danke.

ChickenLipsRfun2eat Team-Icon

Anmeldungsdatum:
6. Dezember 2009

Beiträge: 12067

Hallo und willkommen auf uu.de!

Zumindest traust du dich als "Grundschüler" schon einen root-Server aufzusetzen. So schlecht kann es also um dein Wissen nicht bestellt sein ☺

Nextcloud hat im Data-Verzeichnis eine Logdatei. Was meldet die denn, wenn die Weboberfläche aussteigt? Zusätzlich gibt es noch das occ-Kommando, mit dem du alles über ein (ssh-)Terminal erledigen kannst, u.a. auch die Log-Meldungen verfolgen.

php occ log:tail 

gibt bspw. die letzten zehn (Fehler-)Meldungen aus, mit log:watch kannst du eine "live-Überwachung" starten, uvm. php occ ohne weitere Angabe bringt dir eine Übersicht.

Hast du beide Pakete (redis-server und php-redis) installiert? Wie sieht deine Redis-Konfiguration aus? (Bitte Passwort entfernen ☺ ) Zunächst kannst du auch Redis testen, indem du redis-cli aufrufst und auth Passwortschlüsselfolge eingibst. Das Ergebnis sollte ein "OK" sein.

In der NC-Konfiguration sieht das dann in etwa so aus, wie bei dir, aber es wird von Nextcloud empfohlen das ganze über ein Unix Socket laufen zu lassen, wenn es auf der selben Maschine läuft.

Ach ja: Du solltest auch gucken, ob das Modul geladen ist. phpinfo(); sollte das anzeigen.

Sentinel.Knight

(Themenstarter)

Anmeldungsdatum:
13. Juli 2020

Beiträge: 3

Herzlichen Dank für deine Antwort, und sorry für das Posten im falschen Sub ☺

Zumindest traust du dich als "Grundschüler" schon einen root-Server aufzusetzen. So schlecht kann es also um dein Wissen nicht bestellt sein ☺

Ich versuche mich durch zu googeln, vieles klappt dann auch irgendwie, aber ich verstehe halt nicht immer WARUM was funktioniert (oder wie jetzt, halt auch nicht funktioniert)...

Hast du beide Pakete (redis-server und php-redis) installiert? Wie sieht deine Redis-Konfiguration aus? (Bitte Passwort entfernen ☺ ) Zunächst kannst du auch Redis testen, indem du redis-cli aufrufst und auth Passwortschlüsselfolge eingibst. Das Ergebnis sollte ein "OK" sein.

Ja, Redis hatte einige gute Anmerkungen rausgehauen, die habe ich auch umgesetzt.

In der NC-Konfiguration sieht das dann in etwa so aus, wie bei dir, aber es wird von Nextcloud empfohlen das ganze über ein Unix Socket laufen zu lassen, wenn es auf der selben Maschine läuft.

Richtig, das hatte ich auch versucht, allerdings geht die Webseite, bzw. das Webinterface, sofort down, wenn die Codezeile "'memcache.distributed' ⇒ '\OC\Memcache\Redis'," in die config.php eingefügt wird.

Ach ja: Du solltest auch gucken, ob das Modul geladen ist. phpinfo(); sollte das anzeigen.

Ja, ist es.

Meine Vermutung ist,dass es ein Problem mit dem PHP Interpreter und dem Rechteinhaber (heißt das so?) des Domainverzeichnisses gibt. Keyhelp (als Alternative zu Plesk oder Webmin) nutzt als "Träger" PHP 7.2.xx - Der Webseitenuser ist über den Konfigurator auf PHP 7.3.xx eingestellt, weil NextCloud das bevorzugt. Ich frage mich halt, wenn KeyHelp es schafft, den Usern unterschiedliche PHP Instanzen zu bieten, Redis aber im Root auf 7.2.xx installiert ist - kann es sein das die Komponenten [Webseite User PHP7.3.xx] → [Root-System/KeyHelp Oberfläche7.2.xx] nicht übergreifend miteinander reden können?

Was bedeutet eigentlich dieses Verzeichnis: '\OC\Memcache\Redis',denn das finde ich auf dem Server gar nicht...

Bezüglich der Logs - Im Logverzeichnis des Webseiten-users stand nichts in den Logdateien was hilfreich wäre. Die anderen Logs habe ich nicht gefunden, und weil ich manchmal dumme Entscheidungen treffe, habe ich den Server heute neu aufgesetzt. ;(

Die Frage ist jetzt, soll ich das System noch einmal so einrichten und die einfache, benutzerfreundliche Version mit KeyHelp fahren, oder soll ich es gleich "richtig" machen und den Webserver von Hand aufsetzen?

Mich graust es halt vor den Dingen wie die manuelle Einrichtung eines Mailservers, vHosts, Lets Encrypt Zertifikaten mit auto re-new usw. Das ist halt schon bisschen krass für mich, weil es auch sicher sein soll. Und Sorry, das ich hier meine Probleme breittrete, ich weiß nur echt nicht mehr, was an diesem Punkt der richtige Weg für mich ist.

ChickenLipsRfun2eat Team-Icon

Anmeldungsdatum:
6. Dezember 2009

Beiträge: 12067

Sentinel.Knight schrieb:

und sorry für das Posten im falschen Sub ☺

Dafür gibt es ja Moderatoren, die das korrigieren ☺

Ich versuche mich durch zu googeln, vieles klappt dann auch irgendwie, aber ich verstehe halt nicht immer WARUM was funktioniert (oder wie jetzt, halt auch nicht funktioniert)...

Die Lernkurve ist recht hoch, aber ich habe zumindest den Eindruck, dass dir schon klar ist, wer haftet und das ein Server kein Spielzeug ist, daher erspare ich mir die Belehrung 😉

Richtig, das hatte ich auch versucht, allerdings geht die Webseite, bzw. das Webinterface, sofort down, wenn die Codezeile "'memcache.distributed' ⇒ '\OC\Memcache\Redis'," in die config.php eingefügt wird.
Was bedeutet eigentlich dieses Verzeichnis: '\OC\Memcache\Redis',denn das finde ich auf dem Server gar nicht...

Hast du denn das Redis-Passwort auch in der NC-Konfiguration gesetzt? Ansonsten könnte das das Problem sein. Diese Angabe ist kein Pfad auf dem Server. Pfade werden mit einfachem Slash (/) getrennt. Ich glaube nur Windows benutzt teilweise Backslash im Dateisystem dafür (Weblinks sind da doch auch mit / ?). Unter unixoiden und Sprachen hat der eine andere Bedeutung (zum Beispiel zum escapen von Zeichen, wie in Windows auch: \n = Zeilenumbruch). Egal. In dem Fall ist das (vermutlich) nur ein Trennzeichen, welches sich auf die PHP-Klasse beziehen dürfte: OwnCloud→Memcache→Redis (da NC von OC kommt).

Meine Vermutung ist,dass es ein Problem mit dem PHP Interpreter und dem Rechteinhaber (heißt das so?) des Domainverzeichnisses gibt. Keyhelp (als Alternative zu Plesk oder Webmin) nutzt als "Träger" PHP 7.2.xx - Der Webseitenuser ist über den Konfigurator auf PHP 7.3.xx eingestellt, weil NextCloud das bevorzugt. Ich frage mich halt, wenn KeyHelp es schafft, den Usern unterschiedliche PHP Instanzen zu bieten, Redis aber im Root auf 7.2.xx installiert ist - kann es sein das die Komponenten [Webseite User PHP7.3.xx] → [Root-System/KeyHelp Oberfläche7.2.xx] nicht übergreifend miteinander reden können?

Das wäre möglich. Und natürlich kannst du auch mehrere php-Versionen nutzen, es gibt aber immer nur einen Standard (wenn du nur php schreibst). Mal als Bsp aus meiner Ubuntu-Server-VM:

update-alternatives: using /usr/bin/php7.4 to provide /usr/bin/php (php) in auto mode
update-alternatives: using /usr/bin/phar7.4 to provide /usr/bin/phar (phar) in auto mode
update-alternatives: using /usr/bin/phar.phar7.4 to provide /usr/bin/phar.phar (phar.phar) in auto mode

#resultiert dann in:
user@usrv:~$ which php
/usr/bin/php
user@usrv:~$ ll /usr/bin/php
lrwxrwxrwx 1 root root 21 Jul 14 21:51 /usr/bin/php -> /etc/alternatives/php*
user@usrv:~$ ll /etc/alternatives/php
lrwxrwxrwx 1 root root 15 Jul 14 21:51 /etc/alternatives/php -> /usr/bin/php7.4*
user@usrv:~$ 

Dort wird php also auf 7.4 verlinkt (andere Distributionen machen das anders).

Was die Benutzer-/Gruppenrechte angeht: Das musst du prüfen. www-data(Apache) muss natürlich auf alles Leserechte haben, was es verarbeiten soll.

Zu KeyHelp kann ich dir leider nicht viel sagen. Habe mir gestern deren Demo mal angesehen und konnte da "nichts" finden.

Bezüglich der Logs - Im Logverzeichnis des Webseiten-users stand nichts in den Logdateien was hilfreich wäre. Die anderen Logs habe ich nicht gefunden, und weil ich manchmal dumme Entscheidungen treffe, habe ich den Server heute neu aufgesetzt. ;(

Halb so wild. Also ab jetzt kannst du gucken: journalctl für die "gesammelten Werke" (siehe Logdateien) und das Nextcloud-Log selbst findest du unter …/nextcloud/data (in der $datadir).

Die Frage ist jetzt, soll ich das System noch einmal so einrichten und die einfache, benutzerfreundliche Version mit KeyHelp fahren, oder soll ich es gleich "richtig" machen und den Webserver von Hand aufsetzen?

Das kannst nur du entscheiden. Setz das Ding so sicher wie möglich auf und hol dir zum Üben eine VM auf den lokalen Rechner. Da kannst du weniger angegriffen werden und musst keine Angst haben ein Scheunentor aufzureißen. Die manuelle Einrichtung hat den Vorteil, dass sie granularer und passender für deinen Anwendungszweck ist. Du kannst dir ja die KeyHelp-Änderungen anzeigen lassen (vorher - nachher die Konfigurationen vergleichen) und dann gezielt nachlesen was du brauchst.

Mich graust es halt vor den Dingen wie die manuelle Einrichtung eines Mailservers, vHosts, Lets Encrypt Zertifikaten mit auto re-new usw. Das ist halt schon bisschen krass für mich, weil es auch sicher sein soll. Und Sorry, das ich hier meine Probleme breittrete, ich weiß nur echt nicht mehr, was an diesem Punkt der richtige Weg für mich ist.

Ich hab mich noch nie an nen Mailserver getraut... das überlasse ich meinem Anbieter. lets encrypt ist gut dokumentiert und nicht all zu schwer. Das Hintergrundwissen dazu schon. Webserver sind auch ne Herausforderung. Für den Einstieg findest du dazu auch hier Hilfe: Apache bietet auch eine Unterseite speziell zu virtuellen Hosts.

Es gibt keinen richtigen Weg. Aber verrate doch mal dein Ziel. Warum hast du dir den Server denn überhaupt gemietet?

Sentinel.Knight

(Themenstarter)

Anmeldungsdatum:
13. Juli 2020

Beiträge: 3

Erst einmal ganz herzlichen Dank für deine ausführliche Antwort. Das ist heute alles andere als selbstverständlich.

Du bringst einige interessante Ansätze mit, die ich reflektieren werde. Besonders die VM lässt sich leicht bewerkstelligen. Ich bin zwar erst ab Freitag wieder am PC (beruflich bedingt), werde dann aber deine Vorschläge und Anmerkungen mal sauber durcharbeiten und dann hier wieder berichten.

Ich fange daher mal von hinten an:

Warum hast du dir den Server denn überhaupt gemietet?

Ich bin selbstständiger Datenschutzbeauftragter und Unternehmensberater. Ich nutze derzeit die OwnCloud eines Fremdanbieters sowie Webseite, FTP und Mail eines anderen Anbieters. Ich möchte eigenverantwortlich arbeiten und das bedeutet auch, selbst für Datensicherheit und Systemabsicherung einzustehen. Ich möchte auf der einen Seite Herr über meine Daten sein (Bereich Webseite, Mails) und meinen Klienten über einen hohen Sicherheitsstandard für Datenaustausch und Synchronisation anbieten können, ohne einen Dritten in das Geschäftsverhältnis einzubinden. Das muss nicht "morgen" realisiert sein, aber ich will alles dafür tun, dieses Ziel zu erreichen und dann aus eigener Kraft dauerhaft diesen Standard anbieten zu können.

Im finalen Zustand möchte ich drei Webseiten betreiben und unter einer Subdomain die NextCloud-Oberfläche zur Verfügung stellen. Natürlich sollen auch Mail- und FTP-Dienste laufen.

Nach meinen Recherchen kommt KeyHelp gut weg - Die Software installiert eigentlich alles was ich brauche, schließt Lücken und bietet wenig Spielraum für Angriffe - natürlich gibt es keinen 100%tigen Schutz, meistens liegt der Fehler eh vor dem Bildschirm.

Ich gehe jetzt wie folgt vor:

Wenn ich zurück bin, setze ich den Root noch einmal in den Zustand mit KeyHelp und der Nextcloud und schaue dann in die Logfiles, welche ich vorher übersehen habe. Außerdem setze ich Punkt für Punkt deine Anmerkungen um. Danach berichte ich erneut.

Sollte ich nach wie vor keinen Zugriff auf Redis bekommen, werde ich dann parallel eine VM auf meiner Workstation installieren und dort deinen Vorschlag der Änderungsnachverfolgung umsetzen.

Ich sage noch einmal Danke für die Tipps, gebe alsbald Auskunft und freue mich über jegliche weitere Anmerkung die mir neue Ansätze bietet.

LG SK

ChickenLipsRfun2eat Team-Icon

Anmeldungsdatum:
6. Dezember 2009

Beiträge: 12067

Sentinel.Knight schrieb:

Erst einmal ganz herzlichen Dank für deine ausführliche Antwort. Das ist heute alles andere als selbstverständlich.

Sollte es aber sein. Wir leben in einer Zeit, in der viele Menschen Wissen teilen könnten - was wiederum auch denen helfen würde, die keinen Zugang dazu haben - aber das wäre was fürs Philosophieforum 😉

Ich bin selbstständiger Datenschutzbeauftragter und Unternehmensberater…

Sehr löblich, dass du dich da einarbeiten möchtest!

Ich habe ein ähnliches Setup laufen (nur eben lokal mit einem physischen "Server" Marke Eigenbau), der diverse Dienste abdeckt. Ich habe die Nextcloud als Docker-Container integriert, da ich dort "stable" fahre und auf dem Rest des Servers aktueller bin. Mail mache ich allerdings über meinen Anbieter, das habe ich nicht in eigener Hand. Ich habe aber natürlich einen völlig anderen Ansatz, da ich das nur im Privaten und als Hobby habe. Hab eigentlich™ nix mit IT zu tun.

Leider ist meine lokale Dokumentation noch nicht so weit, als dass ich da was online stellen könnte, aber mal "kurz" umrissen läuft das bei mir so:

  • Automatisierungen über systemd/Timer Units, die entsprechend ihrer Zeiten/Kalendertage einen dazu passenden .service starten

    • Backups (auch der Klienten) über rsync und SSH mit PublicKey (wäre also internettauglich, gäbe es auch "fertig" in Form von BackupPC, BorgBackup, dirvish,…)

    • dnsmasq zur Namensauflösung mit automatischer und zusätzlicher, manueller Blockliste, bezüglich des "rumtelefonierens" mancher Apps, Webseiten, etc.

    • Automatischer Neustart nach Kernel-Update und Wiederherstellung der Netzwerkverbindungen (Docker beisst sich da mit libvirt, falls du auch in die Verlegenheit kommst)

    • "cron"-Dienste der Nextclouds (ja, ich hab zwei - eine zum Spielen muss ja auch dabei sein ☺ )

  • Virtuelle Maschinen über qemu/kvm. Da laufen eigentlich die *buntus, da ich ein anderes Hauptsystem nutze.

  • Apache mit diversen lokalen Subdomains (als Apache/Virtual Hosts konfiguriert), die alle direkt nix mit Ubuntu zu tun haben. Habe natürlich auch eine Portweiterleitung verfügbar und nutze SSL über letsencrypt, wenn ich mal meine cloud von unterwegs brauche.

  • FUSE/sshfs anstatt FTP/SFTP: direktes Einbinden der Ordner ins lokale Dateisystem (nutzt ebenfalls die PublicKeys)

  • Docker: für Nextcloud mit einer zusätzlichen virtuellen Partition für die Daten (ist aber kein muss). Der Platz ist da bei mir relativ klein, ich nutze als Datengrab die trägen, großen Festplatten, welche über ssh eingebunden werden (das selbe System wie bei sshfs, funktioniert über external_storage - da Docker ja isoliert ist, muss ich da "übers Netz" zugreifen)

  • lokaler git-Server zum Abgleich meiner Projektchen, Todo-Listen, Notizen, Konfigurationen, usw. Da lohnt sich die Nextcloud nicht, weil ich diese Dateien zig mal am Tag ändere und die jedesmal abgeglichen werden. Das flutet die Revisionierung der Cloud extrem. Daher mache ich dann den Abgleich "manuell", wenn ich soweit fertig bin - also mindestens einmal täglich abends. Dafür gibt es Aliase, damit es auch schnell zwischendurch geht.

  • fail2ban, weil es ein wichtiges und interessantes Tool ist - hat bei mir Dank der lokalen Verwendung und minimal erlaubter Zugriffsadressen (Suchwort: blackhole) aber nichts zu tun. Wäre für dich auf jeden Fall etwas zum Verstehen und "RegEx lernen".

  • iptables habe ich minimal konfiguriert. Das wäre für einen direkt erreichbaren Server nur in Teilen brauchbar.

  • diverse "kleine" Dienste wie ReadyMedia, Batteriestandkontrolle, usw. die aber wirklich nur lokal interessant sind und für deinen Anwendungsfall nicht brauchbar.

Damit hast du jetzt genug zu Lesen - und ich setze mir am Wochenende einen Ubuntu Server 20.04 mit KeyHelp auf und gucke mal, was das so kann. Die Demo war nicht so aufschlussreich, speziell was meine geliebten PublicKeys angeht ☺

Antworten |