├── .gitattributes ├── .gitignore ├── hooks └── build ├── root ├── usr │ └── local │ │ └── bin │ │ └── goaccess.sh └── opt │ ├── nginx.conf │ └── goaccess.conf ├── LICENSE ├── Dockerfile └── README.md /.gitattributes: -------------------------------------------------------------------------------- 1 | build text eol=lf -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | build.sh 2 | run.sh -------------------------------------------------------------------------------- /hooks/build: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | docker build --build-arg geolite_city_link=$geolite_city_link --build-arg geolite_version=$geolite_version -f $DOCKERFILE_PATH -t $IMAGE_NAME . 4 | -------------------------------------------------------------------------------- /root/usr/local/bin/goaccess.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | echo -e "Variables set:\\n\ 4 | PUID=${PUID}\\n\ 5 | PGID=${PGID}\\n" 6 | 7 | # create necessary config dirs if not present 8 | mkdir -p /config/html 9 | mkdir -p /config/data 10 | mkdir -p /opt/log 11 | 12 | # copy default goaccess config if not present 13 | [ -f /config/goaccess.conf ] || cp /opt/goaccess.conf /config/goaccess.conf 14 | 15 | # create an empty access.log file so goaccess does not crash if not exist 16 | [ -f /opt/log/access.log ] || touch /opt/log/access.log 17 | 18 | # make things easier on the users with access to the folders 19 | chmod -R 777 /config 20 | 21 | # ready to go 22 | /sbin/tini -s -- nginx -c /opt/nginx.conf 23 | /sbin/tini -s -- goaccess --no-global-config --config-file=/config/goaccess.conf -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 Greg Yankovoy 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /root/opt/nginx.conf: -------------------------------------------------------------------------------- 1 | pid /tmp/nginx.pid; 2 | error_log /dev/null; 3 | 4 | events { 5 | worker_connections 1024; 6 | } 7 | 8 | http { 9 | index index.html; 10 | access_log off; 11 | 12 | map $http_upgrade $type { 13 | websocket "socket"; 14 | default "web"; 15 | } 16 | 17 | server { 18 | listen 7889 default_server; 19 | server_name _; 20 | 21 | root /config/html; 22 | index index.html; 23 | 24 | access_log off; 25 | 26 | location / { 27 | try_files /nonexistent @$type; 28 | } 29 | 30 | location @web { 31 | sub_filter 'WebSocket(str)' 'WebSocket(window.location.href.split("#")[0].replace(window.location.protocol, window.location.protocol == "https:" ? "wss://" : "ws://"))'; 32 | sub_filter_once on; 33 | try_files $uri $uri/ =404; 34 | } 35 | 36 | location @socket { 37 | proxy_pass http://localhost:7890; 38 | proxy_connect_timeout 1d; 39 | proxy_send_timeout 1d; 40 | proxy_read_timeout 1d; 41 | proxy_http_version 1.1; 42 | proxy_set_header Upgrade $http_upgrade; 43 | proxy_set_header Connection "Upgrade"; 44 | } 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM gregyankovoy/alpine-base 2 | 3 | ARG build_deps="build-base ncurses-dev autoconf automake git gettext-dev libmaxminddb-dev" 4 | ARG runtime_deps="nginx tini ncurses libintl libmaxminddb" 5 | ARG geolite_city_link="to be replaced by build agent" 6 | ARG geolite_version="to be replaced by build agent" 7 | 8 | WORKDIR /goaccess 9 | 10 | # Build goaccess with mmdb geoip 11 | RUN wget -q -O - https://github.com/allinurl/goaccess/archive/v1.4.tar.gz | tar --strip 1 -xzf - && \ 12 | apk add --update --no-cache ${build_deps} && \ 13 | autoreconf -fiv && \ 14 | ./configure --enable-utf8 --enable-geoip=mmdb && \ 15 | make && \ 16 | make install && \ 17 | rm -rf /tmp/goaccess/* /goaccess && \ 18 | apk del $build_deps 19 | 20 | # Get necessary runtime dependencies and set up configuration 21 | RUN apk add --update --no-cache ${runtime_deps} && \ 22 | mkdir -p /usr/local/share/GeoIP && \ 23 | wget -q -O- ${geolite_city_link} | tar -xz --strip 1 --directory /usr/local/share/GeoIP 24 | 25 | COPY /root / 26 | 27 | RUN chmod +x /usr/local/bin/goaccess.sh && \ 28 | chmod -R 777 /var/tmp/nginx 29 | 30 | EXPOSE 7889 31 | VOLUME [ "/config", "/opt/log" ] 32 | 33 | CMD [ "sh", "/usr/local/bin/goaccess.sh" ] -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # docker-goaccess 2 | This is an Alpine linux container which builds GoAccess including GeoIP. It reverse proxies the GoAccess HTML files and websockets through nginx, allowing GoAccess content to be viewed without any other setup. 3 | 4 | # Usage 5 | ## Example docker run 6 | ``` 7 | docker run --name goaccess -p 7889:7889 -v /path/to/host/nginx/logs:/opt/log -v /path/to/goaccess/storage:/config -d gregyankovoy/goaccess 8 | ``` 9 | 10 | ## Volume Mounts 11 | - /config 12 | - Used to store configuration and GoAccess generated files 13 | - /opt/log 14 | - Map to nginx log directory 15 | 16 | ## Variables 17 | - PUID 18 | - User Id of user to run nginx & GoAccess 19 | - PGID 20 | - User Group to run nginx & GoAccess 21 | 22 | ## Files 23 | - /config/goaccess.conf 24 | - GoAccess config file (populated with default config unless modified) 25 | - /config/html 26 | - GoAccess generated static HTML 27 | 28 | ## Reverse Proxy 29 | ### nginx 30 | ``` 31 | location ^~ /goaccess { 32 | resolver 127.0.0.11 valid=30s; 33 | set $upstream_goaccess goaccess; 34 | proxy_pass http://$upstream_goaccess:7889/; 35 | 36 | proxy_connect_timeout 1d; 37 | proxy_send_timeout 1d; 38 | proxy_read_timeout 1d; 39 | proxy_http_version 1.1; 40 | proxy_set_header Upgrade $http_upgrade; 41 | proxy_set_header Connection "Upgrade"; 42 | } 43 | ``` 44 | -------------------------------------------------------------------------------- /root/opt/goaccess.conf: -------------------------------------------------------------------------------- 1 | ###################################### 2 | # Time Format Options (required) 3 | ###################################### 4 | # 5 | # The hour (24-hour clock) [00,23]; leading zeros are permitted but not required. 6 | # The minute [00,59]; leading zeros are permitted but not required. 7 | # The seconds [00,60]; leading zeros are permitted but not required. 8 | # See `man strftime` for more details 9 | # 10 | # The following time format works with any of the 11 | # Apache/NGINX's log formats below. 12 | # 13 | #time-format %H:%M:%S 14 | # 15 | # Google Cloud Storage or 16 | # The time in microseconds since the Unix epoch. 17 | # 18 | #time-format %f 19 | 20 | # Squid native log format 21 | # 22 | #time-format %s 23 | 24 | ###################################### 25 | # Date Format Options (required) 26 | ###################################### 27 | # 28 | # The date-format variable followed by a space, specifies 29 | # the log format date containing any combination of regular 30 | # characters and special format specifiers. They all begin with a 31 | # percentage (%) sign. See `man strftime` 32 | # 33 | # The following date format works with any of the 34 | # Apache/NGINX's log formats below. 35 | # 36 | #date-format %d/%b/%Y 37 | # 38 | # AWS | Amazon CloudFront (Download Distribution) 39 | # AWS | Elastic Load Balancing 40 | # W3C (IIS) 41 | # 42 | #date-format %Y-%m-%d 43 | # 44 | # Google Cloud Storage or 45 | # The time in microseconds since the Unix epoch. 46 | # 47 | #date-format %f 48 | 49 | # Squid native log format 50 | # 51 | #date-format %s 52 | 53 | ###################################### 54 | # Log Format Options (required) 55 | ###################################### 56 | # 57 | # The log-format variable followed by a space or \t for 58 | # tab-delimited, specifies the log format string. 59 | # 60 | # NOTE: If the time/date is a timestamp in seconds or microseconds 61 | # %x must be used instead of %d & %t to represent the date & time. 62 | 63 | # NCSA Combined Log Format 64 | #log-format %h %^[%d:%t %^] "%r" %s %b "%R" "%u" 65 | 66 | # NCSA Combined Log Format with Virtual Host 67 | #log-format %v:%^ %h %^[%d:%t %^] "%r" %s %b "%R" "%u" 68 | 69 | # Common Log Format (CLF) 70 | #log-format %h %^[%d:%t %^] "%r" %s %b 71 | 72 | # Common Log Format (CLF) with Virtual Host 73 | #log-format %v:%^ %h %^[%d:%t %^] "%r" %s %b 74 | 75 | # W3C 76 | #log-format %d %t %h %^ %^ %^ %^ %r %^ %s %b %^ %^ %u %R 77 | 78 | # Squid native log format 79 | #log-format %^ %^ %^ %v %^: %x.%^ %~%L %h %^/%s %b %m %U 80 | 81 | # AWS | Amazon CloudFront (Download Distribution) 82 | #log-format %d\t%t\t%^\t%b\t%h\t%m\t%^\t%r\t%s\t%R\t%u\t%^ 83 | 84 | # Google Cloud Storage 85 | #log-format "%x","%h",%^,%^,"%m","%U","%s",%^,"%b","%D",%^,"%R","%u" 86 | 87 | # AWS | Elastic Load Balancing 88 | #log-format %dT%t.%^ %^ %h:%^ %^ %T %^ %^ %^ %s %^ %b "%r" "%u" 89 | 90 | # AWSS3 | Amazon Simple Storage Service (S3) 91 | #log-format %^[%d:%t %^] %h %^"%r" %s %^ %b %^ %L %^ "%R" "%u" 92 | 93 | # Virtualmin Log Format with Virtual Host 94 | #log-format %h %^ %v %^[%d:%t %^] "%r" %s %b "%R" "%u" 95 | 96 | # Kubernetes Nginx Ingress Log Format 97 | #log-format %^ %^ [%h] %^ %^ [%d:%t %^] "%r" %s %b "%R" "%u" %^ %^ [%v] %^:%^ %^ %T %^ %^ 98 | 99 | # In addition to specifying the raw log/date/time formats, for 100 | # simplicity, any of the following predefined log format names can be 101 | # supplied to the log/date/time-format variables. GoAccess can also 102 | # handle one predefined name in one variable and another predefined 103 | # name in another variable. 104 | # 105 | log-format COMBINED 106 | #log-format VCOMBINED 107 | #log-format COMMON 108 | #log-format VCOMMON 109 | #log-format W3C 110 | #log-format SQUID 111 | #log-format CLOUDFRONT 112 | #log-format CLOUDSTORAGE 113 | #log-format AWSELB 114 | #log-format AWSS3 115 | 116 | ###################################### 117 | # UI Options 118 | ###################################### 119 | 120 | # Choose among color schemes 121 | # 1 : Monochrome 122 | # 2 : Green 123 | # 3 : Monokai (if 256-colors supported) 124 | # 125 | #color-scheme 3 126 | 127 | # Prompt log/date configuration window on program start. 128 | # 129 | config-dialog false 130 | 131 | # Color highlight active panel. 132 | # 133 | hl-header true 134 | 135 | # Specify a custom CSS file in the HTML report. 136 | # 137 | #html-custom-css /path/file.css 138 | 139 | # Specify a custom JS file in the HTML report. 140 | # 141 | #html-custom-js /path/file.js 142 | 143 | # Set default HTML preferences. 144 | # 145 | # NOTE: A valid JSON object is required. 146 | # DO NOT USE A MULTILINE JSON OBJECT. 147 | # The parser will only parse the value next to `html-prefs` (single line) 148 | # It allows the ability to customize each panel plot. See example below. 149 | # 150 | #html-prefs {"theme":"bright","perPage":5,"layout":"horizontal","showTables":true,"visitors":{"plot":{"chartType":"bar"}}} 151 | 152 | # Set HTML report page title and header. 153 | # 154 | #html-report-title My Awesome Web Stats 155 | 156 | # Format JSON output using tabs and newlines. 157 | # 158 | json-pretty-print false 159 | 160 | # Turn off colored output. This is the default output on 161 | # terminals that do not support colors. 162 | # true : for no color output 163 | # false : use color-scheme 164 | # 165 | no-color false 166 | 167 | # Don't write column names in the terminal output. By default, it displays 168 | # column names for each available metric in every panel. 169 | # 170 | no-column-names false 171 | 172 | # Disable summary metrics on the CSV output. 173 | # 174 | no-csv-summary false 175 | 176 | # Disable progress metrics. 177 | # 178 | no-progress false 179 | 180 | # Disable scrolling through panels on TAB. 181 | # 182 | no-tab-scroll false 183 | 184 | # Disable progress metrics and parsing spinner. 185 | # 186 | #no-parsing-spinner true 187 | 188 | # Do not show the last updated field displayed in the HTML generated report. 189 | # 190 | #no-html-last-updated true 191 | 192 | # Enable mouse support on main dashboard. 193 | # 194 | with-mouse false 195 | 196 | # Maximum number of items to show per panel. 197 | # Note: Only the CSV and JSON outputs allow a maximum greater than the 198 | # default value of 366. 199 | # 200 | #max-items 366 201 | 202 | # Custom colors for the terminal output 203 | # Tailor GoAccess to suit your own tastes. 204 | # 205 | # Color Syntax: 206 | # DEFINITION space/tab colorFG#:colorBG# [[attributes,] PANEL] 207 | # 208 | # FG# = foreground color number [-1...255] (-1 = default terminal color) 209 | # BG# = background color number [-1...255] (-1 = default terminal color) 210 | # 211 | # Optionally: 212 | # 213 | # It is possible to apply color attributes, such as: 214 | # bold,underline,normal,reverse,blink. 215 | # Multiple attributes are comma separated 216 | # 217 | # If desired, it is possible to apply custom colors per panel, that is, a 218 | # metric in the REQUESTS panel can be of color A, while the same metric in the 219 | # BROWSERS panel can be of color B. 220 | # 221 | # The following is a 256 color scheme (hybrid palette) 222 | # 223 | #color COLOR_MTRC_HITS color110:color-1 224 | #color COLOR_MTRC_VISITORS color173:color-1 225 | #color COLOR_MTRC_DATA color221:color-1 226 | #color COLOR_MTRC_BW color167:color-1 227 | #color COLOR_MTRC_AVGTS color143:color-1 228 | #color COLOR_MTRC_CUMTS color247:color-1 229 | #color COLOR_MTRC_MAXTS color186:color-1 230 | #color COLOR_MTRC_PROT color109:color-1 231 | #color COLOR_MTRC_MTHD color139:color-1 232 | #color COLOR_MTRC_HITS_PERC color186:color-1 233 | #color COLOR_MTRC_HITS_PERC_MAX color139:color-1 234 | #color COLOR_MTRC_HITS_PERC_MAX color139:color-1 VISITORS 235 | #color COLOR_MTRC_HITS_PERC_MAX color139:color-1 OS 236 | #color COLOR_MTRC_HITS_PERC_MAX color139:color-1 BROWSERS 237 | #color COLOR_MTRC_HITS_PERC_MAX color139:color-1 VISIT_TIMES 238 | #color COLOR_MTRC_VISITORS_PERC color186:color-1 239 | #color COLOR_MTRC_VISITORS_PERC_MAX color139:color-1 240 | #color COLOR_PANEL_COLS color243:color-1 241 | #color COLOR_BARS color250:color-1 242 | #color COLOR_ERROR color231:color167 243 | #color COLOR_SELECTED color7:color167 244 | #color COLOR_PANEL_ACTIVE color7:color237 245 | #color COLOR_PANEL_HEADER color250:color235 246 | #color COLOR_PANEL_DESC color242:color-1 247 | #color COLOR_OVERALL_LBLS color243:color-1 248 | #color COLOR_OVERALL_VALS color167:color-1 249 | #color COLOR_OVERALL_PATH color186:color-1 250 | #color COLOR_ACTIVE_LABEL color139:color235 bold underline 251 | #color COLOR_BG color250:color-1 252 | #color COLOR_DEFAULT color243:color-1 253 | #color COLOR_PROGRESS color7:color110 254 | 255 | ###################################### 256 | # Server Options 257 | ###################################### 258 | 259 | # Specify IP address to bind server to. 260 | # 261 | #addr 0.0.0.0 262 | 263 | # Run GoAccess as daemon (if --real-time-html enabled). 264 | # 265 | #daemonize false 266 | 267 | # Ensure clients send the specified origin header upon the WebSocket 268 | # handshake. 269 | # 270 | #origin http://example.org 271 | 272 | # The port to which the connection is being attempted to connect. 273 | # By default GoAccess' WebSocket server listens on port 7890 274 | # See man page or http://gwsocket.io for details. 275 | # 276 | #port 7890 277 | 278 | # Write the PID to a file when used along the daemonize option. 279 | # 280 | #pid-file /var/run/goaccess.pid 281 | 282 | # Enable real-time HTML output. 283 | # 284 | real-time-html true 285 | 286 | # Path to TLS/SSL certificate. 287 | # Note that ssl-cert and ssl-key need to be used to enable TLS/SSL. 288 | # 289 | #ssl-cert /path/ssl/domain.crt 290 | 291 | # Path to TLS/SSL private key. 292 | # Note that ssl-cert and ssl-key need to be used to enable TLS/SSL. 293 | # 294 | #ssl-key /path/ssl/domain.key 295 | 296 | # URL to which the WebSocket server responds. This is the URL supplied 297 | # to the WebSocket constructor on the client side. 298 | # 299 | # Optionally, it is possible to specify the WebSocket URI scheme, such as ws:// 300 | # or wss:// for unencrypted and encrypted connections. 301 | # e.g., ws-url wss://goaccess.io 302 | # 303 | # If GoAccess is running behind a proxy, you could set the client side 304 | # to connect to a different port by specifying the host followed by a 305 | # colon and the port. 306 | # e.g., ws-url goaccess.io:9999 307 | # 308 | # By default, it will attempt to connect to localhost. If GoAccess is 309 | # running on a remote server, the host of the remote server should be 310 | # specified here. Also, make sure it is a valid host and NOT an http 311 | # address. 312 | # 313 | #ws-url goaccess.io 314 | 315 | # Path to read named pipe (FIFO). 316 | # 317 | #fifo-in /tmp/wspipein.fifo 318 | 319 | # Path to write named pipe (FIFO). 320 | # 321 | #fifo-in /tmp/wspipeout.fifo 322 | 323 | ###################################### 324 | # File Options 325 | ###################################### 326 | 327 | # Specify the path to the input log file. If set, it will take 328 | # priority over -f from the command line. 329 | # 330 | log-file /opt/log/access.log 331 | 332 | # Send all debug messages to the specified file. 333 | # 334 | #debug-file debug.log 335 | 336 | # Specify a custom configuration file to use. If set, it will take 337 | # priority over the global configuration file (if any). 338 | # 339 | #config-file 340 | 341 | # Log invalid requests to the specified file. 342 | # 343 | #invalid-requests 344 | 345 | # Do not load the global configuration file. 346 | # 347 | #no-global-config false 348 | 349 | ###################################### 350 | # Parse Options 351 | ###################################### 352 | 353 | # Enable a list of user-agents by host. For faster parsing, do not 354 | # enable this flag. 355 | # 356 | agent-list false 357 | 358 | # Enable IP resolver on HTML|JSON|CSV output. 359 | # 360 | with-output-resolver false 361 | 362 | # Exclude an IPv4 or IPv6 from being counted. 363 | # Ranges can be included as well using a dash in between 364 | # the IPs (start-end). 365 | # 366 | #exclude-ip 127.0.0.1 367 | #exclude-ip 192.168.0.1-192.168.0.100 368 | #exclude-ip ::1 369 | #exclude-ip 0:0:0:0:0:ffff:808:804-0:0:0:0:0:ffff:808:808 370 | 371 | # Include HTTP request method if found. This will create a 372 | # request key containing the request method + the actual request. 373 | # 374 | # [default: yes] 375 | # 376 | http-method yes 377 | 378 | # Include HTTP request protocol if found. This will create a 379 | # request key containing the request protocol + the actual request. 380 | # 381 | # [default: yes] 382 | # 383 | http-protocol yes 384 | 385 | # Write output to stdout given one of the following files and the 386 | # corresponding extension for the output format: 387 | # 388 | # /path/file.csv - Comma-separated values (CSV) 389 | # /path/file.json - JSON (JavaScript Object Notation) 390 | # /path/file.html - HTML 391 | # 392 | output /config/html/index.html 393 | 394 | # Ignore request's query string. 395 | # i.e., www.google.com/page.htm?query => www.google.com/page.htm 396 | # 397 | # Note: Removing the query string can greatly decrease memory 398 | # consumption, especially on timestamped requests. 399 | # 400 | no-query-string false 401 | 402 | # Disable IP resolver on terminal output. 403 | # 404 | no-term-resolver false 405 | 406 | # Treat non-standard status code 444 as 404. 407 | # 408 | 444-as-404 false 409 | 410 | # Add 4xx client errors to the unique visitors count. 411 | # 412 | 4xx-to-unique-count false 413 | 414 | # Store accumulated processing time from parsing day-by-day logs. 415 | # Only if configured with --enable-tcb=btree 416 | # 417 | #accumulated-time false 418 | 419 | # IP address anonymization 420 | # The IP anonymization option sets the last octet of IPv4 user IP addresses and 421 | # the last 80 bits of IPv6 addresses to zeros. 422 | # e.g., 192.168.20.100 => 192.168.20.0 423 | # e.g., 2a03:2880:2110:df07:face:b00c::1 => 2a03:2880:2110:df07:: 424 | # 425 | #anonymize-ip false 426 | 427 | # Include static files that contain a query string in the static files 428 | # panel. 429 | # e.g., /fonts/fontawesome-webfont.woff?v=4.0.3 430 | # 431 | all-static-files false 432 | 433 | # Include an additional delimited list of browsers/crawlers/feeds etc. 434 | # See config/browsers.list for an example or 435 | # https://raw.githubusercontent.com/allinurl/goaccess/master/config/browsers.list 436 | # 437 | #browsers-file 438 | 439 | # Date specificity. Possible values: `date` (default), or `hr`. 440 | # 441 | #date-spec hr 442 | 443 | # Decode double-encoded values. 444 | # 445 | double-decode false 446 | 447 | # Enable parsing/displaying the given panel. 448 | # 449 | #enable-panel VISITORS 450 | #enable-panel REQUESTS 451 | #enable-panel REQUESTS_STATIC 452 | #enable-panel NOT_FOUND 453 | #enable-panel HOSTS 454 | #enable-panel OS 455 | #enable-panel BROWSERS 456 | #enable-panel VISIT_TIMES 457 | #enable-panel VIRTUAL_HOSTS 458 | #enable-panel REFERRERS 459 | #enable-panel REFERRING_SITES 460 | #enable-panel KEYPHRASES 461 | #enable-panel STATUS_CODES 462 | #enable-panel REMOTE_USER 463 | #enable-panel GEO_LOCATION 464 | 465 | # Hide a referer but still count it. Wild cards are allowed. i.e., *.bing.com 466 | # 467 | #hide-referer *.google.com 468 | #hide-referer bing.com 469 | 470 | # Hour specificity. Possible values: `hr` (default), or `min` (tenth 471 | # of a minute). 472 | # 473 | #hour-spec min 474 | 475 | # Ignore crawlers from being counted. 476 | # This will ignore robots listed under browsers.c 477 | # Note that it will count them towards the total 478 | # number of requests, but excluded from any of the panels. 479 | # 480 | ignore-crawlers false 481 | 482 | # Parse and display crawlers only. 483 | # This will ignore robots listed under browsers.c 484 | # Note that it will count them towards the total 485 | # number of requests, but excluded from any of the panels. 486 | # 487 | crawlers-only false 488 | 489 | # Ignore static file requests. 490 | # req : Only ignore request from valid requests 491 | # panels : Ignore request from panels. 492 | # Note that it will count them towards the total number of requests 493 | # ignore-statics req 494 | 495 | # Ignore parsing and displaying the given panel. 496 | # 497 | #ignore-panel VISITORS 498 | #ignore-panel REQUESTS 499 | #ignore-panel REQUESTS_STATIC 500 | #ignore-panel NOT_FOUND 501 | #ignore-panel HOSTS 502 | #ignore-panel OS 503 | #ignore-panel BROWSERS 504 | #ignore-panel VISIT_TIMES 505 | #ignore-panel VIRTUAL_HOSTS 506 | ignore-panel REFERRERS 507 | #ignore-panel REFERRING_SITES 508 | ignore-panel KEYPHRASES 509 | #ignore-panel STATUS_CODES 510 | #ignore-panel REMOTE_USER 511 | #ignore-panel GEO_LOCATION 512 | 513 | # Ignore referers from being counted. 514 | # This supports wild cards. For instance, 515 | # '*' matches 0 or more characters (including spaces) 516 | # '?' matches exactly one character 517 | # 518 | #ignore-referer *.domain.com 519 | #ignore-referer ww?.domain.* 520 | 521 | # Ignore parsing and displaying one or multiple status code(s) 522 | # 523 | #ignore-status 400 524 | #ignore-status 502 525 | 526 | # Disable client IP validation. Useful if IP addresses have been 527 | # obfuscated before being logged. 528 | # 529 | # no-ip-validation true 530 | 531 | # Number of lines from the access log to test against the provided 532 | # log/date/time format. By default, the parser is set to test 10 533 | # lines. If set to 0, the parser won't test any lines and will parse 534 | # the whole access log. 535 | # 536 | #num-tests 10 537 | 538 | # Parse log and exit without outputting data. 539 | # 540 | #process-and-exit false 541 | 542 | # Display real OS names. e.g, Windows XP, Snow Leopard. 543 | # 544 | real-os true 545 | 546 | # Sort panel on initial load. 547 | # Sort options are separated by comma. 548 | # Options are in the form: PANEL,METRIC,ORDER 549 | # 550 | # Available metrics: 551 | # BY_HITS - Sort by hits 552 | # BY_VISITORS - Sort by unique visitors 553 | # BY_DATA - Sort by data 554 | # BY_BW - Sort by bandwidth 555 | # BY_AVGTS - Sort by average time served 556 | # BY_CUMTS - Sort by cumulative time served 557 | # BY_MAXTS - Sort by maximum time served 558 | # BY_PROT - Sort by http protocol 559 | # BY_MTHD - Sort by http method 560 | # Available orders: 561 | # ASC 562 | # DESC 563 | # 564 | #sort-panel VISITORS,BY_DATA,ASC 565 | #sort-panel REQUESTS,BY_HITS,ASC 566 | #sort-panel REQUESTS_STATIC,BY_HITS,ASC 567 | #sort-panel NOT_FOUND,BY_HITS,ASC 568 | #sort-panel HOSTS,BY_HITS,ASC 569 | #sort-panel OS,BY_HITS,ASC 570 | #sort-panel BROWSERS,BY_HITS,ASC 571 | #sort-panel VISIT_TIMES,BY_DATA,DESC 572 | #sort-panel VIRTUAL_HOSTS,BY_HITS,ASC 573 | #sort-panel REFERRERS,BY_HITS,ASC 574 | #sort-panel REFERRING_SITES,BY_HITS,ASC 575 | #sort-panel KEYPHRASES,BY_HITS,ASC 576 | #sort-panel STATUS_CODES,BY_HITS,ASC 577 | #sort-panel REMOTE_USER,BY_HITS,ASC 578 | #sort-panel GEO_LOCATION,BY_HITS,ASC 579 | 580 | # Consider the following extensions as static files 581 | # The actual '.' is required and extensions are case sensitive 582 | # For a full list, uncomment the less common static extensions below. 583 | # 584 | static-file .css 585 | static-file .js 586 | static-file .jpg 587 | static-file .png 588 | static-file .gif 589 | static-file .ico 590 | static-file .jpeg 591 | static-file .pdf 592 | static-file .csv 593 | static-file .mpeg 594 | static-file .mpg 595 | static-file .swf 596 | static-file .woff 597 | static-file .woff2 598 | static-file .xls 599 | static-file .xlsx 600 | static-file .doc 601 | static-file .docx 602 | static-file .ppt 603 | static-file .pptx 604 | static-file .txt 605 | static-file .zip 606 | static-file .ogg 607 | static-file .mp3 608 | static-file .mp4 609 | static-file .exe 610 | static-file .iso 611 | static-file .gz 612 | static-file .rar 613 | static-file .svg 614 | static-file .bmp 615 | static-file .tar 616 | static-file .tgz 617 | static-file .tiff 618 | static-file .tif 619 | static-file .ttf 620 | static-file .flv 621 | #static-file .less 622 | #static-file .ac3 623 | #static-file .avi 624 | #static-file .bz2 625 | #static-file .class 626 | #static-file .cue 627 | #static-file .dae 628 | #static-file .dat 629 | #static-file .dts 630 | #static-file .ejs 631 | #static-file .eot 632 | #static-file .eps 633 | #static-file .img 634 | #static-file .jar 635 | #static-file .map 636 | #static-file .mid 637 | #static-file .midi 638 | #static-file .ogv 639 | #static-file .webm 640 | #static-file .mkv 641 | #static-file .odp 642 | #static-file .ods 643 | #static-file .odt 644 | #static-file .otf 645 | #static-file .pict 646 | #static-file .pls 647 | #static-file .ps 648 | #static-file .qt 649 | #static-file .rm 650 | #static-file .svgz 651 | #static-file .wav 652 | #static-file .webp 653 | 654 | ###################################### 655 | # GeoIP Options 656 | # Only if configured with --enable-geoip 657 | ###################################### 658 | 659 | # Standard GeoIP database for less memory usage. 660 | # 661 | # std-geoip true 662 | 663 | # Specify path to GeoIP database file. i.e., GeoLiteCity.dat 664 | # .dat file needs to be downloaded from maxmind.com. 665 | # 666 | # For IPv4 City database: 667 | # wget -N http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz 668 | # gunzip GeoLiteCity.dat.gz 669 | # 670 | # For IPv6 City database: 671 | # wget -N http://geolite.maxmind.com/download/geoip/database/GeoLiteCityv6-beta/GeoLiteCityv6.dat.gz 672 | # gunzip GeoLiteCityv6.dat.gz 673 | # 674 | # For IPv6 Country database: 675 | # wget -N http://geolite.maxmind.com/download/geoip/database/GeoIPv6.dat.gz 676 | # gunzip GeoIPv6.dat.gz 677 | # 678 | # For GeoIP2 City database: 679 | # wget -N http://geolite.maxmind.com/download/geoip/database/GeoLite2-City.mmdb.gz 680 | # gunzip GeoLite2-City.mmdb.gz 681 | # 682 | # For GeoIP2 Country database: 683 | # wget -N http://geolite.maxmind.com/download/geoip/database/GeoLite2-Country.mmdb.gz 684 | # gunzip GeoLite2-Country.mmdb.gz 685 | # 686 | # Note: `geoip-city-data` is an alias of `geoip-database` 687 | # 688 | geoip-database /usr/local/share/GeoIP/GeoLite2-City.mmdb 689 | 690 | ###################################### 691 | # Tokyo Cabinet Options 692 | # Only if configured with --enable-tcb=btree 693 | ###################################### 694 | 695 | # GoAccess has the ability to process logs incrementally through the on-disk 696 | # B+Tree database. 697 | # 698 | # It works in the following way: 699 | # - A data set must be persisted first with --keep-db-files, then the same data 700 | # set can be loaded with --load-from-disk. 701 | # - If new data is passed (piped or through a log file), it will append it to 702 | # the original data set. 703 | # - To preserve the data at all times, --keep-db-files must be used. 704 | # - If --load-from-disk is used without --keep-db-files, database files will be 705 | # deleted upon closing the program. 706 | 707 | # On-disk B+ Tree 708 | # Persist parsed data into disk. This should be set to 709 | # the first dataset prior to use `load-from-disk`. 710 | # Setting it to false will delete all database files 711 | # when exiting the program. 712 | #keep-db-files true 713 | 714 | # On-disk B+ Tree 715 | # Load previously stored data from disk. 716 | # Database files need to exist. See `keep-db-files`. 717 | #load-from-disk false 718 | 719 | # On-disk B+ Tree 720 | # Path where the on-disk database files are stored. 721 | # The default value is the /tmp/ directory 722 | # Note the trailing forward-slash. 723 | # 724 | #db-path /tmp/ 725 | 726 | # On-disk B+ Tree 727 | # Set the size in bytes of the extra mapped memory. 728 | # The default value is 0. 729 | # 730 | #xmmap 0 731 | 732 | # On-disk B+ Tree 733 | # Max number of leaf nodes to be cached. 734 | # Specifies the maximum number of leaf nodes to be cached. 735 | # If it is not more than 0, the default value is specified. 736 | # The default value is 1024. 737 | # 738 | #cache-lcnum 1024 739 | 740 | # On-disk B+ Tree 741 | # Specifies the maximum number of non-leaf nodes to be cached. 742 | # If it is not more than 0, the default value is specified. 743 | # The default value is 512. 744 | # 745 | #cache-ncnum 512 746 | 747 | # On-disk B+ Tree 748 | # Specifies the number of members in each leaf page. 749 | # If it is not more than 0, the default value is specified. 750 | # The default value is 128. 751 | # 752 | #tune-lmemb 128 753 | 754 | # On-disk B+ Tree 755 | # Specifies the number of members in each non-leaf page. 756 | # If it is not more than 0, the default value is specified. 757 | # The default value is 256. 758 | # 759 | #tune-nmemb 256 760 | 761 | # On-disk B+ Tree 762 | # Specifies the number of elements of the bucket array. 763 | # If it is not more than 0, the default value is specified. 764 | # The default value is 32749. 765 | # Suggested size of the bucket array is about from 1 to 4 766 | # times of the number of all pages to be stored. 767 | # 768 | #tune-bnum 32749 769 | 770 | # On-disk B+ Tree 771 | # Specifies that each page is compressed with ZLIB|BZ2 encoding. 772 | # Disabled by default. 773 | # 774 | #compression zlib 775 | --------------------------------------------------------------------------------