# Ubuntu

## Hva det er

Ubuntu er en Linux-distribusjon fra Canonical, altså Linux-kjernen og de tusenvis av programmene
rundt den, bygget, testet og rettet av én utgiver etter en kalender som er kunngjort på forhånd.
Ubuntu bygger på Debian, så det bruker de samme `.deb`-pakkene og det samme verktøyet, `apt`, til å
installere dem. Oppå det kommer en egen utgivelsesrytme, egne standardvalg og et selskap som selger
støtte. Det samme pakkearkivet forsyner skrivebordsmaskiner, bilder for skyen og fysiske servere;
denne artikkelen handler om serveren.

Versjonene er oppkalt etter året og måneden de kom ut, så 24.04 kom i april 2024. En ny versjon
kommer hvert halvår, og annethvert år er aprilversjonen en utgave med langtidsstøtte, merket LTS
(_long-term support_). Forskjellen ligger i hvor lenge løftet varer. En mellomversjon (_interim
release_) får ni måneder med rettinger. En LTS-utgave får fem år med vanlig sikkerhetsvedlikehold.
Et abonnement på Ubuntu Pro forlenger det til ti år gjennom Expanded Security Maintenance, og
tillegget Legacy forlenger det til femten.

På servere blir Ubuntu som regel veid mot to naboer. Debian er opphavet: den samme pakkingen, med et
fellesskapsprosjekt bak i stedet for et selskap. Red Hat Enterprise Linux og ombyggingene av den,
som AlmaLinux og Rocky Linux, utgjør den andre familien, med sitt eget pakkeformat og sine egne
verktøy. Å velge mellom de tre er for det meste å velge en kalender, en støtteavtale og de vanene
teamet allerede har.

## Hvorfor det er viktig

Når et team har valgt Ubuntu, gjenstår spørsmålet om hvilken Ubuntu, og svaret bestemmer
vedlikeholdsbudsjettet i mange år.

Servere hører hjemme på LTS-utgaver. En mellomversjon går ut ni måneder etter lansering, så en
server som følger dem, må gjennom en versjonsoppgradering to ganger i året for å holde seg rettet.
Det er mye endring for å få litt nyere pakker. Mellomversjonene er stedet der du prøver ut det neste
LTS-utgave vil bringe.

Oppgraderingsveien for en LTS-utgave er fast, og smalere enn mange tror. En server flytter fra én
LTS-utgave bare til den neste, uten å hoppe over noen: fra 20.04 går veien til 24.04 gjennom 22.04.
Verktøyet for versjonsoppgradering, `do-release-upgrade`, tilbyr hoppet først etter at den nye
versjonens første punktutgivelse er ute, så 24.04 ble standardmålet for oppgradering da 24.04.1 kom.
En flåte som har sakket to utgaver akterut, trenger dermed to fulle oppgraderinger per maskin, hver
med sin egen testing.

Den andre halvdelen av beslutningen er Ubuntu Pro. Abonnementet gir de fem ekstra årene med
sikkerhetsrettinger, Livepatch for å legge inn rettinger i kjernen uten omstart, Landscape for å
styre maskinene som en flåte, og verktøy for FIPS 140-3 og herding etter CIS for regulert arbeid.
Det er gratis på opptil fem maskiner, noe som dekker en liten bedrift eller et laboratorium; utover
det er det et betalt abonnement. Den ærlige sammenligningen er abonnementet mot kostnaden ved å
oppgradere etter planen. Fem år er nok for en server som bygges på nytt fra kode. Ti år passer for
boksen ingen vil røre, der det lønner seg å betale for rettinger framfor å migrere i hast.

Til slutt har Ubuntu sin egen måte å gjøre vanlige ting på, og et team som kommer fra en annen
distribusjon, bør sette av tid til å lære den. Nettverksgrensesnitt konfigureres i YAML gjennom
Netplan. Brannmuren styres som regel med `ufw`, et grensesnitt som leveres avslått.
Sikkerhetsoppdateringer installerer seg selv hver dag gjennom `unattended-upgrades`, som er slått på
som standard. Hver av dem er grei når du kjenner den, og overraskende før det.

## Slik ser det ut i praksis

En flåte av VPS-instanser med Ubuntu Linux som har vokst fram én maskin om gangen, er det tydeligste
bildet på hva et uforvaltet driftsmiljø blir til. Konfigurasjonene hadde glidd fra hverandre, og
ingen hadde tenkt gjennom hvordan maskinene skulle gjenopprettes, eller hvordan nettverket mellom
dem skulle se ut. Arbeidet
[samlet alle de tretti instansene under forvaltning som én flåte](/nb/portfolio/managed-30-ubuntu-linux-vps-instances-implementing-disaster-20/):
sikkerhetskopier kom på plass med gjenopprettingsprosedyrer som faktisk var testet, og
nettverkskonfigurasjonen på hver instans ble flyttet over på den samme herdede grunnlinjen.
Gjenopprettingsveiene var nå testet og ikke bare antatt, og risikoen for nedetid gikk ned.

Databaser gikk på samme grunnlag et annet sted. Ti servere med PostgreSQL 14 og MS SQL Server 2019
på VPS-instanser med Ubuntu 20.04 LTS ble
[designet, satt i produksjon og vedlikeholdt](/nb/portfolio/designed-deployed-and-maintained-10-postgresql-and-ms-13/)
som ett driftsmiljø. Sikkerhetskopiene gikk gjennom `pg_dump` og jobber i SQL Server Agent, med
regler for oppbevaring og ekstern lagring. Prometheus og Grafana fulgte CPU, minne, disk-I/O og
metrikker for spørringsytelse. Både databasene og Ubuntu-operativsystemet ble patchet etter en fast
plan, brannmurene ble satt opp med UFW, og tilgangen ble håndhevet med rollebasert tilgangskontroll.
Katastrofegjenopprettingen var dokumentert helt ned til gjenoppretting til et bestemt tidspunkt og
failover. De ti serverne hadde 99,9 % oppetid, svartidene for spørringer ble 30 % bedre,
automatisering kuttet det manuelle vedlikeholdet med 50 % og frigjorde mer enn ti timer i måneden,
og driftsmiljøet tok imot en økning på 40 % i brukertrafikken uten at tjenesten ble dårligere.

Webhotell er det enkleste tilfellet.
[Førti nettsteder kjørte på servere med Ubuntu Linux](/nb/portfolio/administered-40-websites-on-ubuntu-linux-hosting-servers-53/)
bak en blanding av Apache og Nginx, og jobben var konfigurasjonen, ytelsesjusteringen og
vedlikeholdet som holder nettsteder pålitelige under reell trafikk. Alle førti kjørte med høy
tilgjengelighet og god ytelse.

## Hvor det går galt

**Oppdateringen legger inn en rettet kjerne, og serveren fortsetter å kjøre den gamle.**
`unattended-upgrades` installerer sikkerhetsoppdateringer én gang i døgnet, men valget
`Automatic-Reboot` står på false som standard. En ny systemkjerne blir altså liggende på disk til
noen starter maskinen på nytt, og tjenestene bruker de gamle kopiene av oppdaterte biblioteker til
de også startes på nytt. Filen `/var/run/reboot-required` dukker opp når en omstart venter. Bestem
en regel i stedet for å overlate det til tilfeldighetene: varsle på den filen, legg omstarter til en
rolig time, eller bruk Livepatch for kjernen. En planlagt omstart er to linjer i
`/etc/apt/apt.conf.d/50unattended-upgrades`:

```text
Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-Time "03:30";
```

**En server på en gammel LTS-utgave slutter å få sikkerhetsrettinger, mens alt på den virker som
før.** Vanlig støtte for 20.04 tok f.eks. slutt i mai 2025, og maskinen starter, svarer og melder
grønt nøyaktig som før. Før opp hver servers versjon ved siden av datoen støtten slutter, og før den
datoen kobler du enten på Ubuntu Pro, som holder 20.04 i gang til mai 2030, eller oppgraderer én
LTS-utgave om gangen.

**En ny regel i `ufw` legges inn, og trafikken går nøyaktig som før.** `ufw` vurderer reglene i
rekkefølge, og det første treffet vinner, mens en vanlig `ufw allow` eller `ufw deny` havner etter
reglene som allerede står der. En eldre og bredere regel lenger opp avgjør først. List opp reglene
med plasseringen deres, og sett den spesifikke regelen der den hører hjemme:

```sh
sudo ufw status numbered
sudo ufw insert 1 deny from 203.0.113.7
```

**En pakke fra et tredjepartsrepo blir stående på en gammel, sårbar versjon mens resten av systemet
er oppdatert.** `unattended-upgrades` installerer bare fra kildene som står i innstillingen
`Allowed-Origins`, og fra start inneholder den listen bare de offisielle pakkekildene til Ubuntu. En
pakkekilde fra en leverandør eller et PPA som legges til senere, blir oppdatert for hånd eller
aldri. Legg kilden bevisst inn i listen, eller gi den pakken en egen plan for oppdatering.

## Les mer

- [Ubuntu Server documentation](https://ubuntu.com/server/docs) — veiledningene fra Canonical for å
  installere, konfigurere og drifte Ubuntu på servere.
- [Ubuntu release cycle](https://ubuntu.com/about/release-cycle) — halvårsrytmen, LTS-kalenderen og
  sluttdatoen for hver versjon.
- [Automatic updates](https://documentation.ubuntu.com/server/how-to/software/automatic-updates/) —
  hvordan `unattended-upgrades` velger kilder, og valgene for omstart som avgjør når rettingene trer
  i kraft.
- [Firewall](https://documentation.ubuntu.com/server/how-to/security/firewalls/) — `ufw` fra første
  aktivering til nummererte regler, med netfilter-laget under.
- [How to upgrade your Ubuntu release](https://documentation.ubuntu.com/server/how-to/software/upgrade-your-release/)
  — `do-release-upgrade`, regelen om én LTS-utgave om gangen og ventetiden på punktutgivelsen.
- [Netplan documentation](https://netplan.readthedocs.io/en/stable/) — nettverkskonfigurasjonen i
  YAML som Ubuntu-servere bruker, med `netplan try` og den automatiske tilbakerullingen.

<https://engineer.company/nb/glossary/ubuntu/>
