vesparny / fair-analytics Goto Github PK
View Code? Open in Web Editor NEW๐ An analytics server that doesn't undermine user's privacy
License: MIT License
๐ An analytics server that doesn't undermine user's privacy
License: MIT License
When I try to scan my site with this command:
fair-analytics -H v1rtl.site -p 80
I get this error:
Error: listen EADDRNOTAVAIL: address not available 35.228.53.122:80
at Server.setupListenHandle [as _listen2] (net.js:1292:21)
at listenInCluster (net.js:1357:12)
at GetAddrInfoReqWrap.doListen [as callback] (net.js:1496:7)
at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:69:10)
Emitted 'error' event on Server instance at:
at emitErrorNT (net.js:1336:8)
at processTicksAndRejections (internal/process/task_queues.js:84:21) {
code: 'EADDRNOTAVAIL',
errno: -99,
syscall: 'listen',
address: '35.228.53.122',
port: 80
}
My website loads fine, so it is available:
Looks like it checks an IP of now.sh instead of my website and throws an error. Even though, the address (IP address) is available:
OS: 4.4.0-78-generic x86_64 GNU/Linux
nvm: 0.29.0
node: v6.10.3
npm: 4.6.1
npm install -g fair-analytics
/home/user/.nvm/versions/node/v6.10.3/bin/fair-analytics -> /home/user/.nvm/versions/node/v6.10.3/lib/node_modules/fair-analytics/bin/index.js[email protected] install /home/user/.nvm/versions/node/v6.10.3/lib/node_modules/fair-analytics/node_modules/sodium-native
node-gyp-build "node preinstall.js" "node postinstall.js"[email protected] install /home/user/.nvm/versions/node/v6.10.3/lib/node_modules/fair-analytics/node_modules/utp-native
node-gyp-build/home/user/.nvm/versions/node/v6.10.3/lib
โโโฌ [email protected]
โโโฌ [email protected]
โ โโโ [email protected]
โ โโโฌ [email protected]
โ โ โโโ [email protected]
โ โ โโโ [email protected]
โ โ โโโฌ [email protected]
โ โ โ โโโ [email protected]
โ โ โโโฌ [email protected]
โ โ โ โโโ [email protected] deduped
โ โ โโโ [email protected]
โ โโโ [email protected]
โ โโโ [email protected]
โ โโโฌ [email protected]
โ โโโ [email protected] deduped
โโโ [email protected]
โโโ [email protected]
โโโฌ [email protected]
โ โโโ [email protected]
โโโฌ [email protected]
โ โโโ [email protected]
โโโฌ [email protected]
โ โโโ [email protected]
โ โโโ [email protected]
โ โโโฌ [email protected]
โ โ โโโ [email protected]
โ โโโ [email protected]
โ โโโฌ [email protected]
โ โ โโโ [email protected] deduped
โ โ โโโฌ [email protected]
โ โ โโโ [email protected]
โ โ โโโ [email protected]
โ โ โโโ [email protected] deduped
โ โ โโโ [email protected]
โ โ โโโ [email protected] deduped
โ โ โโโฌ [email protected]
โ โ โ โโโ [email protected] deduped
โ โ โโโ [email protected]
โ โโโ [email protected]
โ โโโ [email protected]
โ โโโฌ [email protected]
โ โ โโโ [email protected] deduped
โ โ โโโ [email protected] deduped
โ โโโฌ [email protected]
โ โ โโโฌ [email protected]
โ โ โ โโโฌ [email protected]
โ โ โ โ โโโ [email protected]
โ โ โ โ โโโ [email protected] deduped
โ โ โ โ โโโ [email protected] deduped
โ โ โ โโโฌ [email protected]
โ โ โ โ โโโ [email protected]
โ โ โ โโโฌ [email protected]
โ โ โ โ โโโฌ [email protected]
โ โ โ โ โ โโโ [email protected] deduped
โ โ โ โ โ โโโ [email protected] deduped
โ โ โ โ โ โโโ [email protected]
โ โ โ โ โโโฌ [email protected]
โ โ โ โ โ โโโฌ [email protected]
โ โ โ โ โ โโโ [email protected] deduped
โ โ โ โ โ โโโ [email protected] deduped
โ โ โ โ โ โโโ [email protected]
โ โ โ โ โ โโโ [email protected]
โ โ โ โ โโโฌ [email protected]
โ โ โ โ โ โโโ [email protected]
โ โ โ โ โ โโโ [email protected]
โ โ โ โ โ โโโ [email protected]
โ โ โ โ โ โโโฌ [email protected]
โ โ โ โ โ โโโ [email protected]
โ โ โ โ โโโฌ [email protected]
โ โ โ โ โ โโโ [email protected]
โ โ โ โ โ โโโ [email protected]
โ โ โ โ โ โโโ [email protected]
โ โ โ โ โ โโโ [email protected]
โ โ โ โ โโโฌ [email protected]
โ โ โ โ โ โโโ [email protected]
โ โ โ โ โโโ [email protected]
โ โ โ โ โโโฌ [email protected]
โ โ โ โ โ โโโ [email protected]
โ โ โ โ โ โโโ [email protected] deduped
โ โ โ โ โโโฌ [email protected]
โ โ โ โ โ โโโ [email protected] deduped
โ โ โ โ โ โโโ [email protected] deduped
โ โ โ โ โ โโโ [email protected]
โ โ โ โ โ โโโ [email protected]
โ โ โ โ โโโ [email protected]
โ โ โ โ โโโฌ [email protected]
โ โ โ โ โ โโโฌ [email protected]
โ โ โ โ โ โโโ [email protected]
โ โ โ โ โ โโโ [email protected]
โ โ โ โ โ โโโ [email protected] deduped
โ โ โ โ โโโฌ [email protected]
โ โ โ โ โโโ [email protected] deduped
โ โ โ โ โโโฌ [email protected]
โ โ โ โ โโโ [email protected]
โ โ โ โโโฌ [email protected]
โ โ โ โโโ [email protected] deduped
โ โ โ โโโ [email protected] deduped
โ โ โโโ [email protected] deduped
โ โ โโโฌ [email protected]
โ โ โ โโโ [email protected] deduped
โ โ โ โโโ [email protected]
โ โ โ โโโฌ [email protected]
โ โ โ โ โโโ [email protected]
โ โ โ โโโ [email protected]
โ โ โ โโโฌ [email protected]
โ โ โ โ โโโ [email protected]
โ โ โ โโโ [email protected]
โ โ โโโ [email protected] deduped
โ โ โโโ [email protected] deduped
โ โ โโโ [email protected]
โ โโโ [email protected]
โ โโโ [email protected]
โ โโโ [email protected]
โ โโโฌ [email protected]
โ โ โโโ [email protected] deduped
โ โ โโโ [email protected] deduped
โ โโโฌ [email protected]
โ โ โโโ [email protected]
โ โ โโโฌ [email protected]
โ โ โ โโโ [email protected]
โ โ โโโ [email protected] deduped
โ โ โโโฌ [email protected]
โ โ โ โโโ [email protected]
โ โ โโโ [email protected] deduped
โ โโโฌ [email protected]
โ โ โโโฌ [email protected]
โ โ โ โโโ [email protected]
โ โ โ โโโ [email protected]
โ โ โโโ [email protected]
โ โโโฌ [email protected]
โ โ โโโฌ [email protected]
โ โ โ โโโ [email protected]
โ โ โโโ [email protected] deduped
โ โโโฌ [email protected]
โ โ โโโ [email protected] deduped
โ โโโ [email protected]
โ โโโ [email protected]
โ โโโ [email protected]
โ โโโ [email protected]
โโโฌ [email protected]
โ โโโฌ [email protected]
โ โ โโโ [email protected] deduped
โ โโโฌ [email protected]
โ โ โโโ [email protected] deduped
โ โ โโโ [email protected]
โ โ โโโ [email protected] deduped
โ โ โโโฌ [email protected]
โ โ โ โโโฌ [email protected]
โ โ โ โ โโโ [email protected]
โ โ โ โ โโโ [email protected] deduped
โ โ โ โ โโโ [email protected] deduped
โ โ โ โ โโโ [email protected] deduped
โ โ โ โ โโโฌ [email protected]
โ โ โ โ โ โโโ [email protected] deduped
โ โ โ โ โ โโโ [email protected] deduped
โ โ โ โ โ โโโ [email protected]
โ โ โ โ โโโฌ [email protected]
โ โ โ โ โ โโโ [email protected] deduped
โ โ โ โ โ โโโ [email protected] deduped
โ โ โ โ โ โโโฌ [email protected]
โ โ โ โ โ โโโ [email protected] deduped
โ โ โ โ โโโฌ [email protected]
โ โ โ โ โ โโโ [email protected] deduped
โ โ โ โ โโโ [email protected] deduped
โ โ โ โโโ [email protected] deduped
โ โ โ โโโฌ [email protected]
โ โ โ โ โโโ [email protected] deduped
โ โ โ โ โโโฌ [email protected]
โ โ โ โ โ โโโฌ [email protected]
โ โ โ โ โ โโโ [email protected] deduped
โ โ โ โ โ โโโ [email protected] deduped
โ โ โ โ โโโฌ [email protected]
โ โ โ โ โ โโโ [email protected]
โ โ โ โ โโโฌ [email protected]
โ โ โ โ โ โโโ [email protected] deduped
โ โ โ โ โโโ [email protected] deduped
โ โ โ โ โโโฌ [email protected]
โ โ โ โ โ โโโ [email protected] deduped
โ โ โ โ โ โโโ [email protected]
โ โ โ โ โโโ [email protected]
โ โ โ โ โโโ [email protected]
โ โ โ โโโ [email protected]
โ โ โ โโโ [email protected]
โ โ โโโฌ [email protected]
โ โ โ โโโ [email protected]
โ โ โโโฌ [email protected]
โ โ โ โโโฌ [email protected]
โ โ โ โ โโโ [email protected] deduped
โ โ โ โโโฌ [email protected]
โ โ โ โโโ [email protected]
โ โ โโโ [email protected]
โ โ โโโฌ [email protected]
โ โ โโโ [email protected] deduped
โ โ โโโ [email protected] deduped
โ โ โโโ [email protected] deduped
โ โโโ [email protected]
โโโ [email protected]
โโโฌ [email protected]
โ โโโ [email protected]
โ โโโ [email protected]
โ โโโ [email protected]
โ โโโฌ [email protected]
โ โโโ [email protected] deduped
โโโฌ [email protected]
โ โโโฌ [email protected]
โ โ โโโ [email protected] deduped
โ โ โโโ [email protected] deduped
โ โ โโโ [email protected] deduped
โ โ โโโ [email protected] deduped
โ โ โโโ [email protected] deduped
โ โโโฌ [email protected]
โ โ โโโ [email protected]
โ โ โโโฌ [email protected]
โ โ โโโ [email protected]
โ โโโ [email protected]
โ โโโฌ [email protected]
โ โ โโโฌ [email protected]
โ โ โ โโโฌ [email protected]
โ โ โ โโโ [email protected]
โ โ โ โโโฌ [email protected]
โ โ โ โ โโโ [email protected]
โ โ โ โโโ [email protected] deduped
โ โ โโโ [email protected] deduped
โ โ โโโ [email protected] deduped
โ โ โโโ [email protected]
โ โ โโโฌ [email protected]
โ โ โ โโโ [email protected]
โ โ โ โโโ [email protected] deduped
โ โ โโโฌ [email protected]
โ โ โ โโโฌ [email protected]
โ โ โ โโโฌ [email protected]
โ โ โ โ โโโ [email protected] deduped
โ โ โ โ โโโ [email protected] deduped
โ โ โ โโโ [email protected] deduped
โ โ โ โโโฌ [email protected]
โ โ โ โ โโโ [email protected] deduped
โ โ โ โโโ [email protected]
โ โ โ โโโ [email protected]
โ โ โ โโโ [email protected] deduped
โ โ โโโฌ [email protected]
โ โ โโโฌ [email protected]
โ โ โโโ [email protected] deduped
โ โ โโโ [email protected] deduped
โ โ โโโ [email protected] deduped
โ โโโ [email protected] deduped
โ โโโฌ [email protected]
โ โ โโโฌ [email protected]
โ โ โโโฌ [email protected]
โ โ โ โโโฌ [email protected]
โ โ โ โ โโโ [email protected]
โ โ โ โ โโโ [email protected]
โ โ โ โโโฌ [email protected]
โ โ โ โ โโโ [email protected]
โ โ โ โโโฌ [email protected]
โ โ โ โโโ [email protected]
โ โ โโโ [email protected]
โ โ โโโ [email protected]
โ โ โโโฌ [email protected]
โ โ โ โโโ [email protected]
โ โ โโโ [email protected]
โ โ โโโ [email protected]
โ โ โโโ [email protected]
โ โโโ [email protected]
โ โโโ [email protected]
โ โโโ [email protected] deduped
โ โโโ [email protected]
โ โโโ [email protected]
โ โโโ [email protected] deduped
โ โโโฌ [email protected]
โ โ โโโ [email protected]
โ โ โโโ [email protected]
โ โ โโโ [email protected]
โ โโโ [email protected] deduped
โโโฌ [email protected]
โ โโโฌ [email protected]
โ โ โโโ [email protected]
โ โ โโโ [email protected]
โ โ โโโ [email protected]
โ โ โโโฌ [email protected]
โ โ โ โโโ [email protected]
โ โ โโโ [email protected]
โ โ โโโ [email protected]
โ โ โโโฌ [email protected]
โ โ โ โโโ [email protected]
โ โ โ โโโ [email protected] deduped
โ โ โ โโโ [email protected] deduped
โ โ โโโฌ [email protected]
โ โ โ โโโฌ [email protected]
โ โ โ โ โโโ [email protected]
โ โ โ โ โโโฌ [email protected]
โ โ โ โ โโโ [email protected]
โ โ โ โโโ [email protected]
โ โ โโโฌ [email protected]
โ โ โ โโโฌ [email protected]
โ โ โ โ โโโ [email protected] deduped
โ โ โ โโโฌ [email protected]
โ โ โ โ โโโ [email protected] deduped
โ โ โ โโโ [email protected]
โ โ โ โโโฌ [email protected]
โ โ โ โโโ [email protected] deduped
โ โ โโโฌ [email protected]
โ โ โ โโโ [email protected]
โ โ โ โโโฌ [email protected]
โ โ โ โ โโโ [email protected]
โ โ โ โ โโโ [email protected]
โ โ โ โ โโโ [email protected]
โ โ โ โ โโโฌ [email protected]
โ โ โ โ โโโ [email protected] deduped
โ โ โ โโโฌ [email protected]
โ โ โ โโโ [email protected]
โ โ โ โโโ [email protected]
โ โ โ โโโฌ [email protected]
โ โ โ โ โโโ [email protected] deduped
โ โ โ โโโฌ [email protected]
โ โ โ โ โโโ [email protected]
โ โ โ โโโฌ [email protected]
โ โ โ โ โโโ [email protected] deduped
โ โ โ โโโฌ [email protected]
โ โ โ โ โโโ [email protected]
โ โ โ โโโฌ [email protected]
โ โ โ โ โโโ [email protected] deduped
โ โ โ โโโ [email protected]
โ โ โ โโโ [email protected] deduped
โ โ โโโ [email protected]
โ โ โโโ [email protected] deduped
โ โ โโโ [email protected]
โ โ โโโฌ [email protected]
โ โ โ โโโ [email protected]
โ โ โโโ [email protected]
โ โ โโโ [email protected]
โ โ โโโ [email protected]
โ โ โโโ [email protected]
โ โ โโโ [email protected]
โ โ โโโฌ [email protected]
โ โ โ โโโ [email protected]
โ โ โโโฌ [email protected]
โ โ โ โโโ [email protected] deduped
โ โ โโโ [email protected]
โ โโโฌ [email protected]
โ โโโ [email protected] deduped
โ โโโฌ [email protected]
โ โ โโโ [email protected] deduped
โ โโโ [email protected]
โ โโโ [email protected] deduped
โโโ [email protected]
โโโฌ [email protected]
โ โโโ [email protected]
โโโฌ [email protected]
โ โโโฌ [email protected]
โ โ โโโ [email protected]
โ โ โโโฌ [email protected]
โ โ โ โโโ [email protected]
โ โ โโโ [email protected]
โ โโโ [email protected]
โ โโโ [email protected] deduped
โโโฌ [email protected]
โโโ [email protected] deduped
โโโ [email protected] deduped
โโโฌ [email protected]
โ โโโฌ [email protected]
โ โ โโโ [email protected]
โ โโโ [email protected] deduped
โ โโโฌ [email protected]
โ โ โโโ [email protected]
โ โโโฌ [email protected]
โ โ โโโ [email protected]
โ โโโฌ [email protected]
โ โ โโโ [email protected] deduped
โ โ โโโ [email protected]
โ โ โโโ [email protected]
โ โโโ [email protected] deduped
โโโ [email protected]
โโโฌ [email protected]
โ โโโฌ [email protected]
โ โโโฌ [email protected]
โ โ โโโฌ [email protected]
โ โ โ โโโ [email protected]
โ โ โโโ [email protected]
โ โ โโโ [email protected] deduped
โ โ โโโ [email protected]
โ โ โโโ [email protected]
โ โ โโโ [email protected] deduped
โ โ โโโ [email protected]
โ โ โโโ [email protected] deduped
โ โ โโโ [email protected]
โ โ โโโ [email protected]
โ โ โโโฌ [email protected]
โ โ โโโ [email protected]
โ โโโฌ [email protected]
โ โ โโโฌ [email protected]
โ โ โ โโโ [email protected]
โ โ โ โโโ [email protected]
โ โ โ โโโ [email protected] deduped
โ โ โ โโโ [email protected]
โ โ โโโ [email protected] deduped
โ โโโฌ [email protected]
โ โ โโโ [email protected] deduped
โ โโโ [email protected] deduped
โโโ [email protected]
โโโฌ [email protected]
โ โโโ [email protected]
โโโ [email protected]
fair-analytics
/home/user/.nvm/versions/node/v6.10.3/lib/node_modules/fair-analytics/lib/server.js:17
async function storeLog (rawData) {
^^^^^^^^
SyntaxError: Unexpected token function
at createScript (vm.js:56:10)
at Object.runInThisContext (vm.js:97:10)
at Module._compile (module.js:542:28)
at Module._extensions..js (module.js:579:10)
at Object.require.extensions.(anonymous function) [as .js] (/home/ilyar/.nvm/versions/node/v6.10.3/lib/node_modules/fair-analytics/node_modules/async-to-gen/register.js:42:5)
at Module.load (module.js:487:32)
at tryModuleLoad (module.js:446:12)
at Function.Module._load (module.js:438:3)
at Module.require (module.js:497:17)
at require (internal/module.js:20:19)
I noticed when setting up the origin
configuration for the fair analytics server that the server side logic doesn't make much sense. It's not possible for the origin configuration to equal both the host and hostname at the same time, and it shouldn't equal either of those since the origin header actually needs to include the network protocol (http:// or https://).
I gave a go at fixing it in my fork and I could make a PR if you'd like: benwiley4000@15eb9b6
Unless I'm missing something, it seems like there's no supported way to access the endpoints like /_stats and /_live outside of the analytics domain in a browser. It seems relatively harmless for these to be access-control-allow-origin: *. However that should be different configuration than cors for post requests, since while it makes sense to make the auditing info available wherever, I'd likewise want to be able to restrict analytics post requests to a single domain.
I'd be happy to make a PR if we can agree on what the API would look like. What do you think? I'm wondering if it makes sense to add a new flag called endpointsOrigin
which is the same as origin
but only for the non-/
GET endpoints?
It's only fair for people to get a visual look at what they'll deploy. Please consider some screenshots?
Following the instructions for programmatic integration, using Node v4.8.2 on Windows.
import appRoot from 'app-root-path';
import fa from 'fair-analytics';
const server = fa({
storageDirectory: `${appRoot}/.analytics`,
});
const { feed } = server;
feed.on('ready', () => {
server.listen(8080);
});
W20170510-17:28:59.780(-4)? (STDERR) const { json, send } = micro
W20170510-17:28:59.781(-4)? (STDERR) ^
W20170510-17:28:59.781(-4)? (STDERR) -
W20170510-17:28:59.782(-4)? (STDERR) SyntaxError: Unexpected token {
W20170510-17:28:59.782(-4)? (STDERR) at exports.runInThisContext (vm.js:53:16)
W20170510-17:28:59.782(-4)? (STDERR) at Module._compile (module.js:373:25)
W20170510-17:28:59.782(-4)? (STDERR) at Object.Module._extensions..js (module.js:416:10)
W20170510-17:28:59.783(-4)? (STDERR) at Module.load (module.js:343:32)
W20170510-17:28:59.783(-4)? (STDERR) at Function.Module._load (module.js:300:12)
W20170510-17:28:59.783(-4)? (STDERR) at Module.require (module.js:353:17)
W20170510-17:28:59.783(-4)? (STDERR) at require (internal/module.js:12:17)
W20170510-17:28:59.784(-4)? (STDERR) at Object.<anonymous> (.\node_modules\fair-analytics\lib\fair-analytics.js:2:22)
W20170510-17:28:59.784(-4)? (STDERR) at Module._compile (module.js:409:26)ject metadata
W20170510-17:28:59.784(-4)? (STDERR) at Object.Module._extensions..js (module.js:416:10)
This is just a FYI issue to notify that you were added to the curated awesome-humane-tech in the 'Analytics' category, and - if you like that - are now entitled to wear our badge:
By adding this to the README:
[![Awesome Humane Tech](https://raw.githubusercontent.com/humanetech-community/awesome-humane-tech/main/humane-tech-badge.svg?sanitize=true)](https://github.com/humanetech-community/awesome-humane-tech)
Logs are a bit noisy because of the missing favicon route. It'd be nice to either have one or ignore that route:
/favicon.ico
Error: Not Found
at createError (/usr/src/app/node_modules/fair-analytics/lib/server.js:9:15)
at app.use (/usr/src/app/node_modules/fair-analytics/lib/server.js:83:11)
at Layer.handle [as handle_request] (/usr/src/app/node_modules/express/lib/router/layer.js:95:5)
at trim_prefix (/usr/src/app/node_modules/express/lib/router/index.js:317:13)
at /usr/src/app/node_modules/express/lib/router/index.js:284:7
at Function.process_params (/usr/src/app/node_modules/express/lib/router/index.js:335:12)
at next (/usr/src/app/node_modules/express/lib/router/index.js:275:10)
at textParser (/usr/src/app/node_modules/body-parser/lib/types/text.js:69:7)
at Layer.handle [as handle_request] (/usr/src/app/node_modules/express/lib/router/layer.js:95:5)
at trim_prefix (/usr/src/app/node_modules/express/lib/router/index.js:317:13)
This project is inspired by an awesome @staltz's article
Create an open and fair google analytics alternative.
My idea is to use hypercore to store events in a log, that is also shareable using feed.discoveryKey
with other peers.
I imagine an event to be something like:
{
type: 'pageVisit',
when: '2017-04-26T08:43:00.088Z',
path: '/open-analytics.html'
}
This event will be stored in the feed in its raw format.
The hypercore's feed is just a raw data container.
We'd probably want to feed a database with incoming events in order to visualize them properly in a nice dashboard.
function processNewEntry (entry) {
// store the entry in a database
}
feed.on('append', () => {
feed.get(feed.length, processNewEntry)
})
This is an open discussion, and there are a lot of open points:
unique page views
without abusing user's privacy?average visit duration
PouchDb
. Perhaps better alternatives exist?Thanks to everyone willing to give their input/opinion/help here ๐
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.