Eigenes F-Droid Repository mit Repomaker erstellen und verwalten
Ein eigenes Repo erstellen zu wollen, kann mehrere Gründe haben:
- Als Entwickler möchte man seinen (Beta-) Testern eine einfache Möglichkeit geben, Test-Versionen einer App zu installieren und zu aktualisieren
- Man möchte einer Personengruppe (etwa einem Verein, einer Organisation, oder der eigenen Familie) eine spezielle Sammlung von Apps zur Verfügung stellen
- Man möchte einfach die Apps, die man auf mehreren Geräten nutzt, an zentraler Stelle verwalten
Lange Zeit gab es für die Erstellung und Verwaltung nur eine Möglichkeit: die Verwendung des fdroidserver Projektes. Dies setzt einiges an technischen Kenntnissen voraus – sowohl bei der Installation, bei der Erstellung eines Repos, als auch bei der Verwaltung von Apps in selbigem. Das mag zwar für Entwickler praktikabel sein; der „durchschnittliche Anwender“ ist damit in der Regel jedoch überfordert.
In dieser Artikel-Serie:
- Teil 1: Die Privatsphäre-freundliche Alternative zum Google Play Store
- Teil 2: für fortgeschrittene Anwender und für Entwickler
- Teil 3: Eigenes Repository mit Repomaker erstellen und verwalten
- Teil 4 (extern, von Nico Alt): Vertrauen ist gut, Kontrolle ist besser: Reproduzierbarkeit bei F-Droid
weitere F-Droid Artikel bei IzzyOnDroid:
- IzzyOnDroid’s F-Droid Repo mit zusätzlicher Funktionalität (1/2018)
- Inoffizielle (und unvollständige) Liste mit F-Droid Repositories (regelmäßig aktualisiert)
Repomaker
Ein noch recht junges (und derzeit nur spärlich dokumentiertes) Projekt soll das Erstellen und Betreiben eines eigenen Repositories fast zum Kinderspiel machen: Repomaker richtet sich an den technisch weniger versierten Anwender, der lediglich vorhandene APK-Dateien zur Verfügung stellen möchte.
Repomaker ist die einfache Variante zur Bereitstellung eines F-Droid kompatiblen Repositories. Es werden keine großartigen technischen Kenntnisse vorausgesetzt. Ein neues Repository erstellt man mit zwei Klicks – und stellt es wahlweise auf eigenem Webspace, oder aber auch über frei verfügbare Dienste wie Github, GitLab oder (kostenpflichtig) Amazon S3 zur Verfügung. Die hier beschriebene Installation via Flatpak ist in erster Linie für eine „Einzelplatz-Installation” gedacht.
Voraussetzungen
Bevor man Repomaker nutzen kann, muss man die Anwendung zunächst installieren. Die Anwendung, ihr Quellcode, sowie eine kurze Installationsbeschreibung finden sich im zugehörigen GitLab Repository – ebenso die Möglichkeit, Fehler zu melden oder um Hilfe zu ersuchen. Das Forum bietet zusätzlich die Möglichkeit, sich mit anderen Nutzern auszutauschen; bereits vorhandene Diskussionen finden sich beispielsweise hier.
Für die Installation und Nutzung von Repomaker wird ein Linux System benötigt. Da das erstellte Repo auf einer externen Resource im Web bereit gestellt wird, eignet sich dafür auch ein „virtuelles System“ wie ein in VirtualBox installiertes Debian, Ubuntu oder Linux Mint. Auf ein solches Debian basiertes Linux (Linux Mint 19.1) bezieht sich auch die folgende Installationsanleitung – und der Test erfolgte tatsächlich in einer „Virtuellen Maschine“.
Installation per Flatpak
Während die Website noch die etwas aufwändige manuelle Installation beschreibt, steht Repomaker seit Mitte Dezember 2018 auch als Flatpak und seit Ende Dezember als (experimentelles) Debian Package zur Verfügung. Anders als bei „herkömmlichen Linux Packages”, gibt es bei Flatpak keine Abhängigkeiten zu externen Bibliotheken: Alles, was eine Anwendung benötigt, ist in ihrem Flatpak-Archiv enthalten. Um das Rad nicht neu zu erfinden, kann sie jedoch auf andere Flatpak-Archive zurückgreifen – was Repomaker beispielsweise auch tut. Flatpak gibt es mittlerweile für 17 Linux Distributionen, darunter Debian/Ubuntu (und Derivate), Fedora, CentOS, openSUSE, Arch Linux und sogar Raspian. Wer ein unterstütztes System verwendet, bei dem Flatpak aber nicht vorinstalliert ist, kann es mit sudo apt install flatpak
(Debian) bzw. sudo yum install flatpack
(RedHat) nachziehen. Anschließend noch mittels flatpak remote-add --user flathub https://dl.flathub.org/repo/flathub.flatpakrepo
das Flatpak-Repository für den eigenen User verfügbar machen, und es kann losgehen. Vor der Installation sollte allerdings sichergestellt sein, dass mindestens 1GB an Speicherplatz verfügbar ist: Etwa 700 MB benötigt derzeit bereits die Software selbst1.
Die Installation von Repomaker sollte jetzt mit einem einfachen Befehl im Terminal ausgelöst werden: flatpak install --user flathub org.fdroid.Repomaker
(wir wollen es nur für den aktuell angemeldeten Benutzer installieren, nicht systemweit – daher brauchen wir auch keine root-Rechte mit sudo
anfordern). Jetzt ist es Zeit für einen Kaffee: Download und Einrichtung von ca. 700 MB Flatpaks dauert ein wenig.
Installation per Debian Package
Unter Ubuntu und Derivaten ist die Installation noch einfacher: Hier steht ein PPA mit Debian-Package zur Verfügung, was allerdings noch als experimentell zu betrachten ist – so kam es im Test desöfteren reproduzierbar zu Hängern. Diese lassen sich jedoch umgehen, indem man die Dämonen ruft.
sudo add-apt-repository ppa:fdroid/repomaker
sudo apt update
sudo apt install repomaker
Zeile 1 stellt das PPA im eigenen System zur Verfügung, Zeile 2 aktualisiert den lokalen Index mit den neuen Daten, und Zeile 3 installiert schließlich Repomaker inklusive etwa benötigter Abhängigkeiten.
Im Gegensatz zu den ca. 700 MB bei der Flatpak-Installation, werden hierfür lediglich knapp 250 MB benötigt (basierend auf einem frisch installierten System; hat man zuvor z. B. bereits Python installiert, ist es entsprechend weniger). Repomaker startet man dann von der Kommandozeile einfach mit dem Befehl repomaker
– aber natürlich gibt es auch einen Eintrag im Startmenü, hier sogar ohne Neustart der Oberfläche.
Und auch hier gelten die in der Fußnote genannten geplanten Optimierungs-Maßnahmen.
Erster Start
Nun sollte die installierte Anwendung auch im Startmenü integriert sein. Falls nicht, hilft oft ein „Reload” des Dektops2 oder einfach ab- und wieder anmelden. Alternativ startet man die Anwendung aus dem Terminal mit flatpak run org.fdroid.Repomaker
. Sodann sollte sich Repomaker präsentieren, wie im Screenshot zu sehen – und den Anwender auffordern, ein neues Repository zu erstellen. Dabei wird man zunächst aufgefordert, dem eigenen Repo einen Namen und eine Beschreibung zu geben. Anschließend wird es erstellt.
Jetzt lassen sich die APK-Dateien von Apps per Drag’n’Drop – oder auch über einen Dateiauswahl-Dialog – in das Repository befördern. Eine weitere Möglichkeit bietet sich über den blauen, mit „ADD FROM GALLERY” beschrifteten Button: Damit lassen sich Apps aus anderen Repositories in das eigene übernehmen. Vorkonfiguriert sind das offizielle F-Droid Repository sowie das von Guardian (beides vertrauenswürdige Quellen); weitere lassen sich zufügen.
Hat man nun eine oder mehrere Apps hinzugefügt und schaut unter „Info” oder „Share“ nach stellt man fest: Es wurde noch gar keine Storage zugewiesen! Natürlich belegt das Repository bereits Plattenplatz auf der lokalen Festplatte. Aber dort steht es – außer uns zur Verwaltung – noch niemandem zur Verfügung.
Daemonisierung
Die mitgelieferte Oberfläche hakt gelegentlich noch an einigen Stellen. Dies lässt sich umgehen, indem man zu Daemonen greift. Mit folgendem Skript startet man Repomaker im Hintergrund, und öffnet anschließend das Web-Interface im Browser:
remopaker-server &
repomaker-tasks &
xdg-open http://127.0.0.1:8000/
Anstelle des letzten Befehles kann man auch einfach die angegebene URL im Browser der Wahl öffnen (auf dem selben Rechner bzw. in der selben VM, auf/in der die ersten beiden Befehle abgesetzt wurden). Im Web-Browser schien Repomaker im Test flüssiger zu laufen.
Wer diesen Bedarf bei Verwendung der Flatpak-Installation hat, muss dafür zuvor die entsprechende Umgebung aktivieren:
flatpak run --command=bash org.fdroid.Repomaker
Von dort aus geht es dann mit obigen Kommandos weiter.
Das eigene Repository verfügbar machen
Um das Repository nun von anderen Geräten aus verfügbar zu machen, muss ein „externer Speicherplatz” konfiguriert werden, auf den per HTTPS zugegriffen werden kann. Dafür kennt Repomaker drei Möglichkeiten:
- Amazon S3: für den ausfallsicheren, kommerziellen Betrieb gedacht. Diese Option ist kostenpflichtig, und bedarf eines entsprechenden Amazon-Accounts. Für den „normalen Anwender“ eher uninteressant.
- SSH: Wer einen eigenen Webserver betreibt (sei es daheim oder bei einem Web-Hoster), und das Repository darüber zur Verfügung stellen möchte – für den ist dies die richtige Wahl. Natürlich muss der Server über einen SSH-Zugang verfügen, der dann hier hinterlegt wird.
- Git: trifft beides obiges nicht zu, ist dies die einfachste Möglichkeit. Der dafür benötigte Account für Github, GitLab oder einen anderen Git-Hosting-Anbieter ist i. d. R. für den Privatgebrauch kostenlos, und einfach eingerichtet. (Natürlich lässt sich auch ein Git-Server selbst hosten – super einfach beispielsweise mit Gitea. Die Anbindung per SSH ist jedoch mit weniger Overhead verbunden)
Da die einfachste Methode also die Verwendung von „Git” ist, soll diese auch hier beschrieben werden. Dafür legt man sich zunächst, sofern noch nicht geschehen, beim entsprechenden Anbieter einen Account an. Bei Github beispielsweise über die Github Homepage. Anschließend gilt es, hier ein neues Git-Repository anzulegen, welches Repomaker verwenden kann. Direkt nach Account-Erstellung geht das über den Button „Start a Project“ – oder auch generell über das Plus-Symbol in der oberen rechten Ecke. Als Namen verwenden wir in diesem Beispiel einfach „repo“, und geben eine kurze Beschreibung ein – die restlichen Felder ignorieren wir, und drücken den „Create Repository” button.
Unser Github-Repo steht damit zur Verfügung. Um es an Repomaker anzubinden, benötigen wir jedoch noch einen SSH-Schlüssel, dessen öffentlichen Teil wir in unserem Github-Account hinterlegen müssen. Wer noch keinen solchen hat, legt ihn sich im Terminal einfach an: ssh-keygen
erledigt den Job.3 Den inhalt des öffentlichen Schlüssels (~/.ssh/id_rsa.pub
) hinterlegen wir nun in unserem Github-Account (siehe Screenshot).
Jetzt können wir unserem Repomaker das neue Github-Repository als Storage hinzufügen – und aktivieren. Kurz darauf beginnt Repomaker im Hintergrund, die neue Storage mit den lokalen Daten zu synchronisieren. Ist dies geschehen, sollte es auch auf der Github Webseite sichtbar sein, wie im Screenshot zu sehen. Wer mag, kann (wie dort nahegelegt) an dieser Stelle auch einen kleinen Hinweis-Text erstellen („Add a README”). Dieser sollte dann auch den im Reiter „Share” genannten „Public Link” sowie den Fingerprint aus dem Reiter „Info” enthalten, wenn man das eigene F-Droid Repo Anderen zur Verfügung stellen möchte.
Apps pflegen
Wie einfach sich Apps zum eigenen Repo hinzufügen lassen, haben wir bereits beim „Ersten Start“ gesehen. Doch damit stehen dem Betrachter, sofern die Apps nicht per Gallerie von einem anderen Repository übernommen wurden, nur wenige Informationen zur Verfügung: Name der App, Größe, letztes Update. Schwer zu erfassen, worum es sich dann handelt.
Aber die Einträge lassen sich auch bearbeiten. Klickt man in der App-Liste auf einen Eintrag, werden Details zu selbigem angezeigt. Auf dieser Detail-Seite findet sich auch ein Link zum Bearbeiten in der oberen rechten Ecke. So lässt sich etwa der Entwickler ergänzen, eine Beschreibung hinzufügen – sogar Screenshots kann man einbinden. Damit wird das Ganze dann wesentlich aussagekräftiger.
Die Aktualisierung des „Online-Repos“ (in unserem Fall bei Github) übernimmt Repomaker dabei automatisch im Hintergrund. Sobald sich Inhalte geändert haben, werden sie (nach kurzer Verzögerung) synchronisiert – sei es nach Anpassung einer Beschreibung, oder nach dem Hinzufügen/Entfernen von Apps.
Im Client einbinden
Wie sich Repositories von Drittanbietern im F-Droid Client einbinden lassen, wurde bereits im vorhergehenden Artikel erklärt. Welchen Link man dafür benötigt, zeigt Repomaker im Reiter „Share” unter „SHARE PUBLIC LINK“ an. Dass ein Klick auf den mit „VIEW REPO” beschrifteten Button zu einer Webseite führt, die von sich behauptet nicht zu existieren („404: Not Found”) darf dabei nicht irritieren: Es ist trotzdem alles da. Wer das nicht glaubt, ergänzt noch ein /index.xml
am Ende der URL und sieht: Da ist doch etwas.
Wer bis hier her durchgehalten hat, dem sollte jetzt nichts mehr im Wege stehen, eigene Repositories anzubieten: Sei es themenspezifisch – oder auch einfach nur die „Sammlung der Lieblingsapps“. Damit die Nutzer dieser Repositories immer auf dem aktuellen Stand bleiben sollte man jedoch nicht vergessen dafür zu sorgen, dass der Inhalt möglichst immer up-to-date ist – man also die enthaltenen Apps auch regelmäßig aktualisíert.
-
Optimierung ist geplant: So soll nicht mehr das ganze Java SDK mitgeliefert, und auch das derzeit verwendete Flatpak „org.kde.Platform” durch eine weniger anspruchsvolle FreeDesktop Runtime ersetzt werden. ↩︎
-
Unter Cinnamon beispielsweise über Alt-F2, r, Eingabetaste. Zum Thema gibt es bei Flatpak bereits einen Bug-Report. Offensichtlich ist davon nur Cinnamon betroffen (sowie Distributions, bei denen Flatpak nicht vorinstalliert war, sondern in der laufenden Session erst installiert wurde) – und das auch nur einmalig. Bei allen folgenden Flatpak-Installationen sollte der Eintrag im Anwendungs-Menü unmittelbar zur Verfügung stehen, was unser Test bestätigte. ↩︎
-
Das „Fine-Tuning“ überspringen wir hier: Die Erstellung des optimalen SSH-Schlüssels ist in anderen Tutorials ausführlich beschrieben. Für unseren Zweck genügen die Standard-Einstellungen. ↩︎