Repository navigation
Serverguiden
WebbUs serverguide—Hur använder man server för webbprojekt?
Det här dokumentet är en guide till hur man använder D-sektionens server för att sätta upp och hantera ett utskotts webbtjänster. Servern kör Docker och Portainer för att underlätta driftsättning samt för att underhålla dem. Eftersom du inte är ensam på servern är det viktigt att respektera de andra utskotten—följande riktlinje är bra att förhålla sig till: Om du ser något som ser konstigt ut eller som du tror du inte bör se, skriv till oss.
Alla utskott har varsin Linux-användare som de kan använda på servern. Med detta konto kan man etablera en ssh tunnel för att komma åt Portainer där man får ett personligt konto som är med i de utskott man tillhör. Med hjälp av denna grupp så begränsas vilka tjänster man har tillgång till i Portainer-gränssnittet.
När man skapar tjänster med Docker och Portainer så vill man säkert spara filer utanför
Docker-containern så de bibehålls över flera deployments. Helst ska man använda volume-mounts men
ibland behövs bind-mounts. Dessa lägger man under /home/utskott/<utskott_namn>/<tjänst_namn>,
t.ex. /home/utskott/dlan/dlan-frontend för D-LANs frontend project. Här kan det vara bra att mappa
static filer, media filer eller configurations filer man vill spara utanför sin Docker-image.
Det förutsätts slutligen att man exponerar sin webbtjänst över en port på ipn 0.0.0.0 som vi sedan
pekar Nginx webbservern mot. Vilken port du ska använda får du av WebbU. Man kan få sina
static/media filer mappade direkt till Nginx men inte mer än så.
Här beskrivs hur man skapar en webbtjänst på d-sektionens server.
TODO…
Som standard används Docker till alla projekt, särskilt i produktionsmiljö. Detta är för att på tidigare servrar har det uppstått kaos när det inte har använts. Det ska krävas en speciellt bra anledning för att inte köra projektet i docker.
Här under kommer det att finnas förklaringar på ord som uppkommer i denna text gällande Docker:
- Container: Ett inkapslat Linux-system som används för att köra programvara. Container-system fungerar likadant på alla operativsystem och öppnar endast portar eller mappar som beskrivs vid start. Container-system är viktiga för att se till att versioner och krav uppehålls då många program körs samtidigt.
- Image: En image beskriver hur Linux-systemet som en container kör är uppbyggt. Det går självklart att konfigurera containers när de kör, men ifall containern måste tas bort eller skapas om från grunden tjänar man på att baka in så mycket konfiguration man kan i imagen. Images byggs rad för rad med Dockerfile-filer. Läs mer om Docker images.
- Docker Compose: Ett verktyg som konfigurerar en grupp container-system, till exempel vilka bilder de baseras på, hur de körs, vilka portar som är tillgängliga utifrån varje container och vad som händer om en container kraschar. Compose är praktiskt för att sammankoppla t.ex en backend, en databas och en frontend. Docker compose använder YAML som konfigurationsspråk. Läs mer om Docker Compose.
- Docker Hub: Samlings-sida för förproducerade Docker-bilder. Här finns ett stort sortiment av olika program i ett stort registry för Docker-bilder. På DockerHub hittar man bilder som man kan utgå ifrån, exempelvis en färdig databas bild för Postgres-databaser eller en bild installerad med Ubuntu. Läs mer om Docker Hub
För att underlätta startandet och underhållandet av webbtjänster använder sektionen ett eget docker-registry som liknar Docker Hub. Har du byggt egna Docker-images är det praktiskt att ladda upp dem till sektionens registry och peka Portainer till den uppladdade imagen. Användandet av registryt är helt frivilligt eftersom Portainer även stödjer Docker Hub och tarballs för images.
Innan det är möjligt att komma åt registret krävs det att du loggar in. Inloggningsdetaljer får du av webmaster och kan komma att ändras under året. När du är redo så kör du följande kommando och följer instruktionerna för att logga in.
docker login https://registry.d-sektionen.seIfall docker varnar om ett okrypterat lösenord rekommenderar vi starkt att lösa det problemet. Lösningen beror på plattform och behandlas därför inte i guiden, det går att fråga DeepSeek eller ChatGPT ifall du behöver hjälp.
Innan en Docker-image kan laddas upp på registret måste den byggas med registret som mål. Det gör du lokalt genom att peka Docker till en mapp där en Dockerfile-fil finns, samt en url till registryt. Undvik att inkludera hemligheter i bilden, använd istället en .env fil eller ignorera hemliga filer med en .dockerignore-fil.
docker build -t registry.d-sektionen.se/<projektets-namn>:<tagg> .Vanligtvis används production och development som taggar för produktions- och
utvecklingsmiljöer, men du får tagga hur du vill. Det finns begränsat med minne på registryt så
undvik gärna att skapa för många olika taggar.
När du byggt din bild måste den pushas till registryt för att kunna användas, du måste vara kopplad till internet och inloggad i docker för att göra detta.
docker push registry.d-sektionen.se/<projektets-namn>:<tagg>Ofta kan du använda tabb-knappen i terminalen för att automatiskt hitta rätt namn och tagg.
Portainer är ett webbaserat användargränssnitt för att underhålla flera Docker Compose-projekt samtidigt.
För att komma åt Portainer behöver du sätta upp en SSH-tunnel till D-Sektionens server på lysator, varje utskott har en egen användare på servern. SSH-tunneln öppnar upp tillgång till Portainers gränssnitt på http://127.0.0.1:9000.
ssh -4 -L 9000:127.0.0.1:9000 -N -f <username>@ssh.new.d-sektionen.se| Utskott | <username> |
|---|---|
| WebbU | webbu-admin |
| STABEN | staben |
| D-LAN | dlan |
| Donna | donna |
Ifall ett annat program på din dator använder port 9000 kan det bli en port-konflikt; i det fallet
bör du avsluta det andra programmet eller byta till en annan port, t.ex 3000:127.0.0.1:9000.
Ändrar du porten till SSH-tunneln måste du även öppna webbgränssnittet med den nya porten.
Dina inloggningsuppgifter till Portainer-gränssnittet skapas av sektionens webmaster och används endast till att logga in i Portainer.
Portainers inloggningssida
Efter inloggning till Portainer-gränssnittet presenteras du med ett fåtal miljöer att välja mellan. I de flesta fall kommer endast miljön "D-Sektionen utskott" finnas tillgänglig. Varje miljö är en separat instans av Docker-motorn.
Portainers hemskärm
Väljer du en av miljöerna får du tillgång till ett antal alternativ i sidomenyn till vänster:
- App Templates: Färdiggjorda mallar för vissa vanliga tjänster. Om du hittar det du behöver där så slipper du bygga själv, men utbudet är ganska begränsat.
- Stacks: I princip Docker Compose—alltså ett sätt att lättare definiera hur en container bör köras. Läs mer om Docker Compose.
- Containers: En lista över vilka Docker-containrar som körs. Du bör endast se containrar relaterade till ditt utskott.
- Images: En lista av Docker-bilder som finns lagrade på servern (OBS: inte på registret). Det är troligen en sida du inte kommer spendera mycket tid på.
- Networks: En lista över alla Docker-nätverk som finns definierade på servern. Här kan du skapa, ändra och ta bort nätverk som dina tjänster använder sig av. Om du använder dig av funktionen stacks finns det troligen några som skapats i och med den.
- Volumes: En lista över olika volymer (lagring) som ditt utskotts tjänster använder.
Det är starkt rekommenderat att skapa en Stack för din tjänst. Det görs under stacks i vänsterspalten. Där kan du ge den ett namn, manuellt lägga in compose-filen eller hämta den från en extern tjänst. Som tidigare nämnt är det rekommenderat att ladda upp en .env fil med alla hemligheter, och det kan göras här. Miljövariablerna i .env kan användas i compose-filen med hjälp av stack.env. Glöm inte att sätta “Access control” till ditt utskott.
OBS: Om du använder vårt register är det viktigt att du använder
registry.d-sektionen.se/<image-namn>:<tagg> som image-direktiv i compose-filen. För DockerHub
behövs ingen prefix.
Tips: Använd namn som är informativa då dessa kommer läggas till i början av namnen på alla containrar som skapas av stacken.
När allting är konfigurerat så är det bara klicka “Deploy the stack” som kommer att skapa alla containrar utifrån compose-filen. Efter att stacken deployats blir du vidareskickad till en ny sida där du kan konfigurera din stack.
Konfigurationssidan för en stack
Under containers kan du se alla containers som skapats av stacken. Om du klickar på en av dem kommer du skickas vidare till en sida som innehåller ytterligare information om containern som körs just nu. Större delen av innehållet i denna sida går inte att redigera eftersom containers riskeras att tas bort och återskapas.
Om något har gått fel kan det vara användbart att läsa containerns loggar genom att klicka på "Logs"-knappen. På samma ställe finns det även andra intressanta funktioner, som till exempel "Console" och "Inspect".
En containers informationssida.