Synology, Docker en opslag 11 min. leestijd

S3-compatibele opslag op een Synology-NAS met RustFS

RustFS uitrollen in Container Manager, de S3-API en de console achter een reverse proxy publiceren en een eerste bucket aanmaken.

Met RustFS maakt u van een Synology-NAS objectopslag die compatibel is met de S3-API. Deze gids installeert de dienst in Container Manager, scheidt de API netjes van de webconsole en publiceert beide achter de reverse proxy van DSM.

Wat is RustFS?

RustFS is een opensourceserver voor objectopslag, geschreven in Rust en verspreid onder de licentie Apache 2.0. Dankzij de S3-compatibiliteit gebruikt u hem met de vele back-uphulpmiddelen, toepassingen en bibliotheken die voor die API zijn gemaakt.

Op een NAS kan hij dienen om back-ups van toepassingen, statische bestanden of archieven te centraliseren. Hij vervangt echter geen back-upstrategie: de gegevens van RustFS moeten zelf naar een andere drager of een andere locatie worden gekopieerd.

Voor u begint

  • Installeer Container Manager uit het Pakketcentrum van DSM.
  • Maak twee DNS-namen klaar, bijvoorbeeld s3.voorbeeld.be voor de API en console-s3.voorbeeld.be voor het beheer.
  • Koppel in DSM een geldig TLS-certificaat aan beide namen.
  • Kies lange en unieke inloggegevens en bewaar ze in een wachtwoordkluis.
  • Plan een onafhankelijke reservekopie van de gegevensmap voor u belangrijke bestanden aan de dienst toevertrouwt.

De mappen klaarmaken

Maak in File Station docker/rustfs aan en daarin twee submappen: data voor de objecten en logs voor de logboeken. Pas de naam van het volume aan als uw installatie geen volume1 gebruikt.

De mappen data en logs van het RustFS-project in File Station, in het Frans
Het project houdt de gegevens en de logboeken van RustFS gescheiden.

De officiële image voert de dienst uit met UID/GID 10001. De meest beperkende oplossing is alleen die gebruiker schrijfrechten te geven op beide mappen:

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

Werkt u uitsluitend via de interface van DSM, maak dan eerst de overgeërfde rechten expliciet en geef daarna lees- en schrijfrechten aan het account of de groep die Container Manager gebruikt. De volgende schermafbeeldingen tonen het pad in DSM. Geef in productie geen lees- en schrijfrechten aan Everyone; is die instelling voor een test nodig, beperk ze dan strikt tot de map rustfs.

Overgeërfde rechten expliciet maken in DSM, in het Frans
Maak de overgeërfde rechten expliciet voor u ze aanpast.
De rechteneditor van DSM, in het Frans
Gebruik in productie liever een apart account of een aparte groep dan Everyone.

Het project aanmaken in Container Manager

Kies in Container Manager → Project voor Maken, noem het project rustfs en selecteer de map /docker/rustfs. Plak daarna dit bestand docker-compose.yml:

services:
  rustfs:
    image: rustfs/rustfs:latest
    container_name: rustfs-server
    security_opt:
      - no-new-privileges:true
    ports:
      - "9000:9000" # S3-API
      - "9001:9001" # Webconsole
    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.voorbeeld.be
      RUSTFS_ACCESS_KEY: ${RUSTFS_ACCESS_KEY}
      RUSTFS_SECRET_KEY: ${RUSTFS_SECRET_KEY}
    volumes:
      - ./data:/data/rustfs0
      - ./logs:/var/log/rustfs
    restart: unless-stopped

Maak er een bestand .env naast. De onderstaande waarden zijn bewust plaatshouders: vervang ze voor u het project start en publiceer dat bestand nooit.

RUSTFS_ACCESS_KEY=VERVANG_MIJ
RUSTFS_SECRET_KEY=GENEREER_EEN_LANG_EN_UNIEK_GEHEIM
Het RustFS-project aanmaken in Container Manager, in het Frans
Maak het project aan in /docker/rustfs en gebruik de configuratie hierboven.
De terminal van Container Manager meldt dat RustFS is gestart
Een afsluitcode 0 bevestigt dat de container is aangemaakt.

De reverse proxy instellen

Maak in Configuratiescherm → Aanmeldportaal → Geavanceerd → Reverse proxy twee afzonderlijke regels aan. Dit is het punt dat u niet mag omwisselen:

  • https://s3.voorbeeld.be:443 naar http://localhost:9000 voor de S3-API.
  • https://console-s3.voorbeeld.be:443 naar http://localhost:9001 voor de webconsole.

Voeg voor de console de WebSocket-headers $http_upgrade en $connection_upgrade toe. Time-outs van 600 seconden passen bij lange overdrachten, maar stem ze af op uw omgeving. Wijs daarna het juiste TLS-certificaat aan beide hostnamen toe.

De reverse-proxyregel voor de RustFS-console, in het Frans
Deze regel toont de console op poort 9001. Maak een tweede regel voor de API op poort 9000.

De firewall van DSM aanpassen

Stel de poorten 9000 en 9001 niet rechtstreeks open op het internet. Laat eerst HTTPS naar de reverse proxy toe en beperk de interne poorten daarna tot de NAS, het beheersnetwerk of het Docker-subnet dat werkelijk wordt gebruikt.

Open Container Manager → Netwerk en klap het netwerk van het project open om dat netwerk te vinden. In het voorbeeld komt 172.18.0.0/16 overeen met het masker 255.255.0.0. Uw waarde kan verschillen: neem ze exact over en plaats de toelatingsregel vóór de weigeringsregels.

Het Docker-subnet zoals getoond in Container Manager, in het Frans
Noteer het werkelijke subnet van het project voor u de firewall wijzigt.

De eerste bucket aanmaken

Open https://console-s3.voorbeeld.be en meld u aan met de toegangssleutel en de geheime sleutel uit .env. Maak in Verkenner uw eerste bucket aan, bijvoorbeeld bucket01.

De aanmeldpagina van RustFS, volledig in het Frans vertaald
Meld u aan met de gegevens die in .env staan.
De lijst met buckets in de RustFS-console, in het Frans
De eerste bucket verschijnt in de objectverkenner.

Maak daarna een toegangssleutel die eigen is aan de toepassing die deze bucket zal gebruiken. De geheime sleutel wordt alleen op het moment van aanmaken getoond: bewaar ze in uw wachtwoordkluis en sluit daarna het venster. De waarden op de schermafbeelding zijn bewust afgeschermd.

Het aanmaken van een RustFS-toegangssleutel met afgeschermde geheimen
Bewaar de geheime sleutel meteen; de getoonde waarden zijn afgeschermd.
De keuze van het beleid van een RustFS-bucket, in het Frans
Houd het beleid Privé aan, tenzij een publieke behoefte uitdrukkelijk is goedgekeurd.

De dienst controleren

RustFS biedt voor elke interface een gezondheidscontrole. Beide opdrachten moeten zonder fout antwoorden:

curl -fsS https://s3.voorbeeld.be/health
curl -fsS https://console-s3.voorbeeld.be/rustfs/console/health

Test daarna een upload en een download met de S3-client die u echt wilt gebruiken, en herstart de container om te bevestigen dat de gegevens in docker/rustfs/data behouden blijven.

Kort samengevat

De uitrol past in één project van Container Manager, maar drie details maken het verschil: beperkte rechten op de volumes, geheimen buiten het Compose-bestand, en twee correct gescheiden proxyregels. De S3-API gebruikt poort 9000 en de console poort 9001.

Bronnen

Over de auteur

Jeremy Kraft beheert de infrastructuur en de zelfgehoste diensten van het IBCSC. Deze gidsen beschrijven configuraties die echt zijn uitgerold en voor publicatie opnieuw zijn nagekeken.

Discussie

Reacties

0

Nog geen reacties. U kunt de discussie openen met een vraag of uw eigen ervaring.