GoatCounter

Open-source privacy-friendly web analytics for simple, meaningful site tracking.

Access

  1. Open your browser and visit: https://<SERVER_IP>
  2. A browser SSL warning is expected (self-signed certificate)
  3. Create your first user and site on first visit.

Important Files and Directories

  • Install directory: /root/goatcounter
  • Docker Compose: /root/goatcounter/docker-compose.yml
  • Data volume: /var/lib/docker/volumes/goatcounter_goatcounter-data/_data
  • Nginx config: /etc/nginx/sites-available/goatcounter
  • Enabled Nginx site: /etc/nginx/sites-enabled/goatcounter
  • SSL certificates: /etc/nginx/ssl/

Enabling SSL with a Domain

1. Point your domain to the server IP.

2. Edit Nginx config and replace both server_name <IP>; with your domain (<your-domain>) for both HTTP (port 80) and HTTPS (port 443) blocks:

vim /etc/nginx/sites-available/goatcounter

3. Install Certbot:

apt install -y certbot python3-certbot-nginx

4. Run the following command to generate a valid Let’s Encrypt certificate:

certbot certonly --nginx --non-interactive --agree-tos --email [email protected] -d yourdomain.com

5. Replace SSL paths in Nginx config:

vim /etc/nginx/sites-available/goatcounter
# Before:
    # ssl_certificate       /etc/nginx/ssl/goatcounter.crt;
    # ssl_certificate_key   /etc/nginx/ssl/goatcounter.key;
# After:
    # ssl_certificate       /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
    # ssl_certificate_key   /etc/letsencrypt/live/yourdomain.com/privkey.pem;

6. Restart Nginx to apply the changes:

systemctl restart nginx

7. Open your browser and visit: https://yourdomain.com

Application Details