Read more about the project at cri.dev - "Making Minimal Analytics"
See Minimal Analytics in action
- node.js 16+ (16.16.0 lts recommended)
docker run -p 8080:8080 \
-v /path/to/your/data/folder/for/persistence:/app/data \
-e STATS_BASE_URL=https://stats.example.com \
-e SITE_BASE_URL=https://example.com \
christianfei/minimal-analytics:latest
git clone https://github.com/christian-fei/minimal-analytics.git
cp docker-compose.yml docker-compose.prod.yml
change the environment variable STATS_BASE_URL to your own domain for minimal-analytics, e.g. https://stats.example.com
change the environment variable SITE_BASE_URL to your own domain for the site you want to track, e.g. https://example.com
run the update.sh script to start the server
replace STATS_BASE_URL with your own domain for minimal-analytics, e.g. https://stats.example.com and include the following in your site
<script async defer src="https://STATS_BASE_URL/client.js"></script>
configure the nginx reverse proxy like so:
sudo cp nginx.conf /etc/nginx/sites-available/minimal_analytics
changing the placeholder YOUR_STATS_DOMAIN to e.g. stats.example.com, in the /etc/nginx/sites-available/minimal_analytics file.
then link to the enabled sites
sudo ln -s /etc/nginx/sites-available/minimal_analytics /etc/nginx/sites-enabled/minimal_analytics
and reload nginx
sudo systemctl reload nginx
# or
sudo nginx -s reload
install the server dependencies with
npm i
and then install the client dependencies in the dashboard directory
cd dashboard
npm i
the client uses parcel as a asset bundler.
you can run a build of the dashboard, the output will be in dashboard/dist and served from http://127.0.0.1:8080 when starting the server
cd dashboard
npm run build
Run touch data/data.ljson to create an empty file used to keep track of pageviews.
Set the environment variables STATS_BASE_URL and SITE_BASE_URL and run npm start, e.g.
SITE_BASE_URL=http://127.0.0.1:8081 STATS_BASE_URL=http://127.0.0.1:8080 npm startalternatively, using direnv, create a .env file by copying the example file: cp .env.example .env and configure the variables.
The configured site to track is running on http://127.0.0.1:8081, described by SITE_BASE_URL
The minimal-analytics server runs at STATS_BASE_URL http://127.0.0.1:8080
configure the environment variables in docker-compose.yml regarding STATS_BASE_URL and SITE_BASE_URL.
STATS_BASE_URL is the location where the minimal-analytics is running, e.g. https://stats.example.com
SITE_BASE_URL is the location of the site you want to allow tracking, e.g. https://example.com
Run the service with
docker-compose up -d --build --remove-orphans --renew-anon-volumes
Run touch data/test.ljson to create an empty file used for tests
Run npm t in the root of the project to run the server tests.
If you want to run the client dashboard tests, npm t in the dashboard directory
