Vojtěch Struhár

Posted on November 11, 2024 | #caddy , #plausible , #self-host

thumbnail

How to run Plausible analytics on a VPS

I already have a Hetzner VPS running ubuntu and Caddy reverse proxy serving this very website. By leaving Vercel I lost their analytics - and now I want them back. Plausible analytics should do the trick!

Prerequisities

Run Plausible CE

Their website doesn’t make it terribly obvious, but they regard Plausible and Plausible Community Edition as two separate things. What we are after is the Plausible Community Edition - I followed their quick start guide.

git clone -b v2.1.4 --single-branch --depth 1 https://github.com/plausible/community-edition plausible-ce
cd plausible-ce
echo "BASE_URL=https://analytics.vojtechstruhar.com" >> .env
echo "SECRET_KEY_BASE=$(openssl rand -base64 48)" >> .env

I did not modify on what ports does the service run. The default port in docker is 8000 and that’s fine by me. I want it to be accessible on port 5001. We can specify this binding in a compose.override.yml file:

services:
  plausible:
    ports:
      - 5001:8000

Now run the container

docker compose up -d

Setup a domain

I added analytics.vojtechstruhar.com to my Hetzner DNS. It would be nice if they supported wildcard A records, but they don’t.

Point Caddy to the new service

All I have to do here is add a reverse proxy to my Caddyfile

analytics.vojtechstruhar.com {
	reverse_proxy localhost:5001
}

And of course restart caddy so that the changes take effect

systemctl reload caddy

Setup Plausible tracking

Now you can go to your domain and setup the analytics. It will give you a snippet, which I just pasted into <head> in my base Astro layout component. And voila!

Read next → GFM Callouts in Astro