iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more
Antihost offers Linux VPS plans with full root access, unlimited traffic on a 1 Gbps port and a 14-day free trial.
Install GoAccess from your Linux distribution, point it at the web server’s access log, and choose the output that fits your job: a terminal report for SSH troubleshooting, a static HTML snapshot for sharing, or a real-time HTML dashboard for ongoing monitoring. The commands below cover Nginx and Apache, custom and combined log formats, rotated gzip files, WebSocket settings, and the security controls needed when logs contain private request data.
What GoAccess does on a VPS
GoAccess is an open-source, real-time web log analyzer and interactive viewer. It runs in a terminal on Unix-like systems or in a browser, parsing web-server access logs into HTTP statistics. The project documentation describes it as a tool for system administrators, DevOps engineers and security professionals.
The Tool Desk
Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →Outbyte Driver Updater FREEFix the driver behind crashes, sound loss and screen glitchesFind Drivers →It can produce terminal views, self-contained HTML, real-time HTML, JSON and CSV output. Supported log families include Apache, Nginx, Amazon S3, Elastic Load Balancing, CloudFront and Caddy formats. On a VPS, that means you can inspect traffic over SSH without deploying a separate analytics service, then publish a browser dashboard when a longer-lived view is useful.
What the report contains
Depending on the log data and enabled features, the interface includes panels for valid and invalid requests, analysis time, unique visitors, requested files, static files, HTTP referrers, 404 responses, parsed log size and bandwidth. These are measurements of requests recorded by the web server; they are not a replacement for application-level events that never reach the access log.
#1 Best Overall
- Powerful Turbo Fan:CAGIWIRU Electric Air Duster have reached speed up to 130000RPM,Can efficient remove dust and debris.With LED light and Three Adjustable Speed to meet with different cleaning tasks.
- With Attached USB C Fasting Charging cable.Charing 3 hours,Enjoy up to 240 minutes of use on the lowest setting, For third speed can use for 25mins.with four charging options to meet with your needs.
- Wide Application: attached 5 different nozzles,making it suitable for a variety of scenes, such as car,pet, pc, keyboards, and other electronic devices. It also serves for office and home clean duster.
- Handy Design & Portable:Cordless air duster electric nozzle is Light weight and small size, design and comfortable to hold and space saving, convenient to carry around. You can put it in your room or inside the car without taking up space.
- Economical &Reusable: Built durable materials with a long-lasting battery,our CAGIWIRU air duster it's a sustainable alternative to disposable air cans.
Before installing
- Use a supported Linux VPS distribution and an account that can run
sudo, or obtain equivalent administrator access. - Identify the active access-log path in the Nginx or Apache configuration. Common defaults are
/var/log/nginx/access.logand/var/log/apache2/access.log, but virtual hosts and hosting panels can use different paths. - Confirm that the account running GoAccess can read the log. If the file is readable only by root, run the command with
sudoor arrange a least-privilege group or copy rather than making the log world-readable. - Decide whether you need a one-time terminal analysis, a static HTML file, or a live HTML dashboard before opening any firewall ports.
Access logs can contain full URLs, query strings, referrers and client addresses. Treat every generated report as sensitive operational data and choose its exposure model before placing it under a public document root.
Install GoAccess
Debian and Ubuntu packages
For most Debian or Ubuntu VPSs, install the distribution package:
sudo apt update
sudo apt install goaccess
The package maintained by your distribution is the simplest option, but it may lag the latest stable GoAccess release. If you require the current project package, GoAccess documents an official Debian/Ubuntu repository. Follow that project’s current repository-key and signed-source instructions rather than copying an old signing key from an unrelated tutorial.
Fedora and Arch packages
On Fedora, the documented package command is:
sudo yum install goaccess
On Arch Linux, use:
sudo pacman -S goaccess
Package names and versions can vary by distribution release. After installation, verify that the executable is available:
goaccess --version
Building from source
A source build is useful when the repository version is too old or when you need optional capabilities that your package omitted. The project’s source instructions document an UTF-8 build with --enable-utf8, optional GeoIP2 support, and --with-zlib. Zlib support lets GoAccess read .gz logs directly. Use the dependency and signing instructions for the release you are building; do not assume a command written for one distribution applies unchanged to another.
Run your first analysis against Nginx or Apache
Let GoAccess ask for the predefined format
If you are unsure which built-in format matches the file, run the configuration prompt:
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
goaccess /var/log/nginx/access.log -c
Select the format that matches the actual line structure. Substitute the Apache path when appropriate:
Rank #2
- Screen Cleaner is Your Screen’s New Bestfriend! - EVEO is proud to present a screen cleaner that’s perfectly suited for your TV. Meet your new screen cleaner, computer screen cleaner, laptop cleaner, iPad cleaner, Macbook,tv cleaner or any other electronic device. Our screen cleaner spray and wipe along with the included plush microfiber cloth, easily removes dust, fingerprints & other smudges on the screen’s surface. Clean effectively for a streak-free screen
- Gentle on your Screens - Our screen cleaner spray and wipes is compatible to be used even for the most sensitive LCD, LED, CRT, and OLED screens in proper use. Be at ease knowing that this product is compatible with all the major brands: LG, SONY, Samsung, Sharp, iPad, iPhone, Android screens, Kindle, PC monitors - we’ve got you covered! Can be used as LCD screen cleaner, tv cleaner, smart tv screen cleaner, and more
- Premium Super Soft Plush Microfiber Cloth - Included in this efficient screen cleaning kit. This screen cleaner spray and wipe has our signature plush microfiber cloth specially designed to comply with screens and monitors and leave them streak-free. Has been shown to effectively absorbs stubborn stains, zero streaks, and no fiber shedding. Always use this together with our screen cleaner for the best results
- Easy-to-Use Screen Cleaner Kit + microfiber cleaning cloth - The EVEO Screen Cleaning Kit will easily be your new favorite tool when it comes to taking care of the things you love most, quick and easy solution for a streak-free screen. Simply screw on the sprayer gun on the screen cleaner bottle. Spray the cleaning liquid onto the microfiber cloth, then wipe the screen until desired cleanliness & shine is achieved.
- Quality Screen Care Kit Worth Purchasing - Enjoy a convenient Screen Cleaner anytime, anywhere you need it. Your satisfaction is our top priority. We stand behind the quality of our products and that’s why, you shouldn’t be worrying at all. We manufacture the Best Screen Cleaner. and can be used for laptop cleaning kit, laptop screen cleaner, tv screen cleaner for smart tv. MacBook screen cleaner, monitor cleaner or screen cleaner spray for electronic devices with microfiber cleaning cloth
goaccess /var/log/apache2/access.log -c
Use the standard combined format explicitly
For a conventional combined access log, specify the format directly:
goaccess /var/log/nginx/access.log --log-format=COMBINED
The same option works with an Apache access log:
goaccess /var/log/apache2/access.log --log-format=COMBINED
COMBINED is not a universal parser. Nginx and Apache configurations can add, remove or reorder fields, and JSON or application-specific lines need a matching custom GoAccess format. If the first run is empty or values appear in the wrong columns, inspect one real log line and compare every field with the format definition instead of trying random presets.
Check that the input is really the active log
Before diagnosing GoAccess, confirm that the file contains recent records and that the web server is writing to it. A correctly installed analyzer cannot display requests that are being written to another virtual-host file, a container volume, journald, or a rotated file you did not provide.
Outdated Drivers Are Slowing You Down
One free scan finds every outdated or missing driver and matches the right update for your exact hardware.Free scan · exact hardware matchWindows Errors? Fix Them Before They Spread
Repair common Windows errors and clear accumulated junk for a smoother, more stable PC - no reinstall needed.Free scan · no reinstallChoose an output mode
| Mode | Typical command | Best use | Important constraint |
|---|---|---|---|
| Terminal | goaccess LOG --log-format=COMBINED |
Interactive SSH troubleshooting and quick checks | Requires an SSH session or terminal multiplexer |
| Static HTML | goaccess LOG -o /var/www/html/goaccess.html --log-format=COMBINED |
A snapshot that a browser can open | It does not update unless you regenerate it |
| Real-time HTML | goaccess LOG -o /var/www/html/goaccess.html --log-format=COMBINED --real-time-html |
A dashboard that receives new records while GoAccess runs | Needs a reachable WebSocket endpoint and a continuously running process |
| JSON or CSV | Use the corresponding GoAccess output option | Further processing or scheduled exports | The consuming system must handle the exported schema |
Generate a static HTML report
Place the generated file below the document root of an HTTP server. On a typical Nginx VPS:
sudo goaccess /var/log/nginx/access.log -o /var/www/html/goaccess.html --log-format=COMBINED
Debian’s GoAccess manpage notes that an HTTP server is required to serve the generated HTML file. The command reads the log, writes a snapshot, and exits. If the web server serves the file successfully, open the report at the corresponding path on your site or internal hostname.
Protect the report
Do not treat the document root as a security boundary. Restrict the report with HTTP authentication, an IP allowlist, a private network location, or an equivalent access-control policy. A report can reveal paths that should not be advertised, referrers, query parameters and client information. If the dashboard is only for the operator, serving it on localhost and viewing it through an SSH tunnel is safer than publishing it publicly.
Refresh a static report
A static file has no process watching the log. Regenerate it after the period you want to inspect, or schedule the command with your operating system’s task scheduler. Use an atomic replacement strategy if readers may open the file while it is being written, and ensure the scheduled account can read the log and write the destination.
Rank #3
- 【Large size】:Measuring 800 x 300 mm/ 31. 5×12 inches, which is wider and taller than others. Large mouse pad can perfectly fit your keyboard and mouse of any size, and there is also ample space for peripherals such as phones, tablets, etc.
- 【LED backlight mouse pad】:Blade Hawks RGB mouse pad provides 7 static modes and 7 dynamic modes will give you the options you are looking for. Power-off memory function remembers the last lighting mode you selected. The super glow fiber Chroma will give you a colorful gaming setup that you want.
- 【Anti-slip rubber base】:Made from Natural rubber, this gaming mousepad will firmly grip your desktop, allowing you to enjoy the ultimate precision in the games you are most passionate about. It also comes with a texture that enhances this ability even further.
- 【Smooth and waterproof surface】: Micro-textured cloth surface, for extremely precise mouse control and a smooth movement. When liquid splashes on the gaming mouse pad, it forms water droplets and slides down. Will not delay your work or gameplay.
- 【Plug and play】: This mouse and keyboard pad is powered by USB, plug and play, no driver required. One button control light modes. Press one time to change the lighting mode, press twice to change the brightness, press and hold about 3 seconds turn ON/OFF.
Create a real-time HTML dashboard
Add --real-time-html to start the WebSocket process that feeds new data to the browser:
sudo goaccess /var/log/nginx/access.log -o /var/www/html/goaccess.html --log-format=COMBINED --real-time-html
GoAccess listens on TCP port 7890 by default for the real-time WebSocket service. The command must keep running; if the process exits, the existing HTML file may still load, but it will stop receiving updates.
Choose the listener address and port
Use --port=9870 to select a different WebSocket port:
sudo goaccess /var/log/nginx/access.log -o /var/www/html/goaccess.html --log-format=COMBINED --real-time-html --port=9870
Use --addr=127.0.0.1 to keep the listener on the VPS itself:
sudo goaccess /var/log/nginx/access.log -o /var/www/html/goaccess.html --log-format=COMBINED --real-time-html --addr=127.0.0.1
A local listener is a strong default when a reverse proxy will relay the browser connection. If clients must connect directly, allow only the selected port from the required networks in the VPS firewall; do not open every source address merely because the default is convenient.
Set the browser’s WebSocket URL
When the browser reaches the socket through a hostname or proxy path, set --ws-url to the host and path the browser should use:
sudo goaccess /var/log/nginx/access.log -o /var/www/html/goaccess.html --log-format=COMBINED --real-time-html --addr=127.0.0.1 --ws-url=example.com/goaccess
The GoAccess FAQ specifies that the WebSocket value must not include http:// or https://. Use the exact externally reachable hostname and path; an internal bind address is not automatically the same thing as the URL embedded in the page.
Quick wins for a faster PC:
Repair Windows errors before they cause bigger problemsFix Now →Scan for outdated or missing drivers - takes under a minuteDriver Scan →Rank #4
- 【Softer and More Comfortable】Vaydeer wrist rest has unique diamond pattern, which is the combination of softness and aesthetics. The materials of wrist rest are improved into higher quality memory foam and covered with silky smooth lycra. The computer wrist rest makes you as comfortable and cushiony as like rest your wrists on clouds.
- 【Ergonomic Wrist Saver】The wrist rests for keyboard and mouse comes with a 17.32×3.15×0.83 inch keyboard wrist pad and a 5.94×3.15×0.83 inch mouse wrist support. Based on ergonomic design, the unique concave shape is the perfect fit for your wrist joints. The wrist rest pad fits most computer keyboards and laptops, improve hand and wrist posture, release your wrist and arm stress.
- 【Non-Slip Rubber Bottom】Featuring an anti-skid silicone base on the bottom, this wrist keyboard support stays firmly in place on your desk, preventing the padding from sliding around, ensuring stable and consistent wrist support during extended computer sessions.
- 【Better Experience & Pain Relief】Our keyboard arm rest is beneficial to alleviate the soreness caused by direct contact and friction between your arm and a hard desk surface, reducing the risk of wrist fatigue or carpal tunnel. The soft texture of memory foam can evenly distribute the pressure around your wrists and provide good support with just enough give.
- 【Helpful in Multiple Scenarios】Whether you're working, studying, writing, typing, gaming, this keyboard and mouse rest combo is an essential accessory to add comfort and support to your hands and wrists. It’s also a great gift for men, women, family, friend, coworker, gamer, teacher, etc.
Put the socket behind a reverse proxy
A reverse proxy can serve the HTML over the normal HTTP or HTTPS endpoint while forwarding the WebSocket connection to the local GoAccess listener. The proxy configuration must pass WebSocket upgrade and connection headers in addition to ordinary HTTP requests. If ordinary page loads work but the dashboard reports a failed socket connection, inspect the proxy’s upgrade handling before changing the log format.
Use TLS at the GoAccess listener
For direct TLS WebSocket output, the documented options are --ssl-cert=<cert.crt> and --ssl-key=<priv.key>. Keep private-key permissions restricted. If TLS terminates at a reverse proxy instead, configure the proxy to use the local listener securely and ensure the browser’s WebSocket scheme and hostname match the public endpoint.
Keep the process running
Run the command under a service manager or a persistent terminal session so it survives logout and restarts after a failure. The exact unit depends on your distribution and deployment, but the service needs permission to read the log, write the HTML file, bind the selected address and port, and restart when the VPS reboots. Capture standard error so malformed lines, permission failures and socket errors are visible in the service logs.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Include rotated and compressed logs
Analyzing only the current file omits older traffic once log rotation has occurred. You can stream compressed rotations into GoAccess while also supplying the current file:
Do these 3 things before closing this tab:
1Scan for outdated or missing drivers - takes under a minute2Repair Windows errors before they cause bigger problems3Fix the driver behind crashes, sound loss and screen glitcheszcat /var/log/nginx/access.log.*.gz | goaccess /var/log/nginx/access.log - --log-format=COMBINED -o report.html
The trailing - tells GoAccess to read additional records from standard input. The command above is useful when the installed build does not read gzip files directly.
If your GoAccess build includes zlib support, pass compressed files as input files:
goaccess /var/log/nginx/access.log /var/log/nginx/access.log.1.gz --log-format=COMBINED -o report.html
Add each older rotation you need, including files with dates or higher rotation numbers. Check that the shell glob expands to the files you intended and that the records use the same timestamp and field format. Mixing formats without separate parsing rules can produce invalid or misleading output.
Best Value
- 【No Drill Mounted】Cable management tray can be assembled in as little as 3 minutes or less-simply. Side clips easily clampe the edge of desk, pass through the holes on the sides, and secure excess cables with baskets. Desk cable management supports inward or outward installation to meet your needs in different scenarios, and provides you with great convenience when collecting and organizing wires.
- 【Rubber Pad Protects Desk】Wire organizer under desk built-in soft rubber pads on the clamp protect your desk from scratches, so you will not damage your furniture or office.
- 【Sturdy and Beautiful】Cord management under desk is made of high-quality carbon steel and holds about 15 lbs. The wire basket has 2 holes on each side of the tray to enable your cables to pass freely. Cable baskets are suitable for desk thickness use from 0.4" to 2.4".
- 【Space Saving & Keep Organized】Desk cable management tray holds all your power cords, outlet strips, USB hubs and computer transformers hidden from your feet, and the data cables will not enter the vacuum cleaner to keep your desk clean and tidy. Desk wire organizer is also suitable for use in the kitchen and outdoors.
- 【Reduce Safety Risks】Cable tray under desk keeps all plugs away from your kids, no more worry about tripping. Using 2 holes wire tray saves extra space, helps you easily cabling and wire protection. The mesh design is not easy to accumulate dust, but avoids safety accidents caused by messy wires.
Secure the exposure model
| Exposure choice | When it fits | Controls to apply |
|---|---|---|
| SSH terminal only | One-off diagnosis or sensitive logs | Keep output in the session or a protected multiplexer |
| Local WebSocket plus reverse proxy | Browser access without exposing a raw socket port | Bind with --addr=127.0.0.1, authenticate the proxy location, forward upgrades |
| Direct WebSocket port | A controlled private network that needs direct access | Choose --port, restrict firewall sources, use TLS where required |
| Public static HTML | Only when the report contains no sensitive data | Prefer authentication or an allowlist; remember that regeneration does not remove old copies |
File permissions, HTTP authorization and firewall rules solve different problems. Apply all three where appropriate: a protected file does not prevent a reverse proxy from exposing it, and a closed WebSocket port does not protect a static report that is publicly reachable.
Recommended Free Tools
Troubleshoot an empty, stale or disconnected report
The dashboard is empty or garbled
- Inspect a real access-log line and compare its fields with the selected GoAccess format.
- Replace
COMBINEDwith the correct predefined format or define a custom format matching the server configuration. - Confirm that the file is not empty, that timestamps are valid, and that the command points to the active virtual-host log.
- Check the command’s error output for permission or parsing messages.
A static report never updates
This is expected when you generated the file without --real-time-html. Re-run the static command to create a new snapshot, or start a continuously running real-time command and make its WebSocket endpoint reachable.
The live page loads but cannot connect
- Verify that GoAccess is still running and listening on the selected port; a process that exited cannot publish updates.
- Check the VPS firewall and any cloud security group for the required port, or keep the listener local when using a reverse proxy.
- Confirm that
--ws-urlcontains the browser-facing hostname and path withouthttp://orhttps://. - Ensure the reverse proxy forwards WebSocket upgrade requests, not just normal HTTP responses.
- Check that
--addris compatible with the connection path: a listener bound only to localhost cannot accept direct external connections. - For TLS, verify the certificate, private key, hostname and WebSocket scheme presented to the browser.
Older traffic is missing
GoAccess may have parsed only the current access log. Include rotated files explicitly, stream gzip rotations with zcat, or use a build with zlib support and pass the compressed files directly. Also verify that rotation did not change the log format or timezone assumptions.
Updates stop after log rotation
Rotation can replace or rename the file that the running process opened. Check whether the process follows the new file in your deployment; if not, restart GoAccess against the current path and include the relevant rotated files for historical coverage. A service restart policy makes this recovery predictable.
Plan capacity without guessing
There is no authoritative fixed CPU, RAM or maximum-log-volume figure that applies to every VPS. Resource use depends on request volume, line length, format complexity, enabled features and whether you are generating terminal, static or real-time output. Measure on the target VPS: watch CPU and memory while processing a representative log set, then leave headroom for the web server and application.
For a low-risk trial, start with the current log, confirm parsing, then add rotations and optional features. If processing is slow, reduce the input window, run historical reports off-peak, or move batch analysis to a separate machine rather than weakening access controls or deleting useful log data.
Quick Recap
A repeatable operating procedure
- Confirm the active Nginx or Apache access-log path and inspect a sample line.
- Install GoAccess with the distribution package, or follow the current official repository or source instructions when you need a newer release or optional zlib/GeoIP2 support.
- Run
goaccess LOG -conce to validate the format, then make the format explicit in scripts. - Use terminal output for immediate SSH diagnosis, static HTML for a protected snapshot, or real-time HTML only after designing the WebSocket exposure.
- Include rotated and compressed files when the reporting period extends beyond the current log.
- Protect every HTML report and restrict socket access to the networks and users that need it.
- Run the live command under a service manager, monitor its logs, and test recovery after log rotation and VPS reboot.
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

