class

DediboxApi::Endpoints::Servers

Inherits Reference < Object

Endpoints /server/* de l'API Dedibox.

Les serveurs Dedibox sont identifiés par un entier (id) contrairement à OVH qui utilise un serviceName textuel.

Pattern général (confirmé en live 24 avril 2026) :

  • GET /server/ → liste URIs
  • GET /server/{id} → détail
  • PUT /server/{id} → update (hostname…)
  • GET /server/rescue_images/{id} → images rescue dispo
  • POST /server/boot/rescue/{id} → prépare passage en rescue (retourne credentials)
  • POST /server/reboot/{id}?reason=... → reboot bare metal (reason obligatoire)
  • POST /server/boot/normal/{id} → retour boot disque

Limitation connue : l'API Dedibox n'expose PAS d'endpoint public pour modifier le reverse DNS d'une IP. L'opération se fait via la console web (https://console.online.net → Serveur → IP failover / Reverse DNS) ou via ticket support. Les tentatives POST /server/{id}/reverse, PUT /server/{id}/reverse, POST /reverse/{ip} retournent toutes « Unknown method ».

Constants

DEFAULT_RESCUE_IMAGE = "debian-12_amd64"

Image rescue par défaut utilisée par {#prepare_rescue} quand l'appelant ne spécifie pas image. Debian 12 est le choix le plus stable pour héberger un environnement de provisioning (mfsBSD-in-QEMU, scripts shell, …) et reste disponible sur toutes les offres Dedibox à fin 2026.

La liste des images disponibles pour un serveur donné est retournée par {#rescue_images}.

Constructors

Instance methods

boot_normal(id : Int32) : Bool

Demande le retour au boot disque (post-rescue). Positionne boot_mode à normal ; le prochain {#reboot} bootera sur le disque système.

Source
info(id : Int32) : Server

Détail complet d'un serveur. Retourne la structure riche Dedibox : id, offer, hostname, os, power, boot_mode, ip[], location, etc. Voir {Server} pour l'accès structuré.

Source
list

Liste des URIs des serveurs du compte. Format retourné par Dedibox : ["/api/v1/server/186260", ...]. On les normalise en entiers [186260, ...] pour l'appelant.

Source
prepare_rescue(id : Int32, image : String = DEFAULT_RESCUE_IMAGE) : RescueCredentials

Prépare le passage en rescue. Positionne le boot_mode à rescue côté Dedibox (visible dans info(id).boot_mode), le reboot EFFECTIF doit être déclenché ensuite via {#reboot}.

Dedibox injecte automatiquement toutes les clés SSH IAM du compte (via {SshKeys#list}) dans le rescue — pas besoin de passer de ssh_key_id.

  • image — slug d'une image renvoyée par {#rescue_images} (ex: "debian-12_amd64", "ubuntu-22.04_amd64v2"). Défaut : {DEFAULT_RESCUE_IMAGE}.

Retourne une struct {RescueCredentials} avec les identifiants générés (login sd-<id>, password random, IP publique). Utile même si on auth par clé — au moins pour les logs.

Source
reboot(id : Int32, reason : String = "beryl provisioning") : Bool

Déclenche un reboot bare metal. reason est obligatoire côté API Dedibox : sans reason, l'endpoint retourne false sans action. Avec reason, retourne true et le serveur redémarre.

Après {#prepare_rescue}, ce reboot boote sur l'image rescue. Après {#boot_normal}, il boote sur le disque.

Source
reboot_to_disk(id : Int32, reason : String = "beryl boot-disk") : Bool

Helper combo : bascule le serveur en boot disque ET le reboote pour que le changement prenne effet. Équivalent sémantique du boot_from_disk OVH (qui gère tout côté API hébergeur en une seule opération).

Contrairement à un reboot seul (qui laisse boot_mode à rescue s'il y était), cette méthode est la seule façon correcte de revenir sur disque via l'API Dedibox.

Retourne true si les deux appels API ont été acceptés. L'opérateur doit ensuite attendre le retour SSH côté OS installé — l'API Dedibox ne propose pas de task async pollable.

Source
rescue_images(id : Int32) : Array(String)

Liste des images de rescue disponibles pour un serveur (slugs). Exemple : ["ubuntu-22.04_amd64v2", "debian-12_amd64", "debian-10_amd64"]. Varie selon le type/offre de serveur.

Source
update_hostname(id : Int32, hostname : String) : Bool

Met à jour les champs modifiables d'un serveur. Aujourd'hui seul hostname (nom console Dedibox, visible dans le panel) est couvert — l'API accepte aussi d'autres champs (support, anti_ddos, proactive_monitoring) mais beryl n'en a pas l'usage. Retourne true si l'update a été appliqué.

Attention : ce hostname est celui AFFICHÉ dans la console Dedibox. Le hostname système (uname -n) est géré côté OS et n'est pas modifié par cet appel.

Source