electerious / ackee Goto Github PK
View Code? Open in Web Editor NEWSelf-hosted, Node.js based analytics tool for those who care about privacy.
Home Page: https://ackee.electerious.com
License: MIT License
Self-hosted, Node.js based analytics tool for those who care about privacy.
Home Page: https://ackee.electerious.com
License: MIT License
Currently Ackee isnt adding Content-Type headers for .js and .css files.
Im using traefik to automatically server my containers and get auto ssl certs.
Treafik automatically adds a "text/plan" content type headers for every resource that doesnt have any content-type headers.
This currently breaks the frontend styles, the css is simply ignored by Chrome and i get also problems with the tracker in some browsers ( but in chrome its fine with text/plain ).
Thanks for this apps.
After installation for testing, I wasn't able to login (since USERNAME
and PASSWORD
in .env
were empty string).
USERNAME
and PASSWORD
, still unable to login.USERNAME
and PASSWORD
), still unable to loginUSERNAME=xxx PASSWORD=xxx
when starting the serverThere is so little information about the account, is there anyway to reset the password?
(I am pretty sure the login details matched with the .env
config)
Thanks
Hi there,
This isn't an issue, but I wanted to let you know I created a VERY basic WordPress plugin to add tracking from WP Admin without needing to edit theme files:
https://github.com/BrookeDot/ackee-wp
I expect to document things a bit better and blog about it but wanted to let you know.
is there a port with mysql and index page to install it on a shared host?
it would be nice because the analysis view is better than Matomo and sufficient for the marketing department.
My install runs over https, and I noticed a Mixed Content Warning in my browser (Firefox). After some investigation I tracked this down to the favicon of a referrer which used the http
protocol. My browser blocked this icon and the default images is shown in the install but wanted to mention it here.
I'm not sure what the best solution is, perhaps checking to see if it can be loaded over https
and if not falling back may make the most since but that complicates the logic a bit. Another solution could be to force https but that would surely break some favicons.
Hi there! Great application! I really love how simple and privacy focused it is.
It would be great to have a Deploy to Heroku
button, would help drive up adoption!
Hello! Thank you for your work. Is it possible to do a monthly report including a single website for a client?
On leaf "Visits", when viewing by day, Sunday is "So" for "Sonntag" I guess. :)
Faster and easier to maintain. Using gulp with my other project and it would be great to be consistent.
Hello !
Your server does not allow CORS policy for requests ? It is stranges for an analytics service ^^ I have this issue : (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
How can i make it working ? :)
Thank you
It seams that using gulp with the plugin gulp-ruby-sass introduced a dependency on gem sass.
I am not sure this is something we want.
The problem is that the gem is required in order to compile assets while doing npm install
. Did not noticed this before updating my installs...
As I mentioned in #21, there is a ruby-sass dependency that I think we don't want.
When using sass version 3.4.6 (currently the last version available) for compiling assets, it breaks something related to visitors bar animation.
Don't really know what right now, but when using a previous version of ruby-sass everything work.
node-fetch
library is placed in devDependencies
in the package.json. When installing and running the application with NODE_ENV=production
, it will error.
screenshot from heroku
Move node-fetch
to dependencies
Just looked at Network tab in Dev inspector and noticed that there are a lot of API calls on load. Is that desired behaviour ?
I think every leaf should have an init api call that would return every data available in an array and will help reduce server work.
Bonus question : Are there any API calls after the page has loaded ?
Password should be saved/hashed with bcrypt, not with md5.
Track how depth the user scrolls (http://scrolldepth.parsnip.io). Should be send along with the duration.
Improve the look of the views when Ackee has domains or records to show.
Should show an icon, text and button that navigates to the settings view or a button that shows the "Add domain" dialog.
Hi,
I'm running with docker-compose and have verified that the script tags are inserted correctly:
<script async src="http://localhost:3000/tracker.js" data-ackee-server="http://localhost:3000" data-ackee-domain-id="<id>" data-ackee-opts='{ "ignoreLocalhost": false }'></script>
In the browser console, I only see a options request to the server, and there are no other outgoing requests when doing anything on the site. I've observed this behaviour in both firefox and chrome, even with the DNT flag disabled.
Request URL:http://localhost:3000/domains/<id>/records
Request method:OPTIONS
Remote address:127.0.0.1:3000
Status code: 204
No Content
Naturally, the dashboard always shows 0 views.
How can I get this to work?
Hello,
Firstly let me thank you for the great work with Ackee. I was looking for simple, self-hosted analytics, and it works perfectly for my usecase.
I had a small problem with the script tracker.js
, because of the name, it is picked up by adblocker filters. Maybe it makes sense to rename it to ackee.js
or something along those lines.
Cheers!
API and UI to allow event based tracking (e.g., button clicks). This is something planned for a later release once all the basics are done (#35)
I have installed Ackee on several server and I'm facing a "maybe only for me" problem. In fact, I want to know which version is running when I'm browsing Ackee so that I can know if I have the latest available version (eventhough development is not very active)...
This is more an enhancement that a bug. I would love to code this feature, I wish I will...
I have read the docs concerning the CORS header values and how to configure them using a reverse proxy. For myself, my need for a reverse proxy is low, I am requesting the ability to add these headers to all requests when new environment variables are added and set.
For e.g.
res.addHeader("Access-Control-Allow-Origin", "https://myackeehostedinstance.herokuapp.com")
Hi,
After wasting the last 15 minutes trying to figure out why I got this message :
/* This is your own website. Ackee ignores you. */
I finally understand that my request was not saved because I was logged (thanks browser's private mode…)
So, I think that this message could be a little more self-explanatory for exemple : "You are logged in. Ackee ignores you".
My 2 cents…
A 201
API response should also contain the Location
header.
Hi there,
I've tried to install this on Digital Ocean's Docker container and keep having trouble. I'm new to docker (and docker compose) so any additional documentation would be helpful. I come from a LEMP background so things like do I need to install NGINX, what port should I listen on, etc?
Right now I'm getting one of two errors after cloning the repo. If I first run docker compose up
things hang at:
mongo | 2019-11-16T22:19:35.323+0000 I SHARDING [LogicalSessionCacheReap] Marking collection config.transactions as collection version: <unsharded>
if I quick then re-open they hang at:
mongo | 2019-11-16T23:08:22.642+0000 I NETWORK [conn3] received client metadata from xxx.xx.xxx.xx:44584 conn3: { driver: { name: "nodejs", version: "3.3.3" }, os: { type: "Linux", name: "linux", architecture: "x64", version: "4.15.0-70-generic" }, platform: "Node.js v10.17.0, LE, mongodb-core: 3.3.3" }
Any advice or links to external documentation on how to get started with Ackee?
To keep Ackee as a service on my server, I use Supervisor. Here's the configuration file:
[program:ackee]
command = npm start
directory = /path/to/ackee
user = ackee
autostart = true
autorestart = true
startsecs = 60
stdout_logfile = /var/log/supervisor/ackee.log
stderr_logfile = /var/log/supervisor/ackee_err.log
But, if I stop the service, it keeps running in background, thus I have to kill the node command running. Is it possible to run Ackee with a node or coffee command, like with most of the node webapplications ?
[program:etherpad]
command = node /path/to/etherpad/src/node/server.js
directory = /path/to/etherpad
user = etherpad
autostart = true
autorestart = true
startsecs = 60
startretries = 10
stdout_logfile = /var/log/supervisor/etherpad.log
stderr_logfile = /var/log/supervisor/etherpad_err.log
I hope this is possible.
Thank you for ackee!
This is more a question that a bug. My Mac is on "en_US", but I'm from France. When I look at the request Ackee make, it says my language is "US" which is not really what I expect :
https://stats.sheevaboite.fr/api/set/visit?…&language=US…
Could use the IP to figure where I'm from, don't you think it's more accurate than the user OS language ?
Hi again
Here is the following request Ackee make :
https://stats.sheevaboite.fr/api/set/visit?…&platform=OS%20X…
But when I look in the admin, every request is saved as a Windows request, but you can see in the previous request it's not Windows.
EDIT :
Looked in the sqlite file and it's Windows which is stored...
Does Ackee allow for multiple user-accounts tracking different websites? I couldn't tell from the website or documentation. I'm currently using Matomo.
Hi,
I have cloned this repo and tried to launch it as described in the documentation. npm start
fails and, as far as I can see, there is a reference in /node/leafs.coffee to cache/leafs.json
, but the truth is that the file (and folder) are missing.
Any thoughts on this issue?
For my setup, please refer to the debug log below.
0 info it worked if it ends with ok
1 verbose cli [ '/usr/local/bin/node', '/usr/bin/npm', 'start' ]
2 info using [email protected]
3 info using [email protected]
4 verbose run-script [ 'prestart', 'start', 'poststart' ]
5 info lifecycle [email protected]~prestart: [email protected]
6 silly lifecycle [email protected]~prestart: no script for prestart, continuing
7 info lifecycle [email protected]~start: [email protected]
8 verbose lifecycle [email protected]~start: unsafe-perm in lifecycle true
9 verbose lifecycle [email protected]~start: PATH: /usr/lib/node_modules/npm/bin/node-gyp-bin:/var/www/Ackee/node_modules/.bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
10 verbose lifecycle [email protected]~start: CWD: /var/www/Ackee
11 silly lifecycle [email protected]~start: Args: [ '-c', 'coffee ackee.coffee' ]
12 silly lifecycle [email protected]~start: Returned: code: 1 signal: null
13 info lifecycle [email protected]~start: Failed to exec start script
14 verbose stack Error: [email protected] start: `coffee ackee.coffee`
14 verbose stack Exit status 1
14 verbose stack at EventEmitter.<anonymous> (/usr/lib/node_modules/npm/lib/utils/lifecycle.js:232:16)
14 verbose stack at emitTwo (events.js:87:13)
14 verbose stack at EventEmitter.emit (events.js:172:7)
14 verbose stack at ChildProcess.<anonymous> (/usr/lib/node_modules/npm/lib/utils/spawn.js:24:14)
14 verbose stack at emitTwo (events.js:87:13)
14 verbose stack at ChildProcess.emit (events.js:172:7)
14 verbose stack at maybeClose (internal/child_process.js:821:16)
14 verbose stack at Process.ChildProcess._handle.onexit (internal/child_process.js:211:5)
15 verbose pkgid [email protected]
16 verbose cwd /var/www/Ackee
17 error Linux 3.2.0-4-amd64
18 error argv "/usr/local/bin/node" "/usr/bin/npm" "start"
19 error node v5.4.1
20 error npm v3.5.3
21 error code ELIFECYCLE
22 error [email protected] start: `coffee ackee.coffee`
22 error Exit status 1
23 error Failed at the [email protected] start script 'coffee ackee.coffee'.
23 error Make sure you have the latest version of node.js and npm installed.
23 error If you do, this is most likely a problem with the Ackee package,
23 error not with npm itself.
23 error Tell the author that this fails on your system:
23 error coffee ackee.coffee
23 error You can get information on how to open an issue for this project with:
23 error npm bugs Ackee
23 error Or if that isn't available, you can get their info via:
23 error npm owner ls Ackee
23 error There is likely additional logging output above.
24 verbose exit [ 1, true ]
-Manu
The favicon located at /src/ui/images/favicon.ico
should be available via /favicon.ico
.
server.js
favicon
function to routes/ui.js
layout.js
)Ackee tracks more data (optionally) than it currently shows in the UI. The following data should be available via API endpoints and as visualised cards in the UI.
The initial version of Ackee only shows site visits and referrers.
Another enhancement I have think of. I'd like to ignore some of my IPs whether I'm logged in/out so I cannot fake my stats.
What do you think of putting Ackee into the DigitalOcean Marketplace?
That would simplify the setup for noobs like me. 😊
After installing on debain wheezy i get only Could not read cache/leafs.json { [Error: ENOENT, open 'cache/leafs.json'] errno: 34, code: 'ENOENT', path: 'cache/leafs.json' } and couldn't get started ackee
[email protected] preinstall C:\Users\ruslane\Downloads
bower install
bower ENOENT No bower.json present
npm ERR! [email protected] preinstall: bower install
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the [email protected] preinstall script.
npm ERR! This is most likely a problem with the Ackee package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR! bower install
npm ERR! You can get their info via:
npm ERR! npm owner ls Ackee
npm ERR! There is likely additional logging output above.
npm ERR! System Windows_NT 6.1.7601
npm ERR! command "C:\Program Files\nodejs\node.exe" "C:\Program Files\nod
ejs\node_modules\npm\bin\npm-cli.js" "install"
npm ERR! cwd C:\Users\ruslane\Downloads\Ackee-master
npm ERR! node -v v0.10.32
npm ERR! npm -v 1.4.28
npm ERR! code ELIFECYCLE
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR! C:\Users\ruslane\Downloads\Ackee-master\npm-debug.log
npm ERR! not ok code 0
Convention for Node applications is to have the listening port be defined by an env variable, PORT
. Many services including Heroku have this requirement.
Context:
https://stackoverflow.com/a/28707129/3287767
https://stackoverflow.com/questions/15693192/heroku-node-js-error-web-process-failed-to-bind-to-port-within-60-seconds-of
https://devcenter.heroku.com/articles/getting-started-with-nodejs?singlepage=true
App start port should be change from ACKEE_PORT
to PORT
I have Ackee runnning since September 2014 and I noticed that I can no longer visualise data before October 2014. We should add an option for leaflet "Visits" that allow to select between dates...
It could also be added to others leaflet if it's generic enough, but the more important to me is the "Visits" leaflet.
It should be possible to select a date using a date picker to see the stats of previous weeks.
Hi again,
Should the cookie "AckeeIgnore" be destroyed once logged out ?
If yes, then there is a bug, once I'm logged out, the cookie still exists.
Open test page(ackee-tracker/demos/create.html),A few minutes later report the following error:
ackee-tracker.min.js:1 PATCH http://localhost:3000/domains/d2c55e6e-4dc1-4f78-bfe7-069fe1141fb7/records/20f8c1cd-b680-46e9-b4ce-d5b83b007d45 net::ERR_CONNECTION_REFUSED
Use gulp
or grunt
autoprefixer and remove vendorize mixins.
Ackee by default tracks raw, unnormalized URLs of page visits. This is very useful, but it also means that URLs that are unique (for example URLs that contain OAuth codes or other secrets) are also displayed to the Ackee admin. This unfortunately defeats anonymization, and is awful for security.
It would be very useful to have an option to hide all URLs that have not been visited at least by K distinct users, and discard such records at the end of the day.
By default, K should probably be 2, to omit all truly unique URLs.
(Alternatively, Ackee could remove the query string from the URL, and that would solve 90% of the above problem, but eg. search terms or marketing campaigns would not be trackable.)
Hello. I spiked on a Traefik integration yesterday using a mirror of this software as I'm investigating alternatives to Fathom for use in After Dark. I'm dropping the code I wrote yesterday here along with some notes as I took it as far as I have time for right now. Hopefully someone will see it to the finish line and get a functional test case together for Ackee integration with Traefik.
version: "3.7"
services:
traefik:
image: traefik:v2.0.0
restart: always
command:
# - "--log.level=DEBUG"
- "--api.insecure=true"
- "--global.checkNewVersion=false"
- "--global.sendAnonymousUsage=false"
- "--providers.docker=true"
- "--providers.docker.exposedbydefault=false"
- "--entrypoints.web.address=:80"
ports:
- "80:80"
- "8080:8080" # Traefik Web UI (enabled by --api.insecure)
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro # So that Traefik can listen to the Docker events
# - ./traefik.toml:/etc/traefik/traefik.toml # Start using config
web:
build: .
restart: unless-stopped
expose:
- "80"
volumes:
- ./site/content:/opt/after-dark/content/:ro
- ./site/config.toml:/opt/after-dark/config.toml:ro
labels:
- traefik.enable=true
- traefik.http.routers.after-dark.entrypoints=web
- traefik.http.routers.after-dark.rule=Host(`test.local`)
ackee:
image: electerious/ackee
restart: unless-stopped
expose:
- "3000"
environment:
- WAIT_HOSTS=mongo:27017
- ACKEE_MONGODB=mongodb://mongo:27017/ackee
- ACKEE_USERNAME=ackee
- ACKEE_PASSWORD=ackee
labels:
- traefik.enable=true
- traefik.http.routers.ackee.entrypoints=web
- traefik.http.routers.ackee.rule=Host(`ackee.test.local`)
- "traefik.http.middlewares.testheader.headers.accesscontrolallowmethods=GET,POST,PATCH,OPTIONS"
- "traefik.http.middlewares.testheader.headers.accesscontrolalloworigin=origin-list-or-null"
- "traefik.http.middlewares.testheader.headers.accessControlAllowHeaders=Content-Type"
mongo:
image: mongo:4.2-bionic
restart: always
volumes:
- db-data:/var/lib/mongodb
volumes:
db-data:
Resources
Notes:
localhost
hardcoded in src/index.js
must be changed to 0.0.0.0
for ackee to work properlydocker-compose exec ackee sh
and hack index.js
at runtime then, inside the running ackee container, do a kill <pid>
where is ackee. the container will restart automatically based on the compose rules and be listening on the correct port and you won't need for fork to do thisweb
you can disable CSP for testing purposes via the setting in config.toml
Cheers.
Would love to be able to quickly install this in a Kubernetes cluster
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.