Panel klienta →

Cloud-init i skrypty startowe

Jak automatycznie skonfigurować serwer przy pierwszym uruchomieniu za pomocą #cloud-config lub skryptu bash.

Cloud-init pozwala automatycznie skonfigurować serwer przy pierwszym uruchomieniu: zainstalować pakiety, utworzyć pliki czy uruchomić polecenia. Dzięki temu nowy serwer jest od razu gotowy do pracy.

Gdzie dodać cloud-init

  • Przy tworzeniu serwera — w kreatorze, w sekcji 6. Cloud-init (opcjonalnie), kliknij + Dodaj własny cloud-init.
  • Przy reinstalacji — na karcie Reinstalacja, w polu Cloud-init po reinstalacji. Pole jest wypełnione treścią użytą wcześniej, więc możesz ją poprawić.

Na karcie Przegląd serwer z własnym cloud-init ma etykietę własny cloud-init.

Uwaga: Cloud-init wykonuje się raz, przy pierwszym uruchomieniu systemu, z uprawnieniami root. Zmiana treści dla istniejącego serwera jest możliwa tylko przez reinstalację, która usuwa dane z dysku.

Dwa formaty

Treść musi zaczynać się od jednego z nagłówków:

  • #cloud-config — konfiguracja w formacie YAML,
  • #! — skrypt, np. #!/bin/bash.

Maksymalny rozmiar to 64 KB. Panel sprawdza treść na bieżąco i pod polem pokazuje „Cloud-config poprawny” albo „Skrypt poprawny”, a przy błędzie — opis problemu, np. błąd składni YAML z numerem linii. Z błędną treścią nie utworzysz serwera.

Gotowe szablony

Nad polem edycji są przyciski Szablony: Docker, Nginx, Aktualizacje + strefa czasowa i Skrypt bash. Kliknięcie wstawia przykład, który możesz edytować. Wyczyść usuwa treść.

Przykład: #cloud-config

#cloud-config
package_upgrade: true
timezone: Europe/Warsaw
packages:
  - nginx
  - git
write_files:
  - path: /var/www/html/index.html
    content: |
      <h1>Działa!</h1>
runcmd:
  - systemctl enable --now nginx

Najczęściej używane klucze:

  • packages — lista pakietów do instalacji,
  • package_upgrade: true — aktualizacja systemu,
  • write_files — tworzenie plików,
  • runcmd — polecenia wykonywane na końcu konfiguracji,
  • timezone — strefa czasowa.

Przykład: skrypt bash

#!/bin/bash
set -e
curl -fsSL https://get.docker.com | sh
systemctl enable --now docker
echo "Serwer uruchomiony $(date)" > /root/pierwszy-start.txt

Co ustawia panel, a co Ty

Panel sam konfiguruje nazwę hosta, hasło root lub klucze SSH oraz sieć. Twój cloud-init jest dołączany do tej konfiguracji — Twoje listy packages, runcmd i write_files są dopisywane, ale nie nadpiszą ustawień tożsamości serwera. Nie musisz więc dodawać kluczy SSH w cloud-init.

Sprawdzanie wyniku

Konfiguracja może trwać kilka minut po starcie serwera. Zaloguj się przez SSH i sprawdź:

cloud-init status --wait

Szczegółowy log znajdziesz w plikach:

less /var/log/cloud-init-output.log
less /var/log/cloud-init.log

Wskazówka: Jeśli skrypt nie zadziałał, przetestuj polecenia ręcznie na serwerze, a gotową wersję użyj przy kolejnym serwerze. Gdy instalacja pakietów się nie powiodła, upewnij się, że serwer ma dostęp do Internetu (publiczny adres lub NAT) — zobacz Adresy IP serwera.

Gotowe aplikacje

Jeśli potrzebujesz popularnej aplikacji (np. WordPress, Docker, n8n), zamiast pisać cloud-init wybierz ją w kreatorze w zakładce Aplikacje — zobacz Jak utworzyć serwer.

Nie znalazłeś odpowiedzi? Napisz do nas z panelu klienta — pomożemy.