Ackee is a self-hosted open-source web analytics tool built with Node.js.


For this guide you should be familiar with the basic concepts of


Ackee is released under the MIT License.


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@stardust ~]$


Install yarn globally:

[isabell@stardust ~]$ npm install yarn -g
[isabell@stardust ~]$

Clone the GitHub repository and install the dependencies:

[isabell@stardust ~]$ git clone
[isabell@stardust ~]$ cd Ackee
[isabell@stardust Ackee]$ yarn


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, you have to add it under ACKEE_ALLOW_ORIGIN (read more about the CORS headers in the Ackee documentation).



If you want to allow multiple sites, you can add them to ACKEE_ALLOW_ORIGIN separated by a comma (e.g. ACKEE_ALLOW_ORIGIN=",").

Web Backend Config


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:

command=yarn start

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 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.


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 <>, Felix Förtsch <>