BenzStore Dokumentation

Vollständiges Handbuch, Architekturübersicht, CLI-Referenz und Feed-Spezifikation für den einheitlichen AppStore.

1. Einführung & Philosophie

BenzStore ist ein unabhängiger, datenschutzfreundlicher AppStore für Linux, Windows und Android. Entwickelt für das Jeremy Benz Open-Source-Ökosystem, löst er traditionelle Paketmanager-Abhängigkeiten und langsame, JAR-signierte F-Droid-Builds durch ein transparentes, kryptografisch verifiziertes JSON-Feed-System ab.

Zero Telemetry

Kein Tracking, keine Analyse-Frameworks, keine Registrierung. Weder im Desktop-Client noch in der Android-App.

Single-Binary Deployments

Kompakte Go-Executables ohne dynamische Runtime-Abhängigkeiten auf Windows (CGO=0) und schlanke WebKitGTK-Integration unter Linux.

SHA-256 Integrität

Jeder Download wird vor der Ausführung oder Installation strikt gegen kryptografische SHA-256-Prüfsummen abgeglichen.

2. Architektur & Sicherheit

BenzStore ist strikt nach dem Zero-Trust- und Zero-Dummy-Security-Prinzip aufgebaut. Die Anwendung gliedert sich in drei Kernkomponenten:

  • Lokaler Embedded Web-Server (Go): Startet auf 127.0.0.1 auf einem dynamischen Port mit kryptografischem Einweg-Sicherheitstoken. Verhindert CSRF-Angriffe aus fremden Browser-Tabs.
  • GUI Rendering: Verwendet native Plattformkomponenten – WebKitGTK unter Linux und MS Edge WebView2 unter Windows. Dadurch bleibt das Binary unter 12 MB (im Vergleich zu 150 MB+ Electron-Apps).
  • Verteilter Content-Feed: GitHub Raw Content und GitHub Pages dienen als hochverfügbares CDN für Anwendungs-Metadaten und Binärdateien.
Sicherheitsgarantie

Downloads werden in temporäre Puffer geschrieben und erst nach erfolgreicher SHA-256-Verifikation in das Zielverzeichnis verschoben bzw. an den Android PackageInstaller übergeben.

3. Linux Desktop & CLI

Auf modernen Linux-Distributionen (Ubuntu, Debian, Fedora, Arch) läuft BenzStore entweder als vollwertige native Desktop-Applikation oder als CLI-Tool.

Systemvoraussetzungen

Für den grafischen Desktop-Modus wird WebKit2GTK 4.1 benötigt:

bash (Ubuntu / Debian)
sudo apt update && sudo apt install -y libwebkit2gtk-4.1-0

Direkte Installation

Lade das vorkompilierte Standalone-Binary herunter und mache es ausführbar:

bash
curl -sSL -o benzstore "https://raw.githubusercontent.com/benzjeremy/benzstore/content/linux/benzstore/benzstore-linux-amd64"
chmod +x benzstore
sudo mv benzstore /usr/local/bin/
benzstore --version

4. Windows Desktop

Unter Windows 10 und Windows 11 nutzt BenzStore den vorinstallierten Microsoft Edge WebView2 Controller im schlanken App-Modus. Es sind keine Administrator-Rechte oder Installer-Routinen erforderlich.

PowerShell
Invoke-WebRequest -Uri "https://raw.githubusercontent.com/benzjeremy/benzstore/content/windows/benzstore/benzstore-windows-amd64.exe" -OutFile "benzstore.exe"
Start-Process .\benzstore.exe

5. Android APK & F-Droid

Für Android-Geräte stehen zwei Installationspfade zur Verfügung:

  • Direkt-Installation: Die APK herunterladen und über den Android PackageInstaller installieren (Unbekannte Quellen aktivieren).
  • MyFDroid Repository: Trage das offizielle Jeremy Benz F-Droid Repository in F-Droid oder Droid-ify ein:
F-Droid Repository URL
https://benzjeremy.github.io/myfdroid/fdroid/repo

6. Feed-Spezifikation (JSON)

BenzStore liest den zentralen Feed von content/feed.json ein. Jede App wird über eindeutige Identifier definiert:

JSON (feed.json Schema-Ausschnitt)
{
  "id": "com.benzjeremy.untis-go",
  "name": "Untis-Go",
  "summary_de": "Moderne, native Stundenplan-App für WebUntis...",
  "summary_en": "Modern native timetable app for WebUntis...",
  "platforms": ["linux", "windows"],
  "latest_version": "2.3",
  "versions": [
    {
      "version": "2.3",
      "release_date": "2026-09-11",
      "downloads": {
        "linux": {
          "url": "https://raw.githubusercontent.com/...",
          "filename": "untis-go_2.3",
          "sha256": "20dab4f7d3f336da17de89ba6cc4842781014d2c7ed94df6941bcedfb586fa53",
          "size": 16666616
        }
      }
    }
  ]
}

7. CLI-Referenz & Automatisierung

Im Terminal kann BenzStore komplett skriptgesteuert ohne Fenster aufgerufen werden:

Terminal
# Übersicht aller Befehle
benzstore --help

# App-Katalog im Terminal auflisten
benzstore list

# Bestimmte App installieren (z. B. Untis-Go)
benzstore install untis-go

# Alle installierten Jeremy-Benz-Apps aktualisieren
benzstore update --all

# Status und Integrität prüfen
benzstore verify untis-go

8. FAQ & Bekannte Probleme

Warum wird kein Electron verwendet?

Electron bündelt eine vollständige Chromium- und Node.js-Laufzeitumgebung und verbraucht oft über 200 MB RAM pro Prozess. BenzStore verwendet pure Go-Routinen in Kombination mit nativen System-Webviews (WebKitGTK auf Linux, WebView2 auf Windows), was zu extrem niedriger Speicherlast (< 25 MB) und blitzschnellen Startzeiten führt.

Wie verifiziere ich eine Binärdatei manuell?

Du kannst die SHA-256 Prüfsumme jederzeit mit Bordmitteln abgleichen:

bash
sha256sum benzstore-linux-amd64
# Vergleiche die Ausgabe mit der Tabelle auf der Startseite oder im feed.json