grafana-alloy: don't build the frontend twice
[NixPkgs.git] / nixos / modules / services / web-apps / matomo.md
blobe750c0c14775240ca8676c62630b3979bd3535eb
1 # Matomo {#module-services-matomo}
3 Matomo is a real-time web analytics application. This module configures
4 php-fpm as backend for Matomo, optionally configuring an nginx vhost as well.
6 An automatic setup is not supported by Matomo, so you need to configure Matomo
7 itself in the browser-based Matomo setup.
9 ## Database Setup {#module-services-matomo-database-setup}
11 You also need to configure a MariaDB or MySQL database and -user for Matomo
12 yourself, and enter those credentials in your browser. You can use
13 passwordless database authentication via the UNIX_SOCKET authentication
14 plugin with the following SQL commands:
15 ```
16 # For MariaDB
17 INSTALL PLUGIN unix_socket SONAME 'auth_socket';
18 CREATE DATABASE matomo;
19 CREATE USER 'matomo'@'localhost' IDENTIFIED WITH unix_socket;
20 GRANT ALL PRIVILEGES ON matomo.* TO 'matomo'@'localhost';
22 # For MySQL
23 INSTALL PLUGIN auth_socket SONAME 'auth_socket.so';
24 CREATE DATABASE matomo;
25 CREATE USER 'matomo'@'localhost' IDENTIFIED WITH auth_socket;
26 GRANT ALL PRIVILEGES ON matomo.* TO 'matomo'@'localhost';
27 ```
28 Then fill in `matomo` as database user and database name,
29 and leave the password field blank. This authentication works by allowing
30 only the `matomo` unix user to authenticate as the
31 `matomo` database user (without needing a password), but no
32 other users. For more information on passwordless login, see
33 <https://mariadb.com/kb/en/mariadb/unix_socket-authentication-plugin/>.
35 Of course, you can use password based authentication as well, e.g. when the
36 database is not on the same host.
38 ## Archive Processing {#module-services-matomo-archive-processing}
40 This module comes with the systemd service
41 `matomo-archive-processing.service` and a timer that
42 automatically triggers archive processing every hour. This means that you
43 can safely
44 [disable browser triggers for Matomo archiving](
45 https://matomo.org/docs/setup-auto-archiving/#disable-browser-triggers-for-matomo-archiving-and-limit-matomo-reports-to-updating-every-hour
46 ) at
47 `Administration > System > General Settings`.
49 With automatic archive processing, you can now also enable to
50 [delete old visitor logs](https://matomo.org/docs/privacy/#step-2-delete-old-visitors-logs)
51 at `Administration > System > Privacy`, but make sure that you run `systemctl start
52 matomo-archive-processing.service` at least once without errors if
53 you have already collected data before, so that the reports get archived
54 before the source data gets deleted.
56 ## Backup {#module-services-matomo-backups}
58 You only need to take backups of your MySQL database and the
59 {file}`/var/lib/matomo/config/config.ini.php` file. Use a user
60 in the `matomo` group or root to access the file. For more
61 information, see
62 <https://matomo.org/faq/how-to-install/faq_138/>.
64 ## Issues {#module-services-matomo-issues}
66   - Matomo will warn you that the JavaScript tracker is not writable. This is
67     because it's located in the read-only nix store. You can safely ignore
68     this, unless you need a plugin that needs JavaScript tracker access.
70 ## Using other Web Servers than nginx {#module-services-matomo-other-web-servers}
72 You can use other web servers by forwarding calls for
73 {file}`index.php` and {file}`piwik.php` to the
74 [`services.phpfpm.pools.<name>.socket`](#opt-services.phpfpm.pools._name_.socket)
75 fastcgi unix socket. You can use
76 the nginx configuration in the module code as a reference to what else
77 should be configured.