Ackee
Privacy-focused, cookie-free web analytics on MongoDB — a self-hosted alternative to Google Analytics
Ackee on Cubeship
Ackee is a self-hosted analytics tool that cares about privacy: no cookies, no unique user tracking, and the data stays on your own server.
This template installs it on a Cubeship instance with the managed MongoDB it needs.
What it creates
- ackee — the dashboard and tracking endpoint, from
electerious/ackee:3.6.0, answering on the domain you choose. - ackee-db — a managed MongoDB 8.0 database, attached to the app.
What you are asked
| Input | What to give |
|---|---|
| Where the dashboard answers | A domain you control, pointed at your instance. |
| The username you sign in with | Anything; admin unless you change it. |
| The password you sign in with | Nothing — the instance generates it and shows it once. Keep a copy. |
| The sites allowed to send visits | Every origin the tracker runs on, comma-separated: https://example.com,https://www.example.com. |
After installing
-
Open the domain and sign in with the username and the generated password.
-
Under Settings → Domains, add each site and copy its embed code.
-
Paste it into the site:
<script async src="https://<your domain>/tracker.js" data-ackee-server="https://<your domain>" data-ackee-domain-id="<domain id>"></script>
A site missing from the allowed origins sends nothing: the browser refuses the
request. To add one later, change ACKEE_ALLOW_ORIGIN on the ackee app and
redeploy. The username and password are variables on the same app.
Resources
The app is limited to 0.5 CPU and 512 MiB of memory. Raise limits in
template.yaml if your traffic needs more.
What this creates
ackee
electerious/ackee:3.6.0
ackee-db
MongoDB 8.0
# yaml-language-server: $schema=https://cubeship.dev/schema/template/v1.json
version: 1
minCubeship: "0.6.0"
project: ackee
inputs:
- key: domain
type: domain
label: Where the dashboard answers
- key: username
type: text
label: The username you sign in with
default: admin
- key: password
type: secret
label: The password you sign in with
generate: 24
- key: allowOrigin
type: text
label: The sites allowed to send visits
help: Their full origins, comma-separated, like https://example.com,https://www.example.com. The tracker on any other site is refused.
pattern: ^https?://[^,\s]+(,https?://[^,\s]+)*$
databases:
- key: db
name: ackee-db
engine: mongodb
version: "8.0"
database: ackee
apps:
- key: web
name: ackee
image: electerious/ackee
tag: "3.6.0"
port: 3000
# Ackee has no health route; the dashboard's page is the lightest one.
health: /
domains:
- host: ${input.domain}
attach:
- database: db
limits: { cpu: 0.5, memory: 512Mi }
env:
# Ackee reads only ACKEE_MONGODB or MONGODB_URI, never MONGO_URL.
# The root user lives in admin, whatever database the URL names.
ACKEE_MONGODB: mongodb://${db.db.user}:${db.db.password}@${db.db.host}:${db.db.port}/${db.db.name}?authSource=admin
ACKEE_USERNAME: ${input.username}
ACKEE_PASSWORD: ${input.password}
ACKEE_ALLOW_ORIGIN: ${input.allowOrigin}