JAG's Workshop'
with Jason Anthony Guy
  • About
  • Archive
  • Socials & Feeds
  • Sponsorship
  • Join Workshop+
Supported by Amazon
Sponsor: Amazon

Amazon Prime Days are happening now!

Affiliate link. Learn more.

Ditching Google Analytics for Plausible

Monday, June 16 2025

When I launched JAG’s Workshop a year ago, I instinctively added Google Analytics (GA) to the site. Ghost (the software powering jagsworkshop.com) offers basic analytics: how many emails were opened, links clicked, and revenue generated—useful for paid email newsletters, less so for free-to-read, blog-style sites like this one.

GA was the fastest, lowest effort way to see how many visitors—that is, readers—I was enticing to the site. Google makes this drop-dead simple: Set up and configure a GA account, then copy and paste a few lines of Javascript into your HTML <head>…</head> tag. No muss, no fuss, no cost.

Except, of course, there was a cost: Google gets my (and your!) data. I’m not a fan of being tracked online, and I’m guessing neither are you. Heck, I actively decline tracking cookies on every site that offers it. Sending yet more data to Google felt… wrong. Also, most of GA’s functionality is completely wasted on me. It became intolerable. So I stopped tolerating it.

I wanted a more privacy-oriented analytics solution, preferably one that I could run on my own server. After all, if I was going to replace Google Analytics, I didn’t want to simply swap in another third-party tool that had access to, or control over, my data.

Replacing GA took a while to cross off my to-do list, because I anticipated it being a difficult and involved project.

I needn’t have worried.

The contenders

I considered several options: Ghostboard, Simple Analytics, Fathom, Matomo, and Plausible.

All tout themselves as “privacy-friendly,” “cookie-free,” and GDPR-, CCPA-, or PECR-compliant. All offer a hosted solution: Simple Analytics has a (limited) free option, with paid options starting at $15/month; Fathom also starts at $15/month; Matomo is $26/month; and Plausible and GhostBoard each start at $9/month. Plausible, Matomo, and GhostBoard are also open source, but only Matomo and Plausible have fully operational installs.

The headline, of course, already spoiled my selection: I went with Plausible—more accurately, Plausible Community Edition—in part because it’s an open-source project I could install on my own servers. (I considered Matomo’s open-source “on premise” version, but the feature set seemed like way overkill for my needs. I also installed Go Access, which parses local log files. It works, but I really didn’t like their UI.)

(An aside on Ghostboard: it’s a Ghost-exclusive dashboard with many useful features—it should have been a slam-dunk—but its marketing left me cold. Statements like “Focus on the content with the best ROI,” “fix or improve to boost your SEO,” and “Gamify your publishing” made it clear it was targeting big publishers interested in driving engagement and clicks to “seamlessly enhance [their] content strategy,” and not creators. I just want to know how many people are reading my writing. Marketing matters.)

Installing Plausible Community Edition (CE)

Being open source, I expected installing Plausible would be difficult, but it was impressively easy. Assuming you have all the necessary pieces in place (Docker, Docker Compose, a recent Linux install running on recent hardware, and a domain name), the instructions on GitHub Just Work™. If you have the technical know-how, follow that and you’re golden.

🚧
Digital Ocean also has Plausible install instructions, but they’re a bit out of date; I don’t recommend following them for the basic install, but the nginx proxying section may be helpful, if you need it.

I actually ended up installing Plausible twice. The first time was on an existing Digital Ocean droplet, which took under 30 minutes, about half of which was installing Docker and friends, and reconfiguring nginx to support both Plausible and a Ghost test server. The second install, on a dedicated droplet with Docker, etc. already installed (and no need for nginx), took under 10 minutes. Like I said: Impressive.

‼️
When it comes to computing resources, Plausible can be a beast, depending on your site’s traffic. The developers recommend at least 2 GB of memory, sufficient for a small site like this one, but larger sites might need as much as 16 GB to run without issue. I’m currently running on a Digital Ocean droplet with 1 vCPU/1 GB memory/2 GB swap ($6/month), shared with a development Ghost server, and it’s just enough for my modest needs. Any significant traffic and it’ll probably keel over. I should be so lucky.

Overview

If you’re on Digital Ocean, here’s an overview of installing Plausible on a droplet. (If you aren’t already using Digital Ocean, use my link to get $200 in credit to try it out for up to 60 days. If you sign up later, I get a small kickback, which helps offset the costs of running this site.)

  1. Install the Digital Ocean Docker droplet
    • The DO Docker droplet contains the latest Docker (28.11) and Docker Compose (2.36.0) running on a recent Ubuntu (22.04).
    • For my virtual hardware, I selected Shared CPU, Regular CPU (1GB / 1 CPU, 25 GB SSD, 1000 GB transfer), which cost $6/month, then added swap space (see below). Choose what’s right for your needs.
  2. Point a subdomain to your droplet
    • Using your domain name provider’s tools, add a subdomain that points to your DO droplet. You’ll add an A Record, where Host is your domain of choice (for example, plausible.example.com) and the IP Address is the IP of your droplet (visible when you view your droplet in the Digital Ocean dashboard). Depending on your settings, it may take a few minutes to a few hours to percolate across the internet.
  3. Follow the Plausible CE instructions on GitHub.
    • The BASE_URL is the subdomain you registered in Step 2.
  4. Once running, visit your Plausible domain name (from Step 2); it should load and show a “Register your Plausible CE account” screen. Complete it.
  5. Next is the Add website info screen. Complete that.
  6. Finally, there’s the Manual installation screen, which provides the Javascript for connecting your website to Plausible. Configure what you want to track, then copy the script. Plausible should show that it’s waiting for the first event.
  7. Paste the copied script into the <head>...</head> section of your site. I suggest adding it as the first entry after your <title>…</title> tag so it loads as early as possible.
    • Keep in mind you’ll need to add it to every page on your site you want to track.
    • If you’re using Ghost (as this site does), you can either use Settings > Advanced > Code Injection to add the script to your Site header, or you can update your theme template (for example, your header.hbs file). I did the latter, as I run my own custom theme.
  8. Load your website, then return to your Plausible site; you should see your first hit!

Enabling swap

I mentioned above that I installed Plausible on a 1 GB memory system, and 2 GB is the minimum recommended amount. I can confirm: 1 GB is definitely not enough—I quickly crashed Plausible. However, I wasn’t willing to move up to a 2 GB system ($12 vs. $6/month) just for my analytics server unless it was absolutely necessary. So I did what any penny-pinching sysadmin would: I enabled swap.

⚠️
Enabling swap is slow! As fast as SSDs are, they’re still way slower than RAM. I don’t recommend this except for testing, or if your site gets just a handful of hits per hour. I haven’t tested the limits with swap enabled, so caveat emptor and all that. If you’re getting thousands of hits a day, upgrade the RAM on your server.

That said, for the few dozen hits I get per day, it’s fine. As I mentioned before, if this site blows up, the analytics server will most certainly keel over. That’s a great problem to have.

Here’s how I set up swap on my system (all commands must be run as the root user):

root# fallocate -l 2G /swapfile
root# chmod 600 /swapfile
root# mkswap /swapfile
root# swapon /swapfile
root# echo '/swapfile none swap sw 0 0' >> /etc/fstab

In English:

  1. Create a 2 GB file on disk where the swap data will be stored.
  2. Make that file read-writable for the owner (root) only.
  3. Format that file so it’s usable as swap space.
  4. Enable swap using that file.
  5. Tell the system to enable the swapfile at boot, so it’s always available.

Finally, confirm swap is enabled:

root# swapon --show

You should see something like:

NAME TYPE SIZE USED PRIO
/swapfile file 2G 539.7M -2

Wrap-up

I’ve been using my Plausible install for about a month now, and I’ve had no issues. The data is in line with Google Analytics, and is much easier to understand. The server hovers around 10% CPU utilization, with spikes up to about 35%, and memory at about 90% (with swap at about 60%). And, of course, the data is now stored on my servers, not Google’s.

There are a few additional configurations (email notifications, for example) I plan to implement, but I’ve achieved my goal of replacing the privacy-invading Google Analytics with the privacy-friendly Plausible.

0:00
/0:08

Like what you just read?

Get more like it, direct to your inbox. It’s free for you and an ego boost for me. Win-win!

Free, curated, possibly habit-forming. (It’s OK, you can stop anytime.)

Previous:
WWDC25: Four Things
Next:
A Brief Musing on Lisa Melton’s Transcoding Tools and Ripping Discs in the Age of Streaming
Hosted on Digital Ocean.
Copyright © 2023–2025 JAG's Workshop LLC.
Powered by Ghost.