Při vytvoření nebo reinstalaci VPS může vpsAdmin do VPS nahrát skript nebo konfiguraci pro cloud-init. Tento skript nebo konfigurace se aplikuje při prvním spuštění VPS. Podporujeme tyto formáty prvotní konfigurace:
Skripty a konfigurace je možné si do vpsAdminu uložit a při vytvoření/reinstalaci VPS vyberete způsob konfigurace. Správu uložených konfigurací najdeme ve vpsAdminu menu VPS → User data, popř. Edit profile → User data. Při vytvoření/reinstalaci VPS lze konfiguraci vložit i přímo bez ukládání do vpsAdminu. Konfiguraci do vpsAdminu není nutné ukládat, jen vám to ulehčí opakované použítí konfigurací, které se nemění.
Pro vývoj a testování je možné uloženou konfiguraci nahrát do VPS kdykoliv, vpsAdmin → VPS → User data → Upravit položku ze seznamu a poté formulář Deploy to VPS. Tato akce pouze zapíše skript/konfiguraci na disk VPS, k jejímu spuštění dojde až při restartu VPS.
vpsAdmin do VPS nahraje zadaný skript a integruje jej do init systému VPS, tj. způsob
záleží na použité distribuci. V distribucích se systemd je to služba vpsadmin-script.service
.
Výstup ze spuštěného skriptu je uložen v journalu, tj. journalctl -u vpsadmin-script.service
, popř.
v souboru /var/log/vpsadmin-script-output.log
.
Příklad skriptu:
#!/bin/sh apt install -y nginx echo "Hello from VPS $VPSADMIN_VPS_ID" > /var/www/html/index.html
Služba i skript se po spuštění automaticky smaže.
Pokud skript přes vpsAdmin nahrajeme do existující VPS, spustíme ho následovně:
# systemd systemctl daemon-reload systemctl start vpsadmin-script.service # OpenRC service vpsadmin-script start
Spuštěný skript má k dispozici tyto proměnné prostředí:
VPSADMIN_VPS_ID
- ID VPSKonfigurace pro cloud-init jako YAML, viz https://cloudinit.readthedocs.io/en/latest/explanation/format.html#cloud-config-data
Příklad konfigurace:
#cloud-config users: - name: myuser ssh_authorized_keys: - "ssh-rsa AAAA..." packages: - htop - curl runcmd: - echo "Hello, world!" > /root/welcome.txt
Výstup cloud-init je vidět v kernel logu a je uložen v souboru /var/log/cloud-init-output.log
.
Skript spuštěný přes cloud-init, viz https://cloudinit.readthedocs.io/en/latest/explanation/format.html#user-data-script
Výstup cloud-init je vidět v kernel logu a je uložen v souboru /var/log/cloud-init-output.log
.
Vložená konfigurace se uloží do /etc/vpsadmin-nixos/configuration.nix
a po startu VPS se provede nixos-rebuild switch
. Mějte na paměti, že vložená
konfigurace musí importovat vpsadminos.nix
, nebo jej rovnou zahrnovat.
Příklad konfigurace:
{ config, pkgs, lib, ... }: { imports = [ /etc/nixos/vpsadminos.nix ]; environment.systemPackages = with pkgs; [ vim ]; services.openssh.enable = true; services.openssh.settings.PermitRootLogin = "yes"; #users.extraUsers.root.openssh.authorizedKeys.keys = # [ "..." ]; systemd.extraConfig = '' DefaultTimeoutStartSec=900s ''; time.timeZone = "Europe/Amsterdam"; system.stateVersion = "24.11"; }
Výstup příkazu nixos-rebuild
je uložen do /var/log/vpsadmin-nixos-output.log
.
Konfigurace se uloží do souboru /etc/vpsadmin-nixos/flake.nix
a spustí se příkaz nixos-rebuild switch –flake /etc/vpsadmin-nixos#vps
. Konfigurace pro systém vps
musí být součástí vloženého flake.nix
.
Příklad konfigurace:
{ inputs = { nixpkgs.url = github:NixOS/nixpkgs/nixos-24.11; vpsadminos.url = github:vpsfreecz/vpsadminos/staging; }; outputs = { self, nixpkgs, vpsadminos }: { # Zde musí být konfigurace s názvem "vps" nixosConfigurations.vps = nixpkgs.lib.nixosSystem { modules = [ ({ config, pkgs, lib, ... }: { imports = [ vpsadminos.nixosConfigurations.container ]; environment.systemPackages = with pkgs; [ vim ]; services.openssh.enable = true; services.openssh.settings.PermitRootLogin = "yes"; #users.extraUsers.root.openssh.authorizedKeys.keys = # [ "..." ]; systemd.extraConfig = '' DefaultTimeoutStartSec=900s ''; time.timeZone = "Europe/Amsterdam"; nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; system.stateVersion = "24.11"; }) ]; }; }; }
Výstup příkazu nixos-rebuild
je uložen do /var/log/vpsadmin-nixos-output.log
.
Po startu VPS se spustí příkaz nixos-rebuild switch –flake $flake_uri
. Tímto způsobem můžete
jednoduše nasadit konfiguraci, kterou máte veřejně k dispozici třeba na GitHubu.
Ukázka použití:
github:vpsfreecz/example-vps-flake#vps
Tuto konfiguraci najdete na https://github.com/vpsfreecz/example-vps-flake.
Výstup příkazu nixos-rebuild
je uložen do /var/log/vpsadmin-nixos-output.log
.
Prvotní konfiguraci je možné do VPS nahrát také pomocí vpsfreectl. Nejdříve si připravíme soubor se skriptem:
cat <<EOF > my-script.sh #!/bin/sh apt install -y nginx echo "Hello from VPS $VPSADMIN_VPS_ID" > /var/www/html/index.html EOF
Nyní vytvoříme novou VPS:
vpsfreectl vps create -- \ --hostname vps \ --os-template 168 \ --location 7 \ --user-data-format script \ --user-data-content @my-script.sh
Hodnota parametru –user-data-content
začíná s @
a vpsfreectl
tak pošle obsah souboru my-script.sh
. OS template 168 je Ubuntu 24.04 (vpsfreectl os_template list
), location 7 je Staging (vpsfreectl location list
). Stejně tak můžeme skript
nahrát při reinstalaci VPS:
vpsfreectl vps reinstall 123 -- --user-data-format script --user-data-content @my-script.sh
Všechny kromě následujících výjimek: