v1.2 is a major release that gives the
ability to parse multiple log files in real-time. It also adds the ability to
pipe data in w/o closing the pipe and thus allowing a great amount of flexibility
such as the ability to use
tail -f and still have real-time stats.
In addition to GeoIP2 support and other features and fixes.
For the complete list of features and changes, see the Releases Notes page.
If you would like to be on top of all the changes occuring to GoAccess,
feel free to use the GitHub master branch and build from it. Instructions on how to build GoAccess from Github can be found at the bottom of the Download page.
This is where all the development goes. If you already have Git installed, you can get the latest development version via Git.
Installing GoAccess is pretty easy. Just download, extract and compile it with:
$ wget http://tar.goaccess.io/goaccess-1.2.tar.gz $ tar -xzvf goaccess-1.2.tar.gz $ cd goaccess-1.2/ $ ./configure --enable-utf8 --enable-geoip=legacy $ make # make installNote: The only dependency is ncurses.
Multiple options can be used to configure GoAccess. For a complete up- to-date list of configure options, run ./configure --help
legacywill utilize the original GeoIP databases.
mmdbwill utilize the enhanced GeoIP2 databases.
memhashwill utilize Tokyo Cabinet's in-memory hash database.
btreewill utilize Tokyo Cabinet's on-disk B+ Tree database.
It is easiest to install GoAccess on Linux using the preferred package manager of your Linux distribution. Please note that not all distributions will have the lastest version of GoAccess available
# apt-get install goaccess
Note: This might not always give you the latest stable version. To make sure that you're running the latest stable version of GoAccess see option below.
$ echo "deb http://deb.goaccess.io/ $(lsb_release -cs) main" | sudo tee -a /etc/apt/sources.list.d/goaccess.list $ wget -O - https://deb.goaccess.io/gnugpg.key | sudo apt-key add - $ sudo apt-get update $ sudo apt-get install goaccess
sudo apt-get install goaccess-tcb.
.debpackages in the official repo are available through
httpsas well. You may need to install
# yum install goaccess
# pacman -S goaccess
# emerge net-analyzer/goaccess
# brew install goaccess
# pkg install sysutils/goaccess
# pkg_add goaccess
# pkgin install goaccess
# curl https://slackbuilds.org/slackbuilds/14.1/system/goaccess.tar.gz | tar xvz # cd goaccess/ # GEOIP=yes ./goaccess.SlackBuild
GoAccess can be used in Windows through Cygwin.
GoAccess has minimal requirements, it's written in C and requires only ncurses. However, below is a table of some optional dependencies in some distros to build GoAccess from source.
|Distro||NCurses||GeoIP (optional)||Tokyo Cabinet (optional)||OpenSSL (optional)|
|Arch Linux||ncurses||geoip||compile from source||openssl|
make, etc for compiling/building software from source. e.g.,
A minimal GoAccess configuration file for a Docker container with a real-time HTML report would need at least the following options to be set
Note: Docker will bind to 0.0.0.0:7890, which means that GoAccess WebSocket server is using port 7890 and reachable from 127.0.0.1 in addition to your host IP. Ensure
ws-url=<IP> points to the Docker host public IP address, otherwise it will attempt to establish a connection to localhost.
Once you have your configuration file all set, then you may run:
docker run --restart=always -d -p 7890:7890 \ -v "$HOME/data:/srv/data" \ -v "/path/to/logs:/srv/logs" \ -v "/path/to/report:/srv/report" \ allinurl/goaccess
If everything goes fine, the generated report should live under
Another thing to note is that if you ever need to run it on a different port, e.g.,
docker run --restart=always -d -p 8080:7890 ...
Then you can simply set the external port in
ws-url ws://localhost:8080 and keep GoAccess' internal port in your config file set to