Learn how to install and configure GoAccess on Rocky Linux 10 using Docker 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.
GoAccess is a powerful log analyzer that converts Nginx access logs into a live, interactive HTML dashboard. Running it inside Docker avoids OS-level package issues and ensures reliable WebSocket support for real-time updates.
This guide shows how we deploy GoAccess in Docker and serve the dashboard securely using Nginx on Rocky Linux 10.
Prerequisites
Before we begin, let’s ensure we have the following in place:
- A Rocky Linux 10 dedicated server or KVM VPS.
- A basic programming knowledge.
How to Install and Run GoAccess Real-Time Dashboard on Rocky Linux 10 Using Docker for Real-Time Nginx/Apache Log Analysis
Step 1: Install Docker
Let's install Docker first:
sudo dnf -y install dnf-plugins-core
sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo dnf install -y docker-ce docker-ce-cli containerd.io
sudo systemctl enable --now docker
Verify:
docker --version
Step 2: Prepare Directory for Reports
sudo mkdir -p /var/www/goaccess
sudo chown -R nginx:nginx /var/www/goaccess
Configure SELinux (If you have enabled it)
sudo chcon -Rt httpd_sys_content_t /var/www/goaccess
This directory will be used by Nginx to serve the GoAccess HTML dashboard.
Grant Nginx Network Permission (SELinux)
Note: You can skip if you already enabled it.
sudo setsebool -P httpd_can_network_connect 1
Step 3: Run GoAccess Container
Execute following Docker command to create GoAccess Docker container.
Note: Change the log path /var/log/nginx with your log path. We are using Nginx's default log path here for demostration purpose.
docker run -d \
--name goaccess \
-p 7890:7890 \
-v /var/log/nginx:/logs:ro \
-v /var/www/goaccess:/report \
--entrypoint /bin/sh \
allinurl/goaccess -c "
goaccess /logs/access.log \
--log-format=COMBINED \
--real-time-html \
--addr=0.0.0.0 \
--port=7890 \
-o /report/index.html
"
Verify container status:
docker ps
docker logs -f goaccess
The logs should indicate that the WebSocket server is running.
Step 4: Configure Nginx WebSocket Proxy
Edit Nginx configuration:
sudo nano /etc/nginx/nginx.conf
Inside the server block add:
location /goaccess/ {
alias /var/www/goaccess/;
index index.html;
}
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 5: Protect Dashboard with Authentication
sudo dnf install -y httpd-tools
sudo htpasswd -c /etc/nginx/.goaccess_auth admin
Update the GoAccess location block:
location /goaccess/ {
auth_basic "Restricted Area";
auth_basic_user_file /etc/nginx/.goaccess_auth;
alias /var/www/goaccess/;
index index.html;
}
Reload Nginx again:
sudo systemctl reload nginx
Step 6: Access the Dashboard
Open in browser:
http://server-ip/goaccess/
The GoAccess dashboard now updates live and is secured behind authentication.
Conclusion
In this tutorial, we have seen how to install and configure GoAccess on Rocky Linux 10 using Docker for real-time Nginx or Apache web log analysis. Using Docker with GoAccess on Rocky Linux 10 ensures consistent real-time analytics with full WebSocket support, avoids distribution-specific package limitations, and integrates cleanly with Nginx. This approach provides a stable, production-ready log monitoring solution.

