Ghostboard pixel

Setup Matomo, ehemals Piwik, im Docker Container

Zur Zeit bin ich dabei alle meine Blocks und Webseiten in verschiedenen Docker Container zu verschieben. Da dürfte es auch nicht fehlen das ich Matoma mit rein nehme. Das einzige was auf meinem Server noch nicht in einen Container läuft es Nginx.
In dem heutigen Tutorial geht es hauptsächlich um Matoma und dem integrieren in einem Docker Container.

Zuerst müssen wir schauen ob Docker–Compose installiert ist wenn nein muss dies nachgeholt werden.

Docker-compose installieren

sudo curl -L "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
docker-compose --version

Verzeichnisse anlegen

Ist   Docker–Compose installiert können wir weitermachen und erstellen einen Ordner wo wir die zukünftige Konfiguration unterbringen. In meinem bisherigen Projekten sind die Konfigurationen in einem Ordner namens Docker untergebracht und die Volumes sind unter Home zu finden.

sudo mkdir -p /docker/matomo/matomo_db
sudo mkdir -p /docker/matomo/matomo_data sudo mkdir /home/matomo

cd /home/matomo

Wir wechseln in diesen Ordner und erstellen die Konfigurationsdatei docker–compose.yml

Docker-compose Datei anlegen

sudo vi docker-compose.yml
services:
  mariadb:
    image: 'bitnami/mariadb:latest'
    environment:
      - MARIADB_ROOT_PASSWORD=SuperSecretPassword
      - MARIADB_DATABASE=bitnami_matomo
      - MARIADB_USER=user_matomo
      - MARIADB_PASSWORD=SecretPassword
    volumes:
      - '/home/matomo/mariadb_data:/bitnami/mariadb'
    restart: always
  application:
    image: 'bitnami/matomo:latest'
    environment:
      - MATOMO_USERNAME=User
      - MATOMO_PASSWORD=SecretPassword
      - MATOMO_EMAIL=mail@domain.tld
      - MARIADB_HOST=mariadb
      - MARIADB_PORT_NUMBER=3306
      - MATOMO_DATABASE_USER=user_matomo
      - MATOMO_DATABASE_NAME=bitnami_matomo
      - MATOMO_DATABASE_PASSWORD=SecretPassword
    ports:
      - '8087:80'
      - '4446:443'
    volumes:
      - '/home/matomo/matomo_data:/bitnami'
    depends_on:
      - mariadb
    restart: always

volumes:
  mariadb_data:
    driver: local
  matomo_data:
    driver: local

Ist die Datei erstellt und nach eigenen Wünschen angepasst muss nun noch Nginx konfiguriert werden damit die Seite auch richtig erreichbar ist. Außerdem muss ein Zertifikat erstellt werden bei Letsencrypt.

Nginx konfigurieren

sudo vi /etc/nginx/sites-available/analytics.domain.tld.conf
server {
        listen 443 ssl http2;
        listen [::]:443 ssl http2;

        server_name analytics.domain.tld;
        root /var/www/analytics.domain.tld/;

        # SSL
        ssl_certificate /etc/letsencrypt/live/analytics.domain.tld/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/analytics.domain.tld/privkey.pem;
        ssl_trusted_certificate /etc/letsencrypt/live/analytics.domain.tld/chain.pem;

        # security


        # logging
        access_log /var/log/nginx/analytics.domain.tld.access.log;
        error_log /var/log/nginx/analytics.domain.tld.error.log warn;

        # reverse proxy
        location / {
                proxy_pass https://127.0.0.1:4446;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header Host $http_host;

        }

        # additional config

}

# subdomains redirect
server {
        listen 443 ssl http2;
        listen [::]:443 ssl http2;

        server_name *.analytics.domain.tld;

        # SSL
        ssl_certificate /etc/letsencrypt/live/analytics.domain.tld/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/analytics.domain.tld/privkey.pem;
        ssl_trusted_certificate /etc/letsencrypt/live/analytics.domain.tld/chain.pem;

        return 301 https://analytics.domain.tld$request_uri;
}

# HTTP redirect
server {
        listen 80;
        listen [::]:80;

        server_name .analytics.domain.tld;


        location / {
                return 301 https://analytics.domain.tld$request_uri;
        }
}

In dieser Datei müssen erstmal die Zertifikat Pfade deaktivert werden. Eine # davor setzen, ansonstem kann der Webserver nicht gestartet werden. Wenn Nginx dann läuft wird ein Zertifikat erstellt.

Zertifikate erstellen

sudo certbot –certonly –D analytics.domain.tld

Abschliessend den Container starten und die Raute entfernen im docker-compose.yml File.

sudo nginx -t
sudo nginx reload

Nun sollte elles laufen und man kann Matomo einrichten. Sollte was nicht passen, schreibt es bitte in die Kommentare.