4.7 KiB
title | date | draft | images | tags | ||
---|---|---|---|---|---|---|
Object Storage und CDN bei Sharkey | 2024-01-03T22:09:00+01:00 | false |
|
Ich habe die letzten Tage damit verbracht rauszufinden, wie ich bei Sharkey den Object Storage für meine Instanz aktiviere. Das ganze hat mich mehr Zeit und Nerven gedachtet, als ich dachte, einfach weil ich absolut gar keine Ahnung von der Thematik hatte und mich dort etwas reinarbeiten musste. Dank der Hilfe Maintainerinnen des Projekts und einigen Personen aus der Community habe ich es dann schließlich aber doch hinbekommen.
Der Vorteil
Standardmäßig werden Dateien auf der Festplatte des Servers gespeichert, auf dem die Instanz läuft. Wenn aber die Festplatte irgendwann volläuft, wird es schwierig. Ein Object Storage erlaubt es jedoch den Speicher für die Dateien, die User hochladen auszulagern und den Speicherverbrauch pro GB pro Stunde zu bezahlen. Das ist bei großen Datenmengen oft die bessere Option.
Meine Erfahrungen
Hinzufügen des Object Storages in Sharkey
Das hinzufügen des Storages war relativ einfach. Man muss als Administrator einfach bei Sharkey in die Systemeinstellungen gehen, dort zu Object Storage navigieren und die entsprechenden Daten eingeben, die man benötigt, um sich bei seinem Object Storage-Provider zu authentifizieren. In meinem Fall nutze ich Backblaze.
Erstellen des Object Storages bei Backblaze
Ich weiß nicht exakt, wie dieser Prozess bei anderen Anbietern abläuft, aber bei Backblaze funktioniert der Prozess wie folgt.
- Account dort erstellen (duh!)
- Unter "Buckets" auf "Einen Bucket erstellen" klicken
- Dem Bucket einen einzigartigen Namen geben, die Dateien auf Öffentlich stellen (wichtig!) und Verschlüsselung, sowie Object Lock deaktivieren.
- Nachdem der Bucket erstellt wurde, auf die Lifecycle-Einstellungen klicken und dort auswählen, dass nur die letzte Version der Dateien aufbewaht werden soll
- Nun sollte man unter "Application Keys" sich einen neuen Application Key erstellen und sich die keyID sowie applicationKey notieren. keyID ist das, was bei Sharkey in den Einstellungen unter Access Key reinkommt und der applicationKey ist das, was bei Sharkey unter Secret Key reinkommt.
- Ich habe bei Sharkey als Präfix auch
storage
eingetragen. Somit landen alle Dateien von Sharkey im Bucket im Unterordner "storage".
Ich sehe nichts :O Was nun?
In meinem Fall habe ich das alles eingestellt, die erste Testdatei hochgeladen und mich dann gewundert, wieso die Datei zwar im Bucket bei Backblaze landet, jedoch nicht in Sharkey angezeigt werden kann. Nachdem ich dann eine Ewigkeit rumgesucht habe und irgendwann auch mal so schlau war in die Logs von Sharkey zu schauen...habe ich gesehen, dass Sharkey den Error 401 wirft, wenn es versucht die Dateien aus dem Bucket zu laden. Ich weiß nicht genau warum Sharkey das tut (das scheint aber auch beim Upstream Misskey der Fall zu sein), aber auf jeden Fall bekommt Sharkey es irgendwie nicht hin, sich beim Download zu authentifizieren, obwohl es eigentlich die entsprechenden Keys für den Bucket hätte.
Die Hilfe in Matrix
Nachdem ich das herausgefunden habe, hat mich ein User im Matrix-Channel von Sharkey darauf aufmerksam gemacht, dass man wohl einen CDN wie beispielsweise Cloudflare nutzen kann, um dieses Problem zu beheben. Cloudflare schreibt die URLs quasi um. Dafür gibt es auch eine sehr sehr gute Anleitung auf Englisch direkt von Backblaze. Man findet das ganze hier: https://www.backblaze.com/blog/free-image-hosting-with-cloudflare-transform-rules-and-backblaze-b2/
❗ ACHTUNG
Ihr solltet für diesen Prozess eine extra Domain benutzen und nicht eure Hauptdomain. Denkt insbesondere dran, dass wenn ihr eure Domain zu Cloudflare übertragt, alle eure bereits eingestellten DNS-Records auf dieser Domain zurückgesetzt werden!
Fazit
Der Prozess war für einen Noob in dem Bereich nicht unbedingt einfach aber mit der tollen Hilfe von anderen Leuten zumindest einfacher. Die Anleitung von Backblaze für die Geschichte mit dem CDN hat das Setup auch nochmal vereinfacht. Ohne die Anleitung hätte ich das wahrscheinlich nicht zum Laufen bekommen. Ich bin aber froh, dass es inzwischen funktioniert und finde es sehr gut, dass Sharkey die Möglichkeit hat einen Object Storage zu nutzen.