Opterius analytics is designed to be fully privacy-friendly and compatible with GDPR's strict requirements for European hosting customers. This page explains exactly what data is collected, what isn't, and why you don't need a cookie consent banner to use it.
What we don't do
To make this clear up front:
- ❌ No tracking script — your site's HTML pages are not modified in any way
- ❌ No cookies — no first-party or third-party cookies are set
- ❌ No third-party requests — no data ever leaves your server
- ❌ No JavaScript fingerprinting — no canvas, audio, or font fingerprinting
- ❌ No personal data storage — no IP addresses, no User-Agent strings, no referrers stored individually
- ❌ No cross-site tracking — visitors are anonymous and untraceable across visits
What we do collect
Every Nginx access log line is parsed and aggregated into per-hour buckets. The bucket file contains:
- Total visit count
- Estimated unique IP count (just a number, not the IPs themselves)
- Total bandwidth in bytes
- Bot visit count
- Top 50 page URLs (path only, query strings stripped)
- Top 50 referrer hostnames
- Country code distribution (e.g.
{"US": 234, "DE": 89}) - Browser family distribution (Chrome, Firefox, Safari, Edge, Opera, Other)
- OS family distribution (Windows, macOS, Linux, iOS, Android, Other)
- Status code family distribution (2xx, 3xx, 4xx, 5xx)
That's it. Nothing else. The bucket file is count data only — there's no way to reconstruct an individual visit from a bucket.
Why you don't need a cookie banner
The European Court of Justice and the GDPR enforcement agencies have ruled that anonymous, aggregated statistics for the purpose of measuring traffic do not require user consent. The legal basis for processing is "legitimate interest" — operating your own website.
Specifically:
- No cookies are set → no need for cookie consent (the cookie law is about cookies)
- No personal data is stored → no GDPR Article 6 consent needed
- IP addresses are processed transiently → permitted for "anonymous statistics" purpose
This is the same legal basis used by Plausible Analytics, Fathom, Simple Analytics, and other "cookieless" tools. Opterius goes one step further by not even loading a JavaScript snippet.
How IP addresses are handled
Visitor IP addresses appear in the access log (Nginx writes them automatically). The agent reads each IP for two purposes:
- Counting unique visitors per hour — the IP is added to an in-memory set, then the set's size is recorded as the unique count. The IPs themselves are discarded when the bucket is flushed to disk.
- Country lookup — the IP is checked against the local MaxMind GeoLite2 database. The result (a 2-letter country code like
US) is recorded; the IP is discarded.
After parsing, the IP address is never written to any file managed by the analytics system. The only place IPs continue to live is the raw access.log file, which is owned by Nginx and rotated by logrotate (typically daily or weekly).
If you want to remove IPs from the access log too, you can configure Nginx to anonymize them at logging time:
log_format anonymized '$remote_addr_anon - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent"';
Then use a map directive or the iploc module to mask the last octet. Most hosting customers don't bother because logrotate already prunes the logs after a few days.
What about my privacy policy?
Even though no consent is technically required, you should still mention analytics in your privacy policy as a transparency measure. Suggested language:
Visitor Analytics We use server-side analytics built into our hosting panel to understand how this website is used. This includes the URL of pages visited, the country of origin (derived from IP address), the browser and operating system, and the HTTP status code returned. No tracking cookies are set, no JavaScript is loaded, and no data is sent to third parties. Your IP address is processed transiently to determine your country and is then immediately discarded.
If you have questions about this analytics processing, contact us at privacy@yourdomain.com.
Comparison with JavaScript trackers
| Feature | GA / Plausible / Fathom | Opterius |
|---|---|---|
| Requires consent banner | Sometimes (depends) | No |
| Loads on every page | Yes | No |
| Sets cookies | GA yes, others no | No |
| Sends data to third party | Yes | No |
| Blocked by adblockers | Yes (~30% of users) | No |
| Tracks individual visitors | Yes | No |
| Affects page load speed | Slightly | No |
| Stores IP addresses | Sometimes | No |
| Cross-site tracking risk | GA yes, others no | No |
The trade-off: log-based analytics has fewer features (no event tracking, no funnels, no time-on-page). But for most hosting customers who just want to know "is my site getting traffic and is anything broken", it's the right choice.
Audit trail
If you're ever asked to demonstrate compliance, here's what to point to:
- Storage location:
/var/lib/opterius/analytics/{domain}/{date}.jsonon your own server - Storage format: aggregated counts only, no PII
- Retention: 90 days, automatically pruned by the agent
- Access: only the panel admin (and the customer who owns the domain) can view it
- Source code: open for inspection in the Opterius agent (
agent/analytics.go) - Third-party transfer: none
This is the easiest possible compliance story for any hosting business operating in the EU.