Matomo
Install required packages
sudo apt-get install docker docker-compose mysql-server
Create necessary folders and files before we getting started
mkdir -p ~/docker/matomo/docker
Create docker-compose.yml
cat << "EOF" > ~/docker/matomo/docker-compose.yml
version: "3"
services:
db:
image: mariadb
command: --max-allowed-packet=64MB
restart: always
environment:
- MARIADB_DATABASE=matomo
- MARIADB_USER=${MARIADB_USER}
- MARIADB_PASSWORD=${MARIADB_PASSWORD}
- MARIADB_ROOT_PASSWORD=${MARIADB_ROOT_PASSWORD}
volumes:
- ~/docker/matomo/db:/var/lib/mysql
app:
image: matomo
restart: always
volumes:
- ~/docker/matomo/matomo:/var/www/html
ports:
- 127.0.0.1:8080:80
EOF
cat << "EOF" > ~/docker/matomo/.env
MARIADB_USER=matomo
MARIADB_PASSWORD=SI0sazoOy0M&Rpc
MARIADB_ROOT_PASSWORD=SI0sazoOy0M&Rpc
EOF
- Start Docker Container for Matomo
cd ~/docker/matomo
docker compose up -d
- Stop Docker Container for Matomo
docker matomo stop
Create mysql-user
CREATE USER '<user>'@'%' IDENTIFIED BY '<password>';
CREATE DATABASE IF NOT EXISTS matomo;
GRANT ALL ON matomo.* TO '<user>'@'%';
FLUSH PRIVILEGES;
CREATE USER 'matomo'@'%' IDENTIFIED BY '<password>';
CREATE DATABASE IF NOT EXISTS matomo;
GRANT ALL ON matomo.* TO 'matomo'@'%';
FLUSH PRIVILEGES;
Configure nginx
Redirect proxy for matomo
cat << "EOF" > /etc/nginx/sites-available/stats.nr1.nu
server {
listen 80;
listen [::]:80;
server_name stats.nr1.nu;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name stats.nr1.nu;
ssl_certificate /etc/letsencrypt/live/stats.nr1.nu/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/stats.nr1.nu/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
root /var/www/;
error_page 404 /404.html;
index index.html index.htm index.nginx-debian.html;
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
EOF
ln -s /etc/nginx/sites-available/stats.nr1.nu /etc/nginx/sites-enabled/stats.nr1.nu
sudo nginx -t
sudo systemctl reload nginx
certbot -d stats.nr1.nu --nginx -m wuseman@nr1.nu