
Deploy trenger ikke å bety at du logger inn på serveren og kopierer filer for hånd hver gang du gjør en endring. Med Git, SSH og en VPS fra Webhuset kan du lage en enkel og forståelig deploy-flyt der koden din havner på din egen server i Norge.
Hva du trenger
- En VPS med Linux
- Et lite webprosjekt i Git
- SSH-tilgang til serveren
- Et domene eller en testadresse som peker mot serveren
- Grunnleggende kjennskap til terminalen
Eksemplene under bruker /var/www/minapp som prosjektmappe. Bytt navnet til det som passer for ditt prosjekt.
Trinn 1: Lag en egen deploy-bruker
Ikke bruk root til vanlig deploy. Lag heller en egen bruker som bare har tilgang til det den trenger.
sudo adduser deploy
sudo mkdir -p /var/www/minapp
sudo chown -R deploy:deploy /var/www/minappLogg inn som deploy-brukeren og legg til SSH-nøkkelen du vil deploye med:
sudo -u deploy mkdir -p /home/deploy/.ssh
sudo -u deploy nano /home/deploy/.ssh/authorized_keys
sudo chmod 700 /home/deploy/.ssh
sudo chmod 600 /home/deploy/.ssh/authorized_keysBruk helst en egen SSH-nøkkel for deploy, ikke din private hovednøkkel.
Trinn 2: Klon prosjektet på serveren
Logg inn som deploy-brukeren og hent prosjektet fra Git:
sudo -iu deploy
git clone git@github.com:bruker/minapp.git /var/www/minapp
cd /var/www/minappHvis prosjektet ditt bruker Node.js, kan første oppsett for eksempel være:
npm install
npm run buildFor et enklere statisk prosjekt kan det være nok at filene ligger i riktig mappe.
Trinn 3: Lag et lite deploy-script
Et deploy-script gjør at du kjører de samme stegene hver gang. Lag filen /var/www/minapp/deploy.sh:
#!/usr/bin/env bash
set -e
cd /var/www/minapp
git fetch origin
git reset --hard origin/main
npm install
npm run build
sudo systemctl reload nginxGjør scriptet kjørbart:
chmod +x /var/www/minapp/deploy.shHvis appen din kjører som en tjeneste, kan siste linje heller være:
sudo systemctl restart minappHold scriptet kort. Det skal være lett å se hva som skjer når du deployer.
Trinn 4: Kjør deploy kontrollert via SSH
Fra maskinen din kan du nå deploye slik:
ssh deploy@server.dittdomene.no "/var/www/minapp/deploy.sh"Da logger du inn, henter siste versjon fra Git, bygger prosjektet og laster webserveren på nytt i én kommando.
Vil du gjøre det enda enklere, kan du legge det i et lokalt script:
#!/usr/bin/env bash
ssh deploy@server.dittdomene.no "/var/www/minapp/deploy.sh"Da blir deploy en bevisst handling du selv starter, uten at du må huske alle kommandoene hver gang.
Trinn 5: Tenk gjennom hemmeligheter og rollback
Legg aldri passord, API-nøkler eller databasehemmeligheter i Git. Bruk heller en .env-fil på serveren:
nano /var/www/minapp/.env
chmod 600 /var/www/minapp/.envFor rollback bør du minst vite hvilken commit som sist fungerte:
git log --oneline -5
git reset --hard <commit-id>
npm install
npm run build
sudo systemctl reload nginxNår du blir tryggere, kan du bygge videre med releases-mapper, symlenker og automatisk rollback. Men start enkelt først. En deploy-flyt du forstår er tryggere enn en avansert flyt du ikke klarer å feilsøke.
Anbefalinger
- Bruk en egen deploy-bruker med begrenset tilgang
- Bruk SSH-nøkler, ikke passordinnlogging
- Hold hemmeligheter utenfor Git
- Test scriptet manuelt før du automatiserer mer
- Dokumenter rollback før du trenger det
Du har nå en enkel deploy-flyt fra Git til din egen VPS, med koden og driften under din kontroll på en server i Norge, beskyttet av norsk lov og GDPR.