Frågor om att "hosta" en webplats.

Permalänk
Medlem

Frågor om att "hosta" en webplats.

Bästa Sweclockers. Jag har ett par frågor.

Bakgrund: Jag och en grupp vänner håller på med ett hobbyprojekt, vi är IT-studenter i brist på jobb så har vi beslutat oss för att främja vårt lärande inom utveckling. Detta görs genom att utveckla en hemsida (i notejs/react). Lärandet går bra, men problemen är att ingen av oss har någon som helst aning om hur man faktiskt sjösätter hemsidan. Vi vill inte använda någon extern tjänst då servern kommer behöva köra lite program i bakgrunden.

Vår plan: Vi skall tillsammans köpa en "Raspberry pi 4" med 8GB ram och lägga den i någons källare. Rasberryn skall köra lite program i bakgrunden och servera vår hemsida. Operativsystemet kommer att vara "Ubuntu Server" och mjukvaran kommer att vara "Nginx" eller "Apache Server"

Mina frågor:

  • Är det överhuvud taget möjligt att hosta en server "själv" utan att använda externa tjänster. Måste man betala för att hyra någonting?

  • Finns det risker med att servera en hemsida publikt? Jag antar att man behöver exponera sin IP adress, innebär detta risker? Kan man i så fall tunnla hemsidan genom en VPN?

  • Finns det kostnader som man inte tänker på? Just nu planerar vi för: 200kr/år för domännamn, 1000kr fast för raspberryn, kanske lite el. Men kommer personen som hostar att få problem med sin ISP, etc?

Jag är mycket tacksam för svar! Jag finner väldigt begränsad information på internet kring specifikt node/react och att hosta. Jag antar att det är skillnad eftersom att node/reacts sätt att skapa en hemsida skilljer sig ifrån det traditionella html/js/css på ett ganska markant sätt, men som ni säkert hör så har jag en ganska begränsad kunskap inom området.

Tack folk!

Visa signatur

CPU - 4670k @ 4.0 Grafikkort - Asus Strix 970
Minne - Corsair Value Select 3x4 Gb 1333 mhz

Permalänk
99:e percentilen

Jag hostar min sajt (med random innehåll) ungefär så. Ni kan redan idag prova att dra igång webbservern, forwarda port 80 och 443 till Pi:ns lokala IP-adress i routern och besöka er hemsida genom att slå in er externa IP-adress i webbläsarens adressfält.

Vill ni sedan ha en domän behöver ni såklart betala för det, ungefär 100 kr om året, och så behöver ni se till att dess DNS-record alltid pekar på er faktiska externa IP-adress. Har ni dynamisk IP-adress (mest troligt om ni inte bor i en studentlägenhet typ) behöver ni på något sätt se till att DNS uppdateras automatiskt, men detta krävs inte för att testa, då IP-adressen brukar ändras först när man kopplar ur eller startar om routern.

Jag är ingen säkerhetsexpert, men det finns alltid risker med att vara en del av internet. Vågar inte uttala mig om hur riskabelt det är eller inte är att köra en webbserver, men … jag gör det ju själv.

Visa signatur

Skrivet med hjälp av Better SweClockers

Permalänk

Generellt finns det inga problem med att göra så som ni har tänkt men jag skulle verkligen avråda från det då det är mycket smidigare att hyra en server idag. Om ni inte har konto hos Google kan ni få 3000 kr i credits gratis. Amazon har en free tier som säkert räcker.

Om ni vill ha en mer långsiktig lösning så kolla på Linode, Digital Ocean och Vultr. Deras instegsalternativ ligger runt 50kr i månaden.
Om ni inte ska ha en backend kan ni också köra Github Pages som är gratis.

Det finns extremt mycket information online kring att hosta React med t.ex. Nginx. Det kan vara så att informationen förutsätter viss kunskap och därför verkar lite avancerat när man läser, men det löser ni säkerligen.

Lycka till!

Permalänk
Medlem

Korta svar

1. Ja det är möjligt utan extra kostnad
2. Förvänta dig attacker mot servern riktade eller inte.
3. Nej det bör inte kosta mer för er. El för en Rasperry pi är ca 50kr per år.

Längre svar

Säkerhetsrisken ni har är att ni har en bugg, medveten eller ej i era hemsidor som gör att en hackare kan göra mer än vad som är tänkt. T ex komma åt användaren, tjänsten körs som och sedan komma åt data på rasperry:n eller något som finns i det lokala nätverket. Det är inte troligt att ni utsätts för någon riktad attack, men jag har inte en webbserver som inte det inte görs någon typ av attack på dagligen.

Exempel på att minimera risken:
1. Se till att hålla nginx uppdaterad.
2. Kör varje hemsida som separat användare (inte root).
3. Stäng av inloggning via SSH med lösenord om detta ska ske över internet, använd certifikat.
4. Hosta nodejs i containers för att minimera attackytan om attacken hittar en bug.
5. Använd SELinux eller AppArmor för att begränsa rättigheterna

Jag säger inte att ni behöver göra alla dessa steg, dessa är bara rekommendationer sorterade efter svårighetsgrad. Satsar ni på punkt 2. kan ni känna er tillräckligt nöjda.

Den kanske viktigaste jag skulle göra om rasperry:n ska stå hemma hos någon, är att segmentera nätverket. Dvs Rasppery:n ska inte komma åt din hemmadator/apple TV eller vad du nu har hemma. Det sker lite olika beroende på vilken typ av router/Gateway som används. En del använder DMZ, personligen har jag satt upp ett separat nätverk med brandväggsregler som endast tillåter trafik in till webbservern, men tillåter inte webbservern att kommunicera med något. Gör ni detta så sitter resten av hemmanätverket säkert även om Rasperry:n skulle bli hackad.

Angående VPN, ser jag inte nytta av det i detta fallet, hemsidan är publik i vilket fall. Det skulle vara för att dölja var sidan är hostad, jag ser inte riktigt poängen för det.

Angående ISP:er Så länge ni inte hostar en kommersiell applikation så kan ni hosta hemsidor hemma utan att ISP bryr sig. Problemet ni kan få är om ni blir hackade och er server används för attackera någon annan, men den risken lever ni med redan idag då era hemdatorer löper samma risk.

Min rekommendation?
Prova på, det är en bra lärdom för att förstå hur allt hänger ihop och kostnaden är liten.

Permalänk
Medlem

@Orkhan: Läs igenom denna tråd (berör Windows) - #18042429 - Men kika på sista inlägget av @sebbeh som postades (2019-08-26 14:07) - Tror han kan hjälpa dig om vad du eftersöker.

Visa signatur

Playstation 5 | Acer Nitro 4K 144 Hz XV282KKV | Razer Blade Laptop / 15,6" 144Hz / i7 10750H / 16GB / 512GB HD / RTX 2070

Permalänk
Medlem
Skrivet av Alling:

Jag hostar min sajt (med random innehåll) ungefär så. Ni kan redan idag prova att dra igång webbservern, forwarda port 80 och 443 till Pi:ns lokala IP-adress i routern och besöka er hemsida genom att slå in er externa IP-adress i webbläsarens adressfält.

Vill ni sedan ha en domän behöver ni såklart betala för det, ungefär 100 kr om året, och så behöver ni se till att dess DNS-record alltid pekar på er faktiska externa IP-adress. Har ni dynamisk IP-adress (mest troligt om ni inte bor i en studentlägenhet typ) behöver ni på något sätt se till att DNS uppdateras automatiskt, men detta krävs inte för att testa, då IP-adressen brukar ändras först när man kopplar ur eller startar om routern.

Jag är ingen säkerhetsexpert, men det finns alltid risker med att vara en del av internet. Vågar inte uttala mig om hur riskabelt det är eller inte är att köra en webbserver, men … jag gör det ju själv.

Härligt! Suttit och stirrat lite på upplägget ifrån en virtuell maskin då vi inte har nått "PI-köpar-stadiet" ännu, men får se om jag kan peta ut en hello world så fort vi köpt domännamnet.

Skrivet av petabyte:

Korta svar

1. Ja det är möjligt utan extra kostnad
2. Förvänta dig attacker mot servern riktade eller inte.
3. Nej det bör inte kosta mer för er. El för en Rasperry pi är ca 50kr per år.

Längre svar

Säkerhetsrisken ni har är att ni har en bugg, medveten eller ej i era hemsidor som gör att en hackare kan göra mer än vad som är tänkt. T ex komma åt användaren, tjänsten körs som och sedan komma åt data på rasperry:n eller något som finns i det lokala nätverket. Det är inte troligt att ni utsätts för någon riktad attack, men jag har inte en webbserver som inte det inte görs någon typ av attack på dagligen.

Exempel på att minimera risken:
1. Se till att hålla nginx uppdaterad.
2. Kör varje hemsida som separat användare (inte root).
3. Stäng av inloggning via SSH med lösenord om detta ska ske över internet, använd certifikat.
4. Hosta nodejs i containers för att minimera attackytan om attacken hittar en bug.
5. Använd SELinux eller AppArmor för att begränsa rättigheterna

Jag säger inte att ni behöver göra alla dessa steg, dessa är bara rekommendationer sorterade efter svårighetsgrad. Satsar ni på punkt 2. kan ni känna er tillräckligt nöjda.

Den kanske viktigaste jag skulle göra om rasperry:n ska stå hemma hos någon, är att segmentera nätverket. Dvs Rasppery:n ska inte komma åt din hemmadator/apple TV eller vad du nu har hemma. Det sker lite olika beroende på vilken typ av router/Gateway som används. En del använder DMZ, personligen har jag satt upp ett separat nätverk med brandväggsregler som endast tillåter trafik in till webbservern, men tillåter inte webbservern att kommunicera med något. Gör ni detta så sitter resten av hemmanätverket säkert även om Rasperry:n skulle bli hackad.

Angående VPN, ser jag inte nytta av det i detta fallet, hemsidan är publik i vilket fall. Det skulle vara för att dölja var sidan är hostad, jag ser inte riktigt poängen för det.

Angående ISP:er Så länge ni inte hostar en kommersiell applikation så kan ni hosta hemsidor hemma utan att ISP bryr sig. Problemet ni kan få är om ni blir hackade och er server används för attackera någon annan, men den risken lever ni med redan idag då era hemdatorer löper samma risk.

Min rekommendation?
Prova på, det är en bra lärdom för att förstå hur allt hänger ihop och kostnaden är liten.

Tack! Det är precis den typen av säkerhetsrisker jag syftade på. Vill inte att någon skall kunna ta sig in på andra delar av nätverket bara för att en hemsida hostas. Grymma tips!

Skrivet av Nucky:

@Orkhan: Läs igenom denna tråd (berör Windows) - #18042429 - Men kika på sista inlägget av @sebbeh som postades (2019-08-26 14:07) - Tror han kan hjälpa dig om vad du eftersöker.

Det inlägget är guld! Tack!

Visa signatur

CPU - 4670k @ 4.0 Grafikkort - Asus Strix 970
Minne - Corsair Value Select 3x4 Gb 1333 mhz

Permalänk
Hedersmedlem
Skrivet av Orkhan:

Är det överhuvud taget möjligt att hosta en server "själv" utan att använda externa tjänster. Måste man betala för att hyra någonting?

Om du vill att andra på Internet ska kunna besöka din hemsida behöver du en internetanslutning som ger dig en riktig extern IP-adress. Eftersom IP-adresser är bristvara idag så händer det att du inte får en riktig IP-adress som standard, utan istället en CGN-adress. I många fall kan man då fixa en riktig extern IP-adress från sin leverantör. Bahnhof jobbar på det sättet, till exempel.

Helst ska du också ha en statisk IP-adress, men det är inget du får utan företagsabbonemang i de flesta fallen, något som blir ganska dyrt. Annars kommer du få nya IP-adresser varje gång du kopplar upp, vilket gör det svårare för din användare för att hitta din server.

För att dina användare ska kunna hitta din server på ett hostnamn så behöver du ett domännamn. Det kostar pengar. Du behöver också DNS-hosting, men det brukar ingå grundläggande DNS-hosting när man köper ett domännamn. Ett domännamn pekar du sedan på en IP-adress, och har du en dynamisk sådan så måste du på något sätt uppdatera dina DNS-poster varje gång du får en ny IP. Det finns olika tjänster på marknaden för "dynamisk DNS", vissa har någon slags version som är gratis i vissa sammanhang och med vissa villkor.

Citat:

Finns det risker med att servera en hemsida publikt? Jag antar att man behöver exponera sin IP adress, innebär detta risker? Kan man i så fall tunnla hemsidan genom en VPN?

Ja. En server kan bli hackad, och en hackad server kan sedan användas som språngbräda för att hacka andra datorer eller andra enheter på ditt lokala nät (som annars hade varit relativt skyddade bakom din routers inbyggda brandvägg). Den kan också användas för att skicka spam eller som språngbräda för andra angrepp mot andra siter på Internet. Angrepp som sedan kan spåras tillbaka till din egna anslutning.

Det bästa är att sätta sina publikt åtkomliga servrar i ett DMZ-nät, som är konfigurerat med brandväggsregler som inte tillåter din server att kommunicera med något annat ute på Internet eller ditt lokala nätverk utan att det finns en specifik brandväggsregel som tillåter det. Detta är inte en funktion som finns i de flesta hemmaroutrar.

(Det finns möjlighet till någon fyndig ordvits här om att detta liknas med att man håller för munnen när man hostar för att inte sprida virus, men jag är inte från Göteborg så jag får inte till det.)

Citat:

Finns det kostnader som man inte tänker på? Just nu planerar vi för: 200kr/år för domännamn, 1000kr fast för raspberryn, kanske lite el. Men kommer personen som hostar att få problem med sin ISP, etc?

Sannolikt inte. ISP:er brukar inte bry sig nämnvärt om man hostar något på en server hemma, om det inte orsakar några problem för ISP:n.

Men alltså, varför inte istället sätta upp en billig eller gratis serverinstans i molnet? Du kan få prestanda som liknar vad du får i en Raspberry Pi helt gratis utan att det behöver stå i någons källare, och även möjligheterna att använda brandväggsregler i molntjänsten som säkrar upp din server på ett bra sätt.

Permalänk
Medlem
Skrivet av pv2b:

...

Men alltså, varför inte istället sätta upp en billig eller gratis serverinstans i molnet? Du kan få prestanda som liknar vad du får i en Raspberry Pi helt gratis utan att det behöver stå i någons källare, och även möjligheterna att använda brandväggsregler i molntjänsten som säkrar upp din server på ett bra sätt.

Jag förstår precis vad du menar. Vi har själva noterat att det antagligen hade vart enklare att använda en molntjänst eller dyligt, men eftersom att projektet bland annat och nästan främst är ett lärande-projekt så hade det varit roligt att lära sig underhålla servern och hantera säkerhetsriskerna själva. Men grymma tips oavsett! Tack

Visa signatur

CPU - 4670k @ 4.0 Grafikkort - Asus Strix 970
Minne - Corsair Value Select 3x4 Gb 1333 mhz

Permalänk
Medlem

Intressant tråd.
Har själv varit nyfiken på ämnet då jag sysslar med webbsidor, provade här om dagen att köra port forward till port 80 och det funkade ju att besöka sin NodeJS-sida externt, men funderade just över riskerna då.
Skulle vara kul att lära sig lite mer om nätverkssäkerhet, man vill ju dock inte chansa och bli hackad inom en timme
Fördelen med att hosta hemifrån måste väl ändå vara att man kan göra i princip hur som helst med mjukvara etc antar jag?
Utan att göra 856 st olika inställningar på något webbhotell menar jag.

Permalänk
Medlem
Skrivet av ChrisDev:

Intressant tråd.
Har själv varit nyfiken på ämnet då jag sysslar med webbsidor, provade här om dagen att köra port forward till port 80 och det funkade ju att besöka sin NodeJS-sida externt, men funderade just över riskerna då.
Skulle vara kul att lära sig lite mer om nätverkssäkerhet, man vill ju dock inte chansa och bli hackad inom en timme
Fördelen med att hosta hemifrån måste väl ändå vara att man kan göra i princip hur som helst med mjukvara etc antar jag?
Utan att göra 856 st olika inställningar på något webbhotell menar jag.

Den enda skillnaden är väl att du får göra 856 st. Inställningar på din egen server

Ett smidigt alternativ är ju att köra en server i molnet. Så slipper man eventuella driftproblem. Det är lika krångligt/roligt/smidigt att sätta upp som en HallonPaj.

Permalänk
Medlem
Skrivet av evirob:

Den enda skillnaden är väl att du får göra 856 st. Inställningar på din egen server

Ett smidigt alternativ är ju att köra en server i molnet. Så slipper man eventuella driftproblem. Det är lika krångligt/roligt/smidigt att sätta upp som en HallonPaj.

Sant.
Aldrig testat hosta t ex NodeJS eller Python, när det gäller svenska webbhotell så vet jag typ ett enda som har stöd för det.
Men antar att många kör Azure/AWS eller så.
Inte så insatt i VPS och sånt, funderar ibland på varför en del saker med datorer/internet/nätverk ska vara så krångliga haha, samtidigt är det ju kul