Hoppa till innehåll
Installation

Installera Dokku

Lägg ut sajten med git push i stället för filöverföring, med kostnaden utskriven och databasen flyttad ut innan den hinner försvinna.

Vad Dokku är

Ett sätt att lägga ut en webbplats genom att skicka koden med git. Ni skriver git push dokku main, och några sekunder senare kör den nya versionen på servern. Dokku listar ut själv vilket språk koden är skriven i, installerar det som behövs och startar om tjänsten.

Ingen filöverföring, ingen omstart för hand, ingen lista med steg som någon glömmer klockan elva på kvällen. Utläggningen blir ett kommando, och blir den ett kommando vågar ni göra den ofta.

Det här är den kortaste vägen i hela samlingen från kod på er dator till en riktig webbadress. Jämför med Argo CD, som gör något liknande men kräver Kubernetes och en helt annan tidsbudget.

Det här kräver en server, och den kostar pengar

Dokku installeras på en server, inte på er egen dator. Poängen är att sajten ska vara nåbar dygnet runt, och då behövs en maskin som står på hos någon annan.

Kraven är en Ubuntu- eller Debian-server med minst 1 GB minne. En sådan kostar från ungefär femtio kronor i månaden. Det är en riktig utgift som ska med i företagets budget innan ni börjar, och den fortsätter varje månad.

Ett domännamn är inte nödvändigt för att komma igång, men blir det snart. Räkna med några hundralappar om året där också.

Installationen

Ni loggar in på servern med SSH. Det gör ni från PowerShell på Windows och från Terminal på Linux Mint, med samma kommando: ssh root@serverns-adress. Det förutsätter att er publika SSH-nyckel redan finns hos serverleverantören, och de flesta frågar efter den när ni beställer servern. Kör sedan på servern:

wget -NP . https://dokku.com/install/v0.38.27/bootstrap.sh
sudo DOKKU_TAG=v0.38.27 bash bootstrap.sh

Versionsnumret i kommandot är det som gällde när guiden skrevs. Kontrollera vad som är aktuellt på dokku.com och byt ut båda ställena om det ändrats. Installationen tar fem till tio minuter.

Därefter två rader som gör att ni kommer åt systemet utifrån:

cat ~/.ssh/authorized_keys | sudo dokku ssh-keys:add admin
dokku domains:set-global er-doman.se

Varje app får med detta adressen appnamn.er-doman.se, och det kräver en wildcard-post, alltså en DNS-post för *.er-doman.se som pekar på serverns IP-adress. Utan den hittar ingen fram till apparna. HTTPS kommer inte automatiskt heller, utan kräver ett eget tillägg: sudo dokku plugin:install https://github.com/dokku/dokku-letsencrypt.git, därefter dokku letsencrypt:set --global email er-mejladress och dokku letsencrypt:enable butik för varje app.

Tre saker att göra först

  1. Installera git på er egen dator om det inte redan finns, för utan det finns inget att pusha med. På Windows: winget install Git.Git i PowerShell, och stäng sedan fönstret och öppna ett nytt. På Linux Mint: sudo apt-get install git.
  2. Skapa appen på servern med dokku apps:create butik, och lägg sedan till servern som ett mål i ert repo hemma: git remote add dokku dokku@serverns-adress:butik. Nu finns kopplingen, och det är den som gör resten möjlig.
  3. Gör er första utläggning med git push dokku main och läs vad som rullar förbi i fönstret. Ni ser Dokku känna igen språket, hämta beroenden och starta. Går något fel står det där, och det är den enda felsökning ni behöver i början.

Den vanligaste fällan

Att tro att filerna som appen skapar ligger kvar. Varje utläggning bygger en ny container från er kod, och den gamla slängs. Allt som appen sparat till disk, alltså uppladdade bilder och en databasfil som ligger i projektmappen, försvinner vid nästa push. Det märks inte första gången, för då fanns inget sparat ännu. Det märks i november.

Lägg därför databasen utanför appen. Postgres-tillägget ingår inte i grundinstallationen, så installera det först med sudo dokku plugin:install https://github.com/dokku/dokku-postgres.git. Sedan räcker det för de flesta projekt med dokku postgres:create butik-db följt av dokku postgres:link butik-db butik. Uppladdade filer läggs i en beständig mapp utanför appen, med två rader på servern:

dokku storage:ensure-directory butik
dokku storage:mount butik /var/lib/dokku/data/storage/butik:/app/uppladdningar

Första raden skapar mappen, andra kopplar in den i appen. Sökvägen efter kolon är den appen skriver till.

Gör det innan ni har riktiga kunder, inte efter. Att flytta data efteråt går, men det är en kväll ni hellre lägger på något annat.