Security & privacy

PCAPNG Analyzer processes and stores packet captures on the server you control. Capture data and analysis results are not uploaded to us.

Published by Stuart MathiesonLast updated 26 October 2026
The short version

The application makes no telemetry, analytics or cloud-analysis requests. It makes only two kinds of outbound HTTPS request: a license-status check, if you configure a Pro key, and a daily check for new versions, which you can turn off. Neither contains capture files, packets or analysis results.

What stays on your server

Uploads, decoded packet data, aggregate reports, annotations and exports are handled by your own instance. By default, persistent application data lives under PCAP_DATA_DIR—/data in the container image—including:

You control the host, Docker volume, backups, retention and access to that storage. PCAPNG Analyzer does not copy this data to a hosted analysis service.

Sensitive content inside captures

Captures often hold credentials and private data. The analysis is designed not to spread them further:

Captures themselves are stored as uploaded, and following a stream shows what was sent, credentials included. Treat access to the instance like access to the traffic.

Network activity at a glance

ActivityLeaves the instance?What is transmitted
Capture upload and parsingNoProcessed locally
Packet and payload inspectionNoProcessed locally
Reports, annotations and exportsNoStored and generated locally
QUIC decryption, file extraction and fingerprintingNoProcessed locally; QUIC Initial keys are derived from the packets themselves
Threat-intel (IOC) listsNoPasted or imported from a file; never fetched from or sent to a feed
Alerts and SIEM exportNoAn in-app inbox, a local JSON Lines file and browser downloads; nothing is pushed
Usage telemetry or analyticsNoNot collected by the application
Pro license validationYesLicense key and product/version identifier
Update checkYesA request for the latest release number; nothing about your installation. Can be turned off

The license-status check

A Free instance can run without a license key. When licensing is not configured, the background license-validation task does not run.

If you enter a Pro key, the application contacts the configured Keygen licensing service:

The request contains the license key and a product/version identifier. It does not contain the capture filename, capture contents, decoded packets, report data or user annotations. As with any outbound HTTPS connection, the remote service receives ordinary connection metadata such as the connecting server's IP address.

If the licensing service is temporarily unreachable, a valid Pro instance keeps its entitlements during the configured offline grace period—14 days by default. Operators with restricted egress can route the request through an HTTPS proxy.

The update check

So you hear about new versions, the application asks GitHub once a day for the latest published release:

It runs on Free and Pro alike. GitHub, like any website, receives the connecting IP address. Turn it off under Settings → Updates, or for good with UPDATE_CHECK=0 in the container's environment, for example on an air-gapped network.

Authentication

Single-instance mode

A new deployment requires an administrator-supplied bootstrap password of at least 12 characters and forces a change at first sign-in. Passwords are hashed with Argon2. Sessions use cryptographically random identifiers stored in HttpOnly, SameSite cookies. Changing or administratively resetting the password revokes existing sessions.

Multi-user proxy mode

Pro can delegate authentication to a trusted reverse proxy. In this mode, the proxy supplies the authenticated username and the app scopes user-owned uploads and results accordingly. The application port must remain unreachable to untrusted clients so they cannot forge identity headers. An additional shared proxy secret is available as defence in depth.

HTTPS and network exposure

The application serves HTTP inside the deployment and does not terminate TLS itself. Use a trusted reverse proxy such as Caddy or nginx for HTTPS, expose only ports 80 and 443, and keep the application port on an internal Docker network. The self-hosting guide provides a Caddy configuration that follows this layout.

The exception is a single-user install on your own computer. With the port bound to 127.0.0.1, as in the local setup, traffic never leaves the machine, so there is no network path to protect and no proxy is needed. Never publish the application port to other machines over plain HTTP: anyone who can reach it then sees login passwords and session cookies in transit.

Storage, backups and encryption

Self-hosting gives you control of storage, but it also makes storage protection your responsibility. Use host or volume encryption if you require encryption at rest. Restrict access to the Docker host and backup destination, and protect backups as carefully as the live capture volume.

Packet captures may contain internal addresses, hostnames, credentials or application payloads. Only give instance and backup access to people who are authorised to inspect that traffic.

Operational safeguards

The application supports upload-rate limits, login-rate limits, file-size and batch limits, disk-usage limits, packet-count limits, parse timeouts and a global analysis-worker ceiling. Requests that re-read a large stored capture (following a stream, listing HTTP files, making a shareable copy) queue for a limited number of slots. These controls reduce accidental or malicious resource exhaustion, but they do not replace host monitoring, firewalling, patching and capacity planning.

Security questions

To report a security concern or ask about a deployment, email [email protected]. Do not include packet captures, credentials or sensitive payloads in an initial email.

Start with a local Free instance

No card or license key is required. Your first capture can be analysed entirely on your own computer.

Download freeSee a sample incident report