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.bevoor de API enconsole-s3.voorbeeld.bevoor 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 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.
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
/docker/rustfs en gebruik de configuratie hierboven.
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:443naarhttp://localhost:9000voor de S3-API.https://console-s3.voorbeeld.be:443naarhttp://localhost:9001voor 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.
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.
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.
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.
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.
Discussie
Reacties
Nog geen reacties. U kunt de discussie openen met een vraag of uw eigen ervaring.
Aanmelden houdt de gesprekken vrij van spam en voorkomt dat uw e-mailadres wordt gepubliceerd.
Aanmelden om te reageren →