Kapittel 1 · 1.9
Egen cloud-init: sett opp VPS-en din automatisk ved første oppstart
Med cloud-init legger du ved en fil når du installerer, og VPS-en din kjører den selv ved første oppstart. Slik installerer serveren dine faste pakker med en gang, oppretter din egen bruker og kjører kommandoene dine. Nyttig hvis du ofte installerer på nytt eller alltid vil starte med samme grunnlag. Du trenger ikke API eller terminal.
Hvor fyller du det inn?
- Åpne VPS-skjermen via Mine produkter.
- Ny VPS: du ser blokken Installer VPS-en din (se Installer VPS-en din: operativsystem, passord og SSH-nøkkel). Ny installasjon: velg fanen Avansert og klikk på Installer på nytt... under Ny installasjon (se Ny installasjon eller koble til en ISO).
- Velg operativsystem og fyll inn root-passordet og eventuelt SSH-nøkkelen din, som vanlig.
- Klikk på Egen cloud-init under SSH-nøkkelen. Feltet åpner seg.
- Lim inn filen din i feltet.
- Klikk på knappen for å installere, for eksempel Installer Debian 13, eller ved ny installasjon på Slett alt og installer på nytt.
Du trenger fortsatt root-passordet eller SSH-nøkkelen, også med egen cloud-init. Med dem kommer du alltid inn, også via konsollen (se Konsollen: VPS-en din i nettleseren).
Hva kan filen inneholde?
Feltet tar imot user-data, filen som cloud-init leser ved første oppstart. Den første linjen bestemmer hva det er:
| Første linje | Hva er det? |
|---|---|
#cloud-config | Innstillinger i YAML: pakker, brukere, filer, kommandoer. Dette bruker du som regel. |
#!, for eksempel #!/bin/bash | Et skript. Det kjører én gang som root, på slutten av første oppstart. |
#cloud-boothook | Et skript som kjører svært tidlig i oppstarten, på nytt ved hver oppstart. Bare for viderekomne. |
## template: jinja | En mal med variabler fra cloud-init. På linjen under står da #cloud-config eller #!. |
- Maksimalt 256 KB, og bare tekst (UTF-8).
- I YAML rykker du inn med mellomrom, aldri med tabulator.
- Nettverket (IPv4 og IPv6) ordner WebOké. En egen network-config blir ikke brukt, så ikke legg inn nettverksinnstillinger.
Et eksempel
Denne filen oppdaterer alle pakker, installerer htop og fail2ban, oppretter brukeren anna med SSH-nøkkelen din og sudo, gir serveren et eget navn og setter riktig tidssone:
#cloud-config
hostname: web1
fqdn: web1.example.com
package_update: true
package_upgrade: true
packages:
- htop
- fail2ban
users:
- default
- name: anna
shell: /bin/bash
sudo: "ALL=(ALL) NOPASSWD:ALL"
ssh_authorized_keys:
- ssh-ed25519 AAAAC3Nza... anna@laptop
runcmd:
- timedatectl set-timezone Europe/Amsterdam
Bytt ut nøkkelen med din egen offentlige nøkkel (se Lag en SSH-nøkkel på Windows, Mac og Linux). Linjen - default beholder standardbrukeren, slik at root-passordet og SSH-nøkkelen fra skjemaet fortsatt virker. Etter første oppstart logger du inn med ssh anna@203.0.113.10. Hvordan du deretter slår av innlogging som root og setter opp fail2ban, leser du i Slå av innlogging med passord og som root og fail2ban mot gjetteforsøk.
Tips: Eksemplet er for Debian og Ubuntu. På AlmaLinux og Rocky Linux ligger htop og fail2ban i den ekstra kilden EPEL. Fjern packages der, og legg først dnf install -y epel-release og deretter dnf install -y htop fail2ban under runcmd.
Hva sender WebOké med selv?
WebOké sender alltid med vertsnavnet, root-passordet (bare som hash) og SSH-nøkkelen din. Filen din slås sammen med dette. Setter du selv users, password, chpasswd eller ssh_authorized_keys, går dine verdier foran det WebOké sender med.
Merk: Setter du selv ssh_authorized_keys eller password på øverste nivå i filen, erstatter de nøkkelen og passordet fra skjemaet. Legg da selv inn nøkkelen du vil logge inn med, ellers kommer du bare inn via konsollen.
Virket det?
cloud-init kjører én gang, ved første oppstart etter installasjonen. Det tar noen ganger et par minutter lenger enn selve installasjonen, særlig hvis det skal installeres pakker. Logg inn og sjekk:
anna@web1:~$ cloud-init status --long
anna@web1:~$ sudo tail -n 30 /var/log/cloud-init-output.log
anna@web1:~$ sudo cloud-init schema --system
cloud-init status --longviserstatus: donenår alt er ferdig,runningnår den fortsatt holder på, ogerrorhvis noe gikk galt, sammen med feilen. Medcloud-init status --waitventer du til den er ferdig.- I
/var/log/cloud-init-output.logstår utdataene fra pakkene, kommandoene og skriptene dine. Flere detaljer finner du i/var/log/cloud-init.log. cloud-init schema --systemsjekker filen din for feil. Er YAML-en feil, hopper cloud-init over delene den ikke forstår, uten at installasjonen mislykkes.
Gikk noe galt? Rett det opp manuelt på serveren, eller endre filen og installer på nytt. Merk at en ny installasjon sletter alt på VPS-en din.
Greit å vite
- Det fungerer for alle operativsystemene i listen: Ubuntu 24.04 og 26.04, Debian 12 og 13, AlmaLinux 9 og 10 og Rocky Linux 9 og 10.
- Filen din overføres kryptert og lagres ikke i oppgavehistorikken til VPS-en din. Legg likevel ikke inn passord eller andre hemmeligheter du ikke trenger.
- Alle mulighetene står i dokumentasjonen til cloud-init på docs.cloud-init.io.
Merk: Innholdet i cloud-init-filen din er ditt ansvar. Kundeservice ser ikke på filen din og hjelper ikke med å skrive eller forbedre den.
