Un outil en ligne de commande pour gérer et accéder aux machines virtuelles d’une Freebox via l’API Freebox OS v8.
- Python 3.8+
- Freebox avec API Freebox OS v8
- Paquets :
requests,websockets,tqdm,humanize,PyGObject(pour le support libosinfo)
Sur Fedora, le RPM freeboxvm peut être installé depuis le COPR :
sudo dnf copr enable lvivier/freebox-failover
sudo dnf install freeboxvmSinon en utilisant l'environnement PyPI depuis le répertoire source:
pip install .Pour installer les dépendances sans métadonnées de packaging (développement ou environnements anciens) :
pip install -r requirements.txtSur Fedora, vous pourriez avoir besoin de :
sudo dnf install python3-gobject gobject-introspection libosinfo osinfo-dbSur Debian/Ubuntu, vous pourriez avoir besoin de :
sudo apt install python3-gi gir1.2-libosinfo-1.0Lors de la première exécution, l’outil suit le flux d’autorisation Freebox et enregistre l’app_token et le track_id dans ~/.config/freeboxvm/freeboxvm_token.json. Utilisez --token-file pour cibler un autre emplacement (utile pour plusieurs Freebox ou comptes) ; le raccourci ~ est accepté.
freeboxvm list [--long] [--usb-ports] [--disks] [--cloud-init]Sortie par défaut : ID STATUT NOM.
| ‑‑long | ‑l | Afficher plus d’informations |
| ‑‑usb‑ports | ‑u | Lister les ports USB associés |
| ‑‑disks | ‑d | Lister les images disque |
| ‑‑cloud‑init | ‑c | Afficher les informations cloud-init |
$ freeboxvm list
ID STATUT NOM
0 running Debian-11
1 stopped Ubuntu-22.04$ freeboxvm list --long --usb-ports
ID STATUT NOM OS MAC vCPU MÉMOIRE AFFICHAGE
0 running Debian-11 debian aa:bb:cc:dd:ee:ff 2 2048 True
Ports USB : usb-external-type-a$ freeboxvm list --disks --cloud-init
0 running Debian-11
Image disque : Disque 1/VMs/debian.qcow2 (qcow2)
Image CD : Disque 1/VMs/debian-11.iso
Cloud-init hostname : debian
Cloud-init user-data :
#cloud-config
system_info:
default_user:
- name: debianfreeboxvm show <id|name> [--long] [--usb-ports] [--disks] [--cloud-init]Affiche les informations d’une VM unique. Supporte les mêmes options que list.
| ‑‑long | ‑l | Afficher plus d’informations |
| ‑‑usb‑ports | ‑u | Lister les ports USB associés |
| ‑‑disks | ‑d | Lister les images disque |
| ‑‑cloud‑init | ‑c | Afficher les informations cloud-init |
$ freeboxvm show 1
ID STATUT NOM
1 stopped Ubuntu-22.04$ freeboxvm show Debian-11 --long
ID STATUT NOM OS MAC vCPU MÉMOIRE AFFICHAGE
0 running Debian-11 debian aa:bb:cc:dd:ee:ff 2 2048 True$ freeboxvm show 1 --disks --cloud-init
ID STATUT NOM
1 stopped Ubuntu-22.04
Image disque : Disque 1/VMs/ubuntu2204.qcow2 (qcow2)
Aucune image de périphérique CDROM
Cloud-init hostname : Ubuntu
Cloud-init user-data :
#cloud-config
system_info:
default_user:
name: laurent
groups:
- laurentfreeboxvm console <id|name>Combinaisons de touches de contrôle de la console:
| Ctrl-B D | Pour Quitter |
| Ctrl-B B | Pour envoyer un Ctrl-B |
| Ctrl-B R | Pour Réinitialiser la VM |
| Ctrl-B H | Pour arrêter (Halt) la VM |
| Ctrl-B S | Pour Stopper immédiatement la VM |
| Ctrl-B ? | Pour afficher l'aide concernant les combinaisons de touches |
freeboxvm console 0
freeboxvm console Debian-11freeboxvm vnc-proxy [-h] [--listen ADDR] [--port N] [--console] vmExpose l’écran VNC d’une VM sur un port TCP local.
| ‑‑listen ADDR | ‑l ADDR | Adresse d’écoute (par défaut 127.0.0.1) |
| ‑‑port N | ‑p N | Port TCP (par défaut 5901) |
| ‑‑console | Lance la console interactive en parallèle |
freeboxvm vnc-proxy 0freeboxvm vnc-proxy --listen 0.0.0.0 --port 5902 12freeboxvm vnc-proxy --console Debian-11freeboxvm disk [-h] {create,info,resize,delete} ...Gérer les images disque des VM (création, redimensionnement, inspection, suppression).
Les tailles acceptent des suffixes binaires k, m, g, t (puissances de deux) ; les valeurs en octets bruts sont également acceptées.
Actions :
-
create
freeboxvm disk create [-h] [--type TYPE] <path> <size>
Créer une image disque (par défaut qcow2).
-
resize
freeboxvm disk resize [-h] [--shrink-allow] <path> <size>
Redimensionner une image disque (
--shrink-allowautorise réduction). -
info
freeboxvm disk info <path>
Afficher taille virtuelle, utilisée, type.
-
delete
freeboxvm disk delete <path>
Supprimer une image disque.
freeboxvm disk create "/Disque 1/VMs/disk1.qcow2" 10gfreeboxvm disk resize "/Disque 1/VMs/disk1.qcow2" 20gfreeboxvm disk resize --shrink-allow "/Disque 1/VMs/disk1.qcow2" 8gfreeboxvm disk info "/Disque 1/VMs/disk1.qcow2"freeboxvm disk delete "/Disque 1/VMs/disk1.qcow2"freeboxvm install [options]Créer et démarrer une VM depuis une image cloud ou un ISO. Peut aussi attacher console et/ou proxy VNC.
| ‑‑install ID | ‑i ID | identifiant de distribution (voir os-list). |
| ‑‑name | ‑n NOM | nom de la VM. |
| ‑‑os | nom de l’OS (si non détecté). | |
| ‑‑vcpus | nombre de CPUs virtuels. | |
| ‑‑memory | mémoire (MiB). | |
| ‑‑disk PATH | chemin image disque. | |
| ‑‑disk‑size | taille disque. | |
| ‑‑cdrom PATH | ISO d’installation. | |
| ‑‑location URL | URL CD/ISO (exclusif avec --cdrom). |
|
| ‑‑cloud‑init | activer cloud-init. | |
| ‑‑cloud‑init‑hostname | hostname. | |
| ‑‑cloud‑init‑userdata FILE | fichier user-data. | |
| ‑‑enable‑screen | activer écran (VNC-over-WebSocket). | |
| ‑‑console | attacher console après boot. | |
| ‑‑vnc‑proxy | démarrer proxy VNC après boot. | |
| ‑‑listen ADDR | adresse d’écoute VNC (par défaut 127.0.0.1). | |
| ‑‑port N | port TCP VNC (par défaut 5901). | |
| ‑‑usb‑ports LISTE | lier des ports USB à la VM (liste séparée par des virgules). |
- Lorsque
--installou--locationest utilisé, l’image est téléchargée via le gestionnaire de téléchargements de la Freebox dans le répertoire par défaut/Disque 1/VMs/, avec suivi de progression, vérification de la somme de contrôle et nettoyage en cas d’erreur. - Pour les images cloud, le fichier téléchargé devient l’image disque de la VM.
- Si
--diskpointe vers un fichier inexistant,--disk-sizedoit être fourni afin que l’outil puisse créer l’image (le type qcow2/raw est déduit de l’extension). - Les disques peuvent être redimensionnés automatiquement s’ils sont plus petits que la taille indiquée par
--disk-size.
Installer depuis un identifiant de distribution (cloud image), activer cloud-init et attacher la console
freeboxvm install -n Fedora-cloud --vcpus 1 --memory 512 --console --cloud-init --cloud-init-hostname Fabulous --cloud-init-userdata cloud-init-user-data.yaml -i fedora41 --disk Fabulous.qcow2 --disk-size 10gfreeboxvm install -n Fedora-test --os fedora --location https://download.fedoraproject.org/pub/fedora/linux/releases/41/Everything/aarch64/iso/Fedora-Everything-netinst-aarch64-41-1.4.iso --disk "/Disque 1/VMs/test.qcow2" --disk-size 20g --vcpus 2 --memory 2048 --console --vnc-proxy --enable-screenfreeboxvm poweron <id|name> [--console|-c] [--vnc-proxy|-v]
[--listen|-l ADDR] [--port|-p N]Démarre la VM puis (optionnellement) attache la console et/ou lance le proxy VNC.
| ‑‑console | ‑c | attacher une console interactive (détacher avec Ctrl-B D) |
| ‑‑vnc‑proxy | ‑v | exposer le VNC sur un port TCP local |
| ‑‑listen ADDR | ‑l ADDR | adresse d’écoute pour le proxy VNC (par défaut 127.0.0.1) |
| ‑‑port N | ‑p N | port TCP du proxy VNC (par défaut 5901) |
freeboxvm poweron 12 --consolefreeboxvm poweron 12 --vnc-proxy -l 0.0.0.0 -p 5902freeboxvm poweron Debian-11 -c -vfreeboxvm poweroff [-f|--force] <id|name>Demande l’arrêt ACPI de la VM spécifiée.
| ‑‑force | ‑f | Envoie un arrêt forcé (hard stop). |
freeboxvm poweroff 0
freeboxvm poweroff --force Debian-11freeboxvm reset <id|name>freeboxvm reset 0
freeboxvm reset Debian-11freeboxvm delete <id|name> [--disk|-d] [--force|-f]Supprime la machine virtuelle spécifiée par son id numérique ou son nom. Si la suppression échoue, pensez à éteindre la VM au préalable.
| ‑‑disk | ‑d | Supprimer également les disques et efivars |
| ‑‑force | ‑f | Supprimer une VM en cours d’exécution |
freeboxvm systemAffiche les ressources globales de la Freebox :
- Mémoire totale et utilisée
- Processeurs (CPUs) totaux et utilisés
- État d’allocation des ports USB
- Liste des ports USB disponibles
- Chemin du répertoire VMs
$ freeboxvm system
Mémoire totale : 2048 Mémoire utilisée : 0 (0.0 %)
Nombre de CPU : 2 CPU utilisés : 0 (0.0 %)
USB externe alloué : Non
Liste des ports USB disponibles :
usb-external-type-a
VMs directory path: /Disque 1/VMsfreeboxvm os-list [options]Liste les images de systèmes d’exploitation installables pour les VMs.
| ‑‑extra | ‑e | Interroger des sources externes via libosinfo pour des images cloud-init (aarch64, qcow2/raw). |
| ‑‑iso | ‑i | Lister les ISOs installables au lieu des images cloud. |
| ‑‑long | ‑l | Afficher les informations détaillées (OS, distribution, URL, somme de contrôle, indicateur live). |
| ‑‑check | ‑c | Valider les URLs des images et des sommes de contrôle. |
| ‑‑os | ‑o | Filtrer les résultats par nom d’OS (ex. fedora, ubuntu). |
freeboxvm os-listfreeboxvm os-list --longfreeboxvm os-list --check --longfreeboxvm os-list --isofreeboxvm os-list --os fedorafreeboxvm download [options] [short-id]Télécharge une image d’installation de VM (disque ou ISO) en utilisant le gestionnaire de téléchargements de la Freebox.
| ‑‑iso | ‑i | Sélectionner une ISO d’installation plutôt qu’une image cloud/disque. |
| ‑‑url URL | ‑u URL | Fournir une URL directe au lieu d’un short-id. |
| ‑‑hash HASH | ‑a HASH | Fournir l’URL de la somme de contrôle lors de l’utilisation de --url. |
| ‑‑filename F | ‑f F | Nom de fichier sous lequel enregistrer. |
| ‑‑directory D | ‑d D | Répertoire Freebox où stocker le fichier (encodé automatiquement en base64). |
| ‑‑background | ‑b | Lancer le téléchargement en arrière-plan (progression non affichée ; vérifier dans la section "Téléchargements" de la Freebox). |
freeboxvm download fedora40freeboxvm download --iso ubuntu24.04freeboxvm download --url https://cloud-images.ubuntu.com/.../disk.qcow2 \
--hash https://cloud-images.ubuntu.com/.../SHA256SUMSfreeboxvm download --background fedoraThis program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/.