Kapitel 1 · 1.9
Egen cloud-init: sæt din VPS op automatisk ved første opstart
Med cloud-init giver du ved installationen en fil med, som din VPS selv kører ved første opstart. Så installerer din server straks dine faste pakker, opretter din egen bruger og kører dine kommandoer. Praktisk, hvis du tit geninstallerer eller altid vil starte med det samme grundlag. Du behøver hverken API eller terminal til det.
Hvor udfylder du det?
- Åbn VPS-skærmen via Mine produkter.
- Ny VPS: Du ser blokken Installer din VPS (se Installer din VPS: styresystem, adgangskode og SSH-nøgle). Geninstallation: Vælg fanen Avanceret, og klik på Geninstaller... under Geninstallation (se Geninstaller eller tilknyt en ISO).
- Vælg styresystemet, og udfyld root-adgangskoden og eventuelt din SSH-nøgle som altid.
- Klik på Egen cloud-init under SSH-nøglen. Feltet folder sig ud.
- Indsæt din fil i feltet.
- Klik på knappen for at installere, for eksempel Installer Debian 13, eller ved geninstallation på Slet alt og geninstaller.
Root-adgangskoden eller SSH-nøglen er stadig nødvendig, også med en egen cloud-init. Med den kommer du altid ind, også via konsollen (se Konsollen: din VPS i din browser).
Hvad må der stå i filen?
Feltet tager imod user-data, den fil som cloud-init læser ved første opstart. Den første linje bestemmer, hvad det er:
| Første linje | Hvad er det? |
|---|---|
#cloud-config | Indstillinger i YAML: pakker, brugere, filer, kommandoer. Det er som regel det, du bruger. |
#!, for eksempel #!/bin/bash | Et script. Det kører én gang som root, i slutningen af første opstart. |
#cloud-boothook | Et script, der kører meget tidligt i opstarten og igen ved hver opstart. Kun for øvede. |
## template: jinja | En skabelon med variabler fra cloud-init. På linjen nedenunder står så #cloud-config eller #!. |
- Højst 256 KB og kun tekst (UTF-8).
- I YAML indrykker du med mellemrum, aldrig med tabulatorer.
- Netværket (IPv4 og IPv6) sørger WebOké for. En egen network-config bliver ikke brugt, så skriv ingen netværksindstillinger i filen.
Et eksempel
Denne fil opdaterer alle pakker, installerer htop og fail2ban, opretter brugeren anna med din SSH-nøgle og sudo, giver serveren sit eget navn og indstiller tidszonen:
#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
Erstat nøglen med din egen offentlige nøgle (se Opret en SSH-nøgle på Windows, Mac og Linux). Linjen - default beholder standardbrugeren, så root-adgangskoden og SSH-nøglen fra formularen stadig virker. Efter første opstart logger du ind med ssh anna@203.0.113.10. Hvordan du derefter slår login som root fra og sætter fail2ban op, kan du læse i Slå login med adgangskode og som root fra og fail2ban mod gætteforsøg.
Tip: Eksemplet er til Debian og Ubuntu. På AlmaLinux og Rocky Linux ligger htop og fail2ban i den ekstra kilde EPEL. Udelad dér packages, og skriv under runcmd først dnf install -y epel-release og derefter dnf install -y htop fail2ban.
Hvad giver WebOké selv med?
WebOké giver altid værtsnavnet, root-adgangskoden (kun som hash) og din SSH-nøgle med. Din fil bliver flettet sammen med det. Angiver du selv users, password, chpasswd eller ssh_authorized_keys, går dine værdier forud for det, WebOké giver med.
Bemærk: Angiver du selv ssh_authorized_keys eller password på øverste niveau i din fil, erstatter de nøglen og adgangskoden fra formularen. Skriv så selv den nøgle ind, du vil logge ind med, ellers kommer du kun ind via konsollen.
Lykkedes det?
cloud-init kører én gang, ved første opstart efter installationen. Det tager nogle gange et par minutter længere end selve installationen, især hvis der installeres pakker. Log ind og tjek:
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: done, når alt er færdigt,running, når den stadig arbejder, ogerror, hvis noget gik galt, sammen med fejlen. Medcloud-init status --waitventer du, til den er færdig.- I
/var/log/cloud-init-output.logstår outputtet fra dine pakker, kommandoer og scripts. Flere detaljer finder du i/var/log/cloud-init.log. cloud-init schema --systemtjekker din fil for fejl. Er YAML'en forkert, springer cloud-init de dele over, den ikke forstår, uden at installationen mislykkes.
Gik noget galt? Ret det manuelt på serveren, eller tilpas din fil og geninstaller. Bemærk, at en geninstallation sletter alt på din VPS.
Godt at vide
- Det virker med alle styresystemer på listen: Ubuntu 24.04 og 26.04, Debian 12 og 13, AlmaLinux 9 og 10 og Rocky Linux 9 og 10.
- Din fil bliver overført krypteret og gemmes ikke i historikken over din VPS' opgaver. Skriv alligevel ingen adgangskoder eller andre hemmeligheder i den, som du ikke har brug for.
- Alle muligheder står i dokumentationen til cloud-init på docs.cloud-init.io.
Bemærk: Indholdet af din cloud-init er dit ansvar. Support kigger ikke på din fil og hjælper ikke med at skrive eller forbedre den.
