Add blogpost about Sharkey and Object Storage
/ Build and Deploy Website (push) Successful in 1m50s Details

This commit is contained in:
Brayd 2024-01-03 22:57:35 +01:00
parent a16e7070fc
commit d721bec8d1
Signed by: brayd
SSH Key Fingerprint: SHA256:qfebJ1zYUipSSbdcVk/qygkt0xr4VSzCKk7LXw6DGe0
8 changed files with 41 additions and 0 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 MiB

View File

@ -0,0 +1,41 @@
---
title: "Object Storage und CDN bei Sharkey"
date: 2024-01-03T22:09:00+01:00
draft: false
images:
tags:
- Fediverse
- Sharkey
---
Ich habe die letzten Tage damit verbracht rauszufinden, wie ich bei [Sharkey](https://joinsharkey.org) den Object Storage für [meine Instanz](https://connect.braydmedia.de) 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](https://backblaze.com).
![Ein Screenshot der Einstellungen zum Hinzufügen des Object Storage innerhalb von Sharkey](object-storage-settings.png)
### 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.
1. Account dort erstellen (duh!)
2. Unter "Buckets" auf "Einen Bucket erstellen" klicken
![Ein Screenshot des erwähnten Buttons](Einen-Bucket-erstellen.png)
3. Dem Bucket einen einzigartigen Namen geben, die Dateien auf Öffentlich stellen **(wichtig!)** und Verschlüsselung, sowie Object Lock deaktivieren.
![Ein Screenshot des Fensters, welches sich öffnet, wenn man sich bei Backblaze einen Bucket anlegt](Bucket-creation.png)
4. Nachdem der Bucket erstellt wurde, auf die Lifecycle-Einstellungen klicken und dort auswählen, dass nur die letzte Version der Dateien aufbewaht werden soll
5. 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.
6. 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](https://backblaze.com) 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/
**:exclamation: 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](https://joinsharkey.org) die Möglichkeit hat einen Object Storage zu nutzen.

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB