🐠 Fugu

Fugu provides true general event tracking (similar to Google Analytics) and a way to make sense of how people use your web applications.

Fugu - Simple and privacy-friendly product analytics
Fugu is a simple and privacy-friendly product analytics tool that helps you better understand your users.

Fugu (code) is simple self-hostable, privacy friendly product analytics.

Fugu does a little better than most tools because it does include the use cases of collecting "events" rather than just page views. More than just a hit-counter, Fugu lets you map out where people are going on your site and how they're using your software.

Fugu basecamp demo (source: https://fugu.lol)

The sectioning and bucketing of events on your application (and doing things like tracking funnel activation) is what Fugu excels at and what some other tools don't do. Here's the funnel view of that same data set:

fugu funnel view (source: https://fugu.lol)

Fugu's also got great documentation for you to peruse and will even introduce you to event tracking all together.

Running Fugu

The self-hosting guide for Fugu is on Github, and it's really easy to get started, since Fugu has an official docker image:

docker run --env-file .env shafyy/fugu:latest

If you're wondering what that ENV file looks like:

# REQUIRED if you're self-hosting
ALLOW_REGISTRATION=true # setting this to false disallows new sign ups
SECRET_KEY_BASE= # Generate key with `rails secret` or manually (alphanumeric string with 128 chars)

# OPTIONAL if you're self-hosting
INIT_USER_EMAIL= # set this if you run with docker-compose and want to create an initial user
INIT_USER_PASSWORD= # set this if you run with docker-compose and want to create an initial user
DATABASE_URL= # required if you're running Fugu without docker-compose in production
SENTRY_DSN= # if you want to use Sentry to track errors
RAILS_LOG_TO_STDOUT=true # if you want to log errors in server logs
DATABASE_NAME_TEST= # only needed if you are running automated tests during development
FORCE_SSL_PROD= # sets config.force_ssl in production.rb - defaults to true.

Quite reasonable, it's well set up and is a bog-standard Rails application.