Behöver hosta filer i min Spring app. Förslag på bra tjänst?
Visa signatur
Senast redigerat
Min app kräver uppladdning av pdf filer på ca 1 Mb. Jag behöver en tjänst som tar emot en fil och returnar en länk där filen sparats. Filen ska bara vara åtkomlig med min api_key som tillhandahålls av min back end och om det är möjligt så körs även en annan kontroll i tjänsten att det är min app som är klienten, men sådant antar jag går att spooka. Ändå bättre än inget.
Jag har försökt få Google Drive att fungera men där krävs det OAuth och att logga in igen, och det är uteslutet. En användare på min app är redan inloggad, det ska verka som att det är min app som är tjänsten och inte tredje part. Om det innebär att det måste tummas något på säkerheten så är det så.
Jag kräver inte mer än 5 GB lagring och säg 20 GB trafik / mån. Det är uteslutet att förlägga det i min databas som blir låst vid access av filer. Det behöver inte vara supersnabbt, bara snabbt. Förslag?
Om nån har en lösning som innebär att min back end tar hand om hosting och som inte är en ful-lösning så vore det väldigt tacksamt. Det är Spring Boot.
En separat backend för filuppladdning som webbläsaren/mobilappen laddar upp PDF:er till kommer kräva att den backenden har tillgång till din databas av API-nycklar (eller en kopia av dessa), för att kunna åstadkomma autentisering, eller hur? Om det är en webbläsarbaserad lösning kommer backenden även behöva konfigureras för CORS.
Om du streamar PDF:erna från din nuvarande backend till en separat backend för PDF:erna så kommer bara din backend att behöva autentisera sig mot den nya backenden, medan klienten autentiserar sig mot din nuvarande backend. Det är troligtvis den tekniskt enklaste lösningen.
Bägge de lösningarna kan antagligen hostas i någon av de stora molnleverantörerna, eventuellt med en serverless-lösning för koden (om du ska autentisera webbläsaren/mobilappen) och någon lagrings-lösning. Jag tänker inte göra reklam för något särskilt storföretag eller deras lösningar för detta, men jag vet vad jag hade valt.
Du har inte talat om vad du har för backend (serverprogramvara och hårdvara utöver Spring) eller varför det inte fungerar att lagra dokumenten i databasen, så det känns mestadels meningslöst att spekulera i en sådan lösning. Har backenden inget filsystem?
Att tumma på säkerheten är ingen bra ide, speciellt inte om det är någon form av kunddata du hanterar, definitivt inte om det är persondata.
Att bara ladda upp dokument och sedan inte göra något med dem tycks... onödigt. Så du har antagligen missat att nämna några väsentliga krav du har på lösningen.
För övrigt: API-nyckel kanske eller kanske inte är en bra lösning beroende på vad du försöker åstadkomma. Vad är det för övervägande som gör att du inte vill använda OAUTH2 för all autentisering?
Jag skulle faktiskt rösta på någon git-tjänst, så som GitHub eller Codeberg. Då får du en fungerande direktlänk till varje fil, vars länk du kan använda. Om samma länk gäller för oavsett version av någon fil, är jag dock osäker på.
Om direktlänken ändras för varje ny version av en fil, så kan jag ju rekommendera Nextcloud, antingen att du själv installerar den på någon server du äger (VPS eller vad som), eller att du skapar ett konto hos någon leverantör.
En separat backend för filuppladdning som webbläsaren/mobilappen laddar upp PDF:er till kommer kräva att den backenden har tillgång till din databas av API-nycklar (eller en kopia av dessa), för att kunna åstadkomma autentisering, eller hur? Om det är en webbläsarbaserad lösning kommer backenden även behöva konfigureras för CORS.
Så är det!
Om du streamar PDF:erna från din nuvarande backend till en separat backend för PDF:erna så kommer bara din backend att behöva autentisera sig mot den nya backenden, medan klienten autentiserar sig mot din nuvarande backend. Det är troligtvis den tekniskt enklaste lösningen.
Ja det låter strålande, det är så jag får göra. Då behöver jag inte bekymra mig om att någon kan sniffa upp var filerna hostas eller min api key genom att öppna min app och titta. Och min back end kommer veta vem som har tillgång till vad eftersom users är autentiserade i samma back end. Mycket bra!
Bägge de lösningarna kan antagligen hostas i någon av de stora molnleverantörerna, eventuellt med en serverless-lösning för koden (om du ska autentisera webbläsaren/mobilappen) och någon lagrings-lösning. Jag tänker inte göra reklam för något särskilt storföretag eller deras lösningar för detta, men jag vet vad jag hade valt.
Okej, har du möjlighet att PMa? I dagsläget är lågt pris prioritet över allt annat, det får gärna vara gratis även om det laddar långsamt. Detta är en av de sista funktionerna som ska implementeras men det är lite tid kvar innan appen kommer gå live.
Du har inte talat om vad du har för backend (serverprogramvara och hårdvara utöver Spring) eller varför det inte fungerar att lagra dokumenten i databasen, så det känns mestadels meningslöst att spekulera i en sådan lösning. Har backenden inget filsystem?
Nej det har jag inte för det är inte bestämt än Jag tänkte göra en tråd om det för jag vet inte vad jag behöver. Jag är väldigt ny på det här. Det enda jag vet ännu är att backend är ett Spring Boot 3 project med Spring Sec 6 och JWT, med en PostgreSQL databas. Appen är en React Native app och det är enbart genom appen som backenden kommer nås av users.
Mitt drömscenario är att jag köper en M2 Pro Mac Mini (eller annan hårdvara om det är så) som dedikeras till enbart den här appen och som kan göra allt - hosta appen, PostgreSQL databas, filserver hantering. Summan för den kommer vara försumbar mot månadskostnaden för Heroku etc över flera år. Risken att det blir strömavbrott i min lägenhet som försätter appen ur funktion är i det här läget något jag får ta. Min egna bandbredd hemma räcker till för att driva den.
Jag har inte haft framgång när det gäller att hitta info om det är möjligt att göra så, det fanns lite info om nåt som kallades Minikubernetes eller dylikt men det verkade inte som en helt etablerad lösning. Kanske av självklara skäl som jag inte känner till.
I annat fall blir det hosting på annat sätt, t.ex. Heroku eller AWS, Azure, annan tjänst. Dock vill jag gärna hålla ner på kostnaden, det är ganska snålt med data som ska hanteras och standard hastighet duger.
Att tumma på säkerheten är ingen bra ide, speciellt inte om det är någon form av kunddata du hanterar, definitivt inte om det är persondata.
Att bara ladda upp dokument och sedan inte göra något med dem tycks... onödigt. Så du har antagligen missat att nämna några väsentliga krav du har på lösningen.
Om jag får min backend att sköta auth av vem som får åtkomst till filservern så är det problemet löst så det blir bra. Min databas är säker, den har RLS. Eller egentligen inte men back enden kollar upp att varje request av en vanlig user är för något som den usern äger, annars får man 403. Det är oväsentligt sålänge man är i appen men om någon kollar upp mina end points så kommer det ändå inte gå att komma åt något. Så det är som Row Level Sec i praktiken. Detta var väldigt viktigt eftersom vem som helst kan bli user genom enkel registrering som bara kräver email verifikation.
Anledningen att jag inte vill hosta pdfs rakt i databasen är att jag läst att så fort en user vill läsa en fil så blir databasen låst tills filen är läst, vilket stämmer med vad jag lärt mig om databaser. Det kommer inte fungera väl för databasen kommer hantera en mängd entries och mycket ofta. Entries är dock väldigt små i storlek. Och de här uppladdade pdfsen kommer hämtas av många personer varje dag och är upp emot 2 MB i storlek. Du kan se det som att vissa personer har rättigheter att ladda upp pdfs och agerar som projektledare. Alla andra i projektet kommer vilja ta del av de här pdf:sen. Appen kommer cacha dem när de är hämtade en gång men det kommer ske ändringar som innebär nya pdfs och det är ca 50 pers på ett projekt och back enden kommer hantera ca 10 projekt samtidigt.
Tack för all din input! Jag kommer börja kika runt på hostinglösningar själv men som sagt om du har lust att delge någon du har god erfarenhet av så är PMkorgen öppen.
Jag skulle faktiskt rösta på någon git-tjänst, så som GitHub eller Codeberg. Då får du en fungerande direktlänk till varje fil, vars länk du kan använda. Om samma länk gäller för oavsett version av någon fil, är jag dock osäker på.
Om direktlänken ändras för varje ny version av en fil, så kan jag ju rekommendera Nextcloud, antingen att du själv installerar den på någon server du äger (VPS eller vad som), eller att du skapar ett konto hos någon leverantör.
Det här är nytt för mig, är Nextcloud en tjänst som jag hostar själv (om jag vill) och på så sätt blir tillgänglig online? Som en FTP fast inte en FTP utan ett API?
Det här är nytt för mig, är Nextcloud en tjänst som jag hostar själv (om jag vill) och på så sätt blir tillgänglig online? Som en FTP fast inte en FTP utan ett API?
Då får jag välkomna dig till en bättre och typ alltid friare värld med FOSS
Ja, tänk dig som Dropbox och Google Drive. Nextcloud funkar på exakt samma sätt, fast du äger datan - ingen annan (om du inte har molntjänsten via en VPS hos något företag och inte kör med tvåvägskryptering (E2EE), såklart). När du ska dela någon fil, väljer du att dela filen via Nextcloud och får då en delningslänk. Om du ändrar filens innehåll eller döper om filen, har ingen betydelse för länken, den fortsätter vara densamma.
Spelnyheter från FZ
Copyright © 1999–2025 Geeks AB. Allt innehåll tillhör Geeks AB.
Citering är tillåten om källan anges.