DocsError reports and Send to support

Error reports and Send to support

Exactly what the panel's anonymous error reports contain, what they never contain, how to turn them off (or off for good on air-gapped servers), and how Send to support works.

ZoPanel can tell us when something breaks on your server, so we can fix bugs you may never report. Privacy comes first: a report says what failed, never whose website, mailbox or file it was. This page lists everything that is sent, so you can check it yourself.

Anonymous error reports

A report is sent when:

  • a background task fails (an SSL certificate, a backup, an install…);
  • the panel or its root agent panics, or crashed the last time it ran (the report is sent when it starts again);
  • the panel was stopped without shutting down (killed, out of memory).

What a report contains

This is a complete report: there is nothing else.

{
  "install_id": "9b1f0c4e7a2d4f86b3c51e0d2a7f9c13",
  "version": "0.4.16",
  "commit": "6c960a8",
  "os": "ubuntu",
  "os_version": "24.04",
  "arch": "amd64",
  "process": "panel",
  "event": "job_failed",
  "kind": "ssl.issue",
  "code": "ssl.dns_mismatch"
}
Field What it is
install_id A random number made on your server the first time a report is sent. It is not your license key, server ID, hostname or IP address, and cannot be traced back to them. It lets us count how many servers see the same problem.
version, commit The ZoPanel version running.
os, os_version, arch For example debian, 12, arm64.
process panel or agent (the part running as root).
event job_failed, panic, crash or unclean_exit.
kind The kind of task, for example backup.create.
code The error's stable code, for example backup.no_space (the same code the panel translates into your language).

For a crash or a panic, two more fields:

  • panic: the Go runtime's own message, such as runtime error: index out of range [3] with length 2. Any other panic message is never sent: only its Go type, such as panic(string).
  • stack: the names of ZoPanel's own functions that were running, with their file and line in our source code, for example internal/api.(*Server).createSite internal/api/sites.go:211. Frames of any other code, function arguments and memory addresses are removed.

You can see a real report from your own server under Settings → Support.

What is never sent

  • Domain names, user names, e-mail addresses, IP addresses.
  • File paths (/home/…), file contents, database contents, mail.
  • Error messages, task titles and task logs.
  • Request bodies, environment variables, passwords, tokens or keys.
  • Your license key or the server's hostname.

Codes and stack frames must match a strict shape before they are sent (lowercase words separated by dots; ZoPanel function names), and anything that looks like a domain name or an IP address is refused. The license server checks the same rules again when it receives a report.

How often

  • Each problem is sent once a day per version, and a server sends at most 20 reports a day.
  • Reports are sent in the background with a 10-second timeout. The panel never waits for them.
  • If ZoPanel cannot be reached, reports wait in a small file (/var/lib/zopanel/error-reports.json, at most 20 reports) and are sent later.
  • Reports go only to https://license.zopanel.net/v1/reports, over HTTPS. The address is built into the panel; redirects are not followed.
  • Our server keeps reports for 90 days. It does not store the IP address a report comes from.

Turning them off

Error reports are on by default, and the dashboard shows a one-time notice about them to the administrator.

  • In the panel: Settings → Support → turn off Send anonymous error reports. Reports waiting to be sent are deleted.
  • For good, on the server (air-gapped or regulated servers): add "disable_error_reports": true to /etc/zopanel/config.json, then systemctl restart zopanel. This also turns off Send to support uploads. The environment variable ZOPANEL_DISABLE_ERROR_REPORTS=1 (for example with systemctl edit zopanel) does the same.

Only a full administrator can change this setting. API tokens cannot reach it.

Send to support

When you need help, an administrator can send a diagnostic bundle to the ZoPanel team from the panel:

  • on a failed task: open the task and click Send to support;
  • any time: Settings → Support → Prepare bundle.

The bundle holds the same files as zopanel ctl support-bundle: the doctor's checks, versions, failed services, resource usage, the last 300 lines of the logs of the panel's services and nginx, and the panel's configuration with passwords, secrets, tokens and keys removed. From a failed task, it also holds that task's error and the end of its log.

Nothing is sent until you click Send. The panel first shows every file, exactly as it will be sent. You can add a note, or download the bundle instead and attach it to a ticket yourself. Unlike error reports, logs can contain your domain names and the server's IP addresses: read them before sending.

Once sent, the panel shows a reference such as ZB-1A2B3C4D5E. Quote it in your support ticket. Bundles are kept for 90 days and are opened only by the support team to answer you.


← Troubleshooting