GoAccess Latest Build-from-Source Notes: From Source Install to Real-Time HTML Reports

A command-focused GoAccess setup note based on the latest official repository, covering source installation of the newest release on Ubuntu or Debian, version checks, HTML report generation, and real-time viewing.

This is organized for 2026-04-29.
At this point, the latest stable version listed in the official README is 1.10.2.

1. Install build dependencies first

1
2
3
sudo apt-get update
sudo apt-get install -y build-essential wget tar \
  libncurses-dev libmaxminddb-dev libssl-dev zlib1g-dev

2. Download the latest source package

1
2
3
4
cd /usr/local/src
sudo wget https://tar.goaccess.io/goaccess-1.10.2.tar.gz
sudo tar -xzvf goaccess-1.10.2.tar.gz
cd goaccess-1.10.2

3. Configure build options

1
sudo ./configure --enable-utf8 --enable-geoip=mmdb --with-zlib

If you also want TLS support for real-time HTML reports:

1
sudo ./configure --enable-utf8 --enable-geoip=mmdb --with-zlib --with-openssl

4. Build and install

1
2
sudo make
sudo make install

5. Verify the version

1
2
goaccess --version
which goaccess

6. View reports directly in the terminal

For common Nginx or Apache combined logs:

1
goaccess /var/log/nginx/access.log --log-format=COMBINED

If the log path is Apache:

1
goaccess /var/log/apache2/access.log --log-format=COMBINED

7. Generate a static HTML report

1
2
3
4
goaccess /var/log/nginx/access.log \
  --log-format=COMBINED \
  -a \
  -o /usr/share/nginx/html/goaccess-report.html

You can also write it to the current directory:

1
2
3
4
goaccess /var/log/nginx/access.log \
  --log-format=COMBINED \
  -a \
  -o report.html

8. Generate a real-time HTML report

1
2
3
4
5
goaccess /var/log/nginx/access.log \
  --log-format=COMBINED \
  -a \
  -o /usr/share/nginx/html/goaccess-report.html \
  --real-time-html

To change the port:

1
2
3
4
5
6
goaccess /var/log/nginx/access.log \
  --log-format=COMBINED \
  -a \
  -o /usr/share/nginx/html/goaccess-report.html \
  --real-time-html \
  --port=7891

To bind only to localhost:

1
2
3
4
5
6
goaccess /var/log/nginx/access.log \
  --log-format=COMBINED \
  -a \
  -o /usr/share/nginx/html/goaccess-report.html \
  --real-time-html \
  --addr=127.0.0.1

9. Follow logs continuously

1
tail -f /var/log/nginx/access.log | goaccess --log-format=COMBINED -

From the beginning of the file and keep it live:

1
2
3
4
tail -f -n +0 /var/log/nginx/access.log | goaccess \
  --log-format=COMBINED \
  -o report.html \
  --real-time-html -

10. Look at only certain requests

For example, only requests containing firefox:

1
2
tail -f /var/log/nginx/access.log | grep -i --line-buffered 'firefox' | goaccess \
  --log-format=COMBINED -

For example, only 5xx and 3xx:

1
2
3
tail -f -n +0 /var/log/nginx/access.log | awk '$9~/3[0-9]{2}|5[0-9]{2}/' | goaccess \
  --log-format=COMBINED \
  -o out.html -

11. Analyze multiple logs together

1
goaccess /var/log/nginx/access.log /var/log/nginx/access.log.1 --log-format=COMBINED

Read compressed and uncompressed logs together:

1
zcat --force /var/log/nginx/access.log* | goaccess --log-format=COMBINED -

12. Enable multithreading

1
2
3
4
goaccess /var/log/nginx/access.log \
  --log-format=COMBINED \
  -o report.html \
  -j 4

Increase chunk size:

1
2
3
4
5
goaccess /var/log/nginx/access.log \
  --log-format=COMBINED \
  -o report.html \
  -j 4 \
  --chunk-size=8192

13. Incremental processing

Persist an older log first:

1
goaccess /var/log/nginx/access.log.1 --log-format=COMBINED --persist

Then append the current log:

1
goaccess /var/log/nginx/access.log --log-format=COMBINED --restore --persist

Read only persisted data:

1
goaccess --restore

14. The set of commands I would run first

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
sudo apt-get update
sudo apt-get install -y build-essential wget tar \
  libncurses-dev libmaxminddb-dev libssl-dev zlib1g-dev

cd /usr/local/src
sudo wget https://tar.goaccess.io/goaccess-1.10.2.tar.gz
sudo tar -xzvf goaccess-1.10.2.tar.gz
cd goaccess-1.10.2
sudo ./configure --enable-utf8 --enable-geoip=mmdb --with-zlib --with-openssl
sudo make
sudo make install

goaccess --version

goaccess /var/log/nginx/access.log \
  --log-format=COMBINED \
  -a \
  -o /usr/share/nginx/html/goaccess-report.html \
  --real-time-html

That is basically it.
If your goal is clear, getting the latest source build installed and making --log-format=COMBINED plus --real-time-html work first is usually enough. After that, most changes are just about log paths, output files, and ports.

记录并分享
Built with Hugo
Theme Stack designed by Jimmy