S3-kompatibler Speicher auf einem Synology-NAS mit RustFS
RustFS im Container Manager bereitstellen, die S3-API und die Konsole hinter einem Reverse Proxy veröffentlichen und einen ersten Bucket anlegen.
Mit RustFS wird ein Synology-NAS zum Objektspeicher, der mit der S3-API kompatibel ist. Diese Anleitung installiert den Dienst im Container Manager, trennt die API sauber von der Web-Konsole und veröffentlicht beide hinter dem Reverse Proxy von DSM.
Was ist RustFS?
RustFS ist ein quelloffener Objektspeicher-Server, in Rust geschrieben und unter der Apache-2.0-Lizenz veröffentlicht. Dank der S3-Kompatibilität lässt er sich mit den zahlreichen Sicherungswerkzeugen, Anwendungen und Bibliotheken nutzen, die für diese API entwickelt wurden.
Auf einem NAS kann er dazu dienen, Anwendungssicherungen, statische Dateien oder Archive zu bündeln. Er ersetzt jedoch keine Sicherungsstrategie: Die Daten von RustFS müssen selbst auf einen anderen Datenträger oder an einen anderen Standort kopiert werden.
Bevor Sie beginnen
- Installieren Sie Container Manager aus dem Paket-Zentrum von DSM.
- Bereiten Sie zwei DNS-Namen vor, zum Beispiel
s3.beispiel.befür die API undconsole-s3.beispiel.befür die Verwaltung. - Verbinden Sie in DSM ein gültiges TLS-Zertifikat mit beiden Namen.
- Wählen Sie lange, eindeutige Zugangsdaten und bewahren Sie sie in einem Passwortspeicher auf.
- Planen Sie eine unabhängige Sicherung des Datenordners, bevor Sie dem Dienst wichtige Dateien anvertrauen.
Die Ordner vorbereiten
Legen Sie in der File Station docker/rustfs an und darin zwei Unterordner: data für die Objekte und logs für die Protokolle. Passen Sie den Namen des Volumes an, falls Ihre Installation nicht volume1 verwendet.
Das offizielle Abbild führt den Dienst mit UID/GID 10001 aus. Am restriktivsten ist es, nur diesem Benutzer Schreibrechte auf beiden Ordnern zu geben:
sudo chown -R 10001:10001 /volume1/docker/rustfs/data /volume1/docker/rustfs/logs
sudo chmod -R u+rwX,go-rwx /volume1/docker/rustfs/data /volume1/docker/rustfs/logs
Arbeiten Sie ausschließlich über die Oberfläche von DSM, machen Sie zuerst die geerbten Berechtigungen explizit und gewähren Sie danach dem Konto oder der Gruppe, die der Container Manager verwendet, Lese- und Schreibrechte. Die folgenden Bildschirmfotos zeigen den Weg in DSM. Vermeiden Sie im Produktivbetrieb Lese- und Schreibrechte für Everyone; ist diese Einstellung für einen Test nötig, beschränken Sie sie streng auf den Ordner rustfs.
Das Projekt im Container Manager anlegen
Wählen Sie in Container Manager → Projekt die Schaltfläche Erstellen, benennen Sie das Projekt rustfs und wählen Sie den Ordner /docker/rustfs. Fügen Sie danach diese Datei docker-compose.yml ein:
services:
rustfs:
image: rustfs/rustfs:latest
container_name: rustfs-server
security_opt:
- no-new-privileges:true
ports:
- "9000:9000" # S3-API
- "9001:9001" # Web-Konsole
environment:
RUSTFS_VOLUMES: /data/rustfs0
RUSTFS_ADDRESS: 0.0.0.0:9000
RUSTFS_CONSOLE_ADDRESS: 0.0.0.0:9001
RUSTFS_CONSOLE_ENABLE: "true"
RUSTFS_CONSOLE_CORS_ALLOWED_ORIGINS: https://console-s3.beispiel.be
RUSTFS_ACCESS_KEY: ${RUSTFS_ACCESS_KEY}
RUSTFS_SECRET_KEY: ${RUSTFS_SECRET_KEY}
volumes:
- ./data:/data/rustfs0
- ./logs:/var/log/rustfs
restart: unless-stopped
Legen Sie daneben eine Datei .env an. Die folgenden Werte sind bewusst Platzhalter: Ersetzen Sie sie, bevor Sie das Projekt starten, und veröffentlichen Sie diese Datei niemals.
RUSTFS_ACCESS_KEY=BITTE_AENDERN
RUSTFS_SECRET_KEY=ERZEUGEN_SIE_EIN_LANGES_EINDEUTIGES_GEHEIMNIS
/docker/rustfs an und verwenden Sie die obige Konfiguration.
0 bestätigt, dass der Container angelegt wurde.Den Reverse Proxy einrichten
Legen Sie in Systemsteuerung → Anmeldeportal → Erweitert → Reverse Proxy zwei getrennte Regeln an. Das ist der Punkt, den man nicht vertauschen darf:
https://s3.beispiel.be:443aufhttp://localhost:9000für die S3-API.https://console-s3.beispiel.be:443aufhttp://localhost:9001für die Web-Konsole.
Ergänzen Sie für die Konsole die WebSocket-Header $http_upgrade und $connection_upgrade. Zeitlimits von 600 Sekunden passen zu langen Übertragungen, sind aber an Ihre Umgebung anzupassen. Weisen Sie danach beiden Hostnamen das richtige TLS-Zertifikat zu.
9001. Legen Sie eine zweite Regel für die API auf Port 9000 an.Die Firewall von DSM anpassen
Öffnen Sie die Ports 9000 und 9001 nicht direkt zum Internet. Erlauben Sie zunächst HTTPS zum Reverse Proxy und beschränken Sie die internen Ports danach auf das NAS, das Verwaltungsnetz oder das tatsächlich genutzte Docker-Subnetz.
Öffnen Sie Container Manager → Netzwerk und klappen Sie das Netzwerk des Projekts auf, um dieses Netz zu ermitteln. Im Beispiel entspricht 172.18.0.0/16 der Maske 255.255.0.0. Ihr Wert kann abweichen: Übernehmen Sie ihn genau und setzen Sie die Erlaubnisregel vor die Ablehnungsregeln.
Den ersten Bucket anlegen
Öffnen Sie https://console-s3.beispiel.be und melden Sie sich mit dem Zugangsschlüssel und dem geheimen Schlüssel aus .env an. Legen Sie im Browser Ihren ersten Bucket an, zum Beispiel bucket01.
.env hinterlegten Zugangsdaten an.
Legen Sie danach einen Zugangsschlüssel an, der eigens für die Anwendung gilt, die diesen Bucket nutzt. Der geheime Schlüssel wird nur im Moment der Erstellung angezeigt: Übertragen Sie ihn in Ihren Passwortspeicher und schließen Sie danach das Fenster. Die Werte im Bildschirmfoto wurden bewusst unkenntlich gemacht.
Den Dienst prüfen
RustFS bietet für jede Schnittstelle eine Zustandsprüfung. Beide Befehle müssen fehlerfrei antworten:
curl -fsS https://s3.beispiel.be/health
curl -fsS https://console-s3.beispiel.be/rustfs/console/health
Testen Sie danach einen Upload und einen Download mit dem S3-Client, den Sie tatsächlich einsetzen wollen, und starten Sie den Container neu, um zu bestätigen, dass die Daten in docker/rustfs/data erhalten bleiben.
Kurz gefasst
Die Bereitstellung passt in ein einziges Projekt des Container Managers, doch drei Details machen den Unterschied: eingeschränkte Rechte auf den Volumes, Geheimnisse außerhalb der Compose-Datei und zwei sauber getrennte Proxy-Regeln. Die S3-API nutzt Port 9000, die Konsole Port 9001.
Diskussion
Kommentare
Noch kein Kommentar. Eröffnen Sie die Diskussion gern mit einer Frage oder Ihrem eigenen Erfahrungsbericht.
Die Anmeldung hält den Austausch frei von Spam und verhindert, dass Ihre E-Mail-Adresse veröffentlicht wird.
Zum Kommentieren anmelden →