CanbiZ (MickLesk) 141af284e0 fix: prevent data loss from silent rejections and missing records
Root cause: ~50% of installing records were never created, causing all
subsequent configuring/validation/success/failed updates to be lost.

Server-side fixes:
- Add logging for ALL rejection points (rate limit, body too large, JSON
  parse errors, validation failures) - previously completely silent
- configuring/validation pings now create a fallback record instead of
  silently skipping when the installing record doesn't exist
- Terminal status updates (success/failed/aborted) now use full PATCH
  with all fields to fill in missing specs from fallback records
- New UpdateTelemetryFull method for complete record updates

The configuring/validation fallback creates a record with minimal data.
When the final success/failed update arrives with full specs, the full
PATCH fills in all missing fields (ct_type, disk_size, etc). Fields with
omitempty+zero values are omitted from JSON, preserving existing values.
2026-03-02 15:42:58 +01:00
2026-02-17 17:17:20 +01:00
2026-02-16 17:18:49 +01:00
2026-02-14 16:43:37 +01:00

Telemetry Service

A standalone Go microservice that collects anonymous telemetry data from ProxmoxVE and ProxmoxVED script installations.

Overview

This service acts as a telemetry ingestion layer between the bash installation scripts and a PocketBase backend. When users run scripts from the ProxmoxVE/ProxmoxVED repositories, optional anonymous usage data is sent here for aggregation and analysis.

What gets collected:

  • Script name and installation status (success/failed)
  • Container/VM type and resource allocation (CPU, RAM, disk)
  • OS type and version
  • Proxmox VE version
  • Anonymous session ID (randomly generated UUID)

What is NOT collected:

  • IP addresses (not logged, not stored)
  • Hostnames or domain names
  • User credentials or personal information
  • Hardware identifiers (MAC addresses, serial numbers)
  • Network configuration or internal IPs
  • Any data that could identify a person or system

What this enables:

  • Understanding which scripts are most popular
  • Identifying scripts with high failure rates
  • Tracking resource allocation trends
  • Improving script quality based on real-world data

Features

  • Telemetry Ingestion - Receives and validates telemetry data from bash scripts
  • PocketBase Integration - Stores data in PocketBase collections
  • Rate Limiting - Configurable per-IP rate limiting to prevent abuse
  • Caching - In-memory or Redis-backed caching support
  • Email Alerts - SMTP-based alerts when failure rates exceed thresholds
  • Dashboard - Built-in HTML dashboard for telemetry visualization

Architecture

flowchart LR
    A[Bash Scripts<br>ProxmoxVE/VED] --> B[Telemetry Service]
    B --> C[(PocketBase)]
    B --> D[Dashboard]

Dashboard

The built-in dashboard (/dashboard) provides real-time analytics:

  • Installation Statistics - Total installs, success/failure rates
  • Top Applications - Most installed scripts with counts
  • Failure Analysis - Scripts with highest failure rates (min. 10 installs)
  • Resource Trends - CPU, RAM, disk allocation over time
  • OS Distribution - Popular operating systems
  • Proxmox Versions - PVE version distribution

Dashboard Features:

  • Automatic cache warmup (every 4 minutes)
  • Configurable time range (7, 30, 90, 365 days)
  • Shows actual total count vs. analyzed sample size
  • Loading indicator during data fetch

Project Structure

service.go      # Main service, HTTP handlers, rate limiting
cache.go        # In-memory and Redis caching
alerts.go       # SMTP alert system
dashboard.go    # Dashboard HTML generation
Dockerfile      # Container build
entrypoint.sh   # Container entrypoint
go.mod          # Go module definition

API Endpoints

Endpoint Method Description
/ POST Receive telemetry data from scripts
/health GET Health check endpoint
/dashboard GET HTML dashboard UI
/api/dashboard GET Dashboard data as JSON

Privacy & Compliance

This service is designed with privacy in mind and is GDPR/DSGVO compliant:

  • No personal data - Only anonymous technical metrics are collected
  • No IP logging - Request logging is disabled by default, IPs are never stored
  • Transparent - All collected fields are documented and the code is open source
  • No tracking - Session IDs are randomly generated and cannot be linked to users
  • No third parties - Data is only stored in our self-hosted PocketBase instance

For full details, see:

License

MIT License - see LICENSE file.

S
Description
Standalone Go service for ProxmoxVE and .ProxmoxVE data, cache, and telemetry.
Readme MIT 489 KiB
Languages
Go 55.3%
JavaScript 19.6%
CSS 14.2%
HTML 10.6%
Dockerfile 0.2%