Kapitel 1 · 1.9
Egen cloud-init: konfigurera din VPS automatiskt vid första starten
Med cloud-init skickar du med en fil vid installationen som din VPS själv kör vid första starten. Då installerar servern direkt dina vanliga paket, skapar din egen användare och kör dina kommandon. Praktiskt om du ofta installerar om eller alltid vill börja med samma grund. Du behöver inget API eller någon terminal för det.
Var fyller du i det?
- Öppna VPS-skärmen via Mina produkter.
- Ny VPS: du ser blocket Installera din VPS (se Installera din VPS: operativsystem, lösenord och SSH-nyckel). Ominstallation: välj fliken Avancerat och klicka under Ominstallation på Installera om... (se Installera om eller koppla en ISO).
- Välj operativsystem och fyll i root-lösenordet och eventuellt din SSH-nyckel, som vanligt.
- Klicka under SSH-nyckeln på Egen cloud-init. Fältet fälls ut.
- Klistra in din fil i fältet.
- Klicka på knappen för att installera, till exempel Installera Debian 13, eller vid ominstallation på Radera allt och installera om.
Root-lösenordet eller SSH-nyckeln behövs fortfarande, även med en egen cloud-init. Med dem kommer du alltid in, även via konsolen (se Konsolen: din VPS i webbläsaren).
Vad får filen innehålla?
Fältet tar emot user-data, filen som cloud-init läser vid första starten. Den första raden avgör vad det är:
| Första raden | Vad är det? |
|---|---|
#cloud-config | Inställningar i YAML: paket, användare, filer, kommandon. Det här använder du oftast. |
#!, till exempel #!/bin/bash | Ett skript. Det körs en gång som root, i slutet av första starten. |
#cloud-boothook | Ett skript som körs mycket tidigt i starten, på nytt vid varje start. Bara för avancerade användare. |
## template: jinja | En mall med variabler från cloud-init. På raden under står då #cloud-config eller #!. |
- Högst 256 kB, och bara text (UTF-8).
- I YAML gör du indrag med mellanslag, aldrig med tabbar.
- Nätverket (IPv4 och IPv6) sköter WebOké. En egen network-config används inte, så lägg inga nätverksinställningar i filen.
Ett exempel
Den här filen uppdaterar alla paket, installerar htop och fail2ban, skapar användaren anna med din SSH-nyckel och sudo, ger servern ett eget namn och ställer in rätt tidszon:
#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
Byt ut nyckeln mot din egen publika nyckel (se Skapa en SSH-nyckel i Windows, Mac och Linux). Raden - default behåller standardanvändaren, så att root-lösenordet och SSH-nyckeln från formuläret fortsätter att fungera. Efter första starten loggar du in med ssh anna@203.0.113.10. Hur du sedan stänger av inloggning som root och ställer in fail2ban läser du i Stäng av inloggning med lösenord och som root och fail2ban mot gissningsförsök.
Tips: Exemplet gäller Debian och Ubuntu. På AlmaLinux och Rocky Linux finns htop och fail2ban i det extra förrådet EPEL. Ta där bort packages och lägg under runcmd först dnf install -y epel-release och sedan dnf install -y htop fail2ban.
Vad skickar WebOké själv med?
WebOké skickar alltid med värdnamnet, root-lösenordet (bara som hash) och din SSH-nyckel. Din fil slås ihop med detta. Anger du själv users, password, chpasswd eller ssh_authorized_keys, så går dina värden före det som WebOké skickar med.
Obs: Anger du själv ssh_authorized_keys eller password på den översta nivån i filen, så ersätter de nyckeln och lösenordet från formuläret. Lägg då själv in den nyckel du vill logga in med, annars kommer du bara in via konsolen.
Har det fungerat?
cloud-init körs en gång, vid första starten efter installationen. Det tar ibland några minuter längre än själva installationen, särskilt om paket installeras. Logga in och kontrollera:
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 --longvisarstatus: donenär allt är klart,runningnär den fortfarande arbetar ocherrorom något gick fel, tillsammans med felet. Medcloud-init status --waitväntar du tills den är klar.- I
/var/log/cloud-init-output.logfinns utdata från dina paket, kommandon och skript. Fler detaljer finns i/var/log/cloud-init.log. cloud-init schema --systemkontrollerar din fil efter fel. Stämmer inte YAML-koden hoppar cloud-init över de delar den inte förstår, utan att installationen misslyckas.
Gick något fel? Rätta det för hand på servern, eller ändra din fil och installera om. Tänk på att en ominstallation raderar allt på din VPS.
Bra att veta
- Det fungerar för alla operativsystem i listan: Ubuntu 24.04 och 26.04, Debian 12 och 13, AlmaLinux 9 och 10 samt Rocky Linux 9 och 10.
- Din fil överförs krypterad och sparas inte i historiken över din VPS:s uppgifter. Lägg ändå inte in lösenord eller andra hemligheter som du inte behöver.
- Alla möjligheter finns i dokumentationen för cloud-init på docs.cloud-init.io.
Obs: Innehållet i din cloud-init är ditt ansvar. Supporten tittar inte på din fil och hjälper inte till att skriva eller förbättra den.
