Völund
Sommaire

Installer et configurer Völund#

Ce document couvre l'installation de Völund et tout ce qui se configure : options du serveur, HTTPS, reverse proxy, pare-feu, démarrage réseau (DHCP, TFTP, iPXE), images Debian, Proxmox, Saga, comptes, maintenance et désinstallation. L'utilisation au quotidien est décrite dans le guide d'utilisation.

Les exemples utilisent un serveur Völund en 192.168.10.5, sur un réseau 192.168.10.0/24 dont la passerelle est 192.168.10.1, et le domaine exemple.lan. Remplacez-les par vos valeurs.

1. Prérequis#

Élément Détail
Système Debian 12 ou 13, amd64 (VM, conteneur LXC non privilégié déconseillé pour le port 69/80, ou machine physique)
Ressources 1 cœur, 512 Mio de mémoire, 1 Gio de disque (dont ~60 Mio par version de Debian téléchargée)
Réseau Une adresse fixe ; accès HTTPS sortant à deb.debian.org (ou à votre miroir)
DHCP Un serveur DHCP que vous pouvez configurer, pour le démarrage réseau
Facultatif Proxmox VE 8 ou 9 (volet Virtualiser), Saga (signal de fin d'installation)

Völund est un seul programme qui embarque sa base de données (SQLite), son interface web et son serveur HTTPS : pas de serveur web, de PHP, de Python, de base de données ni de conteneur à installer.

2. Installer#

2.1 Avec le paquet Debian (recommandé)#

sudo apt install ./volund-server_0.4.1_amd64.deb

Dépendances installées automatiquement :

Paquet Rôle
systemd Service volund
gpgv, debian-archive-keyring Vérification de la signature des images Debian
ipxe (recommandé) Fichiers de démarrage réseau (menu en couleurs sur Proxmox, machines UEFI/BIOS)

Si les paquets recommandés sont désactivés sur votre système : sudo apt install ipxe.

Le paquet installe :

Chemin Contenu
/usr/bin/volund-server Le programme
/etc/volund/volund.env La configuration (conservée lors des mises à jour)
/usr/lib/systemd/system/volund.service Le service
/usr/share/doc/volund-server/ Aide-mémoire et guides

Et, au premier démarrage, dans /var/lib/private/volund/ (accessible aussi par /var/lib/volund, lisible par root seulement) :

Fichier Contenu
volund.db La base : comptes, preseeds, scripts, machines, installations, réglages, journal
secrets.key Clé qui chiffre le jeton Proxmox
setup-token Jeton de création du premier compte (supprimé une fois le compte créé)
tls/ Autorité locale et certificat (mode HTTPS auto)
netboot/ Images de l'installateur Debian

Le service démarre aussitôt, en écoute sur 127.0.0.1:8070 seulement : rien n'est exposé tant que vous n'avez pas configuré l'accès (section 5).

2.2 Depuis les sources#

Prérequis : Go (la version requise, 1.26.9, est téléchargée automatiquement par Go) et dpkg-deb pour construire le paquet.

./scripts/build.sh            # tests + dist/linux/volund-server
./packaging/deb/build-deb.sh  # installateurs/volund-server_<version>_amd64.deb

Puis installez le paquet obtenu comme en 2.1.

2.3 Sans paquet (installation manuelle)#

sudo install -m 755 dist/linux/volund-server /usr/local/bin/
sudo install -d -m 755 /etc/volund
sudo install -m 640 packaging/deb/volund.env /etc/volund/volund.env
sudo install -m 644 packaging/deb/volund.service /etc/systemd/system/volund.service
sudo sed -i 's#/usr/bin/volund-server#/usr/local/bin/volund-server#' /etc/systemd/system/volund.service
sudo apt install gpgv debian-archive-keyring ipxe
sudo systemctl daemon-reload && sudo systemctl enable --now volund

2.4 Pour essayer, sans rien installer#

VOLUND_DB=/tmp/volund.db VOLUND_SETUP_TOKEN=essai ./volund-server

Interface sur http://127.0.0.1:8070, jeton de création : essai.

3. Premier lancement#

  1. Ouvrir l'accès à l'interface (section 5), ou passer par un tunnel SSH depuis votre poste : bash ssh -L 8070:127.0.0.1:8070 utilisateur@192.168.10.5 puis http://localhost:8070.
  2. Récupérer le jeton de création du compte : bash sudo journalctl -u volund | grep jeton (ou sudo cat /var/lib/private/volund/setup-token). Pour choisir le jeton vous-même : VOLUND_SETUP_TOKEN=… dans la configuration.
  3. Créer le compte administrateur dans l'interface : jeton, identifiant, mot de passe (10 caractères minimum).
  4. Activer la double authentification : Paramètres › Compte (section 12).

Le jeton ne sert plus une fois un compte créé ; le fichier setup-token est supprimé au démarrage suivant.

4. Le fichier de configuration#

/etc/volund/volund.env contient des lignes VARIABLE=valeur. Après chaque modification :

sudo systemctl restart volund
sudo journalctl -u volund -n 20

Le journal confirme les écoutes ouvertes et signale les réglages risqués (interface en HTTP sur le réseau, écoute d'amorçage ouverte à tous). Les réglages qui se font dans l'interface (Proxmox, Saga, comptes) sont décrits dans leurs sections ; la liste complète des variables est en section 17.

Exemple complet (interface en HTTPS sur le réseau, démarrage réseau limité au réseau local, TFTP pour des machines physiques) :

VOLUND_ADDR=192.168.10.5:8443
VOLUND_TLS=auto
VOLUND_TLS_HOSTS=192.168.10.5,volund.exemple.lan

VOLUND_BOOT_ADDR=0.0.0.0:80
VOLUND_BOOT_URL=http://192.168.10.5
VOLUND_BOOT_ALLOW=192.168.10.0/24
VOLUND_TFTP_ADDR=0.0.0.0:69

VOLUND_DB=/var/lib/volund/volund.db
VOLUND_AUDIT_RETENTION=400d

5. Accès à l'interface et HTTPS#

L'interface écoute sur VOLUND_ADDR (défaut 127.0.0.1:8070). Trois façons de l'ouvrir :

5.1 HTTPS intégré avec autorité locale (auto) — recommandé#

VOLUND_ADDR=192.168.10.5:8443
VOLUND_TLS=auto
VOLUND_TLS_HOSTS=192.168.10.5,volund.exemple.lan
  • Au premier démarrage, Völund crée une autorité de certification locale (valable 10 ans) et un certificat pour les adresses et noms de VOLUND_TLS_HOSTS (valable 397 jours, renouvelé automatiquement 30 jours avant l'échéance).
  • L'autorité est bridée : elle ne peut signer que des adresses privées et les noms déclarés ; installée sur un appareil, elle ne permettrait pas d'usurper un site public.
  • Son empreinte SHA-256 est écrite dans le journal ; son certificat est téléchargeable sur https://192.168.10.5:8443/volund-ca.crt.
  • Ajouter une adresse privée à VOLUND_TLS_HOSTS puis redémarrer réémet le certificat. Ajouter un nom que l'autorité ne couvre pas demande de la recréer : arrêtez le service, supprimez /var/lib/private/volund/tls, redémarrez, puis réinstallez la nouvelle autorité sur vos appareils. Déclarez donc tous vos noms dès le départ.

Installer l'autorité sur vos appareils (pour ne plus voir l'avertissement du navigateur) :

Système Commande ou réglage
Debian, Ubuntu sudo cp volund-ca.crt /usr/local/share/ca-certificates/ && sudo update-ca-certificates
Windows Double-clic sur le fichier › Installer › « Autorités de certification racines de confiance »
macOS Trousseau d'accès › Système › importer, puis « Toujours approuver »
Firefox Paramètres › Vie privée et sécurité › Certificats › Autorités › Importer
Android Paramètres › Sécurité › Chiffrement › Installer un certificat › Certificat CA

5.2 Vos propres certificats (files)#

Par exemple un certificat Let's Encrypt pour volund.exemple.fr :

VOLUND_ADDR=0.0.0.0:443
VOLUND_TLS=files
VOLUND_TLS_CERT=/etc/volund/cert.pem
VOLUND_TLS_KEY=/etc/volund/key.pem

Le certificat est lu au démarrage : après chaque renouvellement, copiez les fichiers puis redémarrez le service (avec certbot, dans un deploy hook) :

install -m 640 /etc/letsencrypt/live/volund.exemple.fr/fullchain.pem /etc/volund/cert.pem
install -m 640 /etc/letsencrypt/live/volund.exemple.fr/privkey.pem /etc/volund/key.pem
systemctl restart volund

5.3 Derrière un reverse proxy (off)#

Völund reste en HTTP sur la machine locale, le proxy fait le HTTPS :

VOLUND_ADDR=127.0.0.1:8070
VOLUND_TLS=off
VOLUND_TRUST_PROXY=1

VOLUND_TRUST_PROXY=1 fait lire l'adresse du client dans X-Forwarded-For (journal, blocage des tentatives de connexion) et X-Forwarded-Proto (cookie de session marqué sécurisé). Ne l'activez que si Völund n'est joignable que par le proxy.

Caddy :

volund.exemple.fr {
    reverse_proxy 127.0.0.1:8070
}

nginx :

server {
    listen 443 ssl;
    server_name volund.exemple.fr;
    # ssl_certificate … ; ssl_certificate_key … ;
    client_max_body_size 64m;          # import d'une archive de Völund 1
    location / {
        proxy_pass http://127.0.0.1:8070;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

N'exposez jamais l'interface sur Internet sans réfléchir : elle crée des VM et prépare des installations. Préférez un accès par VPN (WireGuard…).

5.4 Interface en HTTP sur le réseau (déconseillé)#

VOLUND_TLS=off avec une adresse autre que 127.0.0.1 fonctionne, mais mots de passe, codes de double authentification et cookies circulent en clair ; Völund l'écrit dans son journal à chaque démarrage.

6. Réseau et pare-feu#

Port Sens Pour Ouvrir à
VOLUND_ADDR (ex. 8443/tcp) entrant Interface web Postes d'administration
VOLUND_BOOT_ADDR (80 ou 8071/tcp) entrant Menu iPXE, preseeds, scripts, images Réseau des machines à installer
VOLUND_TFTP_ADDR (69/udp) entrant iPXE pour machines sans iPXE Réseau des machines à installer
443/tcp sortant deb.debian.org (images) —
8006/tcp sortant API Proxmox Nœud Proxmox
selon l'URL sortant Sonde push de Saga Serveur Saga

Les machines installées ont, elles, besoin d'Internet (ou de votre miroir et proxy) pour télécharger leurs paquets.

nftables (exemple, à intégrer à votre jeu de règles) :

tcp dport 8443 ip saddr 192.168.10.0/24 accept
tcp dport 80 ip saddr 192.168.10.0/24 accept
udp dport 69 ip saddr 192.168.10.0/24 accept

ufw :

sudo ufw allow from 192.168.10.0/24 to any port 8443 proto tcp
sudo ufw allow from 192.168.10.0/24 to any port 80 proto tcp
sudo ufw allow from 192.168.10.0/24 to any port 69 proto udp

7. Écoute d'amorçage#

Seconde écoute, en HTTP, lue par iPXE et l'installateur Debian (qui ne savent pas vérifier une autorité locale). Elle sert le menu de démarrage, les preseeds et les scripts à jeton, et les images Debian ; elle n'expose jamais l'interface ni l'API.

VOLUND_BOOT_ADDR=0.0.0.0:80
VOLUND_BOOT_URL=http://192.168.10.5
VOLUND_BOOT_ALLOW=192.168.10.0/24
Variable Détail
VOLUND_BOOT_ADDR Adresse et port d'écoute. Sans elle, ni démarrage réseau ni préparation d'installation
VOLUND_BOOT_URL Adresse de cette écoute telle que les machines la voient ; elle figure dans les preseeds et le menu. Obligatoire si l'écoute est sur 0.0.0.0
VOLUND_BOOT_ALLOW Réseaux ou adresses autorisés, séparés par des virgules (192.168.10.0/24,10.20.0.0/16). Les autres reçoivent un 404 (et rien en TFTP). Vide = tous, avec un avertissement

Port 80 ou autre ? Sur le port 80, l'adresse à taper dans l'installateur Debian est la plus courte (192.168.10.5/p/bk4tr7xe). Si le port 80 est pris (sudo ss -ltnp | grep ':80 '), utilisez par exemple 0.0.0.0:8071 et http://192.168.10.5:8071. Le service a le droit d'écouter sur un port inférieur à 1024, rien d'autre à régler.

Pourquoi limiter (VOLUND_BOOT_ALLOW) ? Le menu liste les installations préparées avec leur jeton ; avec un jeton, on lit le preseed (empreintes de mots de passe, clés SSH) et les scripts. Ce réseau doit être de confiance, idéalement un VLAN dédié aux installations.

8. Démarrage réseau : DHCP, TFTP, iPXE#

8.1 Principe#

  1. La machine démarre sur le réseau et demande une adresse au DHCP.
  2. Le DHCP lui indique quoi charger :
  3. si c'est déjà iPXE (VM Proxmox, QEMU, iPXE sur clé USB) : l'adresse http://192.168.10.5/boot.ipxe ;
  4. sinon : iPXE par TFTP (snponly.efi en UEFI, undionly.kpxe en BIOS), qui refait une demande DHCP et reçoit alors l'adresse ci-dessus.
  5. boot.ipxe affiche le menu de Völund.

Si vous n'installez que des VM Proxmox, seul le premier cas existe : pas de TFTP, une seule ligne de configuration DHCP.

8.2 TFTP (machines physiques)#

VOLUND_TFTP_ADDR=0.0.0.0:69
VOLUND_IPXE_DIR=/usr/lib/ipxe     # fichiers du paquet ipxe (défaut)

Serveur intégré, en lecture seule, qui ne sert que snponly.efi, ipxe.efi et undionly.kpxe. Il suit VOLUND_BOOT_ALLOW. Inutile pour les VM Proxmox.

8.3 Configuration du DHCP#

La page Démarrer de l'interface affiche la configuration adaptée à vos réglages, prête à copier. Exemples :

isc-dhcp-server — VM Proxmox seulement (dans le bloc subnet) :

filename "http://192.168.10.5/boot.ipxe";

isc-dhcp-server — toutes machines (/etc/dhcp/dhcpd.conf) :

option arch code 93 = unsigned integer 16;          # en tête du fichier

subnet 192.168.10.0 netmask 255.255.255.0 {
  # … vos réglages …
  next-server 192.168.10.5;
  if exists user-class and option user-class = "iPXE" {
    filename "http://192.168.10.5/boot.ipxe";
  } elsif option arch = 00:07 or option arch = 00:09 {
    filename "snponly.efi";                          # UEFI
  } else {
    filename "undionly.kpxe";                        # BIOS
  }
}

Puis sudo systemctl restart isc-dhcp-server.

Webmin (module Serveur DHCP ISC) : pour les VM Proxmox seulement, sous-réseau › Boot filename = http://192.168.10.5/boot.ipxe, puis Save et Apply Changes. Pour toutes machines, le formulaire ne permet pas le choix selon le client : passez par Edit Config File et collez le bloc ci-dessus (la ligne option arch en tête, le reste dans le sous-réseau), en laissant Boot filename sur None.

dnsmasq :

dhcp-userclass=set:ipxe,iPXE
dhcp-match=set:efi64,option:client-arch,7
dhcp-match=set:efi64,option:client-arch,9
dhcp-boot=tag:ipxe,http://192.168.10.5/boot.ipxe
dhcp-boot=tag:!ipxe,tag:efi64,snponly.efi,,192.168.10.5
dhcp-boot=tag:!ipxe,tag:!efi64,undionly.kpxe,,192.168.10.5

OPNsense, pfSense (intitulés selon la version) : Services › DHCPv4 › votre interface › Network booting : activez-le, Next server = 192.168.10.5, Default BIOS file name = undionly.kpxe, UEFI 64 bit file name = snponly.efi, iPXE boot filename = http://192.168.10.5/boot.ipxe.

Box ou routeur grand public : rarement configurable. Utilisez un autre serveur DHCP, ou démarrez les machines avec une clé USB iPXE (8.5).

8.4 Proxmox#

  • Les VM créées par Völund (volet Virtualiser) sont déjà réglées : démarrage sur le disque, puis sur le réseau.
  • Pour une VM existante : Options › Ordre de démarrage › cochez net0.
  • Leur iPXE intégré n'affiche pas les couleurs : Völund charge alors l'iPXE complet du paquet ipxe (une seconde de plus). Sans ce paquet, le menu s'affiche en bleu, il fonctionne pareil.

8.5 Sans démarrage réseau dans le micrologiciel#

Démarrez sur l'image ipxe.iso du paquet ipxe, gravée ou copiée sur une clé USB (http://192.168.10.5/boot/ipxe/ipxe.iso). Elle démarre iPXE, qui suit la configuration DHCP.

8.6 Vérifier#

Depuis une machine du réseau des installations :

curl -s -o /dev/null -w "%{http_code}\n" http://192.168.10.5/p/test    # attendu : 404

404 : l'écoute répond. 000 : rien n'écoute ou un pare-feu bloque. La page Démarrer tient un journal des démarrages (machine, MAC, IP, évènement).

9. Images de l'installateur Debian#

Le menu de démarrage a besoin du noyau et de l'installateur réseau de Debian.

  • Télécharger : page Démarrer › Télécharger, pour Debian 13 (trixie) et/ou 12 (bookworm).
  • Vérification : la signature de l'index de l'archive est vérifiée par gpgv avec le trousseau officiel de Debian, puis les empreintes SHA-256 ; l'image n'est mise en place qu'entière et vérifiée.
  • Mettre à jour après chaque version intermédiaire de Debian (13.1, 13.2…) : sinon l'installateur ne trouve plus les modules du noyau et s'arrête.
  • Miroir : VOLUND_DEBIAN_MIRROR=https://miroir.exemple.lan/debian pour un miroir local (il doit contenir dists/<version>/main/installer-amd64).
  • Trousseau : VOLUND_DEBIAN_KEYRING (défaut : celui du paquet debian-archive-keyring).

Le choix du miroir des paquets installés sur les machines se fait dans chaque preseed (configuration rapide : Miroir, Proxy HTTP).

10. Proxmox#

10.1 Créer le jeton#

Sur un nœud, en root. La commande complète est aussi dans Paramètres › Proxmox :

pveum role add Volund -privs "VM.Allocate VM.Clone VM.Audit VM.PowerMgmt VM.Config.CPU VM.Config.Memory VM.Config.Disk VM.Config.Network VM.Config.Cloudinit VM.Config.Options VM.Config.HWType VM.Config.CDROM Datastore.AllocateSpace Datastore.Audit SDN.Use Sys.Audit Pool.Audit Pool.Allocate"
pveum user add volund@pve
pveum aclmod / -user volund@pve -role Volund
pveum user token add volund@pve auto --privsep 0

Notez le secret affiché : il n'apparaît qu'une fois. L'ID du jeton est volund@pve!auto.

Droits restreints (recommandé) : au lieu de /, appliquez le rôle à ce que Völund utilise, et déployez toujours dans le pool volund :

pveum pool add volund
pveum aclmod /pool/volund -user volund@pve -role Volund
pveum aclmod /storage/local-lvm -user volund@pve -role Volund
pveum aclmod /sdn/zones/localnetwork -user volund@pve -role Volund
pveum aclmod /vms/9000 -user volund@pve -role Volund       # chaque modèle à cloner
pveum aclmod /nodes -user volund@pve -role Volund

10.2 Relier Völund#

Paramètres › Proxmox (administrateur) :

Champ Valeur
Hôte, port Adresse d'un nœud du cluster, 8006
ID du jeton volund@pve!auto
Secret Le secret noté ci-dessus ; laissé vide ensuite, il reste inchangé
Empreinte Bouton Relever, puis comparez avec Proxmox › nœud › Système › Certificats (pveproxy-ssl.pem, sinon pve-ssl.pem)

Tester puis Enregistrer. Le secret est chiffré (AES-256-GCM, clé secrets.key) et n'est jamais renvoyé au navigateur. Le certificat de Proxmox est épinglé : s'il change (renouvellement ACME, réinstallation), relevez de nouveau l'empreinte.

10.3 Modèles cloud-init#

Pour le mode « Depuis un modèle cloud-init », préparez un modèle avec un lecteur cloud-init (exemple avec l'image cloud officielle de Debian 13) :

wget https://cloud.debian.org/images/cloud/trixie/latest/debian-13-genericcloud-amd64.qcow2
qm create 9000 --name debian13-cloud --memory 2048 --cores 2 --net0 virtio,bridge=vmbr0 --scsihw virtio-scsi-pci --agent 1 --serial0 socket --vga serial0
qm importdisk 9000 debian-13-genericcloud-amd64.qcow2 local-lvm
qm set 9000 --scsi0 local-lvm:vm-9000-disk-0 --ide2 local-lvm:cloudinit --boot order=scsi0
qm template 9000

Le mode « Installée par le réseau » n'a besoin d'aucun modèle : il utilise le démarrage réseau (sections 7 à 9).

11. Saga#

Völund peut prévenir Saga (supervision de la même famille d'applications) à la fin de chaque installation :

  1. Dans Saga : nouvelle sonde de type Push, copiez son URL (…/api/push/<jeton>).
  2. Dans Völund : Paramètres › Saga › URL push de la sonde.
  3. Si Saga utilise son HTTPS intégré, collez aussi son autorité (contenu de /saga-ca.crt).

Laissez l'URL vide pour désactiver.

12. Comptes, rôles et double authentification#

Comptes : Paramètres › Utilisateurs (administrateurs). Identifiant de 2 à 32 caractères, mot de passe de 10 caractères minimum, stocké en empreinte Argon2id.

Rôle Peut
Lecteur Consulter les listes, machines, installations, démarrages, VM
Opérateur En plus : lire le texte des preseeds et scripts, gérer les machines, préparer les installations, déployer et piloter les VM
Administrateur Tout, dont preseeds, scripts, utilisateurs, Proxmox, Saga, import, journal

Il reste toujours au moins un administrateur : le dernier ne peut être ni rétrogradé ni supprimé.

Double authentification : Paramètres › Compte › Activer. Compatible avec toute application TOTP (Aegis, 2FAS, Google Authenticator…). Dix codes de secours à usage unique sont donnés une seule fois : rangez-les dans un gestionnaire de mots de passe. Un administrateur peut la désactiver pour un autre compte (téléphone perdu).

Connexions : après 5 échecs, l'adresse est bloquée 30 s, puis le double à chaque nouvel échec, jusqu'à 1 h. Les sessions durent 30 jours ; changer de mot de passe ferme les autres sessions.

Journal : Paramètres › Journal liste les connexions et toutes les modifications ; durée de conservation : VOLUND_AUDIT_RETENTION (défaut 400 jours). Le journal des démarrages réseau est gardé 30 jours.

Apparence : Paramètres › Apparence, choix propre à chaque appareil (Braise par défaut, Forge en clair, thèmes de la même famille d'applications).

13. Service systemd#

sudo systemctl status volund
sudo systemctl restart volund
sudo journalctl -u volund -f

Le service tourne avec un utilisateur éphémère (DynamicUser), un système de fichiers en lecture seule sauf son dossier de données, sans accès aux dossiers personnels, avec des appels système filtrés ; son seul privilège est d'écouter sur un port inférieur à 1024.

Pour ajuster sans modifier le fichier du paquet :

sudo systemctl edit volund

par exemple pour limiter la mémoire :

[Service]
MemoryMax=512M

14. Ligne de commande#

Les commandes accèdent à la base : arrêtez le service avant, et lancez-les avec le même utilisateur éphémère :

sudo systemctl stop volund
sudo systemd-run --pty --wait -p DynamicUser=yes -p User=volund -p StateDirectory=volund \
     -E VOLUND_DB=/var/lib/volund/volund.db /usr/bin/volund-server <commande>
sudo systemctl start volund
Commande Effet
passwd [identifiant] Change le mot de passe (demandé deux fois), désactive la double authentification et ferme les sessions. Sans identifiant : le premier administrateur ; sans compte : en crée un
import-v1 <dossier ou archive> Importe les preseeds et scripts de Völund 1 (le dossier n'est pas modifié)
version Affiche la version

15. Mise à jour, sauvegarde, restauration#

Mettre à jour :

sudo apt install ./volund-server_<version>_amd64.deb

Configuration et base conservées, migrations de la base automatiques, service redémarré. Si /etc/volund/volund.env a été modifié et que le paquet en apporte une nouvelle version, apt demande laquelle garder : gardez la vôtre. Rechargez ensuite l'interface (Ctrl+Maj+R).

Sauvegarder (paquet sqlite3) :

sudo sqlite3 /var/lib/private/volund/volund.db ".backup /root/volund.db"
sudo cp /var/lib/private/volund/secrets.key /etc/volund/volund.env /root/

Les images Debian et le certificat se recréent ; sans secrets.key, seul le jeton Proxmox est à ressaisir.

Restaurer (même machine ou nouvelle, Völund installé) :

sudo systemctl stop volund
sudo cp /root/volund.db /root/secrets.key /var/lib/private/volund/
sudo cp /root/volund.env /etc/volund/
sudo chown --reference=/var/lib/private/volund /var/lib/private/volund/volund.db /var/lib/private/volund/secrets.key
sudo chmod 600 /var/lib/private/volund/volund.db /var/lib/private/volund/secrets.key
sudo systemctl start volund

16. Désinstaller#

sudo apt remove volund-server     # garde la base et la configuration
sudo apt purge volund-server      # supprime aussi /var/lib/volund et /etc/volund

Pensez à retirer la configuration de démarrage réseau de votre DHCP, et le jeton côté Proxmox :

pveum user token remove volund@pve auto
pveum user delete volund@pve

17. Référence des variables#

Variable Défaut Rôle
VOLUND_ADDR 127.0.0.1:8070 Adresse et port de l'interface
VOLUND_TLS off auto (autorité locale), files (vos certificats), off
VOLUND_TLS_HOSTS — Adresses et noms du certificat, séparés par des virgules (obligatoire en auto)
VOLUND_TLS_DIR <dossier de la base>/tls Dossier de l'autorité et du certificat (auto)
VOLUND_TLS_CERT, VOLUND_TLS_KEY — Certificat et clé (files)
VOLUND_TRUST_PROXY — 1 : lire X-Forwarded-For et X-Forwarded-Proto (derrière un proxy uniquement)
VOLUND_BOOT_ADDR désactivée Écoute d'amorçage (ex. 0.0.0.0:80)
VOLUND_BOOT_URL — Adresse de l'écoute vue par les machines (ex. http://192.168.10.5)
VOLUND_BOOT_ALLOW tous Réseaux autorisés à l'écoute d'amorçage et au TFTP
VOLUND_TFTP_ADDR désactivé TFTP pour iPXE (ex. 0.0.0.0:69) ; demande l'écoute d'amorçage
VOLUND_IPXE_DIR /usr/lib/ipxe Fichiers d'iPXE
VOLUND_DEBIAN_MIRROR https://deb.debian.org/debian Archive des images de l'installateur
VOLUND_DEBIAN_KEYRING /usr/share/keyrings/debian-archive-keyring.gpg Trousseau qui vérifie l'archive
VOLUND_DB volund.db Chemin de la base ; son dossier contient aussi secrets.key, tls/, netboot/
VOLUND_AUDIT_RETENTION 400d Durée du journal d'audit (90d, 720h…)
VOLUND_SETUP_TOKEN généré Jeton de création du premier compte

Réglages faits dans l'interface (stockés dans la base) : connexion Proxmox, sonde Saga, comptes et rôles, double authentification ; le thème est propre à chaque navigateur.

Guide d'utilisation de Völund#

Völund prépare l'installation de Debian (preseeds), démarre les machines par le réseau (menu iPXE) et crée des VM sur Proxmox. Ce guide décrit l'utilisation au quotidien ; l'installation de Völund et tous ses réglages sont dans installation.md.

Les exemples utilisent un serveur Völund en 192.168.10.5 et le domaine exemple.lan.

1. Installer : preseeds, scripts, machines#

Le volet Installer a trois onglets.

Preseeds#

Un preseed contient les réponses à toutes les questions de l'installateur Debian.

Créer un preseed : Installer › Preseeds › Nouveau preseed.

  • Configuration rapide : remplissez le formulaire (version de Debian, langue, clavier, fuseau, réseau, comptes, clés SSH, disque, logiciels), puis Générer le texte.
  • Texte : relisez et ajustez si besoin. Le panneau Contrôle signale les lignes incorrectes et les secrets en clair.
  • Enregistrer. Chaque modification garde l'ancienne version (panneau Historique).

Mots de passe : tapez-les en clair, Völund n'en garde que l'empreinte ($6$…). Vous pouvez aussi coller une empreinte existante (depuis un gestionnaire de mots de passe ou mkpasswd). Dans un texte écrit à la main, les mots de passe root, utilisateur et GRUB en clair sont convertis à l'enregistrement.

Identifiant réservé : n'utilisez pas admin comme utilisateur : Debian 13 le refuse et l'installation s'arrêterait.

Variables : écrivez {{nom}} là où une valeur change d'une machine à l'autre. Völund remplit d'office :

Variable Valeur
{{hostname}} Nom de la machine
{{domain}} Son domaine
{{fqdn}} Nom complet (web1.exemple.lan)
{{mac}} Son adresse MAC

Les autres ({{ip}}, {{passerelle}}…) se renseignent sur la fiche de chaque machine.

Adresse fixe : choisissez « Adresse fixe » dans la configuration rapide. Völund met {{ip}} et {{passerelle}}, et ajoute la ligne qui applique l'adresse fixe après la lecture du preseed (kill-all-dhcp; netcfg). Choisissez des adresses hors de la plage de votre DHCP.

Scripts post-installation#

Installer › Scripts › Nouveau script : collez le contenu ou envoyez un fichier. Les scripts s'exécutent en root, dans l'ordre choisi, à la fin de l'installation ; leur sortie est dans /root/volund-<n>.log. Liez-les à un preseed dans son panneau Scripts post-installation.

Un exemple qui vérifie l'installation : exemples/scripts/test-volund.sh (rapport dans /root/volund-test.txt).

Machines#

Installer › Machines › Ajouter une machine :

  • Nom d'hôte et domaine ;
  • Preseed ;
  • Adresse MAC (facultative) : présélectionne son installation dans le menu de démarrage ;
  • Variables : une par ligne, nom=valeur, par exemple : ip=192.168.10.70 passerelle=192.168.10.1 Caractères autorisés : lettres, chiffres, espace et . _ : / @ , + = -.

Puis Préparer l'installation. L'installation est valable 24 heures, pour une seule installation. Suivez son état sur la fiche : Prête → En cours (preseed lu) → Installée.

Lancer l'installation d'une machine#

Par le réseau (recommandé) : démarrez la machine sur le réseau ; le menu de Völund s'affiche et la liste des installations préparées apparaît. Choisissez la machine (elle est présélectionnée si sa MAC est connue) : rien à taper. Voir section 2.

Avec l'image ISO de Debian : démarrez sur l'image netinst, puis Advanced options › Automated install, et tapez l'adresse donnée par Völund sans http:// :

192.168.10.5/p/bk4tr7xe

À ce stade, le clavier est en QWERTY. Sur un clavier AZERTY, : s'obtient avec Maj+M, et les chiffres, . et / avec le pavé numérique. Les lettres des jetons sont choisies pour être à la même place sur tous les claviers.

2. Démarrer : le démarrage réseau#

Le démarrage réseau (DHCP, TFTP, images Debian) se met en place une fois : voir installation, sections 7 à 9. Pensez à mettre à jour les images Debian (page Démarrer › Mettre à jour) après chaque version intermédiaire de Debian.

Le menu#

V O L U N D :: la forge des machines
web1.lan :: bc:24:11:e7:95:c0 :: 192.168.10.131

INSTALLER DEBIAN (efface le disque)
 > web1.lan :: Serveur trixie :: Debian 13          (10)
   db1.exemple.lan :: Serveur trixie :: Debian 13

DEMARRER
   Disque local
   Mode secours Debian 13
   Shell iPXE
  • Les installations préparées sont listées ; celle de la machine qui démarre est présélectionnée (10 s) si sa MAC est renseignée.
  • Sans choix, la machine démarre sur son disque local (5 s) : une machine qui démarre toujours sur le réseau n'est jamais réinstallée par accident.
  • Mode secours : l'installateur Debian en mode récupération (shell sur le disque installé).

La page Démarrer montre aussi le journal des démarrages (machine, MAC, IP, évènement).

3. Virtualiser : les VM Proxmox#

La connexion à Proxmox (jeton d'API, empreinte du certificat) se règle une fois : voir installation, section 10.

Déployer#

Virtualiser › Déployer, deux modes :

Depuis un modèle cloud-init : clone un modèle préparé (voir ci-dessous). Format de nom (web-## donne web-01, web-02…), nombre, ressources, disque (taille finale, on ne peut qu'agrandir), pont, VLAN, DHCP ou adresses fixes incrémentées, utilisateur, mot de passe (envoyé en empreinte), clés SSH, étiquettes.

Installée par le réseau (preseed) : Völund crée des VM vides, les enregistre comme machines avec leur MAC, prépare leur installation et les démarre. Disque vide → démarrage réseau → menu de Völund (installation présélectionnée) → Debian s'installe seule → redémarrage sur le disque. Avec des adresses fixes, chaque fiche reçoit {{ip}}, {{masque}}, {{passerelle}} et {{dns}}. Le pont doit être celui du réseau où le DHCP envoie vers Völund.

Cliquez toujours sur Aperçu (noms, VMID, adresses, avertissements) avant Déployer. Une VM dont le nom existe déjà n'est pas recréée ; si une étape échoue, la VM est supprimée.

Pour préparer un modèle cloud-init, voir installation, section 10.3.

Mes VM et Tâches#

  • Mes VM : les VM créées par Völund (étiquette volund) et l'état de leur installation. Sélectionnez-les pour démarrer, arrêter (proprement ou de force), redémarrer ou supprimer (avec leurs disques). Vos autres VM n'apparaissent pas et ne peuvent pas être touchées.
  • Tâches : avancement de chaque VM et message d'erreur exact en cas d'échec. L'historique est gardé jusqu'au redémarrage du service.

4. Paramètres#

Section Contenu
Compte Double authentification, mot de passe
Utilisateurs Comptes et rôles (administrateurs)
Journal Actions et connexions (administrateurs)
Proxmox Connexion au cluster (administrateurs)
Saga Sonde push appelée à la fin de chaque installation
Import v1 Reprise des preseeds et scripts de Völund 1
Apparence Thème (Braise par défaut, Forge en clair, thèmes de la famille)

Rôles :

Rôle Peut
Lecteur Consulter les listes, les machines, les VM, les démarrages
Opérateur En plus : lire preseeds et scripts, gérer les machines, préparer les installations, déployer et piloter les VM
Administrateur Tout : preseeds, scripts, utilisateurs, Proxmox, Saga, import

La configuration de Proxmox, de Saga, des comptes et de la double authentification est détaillée dans le document d'installation.

Import de Völund 1 : envoyez une archive du dossier de la v1, ou sur le serveur :

sudo systemd-run --pty --wait -p DynamicUser=yes -p User=volund -p StateDirectory=volund \
     -E VOLUND_DB=/var/lib/volund/volund.db /usr/bin/volund-server import-v1 /chemin/vers/volund-v1

Les mots de passe en clair sont convertis, le nom d'hôte devient {{hostname}}. Relisez ensuite chaque preseed : retirez les anciennes lignes qui téléchargeaient /script/… depuis la v1, et remplacez l'utilisateur admin s'il y en a un.

5. Dépannage#

Symptôme Cause et solution
curl répond 000 Rien n'écoute à cette adresse : vérifiez le port, https + -k pour l'interface, http pour l'écoute d'amorçage
Le bouton « Préparer l'installation » est grisé Écoute d'amorçage désactivée : VOLUND_BOOT_ADDR et VOLUND_BOOT_URL
http://http.//192.168.10.5… dans l'installateur Clavier QWERTY : tapez l'adresse sans http://, : avec Maj+M
« Failed to process the preconfiguration file » sur boot.ipxe Mettez à jour Völund (0.2.4 ou plus) ; choisissez la ligne de la machine, pas « Mode secours »
« L'identifiant que vous avez choisi (admin) est réservé » Changez passwd/username dans le preseed
La machine s'appelle debian Démarrez-la par le menu réseau (le nom est transmis) ou passez hostname= et domain= sur la ligne de démarrage
L'adresse fixe n'est pas appliquée Le preseed doit contenir d-i preseed/early_command string kill-all-dhcp; netcfg
Variable non définie à la préparation Ajoutez-la sur la fiche de la machine (ip=…)
La VM n'affiche pas le menu Mauvais pont (pas celui du réseau DHCP), DHCP non relancé, ou adresse hors de VOLUND_BOOT_ALLOW
Menu en bleu au lieu de braise Paquet ipxe absent du serveur Völund
Installation bloquée : « modules introuvables » Images Debian périmées : Démarrer › Mettre à jour
Proxmox « Permission check failed » Droit manquant au jeton (rôle Volund)
Proxmox « certificat inattendu » Certificat renouvelé : relevez de nouveau l'empreinte
Conflit d'adresse IP L'adresse fixe est dans la plage du DHCP : prenez-en une en dehors

6. Bonnes pratiques de sécurité#

  • Gardez l'interface en HTTPS (VOLUND_TLS=auto) et activez la double authentification pour tous les comptes.
  • Limitez l'écoute d'amorçage au réseau des installations : VOLUND_BOOT_ALLOW=192.168.10.0/24. Elle est en HTTP et ses jetons sont visibles dans le menu : ce réseau doit être de confiance, idéalement un VLAN dédié.
  • Préférez les clés SSH aux mots de passe dans les preseeds et les déploiements cloud-init.
  • Donnez aux autres comptes le rôle Lecteur ou Opérateur, pas Administrateur.
  • Restreignez le jeton Proxmox au pool et aux stockages utilisés (voir le rapport d'audit, n° 6).
  • Sauvegardez volund.db et secrets.key dans un endroit protégé.
  • Mettez Völund à jour : chaque version est compilée avec une version de Go sans vulnérabilité connue.

Installation et réglages : installation.md. Fonctionnement interne : architecture.md.