Ackee
Ackee is a self-hosted open-source web analytics tool built with Node.js.
Note
For this guide you should be familiar with the basic concepts of
License
Ackee is released under the MIT License.
Prerequisites
Ackee requires a MongoDB database. Set it up using the MongoDB Uberlab guide. You will need your MongoDB admin name and password later.
[isabell@stardust ~]$ uberspace tools version use node 18
Using 'Node.js' version: '18'
Selected node version 18
The new configuration is adapted immediately. Patch updates will be applied automatically.
[isabell@stardust ~]$
Set up your domain:
[isabell@stardust ~]$ uberspace web domain list
isabell.uber.space
[isabell@stardust ~]$
Installation
Install yarn
globally:
[isabell@stardust ~]$ npm install yarn -g
[isabell@stardust ~]$
Clone the GitHub repository and install the dependencies:
[isabell@stardust ~]$ git clone https://github.com/electerious/Ackee
[isabell@stardust ~]$ cd Ackee
[isabell@stardust Ackee]$ yarn
Configuration
Ackee Config
Create a new, empty .env
file in the root of the Ackee directory. Add the following content, replacing the placeholders. The environment variables ACKEE_USERNAME
and ACKEE_PASSWORD
define the credentials to log into the web interface. If you want to use Ackee to analyze a domain other than isabell.uber.space
, you have to add it under ACKEE_ALLOW_ORIGIN
(read more about the CORS headers in the Ackee documentation).
ACKEE_MONGODB=mongodb://<admin>_mongoroot:<password>@127.0.0.1:27017/admin
ACKEE_USERNAME=<ackee_username>
ACKEE_PASSWORD=<ackee_password>
ACKEE_ALLOW_ORIGIN="https://isabell.uber.space"
Note
If you want to allow multiple sites, you can add them to ACKEE_ALLOW_ORIGIN
separated by a comma (e.g. ACKEE_ALLOW_ORIGIN="https://isabell.uber.space,https://my-other-domain.de"
).
Web Backend Config
Note
Ackee is running on port 3000.
To make the application accessible from the outside, configure a web backend:
[isabell@stardust ~]$ uberspace web backend set / --http --port <port>
Set backend for / to port <port>; please make sure something is listening!
You can always check the status of your backend using "uberspace web backend list".
[isabell@stardust ~]$
Supervisord Daemon Setup
Create ~/etc/services.d/ackee.ini
with the following content:
[program:ackee]
directory=%(ENV_HOME)s/Ackee
command=yarn start
autostart=yes
autorestart=yes
startsecs=30
After creating the configuration, tell supervisord to refresh its configuration and start the service:
[isabell@stardust ~]$ supervisorctl reread
SERVICE: available
[isabell@stardust ~]$ supervisorctl update
SERVICE: added process group
[isabell@stardust ~]$ supervisorctl status
SERVICE RUNNING pid 26020, uptime 0:03:14
[isabell@stardust ~]$
Set a link to the log file destination so you can more easily access the logs:
[isabell@stardust html]$ ln --symbolic ~/.npm/_logs/ ~/logs/npm/
[isabell@stardust html]$
Finishing installation
Go to https://isabell.uber.space
. Login using the credentials defined in section Ackee Config. Add the domains you want to analyze in the web interface: After adding, it shows a tracking snippet you can add to these pages. If data does not show up after implementing the tracking script, remember that cross site tracking always takes extra consideration of CORS.
Updates
Update by running git pull
in Ackee’s directory, updating its dependencies with yarn
and restarting the service with supervisorctl restart ackee
.
Tested on Uberspace v7.15.4 with NodeJS v18, Ackee v3.4.2 and MongoDB v5.0.
Written by: tobimori <tobias@moeritz.cc>, Felix Förtsch <https://felixfoertsch.de>