tessera kommt von hier — als Datei, mit veröffentlichter Prüfsumme und
nachrechenbarer Signatur. Was ein Store dir abnimmt, nimmst du hier
selbst in die Hand: prüfen, ob die Datei die ist, die wir gebaut haben.
Drei Pakete: der Client für Windows, der Client für
Android und der Sync-Server für deinen eigenen Rechner.
Die ersten beiden brauchst du, den Server nur, wenn du mehrere Geräte
abgleichen willst.
Das hier ist ein Prototyp. Er tut, was er soll, aber
er ist noch nicht lange im Alltag gewesen. Verlass dich nicht als
einziges Werkzeug darauf, schreib Wiederherstellungscode und Kontokennung auf,
und rechne damit, dass ein Update etwas verändert.
Nachrechnen, nicht vertrauen
Zu jedem Paket steht eine SHA-256-Summe. Sie zu prüfen dauert zehn
Sekunden und beantwortet die Frage, ob unterwegs jemand etwas ausgetauscht
hat.
Bei Android zählt am Ende nicht die Prüfsumme, sondern der
Fingerabdruck des Signaturschlüssels: Android lässt ein
Update nur zu, wenn es mit demselben Schlüssel unterschrieben ist. Stimmt
der Fingerabdruck mit dem hier veröffentlichten überein, kommt das Paket
von uns — egal, über welchen Umweg du es bekommen hast.
Die Signatur ist mehr wert als die Prüfsumme
Eine Prüfsumme beantwortet nur, ob die Datei unterwegs kaputtgegangen
ist. Sie beantwortet nicht, ob jemand Datei und Prüfsumme
zusammen ausgetauscht hat — beide liegen schließlich auf demselben
Server und kommen über dieselbe Leitung.
Die Signatur beantwortet genau das. Ihr privater Schlüssel liegt nicht
auf diesem Webserver und wird nie dorthin übertragen; wer den Server
übernimmt, kann Dateien ersetzen, aber keine gültige Signatur
darüberlegen.
Einmal einrichten, dann je Release
# öffentlichen Schlüssel von oben übernehmen
minisign -Vm SHA256SUMS -P RW…# und dann die Prüfsummen gegen die Dateien
sha256sum -c SHA256SUMS
Erst beides zusammen ergibt eine Aussage: Die Signatur sagt, dass die
Prüfsummenliste von uns stammt, und die Liste sagt, dass die Dateien zu
ihr passen.
Windows: was beim ersten Start passiert
Das Paket ist nicht mit einem Zertifikat signiert. Also
meldet sich der SmartScreen-Filter: „Der Computer wurde durch Windows
geschützt.“ Das ist kein Befund über die Datei — es ist die Aussage, dass
Microsoft den Herausgeber nicht kennt.
ZIP herunterladen, Prüfsumme vergleichen.
Rechtsklick auf die ZIP-Datei → Eigenschaften → unten
Zulassen ankreuzen → OK. Das erspart die Meldung für jede
Datei darin.
Auspacken, wohin du willst — es gibt keinen Installer und keine Registry-Einträge.
tessera.exe starten.
Deinstallieren heißt: den Ordner löschen. Was die App gespeichert hat,
liegt in deinem Benutzerprofil und im Windows-Anmeldeinformationsspeicher
— der Weg dorthin steht in der
Installationsanleitung.
Ein Zertifikat ist eingeplant, aber es löst weniger, als man denkt: Ein
frisch gekauftes Zertifikat hat bei SmartScreen zunächst auch keine
Reputation. Solange es nicht da ist, ist die Prüfsumme die ehrlichere
Antwort — sie sagt etwas über die Datei aus und nicht über den
Bekanntheitsgrad des Herausgebers.
Android: einmal erlauben, dann läuft es
APK auf dem Telefon herunterladen.
Beim Öffnen fragt Android, ob dieser Browser Apps installieren darf.
Die Erlaubnis gilt je Quell-App — du erlaubst also
nicht „alles“, sondern „aus diesem Browser“.
Installieren. Google Play Protect meldet unter Umständen eine unbekannte App; das ist derselbe Sachverhalt wie bei SmartScreen.
Die Erlaubnis danach wieder entziehen, wenn du magst — Updates holt tessera ab dann selbst.
Es gibt ein universelles Paket, das auf jedem Gerät
läuft. Das ist ein paar Megabyte größer als ein auf die Prozessorart
zugeschnittenes — dafür entfällt die Frage, welche Datei die richtige
ist.
Der Sync-Server
Ein Archiv mit dem Node-Quelltext, den Deploy-Skripten und der
Betriebsdokumentation. Kein Docker, kein Installationsprogramm, keine
Registrierung — auspacken und ein Skript aufrufen:
Auf einem Ubuntu
tar xzf tessera-server-*.tar.gz
cd tessera-server-*
sudo ./deploy/install.sh
Vorausgesetzt sind Node 22 oder neuer und eine MariaDB. Das Skript ist
idempotent: Derselbe Aufruf richtet ein und aktualisiert. Was er im
Einzelnen tut, steht in der
Installationsanleitung.
node_modules liegt bewusst nicht bei. Sie entsteht
auf dem Zielrechner mit npm ci aus dem Lockfile — ein
mitgeliefertes Verzeichnis wäre für die falsche Node-Fassung übersetzt
und brächte Binärteile mit, die niemand geprüft hat.
Du brauchst den Server nicht, um tessera zu benutzen.
Als reiner SSH- und SFTP-Client läuft der Client vollständig ohne ihn.
Der Server ist nur für den Abgleich zwischen mehreren Geräten da — und
er sieht dabei ausschließlich Ciphertext.
Updates ohne Store
Ein Store hat genau eine Eigenschaft, die wirklich fehlt: Er sagt dir,
dass es etwas Neues gibt. Das übernimmt tessera selbst — ohne Konto und
ohne Dienst dazwischen.
Beim Start und danach höchstens einmal am Tag ruft die App
/downloads/latest.json ab. Eine gewöhnliche Anfrage, wie
sie auch diese Seite stellt: keine Kennung, keine Angaben zum Gerät,
keine Zählung.
Gibt es eine neuere Fassung, erscheint oben ein Hinweis. Installiert
wird erst, wenn du Jetzt aktualisieren drückst — die App wird
dabei beendet, offene Sitzungen auch.
Vor dem Laden prüft tessera die minisign-Signatur über
SHA256SUMS mit dem Schlüssel, der in der App steht, und
nicht mit dem aus dem Manifest. Danach muss das geladene Paket genau
die signierte Prüfsumme haben. Stimmt eins davon nicht, wird nichts
eingesetzt.
Windows
Das Paket wird in den Ordner kopiert, aus dem tessera läuft, danach
startet die neue Fassung. Dafür muss der Ordner beschreibbar sein —
unter Programme ist er das nicht, dann bleibt es beim
Hinweis mit dem Weg hierher. Ohne gültige Signatur
installiert tessera unter Windows nichts selbst; solange
ein Release unsigniert ist, führt der Hinweis auf diese Seite.
Android
Die App übergibt das Paket an den Paketinstaller des Systems. Beim
ersten Mal fragt Android, ob tessera Apps installieren darf, danach
bestätigst du jede Installation einzeln. Android nimmt ein Update
nur mit demselben Signaturschlüssel an — ein untergeschobenes Paket
scheitert dort, egal woher es kommt.
Abschalten lässt sich das in den Einstellungen unter
Aktualisierung. Von Hand nachsehen geht jederzeit unter
Einstellungen → Über tessera → Version und Updates — dort steht
auch, welche Fassung gerade läuft. Selbst gebaute Fassungen kennen keine
Versionsnummer und suchen nie nach Updates. Wer lieber von außen
beobachtet: /downloads/latest.json ist maschinenlesbar, und
Obtainium kann unter Android
diese Seite als Quelle nehmen.
Lieber selbst bauen?
Geht auch, und für ein Werkzeug dieser Art ist es der ehrlichste Weg:
Wer selbst baut, muss niemandem glauben. Die
Installationsanleitung beschreibt
beide Wege — Client aus dem Quelltext und Sync-Server auf dem eigenen
Rechner.