Matomo Anforderungen

Hallo zusammen,
vorweg, ich bin kein Entwickler. Bin zwar etwas Technik-Affin, aber als Entwickler kann ich mich nicht bezeichnen.
Wegen Datenschutz möchte ich jetzt Matomo benutzen und selbst Hosten. Nur komme ich mit den Anforderungen nicht wirklich klar.

Ich habe dazu ein paar Fragen, aber es müssen nicht alle beantwortet werden. Ich würde mich schon freuen, wenn nur ein paar davon beantwortet werden.

Wir nehmen mal an die Website hat 10.000 bis 20.000 Besucher/Monat.

  1. Lt. Matomo selbst, kann man auch auf Shared-Hoster-Anbietern Matomo hosten. Aber wenn ich mir die bekannten Shared Hoster ansehe, deckt keiner die mind. Anforderungen. Z.b. All-Inkl. oder Strato. Die Datenbanken sind nicht mal annähern 50 GB groß. Auch gibt es dort keine angaben zur CPU.
    Kann ich auf den Shared Hostern denn überhaupt Matomo betreiben (Konstellation 1 Datenbank wird für Matamo genutzt und eine für Wordpress)?
    Oder brauche ich echt einen eigenen Server, der mich dann 30€ und mehr kosten kann? Mich verwirrt es eben, weil lt. Matomo ziemlich viel Datenbankspeicher benötigt wird als auch RAM/CPU (2 CPU, 2GB Ram, 50GB SSD), aber in der anderen Richtung teilt Matomo, man könnte Matomo auch auf einem shared hoster betreiben.

  2. Die zweite Frage ist änlich wie die erste. Wenn ich jetzt nur eine Datenbank benutze (Wordpress und Matomo nutzen diese gleichzeitig) und mir das Wordpress Plugin von Matomo installiere, funktioniert das überhaupt gut?
    Z. B. Wenn ich mir Hoster wie Strato ansehe oder andere, dann haben die Datenbanken auch hier nur 1Gb oder etwas mehr. Deswegen, ich verstehe nicht, wie ich Matomo auf Wordpress hosten kann ohne einen eigenen Server zu mieten, wenn man auf die mind. Anforderungen achtet.

  3. Ich habe auch mal speziell nach “Matomo Hoster” gegoogelt. Da kam z.B. IONOS Cloud-Server raus.
    Ist so ein Cloudserver auch gut? Wie funktioniert das mit Matomo. Es wird ja pro Stunde, in den der Server benutzt wird, ein niedriger Betrag berechnet.
    Tickt dann die Uhr für jeden Request den Matomo macht? Oder tickt die Uhr permanent, solange ein User auf meiner Website ist?

  4. Wann weiß ich überhaupt, wenn ich einen leistungsstärkeren Server brauche, weil Matamo viel Kapazität braucht?

Würde mich freuen, wenn ihr mich bezüglich der Anforderungen von Matomo aufklären könntet.
Wie oben schon erwähnt, müssen nicht alle Fragen beantwortet werden. Mir wäre schon sehr geholfen, wenn nur ein paar beantwortet werden.

Hallo,

Prinzipiell kannst du Matomo auf jedem normalen PHP Server installieren. Die absoluten requirements findest du auf https://matomo.org/docs/requirements/

  • Webserver such as Apache, Nginx, IIS, LiteSpeed, etc.
  • Matomo 3.x requires PHP version 5.5.9 or PHP 7.x. Matomo 4.x requires PHP version 7.2.5 or greater (PHP 8 is only supported by Matomo 4).
  • MySQL version 5.5 or greater, or MariaDB
  • (enabled by default) PHP extension pdo and pdo_mysql, or the mysqli extension.
  • Matomo can be run on any operating system such as Linux (Ubuntu, RedHat, CentOS, Raspberry Pi OS, etc.), Windows, macOS Server or FreeBSD.

Ohne diesen Sachen geht nichts. Der Rest ist etwas subjektiver:

Ein Shared Hoster sollte kein Problem sein (solange es ein vertrauenswürdiger Anbieter ist und nicht jemand der überteuert einen eh schon völlig überlasteten Server weitervermietet). Ich vermute einmal, dass über 90% aller Matomo-Instanzen auf einem Shared-Hoster wie Strato laufen.

Die 50GB sind eine wirklich grobe Schätzung, die Datenbankgröße hängt einfach nur davon ab, wie viele Besucher du speicherst (und nach wie langer Zeit du sie wieder löscht). Zur Abschätzung: Ich habe circa. 1500 Besucher/5000 Actions pro Monat und meine Datenbank hat 611MB (wovon ein Großteil Report sind, die einige Jahre zurückgehen). Die Anzahl der CPU und RAM ist ähnlich. Vermutlich kommst du auch mit deutlich weniger aus. Für die Performance ist es natürlich nett, wenn die Datenbank auf einer schnellen SSD liegt und ausreichend Arbeitsspeicher hat. Aber da können auch ein paarhundert MB ausreichen.

Du musst nicht für Wordpress und Matomo eine separate Datenbank verwenden (standardmäßig fangen alle Matomo tabellen mit matomo_ an, wodurch nichts kollidiert. Wenn du aber die Möglichkeit hast, ist es für Backups und co. vielleicht etwas ordentlicher.

Das Wordpress plugin (https://wordpress.org/plugins/matomo/) funktioniert etwas anders: Das Plugin enthält eine komplette (wenn auch leicht vereinfachte) Matomo-Instanz, die automatisch eingerichtet wird. Das ist besonders anfängerfreundlich, aber auch etwas limitiert wie weit es skalieren kann. Und bei deiner Größe könnte das schon an eine Grenze stoßen (ich kenne die auch nicht genau). Eine “richtige” Matomo Instanz (und Wp-Matomo zum Verbinden mit Wordpress) ist also vermutlich die bessere Idee.

Zu Cloud-Servern/vServern: Ich persönlich bin ein Fan davon, denn um das Geld, was man für einen guten Shared-Hoster zahlt, bekommt man schon einen recht leistungsstarken Server für sich alleine. Aber dann muss man natürlich auch MySQL, PHP, Webserver, Linux, etc. selber einrichten, warten, etc. und dementsprechendes Linux-Wissen haben. Dafür hat man dann auch genau, was man haben will.

Ich hoffe, das hilft einmal ein wenig weiter.

Danke dir Lukas für die schnelle und ausführliche Antwort.
Ich werde dann wohl Matomo auf einem Shared-Hoster betreiben und mit WP-Matomo arbeiten.
Selbst einen Server einzurichten ist mir fürs erste zu komplex.
Falls die 1GB Platte volläuft, werde ich dann einfach alte Einträge löschen.
Danke dir!

1 Like

@ 123User123

Auch wenn der Lukas die Anforderungen relativiert, was man ihm natürlich zu Gute halten muss, ist es dann aber doch nicht so einfach. Die Anforderungen sind nicht in Stein gemeißelt. Heißt, Du wirst anfänglich womöglich noch keine Probleme bemerken, aber mit Zunahme an Daten nehmen die Anforderungen stetig zu, sodass Dir sehr schnell ein Low Budget Hosting nicht mehr genügen wird. Das liegt aber nicht speziell an Matomo, sondern einfach an der Menge an Daten, die es zu handlen gilt, die nicht selten über denen der eigentlchen Hauptanwendung liegen können.

Ich kann Dir deswegen garantieren, dass ein einfaches Shared Hosting ganz schnell an seine Leistungsgrenzen kommt, die sich dann nicht nur auf die Ladezeiten auswirken wird, sondern v.a. Dein Provider Dir sehr schnell auf die Finger klopfen wird und Dich in ein leistungsstärkeres Hosting drängen wird, wenn Du nicht tolerieren willst, dass er Dir regelmäßig den Hahn abdreht.

Das bedeutet aber nicht, dass Du deswegen einen dedizierten Server brauchst, den Du nur als einziger nutzt. Es sollte dann aber schon mind. ein Virtual Private Server (VPS) sein egal von welchem Anbieter. Diese VPS werden gerne auch als Cloud Server bezeichnet, ist aber keine Gewähr dafür, dass es sich dann doch nur um ein Shared Hosting handelt. Ich wills mal so sagen, alles unter 25,-/Monat solltest Du meiden!

Zu Shared Hostern kann ich leider nicht arg viel sagen, da ich dem Konzept nach einer Erfahrung mit einem wirklich schlechtem Hoster den Rücken gekehrt habe.

Und es stimmt natürlich auch, dass mit mehr Daten die Anforderungen immer mehr werden. Wobei mit ein paar Tricks das auch gut reduzierbar ist. Eine der wichtigsten Sachen ist Browser Archiving zu deaktivieren und das nur alle X Minuten im Cronjob zu machen. So hat man beim Aufrufen von Matomo schon die fertigen Reports, die nur mehr angezeigt werden. (aber dafür auch X Minuten veraltet sind).

Aber 25€ sollten deutlich mehr als genug sein. Bei Hetzner bekommst du zum Beispiel um 19€ im Monat 4 vCPUs und 16GB RAM, was wirklich mehr als genug ist, wenn man nur Matomo betreiben will. Und man kann dann auch (weil man den ganzen Server hat) zum Beispiel https://plugins.matomo.org/QueuedTracking mit Redis verwenden, was bei kurzzeitigen Besucheranstürmen hilft.

Aber wie schon gesagt bedeutet das dann auch, dass man Zeit investieren muss um selbst alles zu warten.

Danke Lukas und Serpent für die Antwort.

So wie ich das jetzt hier verstehe.
Wenn ich keine Lust auf Administration habe und dennoch relativ günstig wegkommen will, dann sollte ich mir wohl am besten einen Shared Hoster nehmen, bei denen die “Anzahl der Benutzer” relativ niedrig ist.
Z. B. bei All-Inkl sind je nach preis 50 bis 30 Kunden je Server.

Wenn mir das relativ Geld egal ist, dann sollte ich mir eher einen Managed Server nehmen.

Andere Sache. Um die Serverleistung/-anforderungen möglichst gering zu halten. Sollte ich, wie Lukas meinte “Browser Archiving zu deaktivieren und das nur alle X Minuten im Cronjob zu machen”.

Was könnte ich noch machen?

  1. Alte Analysedaten von Matomo zu löschen
  2. Die Actions von Matomo gering zu halten. Bzw. alle Analysefunktionen von Matomo gering zu halten

Dann käme ich noch zu einer Frage.

Ist es möglich Matomo so einzustellen, dass wenn X Actions innerhalb von 24h getriggert wurden, das Matomo aufhören soll zu analysieren. Und nach 24h können wieder X Actions getriggert werden.
Oder
ist es sogar möglich, dass nur jeder X-te Besucher getrackt wird?

Ich würde durch obiges verhindern wollen, dass zu viele Requests entstehen und das auch die Datenbank nicht so schnell volllaufen soll.

Um Deine Fragen, bzw. die Antworten zusammen zu fassen und um Dein Wissen bereichern, die Anforderungen bei Matomo liegen maßgeblich nicht beim Tracken. Ginge es nur darum, kämst Du sicherlich mit einem Shared Hosting aus. Das Problem, bzw. die größten Anforderungen treten beim Archivieren auf. Matomo schreibt ja nicht sofort jeden Seitenzugriff in die Datenbank. Da würde nicht nur jede Menge Traffic anfallen, sondern die DB Last würde exorbitant ansteigen. Damit das nicht passiert, schreibt Matomo die Daten quasi gebündelt in einem bestimmten Zeitintervall in die DB. Das kann über einen Browser Aufruf erfolgen, aber auch per Cron, wobei sich letzteres empfielt, weil wenn über Browser, dann verzögert das den Seiten Aufruf. Aber nicht generell jeden Seitenaufruf.

Ungeachtet welche Methode zum Archivieren verwendet wird, steigt die Last um so mehr je mehr Berichte es gibt und natürlich die Menge an Seitenaufrufen. Von daher ist die Cron Methode in jedem Fall vorzuziehen, aber das geht nicht generell, weil erstens abhängig von der PHP Version und wenn die nicht vorhanden ist, dann braucht es eine bestimmte MySQL Konfiguration, die es meines Erachtens v.a. bei Shared Hostings nicht gibt, weil sich damit auch Sicherheitsprobleme ergeben. Standardmäßig ist diese in jedem Fall nicht aktiviert. Es kann also gut sein, dass Dir ein Cron zum Archivieren nicht zur Verfügung steht, wenn die genutzte PHP Version nicht vorhanden oder nicht genutzt wird.

Alles in allem ist es nun so, dass die größte Last wesentlich beim Archivieren entsteht, aber egal welches Hosting mehr oder weniger davon betroffen ist.

Deine Frage nach, ob man Matomo so einstellen könnte, dass nach x Zugriffen das Tracken eingestellt ist, kann man nicht positiv beantworten. Das geht nicht, sondern nur indirekt, aber auch nicht nach Menge an Daten, sondern ggf. per Cron und zeitgesteuert. Zumal ich wenig Sinn darin sehe. So ein Gedankengang macht die generelle Nutzung von Tracking obsolet?!

Übrigens, Du scheinst eine falsche Vorstellung zu haben, wenn es um Administration eines VPS oder dedizierten Servers geht. Wenn es sich in beiden Fällen, um eine gemanagte Version handelt, unterscheiden sich die nicht großartig von Shared Hostings. Du hast Damit nur mehr Möglichkeiten. Deswegen musst Du damit aber nicht extra was administrieren.

Da muss ich @Serpent_Driver größtenteils zustimmen.

Der Großteil der Resoucen braucht Matomo beim Archivieren, da dort alle Daten zusammengesammelt und aufaddiert werden.
Beim Tracking-Request, werden zwar Daten in die Datenbank geschrieben, aber größtenteils nur so wie sie kommen (außer man verwendet Queued Tracking). Also genau, was man im Visitor Log sehen kann. Beim Archivieren werden dann alle anderen Report generiert.

Eine Methode die Last zu reduzieren ist einfach seltener zu archivieren. Wenn man damit leben kann, dass alle reports von heute 1h verzögert sind, kann man den Cronjob nur einmal stündlich aufrufen.
Für die Cron-Methode braucht man natürlich die Möglichkeit php-Commandline Befehle regelmäßig aufzurufen, aber wenn der Hoster das nicht anbietet, sollte man sich wohl sowieso umschauen.
MySQL braucht man keine besondere Einstellung. Du meinst wahrscheinlich LOAD DATA LOCAL INFILE, was viele Shared-Hoster nicht anbieten, da es schwer abzusicheren ist, wenn viele verschiedene Leute denselben Server nutzen.
Das ist unabhängig vom Cronjob, macht aber das Archivieren auch deutlich schneller.

Zu managed Hosting hat @Serpent_Driver natürlich recht. Ich habe mich immer auf unmanaged Hosting bezogen, wo du einfach einen komplett frisch installierten Linux-Server bekommst und darauf machen kannst, was du willst.
Es gibt aber auch viele Anbieter, die managed Server anbieten, die etwas teurer sind, aber dafür alles wie bei Shared-Hostern vom Betreiber gewartet wird und du dich um nichts kümmern brauchst, aber gleichzeitig du einen stärkeren Server für dich alleine hast.

Das ist aber Selbstbetrug :slight_smile: Seltener zu archivieren, reduziert ja keine Daten oder den Aufwand der Archivierung. Ganz im Gegenteil. Da wärs dann eher sinnvoller die Archivierung häufiger vorzunehmen. Das würde mehr bringen, bzw. nicht so viel Last erzeugen.

Zum Teil hast du damit Recht, aber es gibt noch einen Punkt:
Die Archive von heute (und alle anderen Zeiträume, die heute enthalten) müssen bei jedem Archivieren verworfen und neu generiert werden, wenn seit dem letzten Aufruf neue Visits dazugekommen sind. Wenn man also seltener archiviert, generiert man also seltener die heutigen Tage neu und hat somit in Summe etwas weniger Resourcen gebraucht.

Es kann aber natürlich auch sinnvoll sein häufiger zu archivieren und so die Last gleichmäßiger zu verteilen. Oder seinen Cronjob nicht exakt zur vollen Stunde laufen zu lassen, wenn alle anderen am Server vielleicht was ähnliches machen.

Also ich habe mehrere Matomo Installationen. 1 URL verwende ich nur als Landingpage, wenngleich das ein paar 100.000 Landingpages sind und man bei Aufruf sofort weitergeleitet wird. Zugriff auf die Seite hat fast nur Google und Bingbot und nur die tracke ich per HTTP API. Alle 900 Sekunden wird archiviert. Die beiden Bots sind dabei sehr häufig bis rundum die Uhr im Einsatz. Es kommt also einiges an Daten zusammen. Dementsprechend fällt auch die Last aus, wobei sich das mehr auf den Speicher als tatsächlich CPU Last reduziert.