Remove the old Go/Mongo API (api/main.go, go.mod, go.sum, .env.example) and switch telemetry backend to PocketBase (http://db.community-scripts.org). Update documentation and flowcharts to reflect the PocketBase collection (_dev_telemetry_data), new REST endpoints (POST/PATCH/GET), field schema, and revised api.func integration (LXC/VM reporting and status updates). Misc scripts and helpers were adjusted (misc/api.func, misc/build.func, misc/error_handler.func) and a new misc/ingest.go was added. This consolidates telemetry to a hosted PocketBase instance and updates docs and integration points accordingly.
API Integration Documentation
Overview
The telemetry and diagnostics API uses PocketBase as backend, hosted at http://db.community-scripts.org. All telemetry data is stored in the _dev_telemetry_data collection.
The Go/MongoDB API server (/api directory) has been replaced entirely by PocketBase.
Key Components
PocketBase Backend
- URL:
http://db.community-scripts.org - Collection:
_dev_telemetry_data - Admin UI:
http://db.community-scripts.org/_/#/collections - RESTful API for receiving telemetry data
- Installation statistics tracking
- Error reporting and analytics
Integration with Scripts
The API is integrated into all installation scripts via api.func:
- Sends installation start/completion events
- Reports errors and exit codes with numeric values
- Collects anonymous usage statistics
- Enables project analytics
Documentation Structure
- misc/api.func/ - API function library documentation
- misc/api.func/README.md - Quick reference
- misc/api.func/API_FUNCTIONS_REFERENCE.md - Complete function reference
API Functions
The api.func library provides:
post_to_api()
Send LXC container installation data to PocketBase.
Creates a new record in _dev_telemetry_data with status installing.
post_to_api_vm()
Send VM installation data to PocketBase.
Creates a new record with type=vm and ct_type=2.
post_update_to_api(status, exit_code)
Update installation status via PocketBase PATCH.
Maps status values:
"done"→ PocketBase status"sucess""failed"→ PocketBase status"failed"
explain_exit_code(code)
Get human-readable error description from exit code.
Usage:
ERROR_DESC=$(explain_exit_code 137)
# → "Killed (SIGKILL / Out of memory?)"
PocketBase Collection Schema
| Field | Type | Required | Description |
|---|---|---|---|
id |
text (auto) | yes | PocketBase record ID |
random_id |
text | yes | Session UUID (unique) |
type |
select | yes | lxc, vm, addon, pve |
ct_type |
number | yes | 1=LXC, 2=VM |
nsapp |
text | yes | Application name |
status |
select | yes | installing, sucess, failed, unknown |
disk_size |
number | no | Disk size in GB |
core_count |
number | no | CPU cores |
ram_size |
number | no | RAM in MB |
os_type |
text | no | OS type (debian, ubuntu, etc.) |
os_version |
text | no | OS version |
pve_version |
text | no | Proxmox VE version |
method |
text | no | Installation method |
error |
text | no | Error description |
exit_code |
number | no | Numeric exit code |
created |
autodate | auto | Record creation timestamp |
updated |
autodate | auto | Last update timestamp |
API Endpoints (PocketBase REST)
Base URL: http://db.community-scripts.org
| Method | Endpoint | Description |
|---|---|---|
POST |
/api/collections/_dev_telemetry_data/records |
Create telemetry record |
PATCH |
/api/collections/_dev_telemetry_data/records/{id} |
Update record status |
GET |
/api/collections/_dev_telemetry_data/records |
List/search records |
Query Parameters (GET)
filter– PocketBase filter syntax, e.g.(nsapp='debian' && status='failed')sort– Sort fields, e.g.-created,nsapppage/perPage– Paginationfields– Limit returned fields
API Integration Points
In Container Creation (ct/AppName.sh)
- Called by
build.functo report container creation viapost_to_api - Sends initial container setup data with status
installing - Reports success or failure via
post_update_to_api
In VM Creation (vm/AppName.sh)
- Calls
post_to_api_vmafter VM creation - Status updates via
post_update_to_api
Data Flow
Installation Scripts
│
├─ Call: api.func functions
│
├─ POST → PocketBase (create record, status=installing)
│ └─ Returns record ID (stored in PB_RECORD_ID)
│
└─ PATCH → PocketBase (update record with final status)
└─ status=sucess/failed + exit_code + error
Privacy
All API data:
- ✅ Anonymous (no personal data)
- ✅ Aggregated for statistics
- ✅ Used only for project improvement
- ✅ No tracking of user identities
- ✅ Can be disabled via diagnostics settings
Debugging API Issues
If API calls fail:
- Check internet connectivity
- Verify PocketBase endpoint:
curl -s http://db.community-scripts.org/api/health - Review error codes in EXIT_CODES.md
- Check that
DIAGNOSTICS=yesin/usr/local/community-scripts/diagnostics - Report issues on GitHub
Last Updated: February 2026 Maintainers: community-scripts team