Skip to content

Instantly share code, notes, and snippets.

What would you like to do?
How to push Fathom analytics - to Heroku

Deploy Fathom on Heroku


  • heroku cli (logged in)
  • git
  • curl
  • wget
  • tar are required
  • ~ openssl is required to generate the secret_key, but you're free to use what you want

Create the app

First you need to choose a unique app name, as Heroku generates a subdomain for your app.

  • create the app via the buildpack
heroku create UNIQUE_APP_NAME --buildpack
  • locally clone the newly created app
heroku git:clone -a UNIQUE_APP_NAME
  • create the folder that will contain fathom
mkdir -p bin
  • download latest version of fathom for linux 64bit
curl -s \
  | grep browser_download_url \
  | grep linux_amd64.tar.gz \
  | cut -d '"' -f 4 \
  | wget -qi - -O- \
  | tar --directory bin -xz - fathom
  • create the Procfile for Heroku
echo "web: bin/fathom server" > Procfile
heroku addons:create heroku-postgresql:hobby-dev
  • update the environment variables, generate a secret_key

here you can change the way you generate your secret_key.

heroku config:set PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/app/bin \
  FATHOM_DATABASE_URL=$(heroku config:get DATABASE_URL) \
  FATHOM_SECRET=$(openssl rand -base64 32) \
  • add, commit and push all our files
git add --all
git commit -m "First Commit"
git push heroku master
  • the created app runs as a free-tier. A free-tier dyno uses the account-based pool of free dyno hours. If you have other free dynos running, you will need to upgrade your app to a 'hobby' one. -
heroku dyno:resize hobby
  • check that everything is working
heroku run fathom --version
  • add the first user
heroku run fathom user add --email="" --password="test_password"
  • open the browser to login and add your first website
heroku open
  • ENJOY :)
Copy link

andrewpmiller commented May 28, 2019

This is awesome! Thank you!
One minor correction: The command to setFATHOM_SECRET has an errant space before the $
This works: FATHOM_SECRET=$(openssl rand -base64 32) \

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment