Install GoAccess on Debian 13 for Log Analysis

By Anurag Singh

Updated on Jan 12, 2026

Install GoAccess on Debian 13 for Log Analysis

Learn how to install and configure GoAccess on Debian 13 for real-time Nginx or Apache web log analysis.

Introduction

GoAccess is an open-source, real-time web log analyzer and interactive viewer that helps us monitor and understand our server traffic through a visual dashboard. Designed to be fast and minimal, GoAccess processes web server log files (like those from Nginx or Apache) and turns raw data into meaningful insights all from the command line or via a live HTML report.

In this guide, we will install GoAccess, generate both static and live reports, and configure Nginx to serve a real-time dashboard securely.

Prerequisites

Before we begin, let’s ensure we have the following in place:

How to Install and Configure GoAccess on Debian 13 for Real-Time Nginx/Apache Log Analysis

Step 1: Update the System

Start with a clean and updated environment.

sudo apt update
sudo apt -y upgrade

Step 2: Install GoAccess

Debian 13 includes GoAccess in the official repository.

sudo apt -y install goaccess

Verify installation:

goaccess --version

Step 3: Generate a Static HTML Report

Before enabling real-time mode, confirm that GoAccess can parse the logs and generate reports.

For Nginx:

sudo goaccess /var/log/nginx/access.log --log-format=COMBINED -o /var/www/html/goaccess.html

Open in browser:

http://server-ip/goaccess.html

At this point we should see a full analytics dashboard.

Step 4: Generate Real-Time HTML Report

Now enable live monitoring. This command generates the dashboard and starts a local WebSocket server on port 7890.

sudo goaccess /var/log/nginx/access.log \
  --log-format=COMBINED \
  --real-time-html \
  -o /var/www/html/goaccess-live.html

Leave it running and continue in a new terminal.

Step 5: Configure Nginx for WebSocket Proxy

The live dashboard uses WebSockets, so Nginx must proxy the /ws endpoint.

Open default site configuration:

sudo nano /etc/nginx/sites-available/default

Inside the server block, add:

location /goaccess-live.html {
    try_files $uri $uri/ =404;
}

location /ws {
    proxy_pass http://127.0.0.1:7890;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header Host $host;
}

Reload Nginx:

sudo nginx -t
sudo systemctl reload nginx

Step 6: Access Real-Time Dashboard

Open in browser:

http://server-ip/goaccess-live.html

The dashboard will now update live as new log entries are written.

Step 7: Run GoAccess as a Systemd Service

To keep the live report running permanently, create a systemd service.

sudo tee /etc/systemd/system/goaccess-live.service >/dev/null <<EOF
[Unit]
Description=GoAccess Real-Time Log Analyzer
After=network.target

[Service]
ExecStart=/usr/bin/goaccess /var/log/nginx/access.log \
    --log-format=COMBINED \
    --real-time-html \
    -o /var/www/html/goaccess-live.html
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target
EOF

Enable and start the service:

sudo systemctl daemon-reload
sudo systemctl enable --now goaccess-live

Verify status:

sudo systemctl status goaccess-live

Step 8: Protect GoAccess Dashboard with Nginx Authentication

Install the htpasswd utility:

sudo apt install -y apache2-utils

Create authentication file:

sudo htpasswd -c /etc/nginx/.goaccess_auth admin

Enter a strong password.

Now edit Nginx config:

sudo nano /etc/nginx/sites-available/default

Inside the existing location /goaccess-live.html block, add:

auth_basic "Restricted Area";
auth_basic_user_file /etc/nginx/.goaccess_auth;

So it becomes:

location /goaccess-live.html {
    auth_basic "Restricted Area";
    auth_basic_user_file /etc/nginx/.goaccess_auth;
    try_files $uri $uri/ =404;
}

Reload Nginx:

sudo nginx -t
sudo systemctl reload nginx

Now the dashboard asks for credentials instead of welcoming random strangers.

Security Note

The GoAccess dashboard exposes traffic details including IPs, URLs, and referrers. It is recommended to protect the report using Nginx authentication, IP restrictions, or internal network access only.

Conclusion

We now have seen how to install and configure GoAccess on Debian 13 for real-time Nginx or Apache web log analysis. This setup provides clear visibility into website traffic and performance without introducing heavy monitoring platforms.