Skip to main content

Procedures

This is a WIP where we try to describe all the required steps to get our premium matomo instances up and running.

Know problems

  • Loadbalancing
  • Plugin activation on all sites (copy config after all plugins has been activated)

Create new servers att Glesys

Add domain names to servers on Glesys

Add the correct dns entries to the correct servers. And remember that if you gonna use a loadbalancer you will need to tweak the configuration a bit.

Create required files in hosting-20.04 git projekt

Add a file in hosts folder with hostname

Example

hosts-file example

[matomo-test]
194.54.164.6

[web]
194.54.164.6

It is important thet you have both hostname with an IP and add it in the web-group. This is a Trellis specific thing. i.e We are then referencing servers in both the web and matomo-test groups.

In ansible this is called "Intersection of groups"

Add a folder in group-vars folder with hostname

This folder should contain the following files:

main.yml

mysql_root_password: "{{ vault_mysql_root_password }}" # Define this variable in group_vars/production/vault.yml

cron_enabled: false
node_exporter_enabled: true

vault.yml

# Documentation: https://roots.io/trellis/docs/vault/
vault_mysql_root_password: somerandompassword

# Documentation: https://roots.io/trellis/docs/security/
vault_users:
- name: "{{ admin_user }}"
password: somerandompassword
salt: "some random salt"

# Variables to accompany `group_vars/production/wordpress_sites.yml`
# Note: the site name (`example.com`) must match up with the site name in the above file.
vault_wordpress_sites:
analytics.matomo.devspace.se:
env:
db_password: somerandompassword
tracker.matomo.devspace.se:
env:
db_password: somerandompassword

PRO TIP

An easy way to create a good secure password is to use the generate random password in 1Password function.

  • CMD+* -> +Generate password

wordpress_sites.yml

# Documentation: https://roots.io/trellis/docs/remote-server-setup/
# `wordpress_sites` options: https://roots.io/trellis/docs/wordpress-sites
# Define accompanying passwords/secrets in group_vars/production/vault.yml

wordpress_sites:
tracker.matomo.devspace.se:
site_hosts:
- canonical: tracker.matomo.devspace.se
ssl:
enabled: true
provider: letsencrypt
cache:
enabled: true
multisite:
enabled: false
db_create: false
nginx_wordpress_site_conf: whitespace/nginx/matomo/tracking.conf.j2
analytics.matomo.devspace.se:
site_hosts:
- canonical: analytics.matomo.devspace.se
ssl:
enabled: true
provider: letsencrypt
cache:
enabled: true
multisite:
enabled: false
nginx_wordpress_site_conf: whitespace/nginx/matomo/default.conf.j2

Run ansible playbook for matomo

ansible-playbook server-matomo.yml -e env=matomo-test

Known hosts problem

After the first run througt of the playbook you will get and error that ansible can't connect anymore. This is because SSH is warning about a host key change.

matomo-projects (or How to install matomo on the server)

Edit flightplan.js

Start by added the new how to flightplan.js file.

Example for new host:


plan.target(
"matomo-test-tracker",
{
host: "matomo.devspace.se",
username: "whitespace",
agent: process.env.SSH_AUTH_SOCK,
},
{
root: "/srv/www",
targets: ["tracker.matomo.devspace.se"],
user: "web",
},
);

You also need to add the new host to the list at line 376. depending on the PHP version you are using.

  if (
target == "matomo.test.repair" ||
target == "analys.hoor.se" ||
target == "tracker.matomo.devspace.se" ||
...
// Add your target here
target == "analys.whitespace.se"
) {
remote.sudo("service php7.4-fpm reload");
} else {
if (target == "nsr.analys.co" || target == "whitespace.analys.co") {
remote.sudo("service php7.3-fpm reload");
} else {
remote.sudo("service php7.2-fpm reload");
}
}

Install matomo on the servers

  • Enter https://<your matomo hostname> in the browser.
  • Move through the installation steps.
  • Enter database information from earlier.
    • database name is always sitename with underscores instead of dots.
      • analytics_matomo_devspace_se
    • mysql username should then be database name + hostname
      • analytics_matomo_devspace_se_matomo-test
  • Create a good and secure password for the adminuser.
    • Use username super
    • Generate password with 1Password and store the password in 1Password

Update config.ini.php files for environments

WIP

Activate Glesys loadbalancer

Activate glesys loadbalancer in http mode port 443 in.