goaccess-for-nginxproxymanager
goaccess-for-nginxproxymanager copied to clipboard
GoAccess Docker Image for Nginx Proxy Manager and more...
GoAccess for Nginx Proxy Manager Logs (and TRAEFIK and CUSTOM)
Still in development... You might need to wait a bit if you have a large amount of logs for it to parse.
New to creating docker images so bear with me. I did this more for me then for public consumption but it appears to work so maybe someone might find it useful.
Dependencies:
- GoAccess version: 1.6.2
- GeoLite2-City.mmdb (2022-08-02)
Docker
- Image: https://hub.docker.com/r/xavierh/goaccess-for-nginxproxymanager
- OS/ARCH
- linux/amd64
- linux/arm/v7
- linux/arm64/v8
- ARM also available from Just5KY - justsky/goaccess-for-nginxproxymanager
- Tags: https://hub.docker.com/r/xavierh/goaccess-for-nginxproxymanager/tags
- stable - xavierh/goaccess-for-nginxproxymanager:latest
- latest stable development - xavierh/goaccess-for-nginxproxymanager:develop
Github Repo
- https://github.com/xavier-hernandez/goaccess-for-nginxproxymanager
goaccess:
image: xavierh/goaccess-for-nginxproxymanager:latest
container_name: goaccess
restart: always
environment:
- TZ=America/New_York
- SKIP_ARCHIVED_LOGS=False #optional
- DEBUG=False #optional
- BASIC_AUTH=False #optional
- BASIC_AUTH_USERNAME=user #optional
- BASIC_AUTH_PASSWORD=pass #optional
- EXCLUDE_IPS=127.0.0.1 #optional - comma delimited list
- LOG_TYPE=NPM #optional - more information below
ports:
- '7880:7880'
volumes:
- /path/to/host/nginx/logs:/opt/log
- /path/to/host/custom:/opt/custom #optional, required if using log_type = CUSTOM
If you have permission issues, you can add PUID and PGID with the correct user id that has read access to the log files.
goaccess:
image: xavierh/goaccess-for-nginxproxymanager:latest
container_name: goaccess
restart: always
ports:
- '7880:7880'
environment:
- PUID=0
- PGID=0
- TZ=America/New_York
- SKIP_ARCHIVED_LOGS=False #optional
- DEBUG=False #optional
- BASIC_AUTH=False #optional
- BASIC_AUTH_USERNAME=user #optional
- BASIC_AUTH_PASSWORD=pass #optional
- EXCLUDE_IPS=127.0.0.1 #optional - comma delimited
- LOG_TYPE=NPM #optional - more information below
volumes:
- /path/to/host/nginx/logs:/opt/log
- /path/to/host/custom:/opt/custom #optional, required if using log_type = CUSTOM
Parameter | Function |
---|---|
-e SKIP_ARCHIVED_LOGS=True/False |
(Optional) Defaults to False. Set to True to skip archived logs, i.e. proxy-host*.gz |
-e DEBUG=True/False |
(Optional) HTML version of the running goaccess.conf within the container |
-e BASIC_AUTH=True/False |
(Optional) Defaults to False. Set to True to enable nginx basic authentication. Docker container needs to stopped or restarted each time this flag is modified. This allows for the .htpasswd file to be changed accordingly. |
-e BASIC_AUTH_USERNAME=user |
(Optional) Requires BASIC_AUTH to bet set to True. Username for basic authentication. |
-e BASIC_AUTH_PASSWORD=pass |
(Optional) Requires BASIC_AUTH to bet set to True. Password for basic authentication. |
-e EXCLUDE_IPS= |
(Optional) IP Addresses or range of IPs delimited by comma refer to https://goaccess.io/man. For example: 192.168.0.1-192.168.0.100 or 127.0.0.1,192.168.0.1-192.168.0.100 |
-e LOG_TYPE= |
(Optional) By default the configuration will be set to read NPM logs. Options are: CUSTOM, NPM, NPM+R, TRAEFIK, NCSA_COMBINED. More information below. |
-e LOG_TYPE_FILE_PATTERN= |
(Optional) Only to be used with LOG_TYPE=NCSA_COMBINED. This parameter will pass along the file type you are trying match. For example you can pass -e LOG_TYPE_FILE_PATTERN="*.log" or -e LOG_TYPE_FILE_PATTERN="access.log". The default is *.log. Please keep it simple as I have not tested this completely. Use at your own RISK! |
Additional environment information
-e LOG_TYPE=
- Options:
- CUSTOM
- this feature will load your own configuration
- an additional volume must be included
- /path/to/host/custom:/opt/custom
- volume should include
- goaccess.conf
- this is your custom config
- container will exit if no file is found
- leave the default port number at 7890
- goaccess.conf
- environment parameters that will not work and will be ignored
- SKIP_ARCHIVED_LOGS
- EXCLUDE_IPS
- NPM (default if variable is empty or not included)
- the following file(s) are read and parsed.
- proxy-host-*_access.log.gz
- proxy-host-*_access.log
- proxy*host-*.log
- the following file(s) are read and parsed.
- NPM+R
- a second instance of GOACCESS is created
- append "/redirection" to the url to access the instance, for example http://localhost:7880/redirection/
- the following file(s) are read and parsed.
- redirection*host-.log.gz
- redirection*host-*.log
- TRAEFIK
- environment parameters that will not work and will be ignored
- SKIP_ARCHIVED_LOGS
- the following file(s) are read and parsed.
- access.log
- environment parameters that will not work and will be ignored
- NCSA_COMBINED
- environment parameters that will not work and will be ignored
- SKIP_ARCHIVED_LOGS
- by default the following file(s) are read and parsed.
- *.log
- environment parameters that will not work and will be ignored
- CUSTOM
LOG FORMATS
NPM PROXY LOG FORMAT
time-format %T
date-format %d/%b/%Y
log_format [%d:%t %^] %^ %^ %s - %m %^ %v "%U" [Client %h] [Length %b] [Gzip %^] [Sent-to %^] "%u" "%R"
NPM REDIRECTION LOG FORMAT
time-format %T
date-format %d/%b/%Y
log_format [%d:%t %^] %s - %m %^ %v "%U" [Client %h] [Length %b] [Gzip %^] "%u" "%R"
TRAEFIK ACCESS LOG FORMAT
time-format %T
date-format %d/%b/%Y
log-format %h %^[%d:%t %^] "%r" %s %b "%R" "%u" %Lm"
Possible Issues
- A lot of CPU Usage and 10000 request every second in webUI
- https://github.com/xavier-hernandez/goaccess-for-nginxproxymanager/issues/38
- If your using NPM to proxy the container you need to turn on websockets support
- https://github.com/xavier-hernandez/goaccess-for-nginxproxymanager/issues/69
Thanks
To https://github.com/GregYankovoy for the inspiration, and for their nginx.conf :)
Users:
- Just5KY
- martadinata666
Disclaimer
This product includes GeoLite2 data created by MaxMind, available from https://www.maxmind.com.