Selfhosting mit Co-op Cloud und abra

Di, 30. November 2021, Lioh Möller

Selfhosting-Lösungen zum Betrieb der eigenen Cloud oder von Webdiensten haben wir schon einige vorgestellt. Darunter waren unter anderem YunoHost oder Freedombox. Ein neuer Spieler auf dem Feld der selbstverwalteten Lösungsanbieter ist Co-op Cloud. Die Software richtet sich primär an gemeinschaftliche Hostingprojekte, bei denen beispielsweise ein Verein oder eine Gruppe von Interessierten zusammen Dienste für sich und andere anbieten.

Im Gegensatz zu den bisher vorgestellten Ansätzen basiert Co-op Cloud auf Docker und nutzt dafür Swarm als Basis. Letzteres bietet Vorteile im Bereich der Skalierbarkeit, insbesondere falls mehrere Serverinstanzen zum Einsatz kommen sollen.

Zur Vorbereitung benötigt man einen Server auf dem Docker nutzbar ist. Nicht alle vserver Anbieter ermöglichen dies. Strato beispielsweise lässt die Nutzung von Docker nicht zu, netcup hingegen schon.

Darüber hinaus sollte man über eine statische IP-Adresse und eine Domain verfügen. Auf dieser müssen vorab entsprechende DNS-Einträge vorbereitet werden. Geht man von einer Subdomain wie cloud.mydomain.tld aus, wird zumindest ein A-Record benötigt, der auf die IP-Adresse des Servers zeigt. Um mit Co-op Cloud einfach Dienste deployen zu können sollte ausserdem ein Wildcard-A-Record in der Form *.cloud.mydomain.tld erstellt werden.

Zur Installation und Verwaltung von Co-op Cloud kommt das Tool abra zum Einsatz, welches auf einem Client-PC wie folgt bezogen und ausgeführt werden kann:

curl https://install.abra.autonomic.zone | bash

Der Quellcode des Scripts lässt sich vorab prüfen. Alternativ kann man abra direkt von der Release-Seite des Git-Repositories herunterladen. Dort finden sich zum Vergleich auch entsprechende Prüfsummen.

Hinweis: abra wird nicht direkt auf dem Server ausgeführt. Die Verwaltung erfolgt von einem Rechner aus, welcher mittels SSH-Key passwortlosen Zugriff auf den Zielserver hat.

Sofern Docker Swarm nicht zuvor manuell installiert wurde, kann abra den Server einmalig provisionieren. Dieser Vorgang muss zu einem späteren Zeitpunkt nicht wiederholt werden. Der Domainname muss im folgenden an die eigenen Gegebenheiten angepasst werden

abra server add -p cloud.mydomain.tld root

Als erste App sollte der Reverse-Proxy Traefik installiert werden:

abra app new traefik

Dieser ist in der Lage automatisiert Let's Encrypt Zertifikate für alle installierten Webapplikationen zu beziehen. Dazu sollte zunächst eine E-Mail-Adresse für Benachrichtigungen von Let's Encrypt hinterlegt werden. Installierte Anwendungen werden, so fern nicht anders angegeben, nach dem Muster: anwendungsname_subdomain_domain_tld angelegt. In unserem Beispiel wäre dies traefik_cloud_mydomain_tld. Eine Konfiguration erfolgt daher wie folgt:

abra app config traefik_cloud_mydomain_tld

Als Administrator hat man die Möglichkeit den bevorzugten Editor zum Bearbeiten der Konfigurationsdatei zu wählen. Dieser öffnet sich daraufhin automatisch. Für Traefik reicht es aus, die folgende Variable zu definieren:

LETS_ENCRYPT_EMAIL=

Daraufhin kann die Applikation installiert werden:

abra app deploy traefik_cloud_mydomain_tld

Im nächsten Schritt können weitere Webanwendungen hinzugefügt werden, beispielsweise Nextcloud:

abra app new nextcloud

Für Nextcloud müssen vorab Passwörter generiert werden. Diese sollte man an einem sicheren Ort aufbewahren:

abra app secret generate --all nextcloud_cloud_mydomain_tld

Nun kann die Applikation ebenfalls installiert werden:

abra app deploy nextcloud_cloud_mydomain_tld

Der aktuelle Status lässt sich leicht überprüfen. Je nach Ausbau des zum Einsatz kommenden Servers kann die Installation einige Zeit dauern:

abra app ps nextcloud_cloud_mydomain_tld     # Status
abra app logs nextcloud_cloud_mydomain_tld   # Logs

Mithilfe von watch lässt sich die Ansicht automatisch aktualisieren:

watch abra app ps nextcloud_cloud_mydomain_tld

Der Reverse-Proxy Traefik sollte nach einiger Zeit automatisch ein entsprechendes Zertifikat generieren.

abra ist sehr mächtig und erlaubt beispielsweise auch das entfernen oder aktualisieren von Applikationen. Es empfiehlt sich die bash-complition zur Autovervollständigung zu aktivieren. Diese ist in den Quellen zu finden.

Der Katalog der verfügbaren Applikationen ist bereits lang und wächst stetig weiter an. Eine ausführliche Dokumentation findet man auf der Webseite des Projektes.

Co-op Cloud richtig sich an erfahrenere Administratoren und ermöglicht diesen den reibungslosen Betrieb komplexer Webapplikationen.