Ackee (Self-Hosted Analytics) on Debian 12

Ackee is a lightweight, open-source self-hosted web analytics platform built with a clear goal: provide useful website insights without invading user privacy. It tracks essential metrics such as page views, referrers, browsers, devices, and screen sizes, while deliberately avoiding cookies, user profiling, and cross-site tracking.

Unlike traditional analytics platforms, Ackee is privacy-first by design and typically does not require cookie consent banners, making it an excellent choice for GDPR-conscious websites. It’s ideal for site owners who want transparency, simplicity, and full ownership of their analytics data.

Running Ackee on Debian 12 (Bookworm) gives you a stable, secure, and long-term supported operating system known for its reliability in production environments. Debian 12 includes OpenSSL 3, systemd 252, and mature Docker and Nginx packages, making it a solid foundation for deploying Ackee with Docker, MongoDB, Nginx, and HTTPS.


Architecture Overview

LayerComponentRole
OSDebian 12 (Bookworm)Stable, production-grade Linux base
Container RuntimeDocker / Docker ComposeRuns Ackee and MongoDB services
ApplicationAckee (Node.js)Analytics engine and web dashboard
DatabaseMongoDBStores anonymized analytics data
Reverse ProxyNginxHTTPS termination, routing, compression
TLSLet’s Encrypt / PKISecure access to the analytics interface

Ackee’s simple architecture makes it easy to deploy, easy to maintain, and easy to back up, even on small VPS instances.


Why Use Ackee?

  • Privacy-first analytics – no cookies, no personal data collection
  • GDPR-friendly by default – often no consent banner required
  • Self-hosted & open-source – complete control over analytics data
  • Lightweight and fast – minimal server and client-side overhead
  • Clean, focused dashboard – only meaningful metrics, no noise
  • Simple JavaScript tracking snippet – easy integration into any site
  • Multi-site support – track multiple domains from a single instance

Ackee is designed for people who want ethical analytics without sacrificing clarity or control.


Ackee vs Other Analytics Platforms

Feature / CapabilityAckeeGoogle AnalyticsPlausibleUmami
HostingSelf-hostedCloud onlyCloud / self-hostedCloud / self-hosted
Cookies❌ No✅ Yes❌ No❌ No
GDPR friendly✅ Yes❌ No (by default)✅ Yes✅ Yes
Data ownershipFullGoogle-controlledPartialFull
Tracking depthEssentialVery detailedEssentialModerate
CostFree, open-sourceFree / PaidPaidFree / Paid

Ackee is best suited for blogs, company websites, landing pages, and privacy-focused projects where trust and transparency matter more than aggressive data collection.


Security & Best Practices on Debian 12

  • Run Ackee behind Nginx with HTTPS enabled.
  • Keep Ackee and MongoDB accessible only via internal Docker networks.
  • Store admin tokens and database credentials using environment variables.
  • Use UFW or nftables to allow only ports 80 and 443.
  • Automate SSL certificate renewal using Certbot.
  • Regularly update Debian, Docker, Ackee, and MongoDB images.
  • Back up MongoDB data volumes on a scheduled basis.
  • Restrict dashboard access to trusted users or IP ranges when possible.

Typical Use Cases

  • Personal blogs and portfolios – privacy-respecting visitor insights
  • Company websites – GDPR-friendly analytics without cookie banners
  • Landing pages – track referrers and traffic sources ethically
  • Agencies & developers – analytics for multiple client sites
  • Open-source, NGO, or non-profit projects – transparent and ethical tracking

Deploying Ackee on Debian 12 with Docker, MongoDB, Nginx, and SSL gives you a fast, privacy-friendly, and fully self-hosted analytics solution — delivering essential insights while keeping user trust and data ownership firmly in your hands.


Create a Debian 12 Instance on Shape.Host

Go to https://shape.host and log in

Click Create

Choose Instance

Shape.host Resources dashboard with Create > Instance highlighted.

Select a server location

Shape.host instance form with the data center location selector highlighted.

Choose Debian 12 (64-bit)

Pick a plan (recommended minimum):

2 CPU cores

4 GB RAM

20 GB NVMe SSD

Shape.host instance form with the operating system image selector highlighted.

Click Create Instance

Wait for provisioning

Shape.host instance form with the Create Instance button highlighted.

Copy the public IP address

Shape.host Resources dashboard with the server IP address highlighted.

Step 1: Connect to the Server via SSH

From your local machine:

ssh root@YOUR_SERVER_IP

You are now logged in as the root user.


Step 2: Update the System

apt update
apt upgrade -y

Ensures your system has the latest security patches and package updates.

Terminal showing APT package management commands and output.

Step 3: Install Required System Packages

apt install ca-certificates curl gnupg lsb-release

These tools are required to securely add the Docker repository.

Terminal showing APT package management commands and output.

Step 4: Create Docker Keyrings Directory

mkdir -p /etc/apt/keyrings

Stores trusted cryptographic keys for package verification.


Step 5: Add Docker GPG Key

curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg

Ensures Docker packages are authenticated.


Step 6: Add Docker Repository

echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
https://download.docker.com/linux/debian \
$(lsb_release -cs) stable" > /etc/apt/sources.list.d/docker.list

Adds the official Docker package source.


Step 7: Update Package Index

apt update

Loads packages from the newly added Docker repository.

Terminal showing APT package management commands and output.

Step 8: Install Docker and Docker Compose

apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Installs Docker Engine and Docker Compose v2.

Terminal showing APT package management commands and output.

Step 9: Verify Docker Installation

docker version
docker compose version

Confirms Docker is installed and working correctly.


Step 10: Create Ackee Directory

mkdir -p /opt/ackee
cd /opt/ackee

This directory will store Ackee configuration and MongoDB data.

Terminal showing the installed Docker Compose version.

Step 11: Create Docker Compose Configuration

nano docker-compose.yml

Paste the following content:

services:
  mongo:
    image: mongo:6
    container_name: ackee-mongo
    restart: unless-stopped
    volumes:
      - ./mongo-data:/data/db

  ackee:
    image: electerious/ackee:latest
    container_name: ackee
    restart: unless-stopped
    depends_on:
      - mongo
    environment:
      - ACKEE_MONGODB=mongodb://mongo:27017/ackee
      - ACKEE_USERNAME=admin
      - ACKEE_PASSWORD=STRONG_ADMIN_PASSWORD
      - ACKEE_ALLOW_ORIGIN=https://analytics.example.com
    ports:
      - "127.0.0.1:3000:3000"

Explanation:

  • MongoDB stores analytics data
  • Ackee connects internally to MongoDB
  • Ackee listens only on localhost for security
  • Admin credentials are defined via environment variables

Save and exit the file.

Terminal showing the GNU nano editor and configuration text.

Step 12: Start Ackee

docker compose up -d

Starts Ackee and MongoDB in the background.

Terminal showing container image download progress.

Step 13: Check Running Containers

docker ps

You should see:

  • ackee
  • ackee-mongo

Both should be running.

Terminal showing the Docker container listing.

Step 14: Test Ackee Locally

curl http://127.0.0.1:3000

This confirms Ackee is responding before exposing it publicly.

Terminal showing curl commands or output during Test Ackee Locally.

Step 15: Install Nginx

apt install nginx

Nginx will act as a reverse proxy.

Terminal showing APT package management commands and output.

Step 16: Enable and Start Nginx

systemctl enable nginx
systemctl start nginx
Terminal showing systemd service management commands or output.

Step 17: Create Nginx Configuration

nano /etc/nginx/sites-available/ackee

Paste:

server {
    listen 80;
    server_name analytics.example.com;

    location / {
        proxy_pass http://127.0.0.1:3000;
        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;
    }
}
Terminal showing web server configuration text.

Step 18: Enable Nginx Site

ln -s /etc/nginx/sites-available/ackee /etc/nginx/sites-enabled/ackee
rm /etc/nginx/sites-enabled/default

Step 19: Test and Reload Nginx

nginx -t
systemctl reload nginx
Terminal showing systemd service management commands or output.

Step 20: Install SSL Certificate

apt install certbot python3-certbot-nginx
certbot --nginx -d debian-tutorials.shape.host

Certbot automatically enables HTTPS.

Terminal showing APT package management commands and output.
Terminal showing Certbot certificate commands and messages.

Access Ackee Analytics

https://your-domain.com

Login credentials:

Username: admin
Password: STRONG_ADMIN_PASSWORD
Ackee sign-in form.
Ackee traffic statistics overview.

Ackee performs best on stable infrastructure with fast storage.

Shape.Host Cloud VPS offers:

  • NVMe SSD storage
  • Instant instance deployment
  • Clean Debian images
  • Reliable networking
  • Excellent performance for Docker workloads

Deploy your next self-hosted analytics stack at https://shape.host.