Outils pour utilisateurs

Outils du site


Installation du système

J'ai souhaité installer Proxmox (Proxmox_VE). Ca semble simple pour faire de la virtualisation chez soi sans trop s'enquiquiner, et c'est basé sur Debian, donc système familier.

Situation :

  • Je n'ai pas d'écran pour brancher la machine pendant l'installation.
  • La carte mère dispose d'UEFI.

Préparation de la clé USB

Sous Linux, on utilise le bon vieux dd.

dd if=/home/mply/proxmox-…-.iso of=/dev/cle/usb bs=4M ; sync

Attention à bien choisir le périphérique destination, pour ne pas écraser les données de l'un de vos disque durs par inadvertance !

Installation de proxmox

J'avais installé Proxmox 4 beta 2 en insérant le disque SSD sur mon ordi portable. Le hic, c'est que j'avais oublié le mot de passe root lors de l'installation :p En plus, mon ordi portable ne dispose pas d'UEFI… donc je ne sais pas si ça allait fonctionner une fois remis dans le boitier. En fait, j'ignorais d'où venait le problème d'absence d'accès à SSH. Il venait d'une part du fait que j'avais branché la RAM dans le mauvais slot, et d'autre part mais c'est moins sûr, de l'absence de gestion d'UEFI lors de cette 1ère installation.

J'ai réinstallé Proxmox, cette fois-ci en le branchant sur un écran quelque part. Là, ça semblait fonctionner.

Booter avec UEFI

Déjà, je me rend compte qu'il faut régler l'ordre de démarrage dans l'UEFI … et qu'il s'en fout complètement ! Il cherchait à démarrer via PXE bien que je mette USB en 1ère position.

Ensuite, on peut choisir directement ce sur quoi on veut démarrer en appuyant sur F11 au démarrage. Sauf que, les options étaient variables selon si je venais de brancher la clé USB, et selon si l'ordinateur avait été éteint éléctriquement ou juste redémarré (via CTRL+ALT+SUPPR par exemple).

Parfois, il proposait de booter sur l'USB, mais ne faisait pas référence à UEFI. D'autres fois, il proposait de booter sur l'USB via 2 options différentes, dont une réservée à UEFI.

La clé USB contient 2 partitions, dont une dédiée à UEFI. Cette dernière n'apparaissait donc pas tout le temps, mystère.

Lorsque, sur une machine UEFI, on installe Proxmox via la partition non-UEFI de la clé USB, les menus d'installation se comportent bizarrement, les flèches du clavier mettent des plombes à répondre pour sélectionner une entrée, bref, bizarre.

Lorsqu'on installe Proxmox via la partition UEFI, tout se passe bien, les menus sont sélectionnables et réactifs.

Suite

Je n'ai pas cherché à me compliquer la vie pour le reste de l'installation de Proxmox et j'ai donc pris les options proposées par défaut (sans risquer ZFS que je ne connais pas bien, notamment).

Lors de l'installation de proxmox, le seul point un peu important, étant donné que j'allais accéder à la machine via ssh par la suite, est que j'ai précisé manuellement une adresse IP non utilisée de mon réseau local. Il faut en effet que l'adresse IP de Proxmox soit située sur le même réseau que mon ordi portable. DHCP s'en charge, mais il voulait quand même utiliser une adresse IP statique. J'ai donc précisé manuellement l'IP statique qu'il fallait.

Configuration des dépots Proxmox

Se référer à la doc par ici : https://pve.proxmox.com/wiki/Package_repositories#Proxmox_VE_4.x

Pas question de payer pour les dépots “entreprise”, n'est-ce pas. Il suffit donc de le désactiver, et de le remplacer par celui indiqué.

Chiffrer l'hôte, ou chiffrer les VMs ?

On me fait remarquer que chiffrer l'hôte complet serait plus approprié, mais je n'ai pas vu l'option dans Proxmox. Des recherches internet disent que c'est faisable mais à coup de manipulations moyennement digestes.

Le fait que les machines virtuelles soient chiffrées tandis que l'hôte ne l'est pas soulève peut-être de nouveaux problèmes de sécurité.

Par exemple, sur cette page, on lit : «One important thing: YOU NEED TO BE ABLE TO TRUST THE HOST SYSTEM!!! If the host system is compromised, it might log the console input when you enter the Key for unlocking the cryptsetup device, thus learning the password whith which you encrypted all your data!!!». De toute façon, chiffré ou pas, aucune compromision du serveur hôte n'est souhaitable.

Le scénario dont on se prémunit en chiffrant nos VMs, c'est que si la machine est saisie (et donc éteinte, sans compromission préalable), alors il sera compliqué de retrouver les données situées dans les VMs.

Mise en place des machines virtuelles (VMs)

Proxmox nous propose plusieurs façons de créer des VMs.

Création de conteneur avec template

Une première tentative a échoué, en essayant d'utiliser les conteneurs tout préparés élaborés par la communauté de Proxmox.

Tout se fait via l'interface web de Proxmox ( https://ip.ip.ip.ip:8006 ), n'oubliez pas le httpS car sinon la page de Proxmox refusera de s'afficher.

Cela consiste alors à télécharger le Template de la distribution qu'on souhaite (ici, Debian 8), et à le selectionner après avoir clické sur Create CT (conteneur).

Lors du démarrage du conteneur, celui-ci échouait avec le message :

can't open '/sys/fs/cgroup/blkio/lxc/100/blkio.throttle.io_service_bytes' - No such file or directory (500)

Message d'erreur en rapport avec les «capabilities» intégrées au noyau, semble t-il.

Des recherches à ce sujet ont été peu concluantes, je décide donc d'employer la solution VM plutôt que la solution CT (conteneur).

Création d'une VM depuis un .iso

Créer la VM

Là, on télécharge le .iso de notre Debian favorite. J'ai choisi la netinstall.

Il suffit alors de créer la VM, et d'accorder un espace disque qui peut être faible, genre 5Go (la taille pourra être augmentée facilement plus tard, mais pas réduite !). 5Go sont en effet suffisants pour contenir le système, pour le moment.

Ma logique est que les données lourdes en espace (que pourraient proposer les sites web, par exemple) pourront être situés dans des répertoires hors-VM, et éventuellement partagés entre les VMs.

Installation de Debian netinstall

L'installation via netinstall est un peu chiante, on s'arrangera donc de façon à ne pas devoir la faire plusieurs fois.

Il vaut mieux songer à tout déselectionner parmi les groupes de logiciels que proposent tasksel, sauf le serveur SSH qui nous servira au sein des VMs.

On profite de l'installeur Debian pour effectuer un partitionnage avec chiffrement et LVM. Celui-ci pourra s'accaparer tout l'espace qu'il souhaite.

Le chiffrement est utile dans les cas où les données que l'on va accueillir sont sensibles (notamment des fichiers et donnés émis par des utilisateurices extérieures).

Accès SSH au sein des VMs

Une fois l'installation achevée, on pensera à se faciliter un accès ssh, en copiant sa propre clé publique dans le fichier /root/.ssh/authorized_keys des VMs. En effet, par défaut, l'authentification par mot de passe ne fonctionnera pas pour le compte root (on pourrait cependant y accéder avec su, depuis un autre compte utilisateur).

Assigner des IP fixes

Il est très utile que vos machines virtuelles aient des IPs fixes.

Chez moi, elles sont attribuées par le service DHCP de la Freebox, et il est possible de créer des associations «adresse IP - adresse Mac».

On va donc dans le panneau de configuration de Free, et on recopie les adresses Mac qui sont notamment indiquées pour chaque VM dans la page d'administration de Proxmox (sinon, faire un ip addr sur chaque VM).

On établit les correspondances, on redémarre la Freebox, on redémarre les VMs pour qu'elles acquièrent leur nouvelle IP fixe, et c'est bon.

Clonage d'une VM pour en créer une nouvelle

C'est le moment de créer une autre VM en partant de celle que l'on vient d'installer, qui servira de base.

Dans proxmox, il suffit de faire un click droit sur le nom de la VM, et de selectionner «cloner».

On devra ajuster quelques points de différences, notamment :

  • le nom d'identifiant de la VM
  • le nom d'hôte via /etc/hostname
  • l'espace disque, qui pourra être étendu s'il est prévu qu'on installe beaucoup de logiciels sur la VM
  • le nombre de coeurs du processeur accordé à la VM
  • la quantité de RAM accordée à la VM, on essayera que la somme de RAM accordée aux VMs n'excède pas la quantité dont on dispose réellement (cela s'appelle de la surenchère, c'est possible mais peut-être risqué).

Ainsi, on évite de devoir se retaper l'installation de Debian, et on peut garder une copie clonée d'une VM toute fraîche qui restera inactive, qui servira à en créer de nouvelles si l'on en a besoin. Sinon bah, on se retapera l'install de Debian.

Déchiffrer les partitions via ssh

Les instructions dans cet article sont cools :

https://stinkyparkia.wordpress.com/2014/10/14/remote-unlocking-luks-encrypted-lvm-using-dropbear-ssh-in-ubuntu-server-14-04-1-with-static-ipst/

Les articles sont en général confus sur quelle clé ssh il s'agit de copier, et de où vers où.

Il suffit de copier sa clé publique ssh (si elle existe déjà sur votre ordinateur local) au sein des clés autorisées de dropbear (qui est installé sur l'ordinateur distant, contenant les partitions chiffrées).

Il y a quelques paragraphes potentiellement à sauter parmi les instructions indiquées. Je n'ai pas appliqué l'édition du script dans /usr/share demandant la coupure de eth0. Je ne constate pas de freeze.

Désactiver le message de "support"

(hélas il se remet après mise à jour du paquet, me semble)

Rendre les ports accessibles

Ce qui est compliqué avec l'internet d'aujourd'hui, c'est qu'on ne dispose que d'une seule adresse IP.

On ne peut donc pas, sauf à bidouiller, rendre accessible un service qui existerait en double au sein de notre réseau de machines virtuelles.

Typiquement, on aura plusieurs VMs, et sur chacune on aura un serveur web (apache, nginx…) qui tourne sur le port 80, car c'est le seul port qu'interroge nos navigateurs web, si on ne lui demande pas explicitement d'en interroger un autre.

(aborder les virtualhosts, et pound)

Pound

La doc : http://www.apsis.ch/pound/

Lire en particulier le paragraphe «VIRTUAL HOSTS (IN GENERAL)».

Il est possible de rediriger le traffic HTTP vers une machine (virtuelle ou pas) locale, en fonction de la requête HTTP envoyée. L'auteur de pound nous prévient que ce n'est pas vraiment le rôle de pound, mais plutôt le rôle des VirtualHosts.

J'ai juste suivi les pistes que je connaissais, je me doute que ça n'est pas recommandé, mais pour le moment j'ignore comment faire mieux (avoir un nginx quelque part qui ferait le même boulot ?).

L'idéal étant que chaque VM ait son IP publique, on pourra peut-être s'amuser avec IPv6 plus tard.

A creuser donc.

Accès aux disques durs

En gros, si vous avez une partition /dev/sd* dans votre hôte, et que vous souhaitez la rendre accessible au sein d'une VM, il faut :

  • Stopper la VM
  • Editer /etc/pve/qemu-server/xyz.conf (où xyz est l'identifiant de la VM)
  • Y ajouter une ligne ideX: /dev/sdaY pour partager la partition. (où X est choisi arbitrairement mais ideX doit être une unique, et où Y désigne le numéro de partition à partager).
  • Redémarrer la VM, puis blkid pour ajouter l'UUID dans le /etc/fstab de la VM.

La partition sera disponible sous un /dev/sd*, sans numéro au bout car on a ici partagé une unique partition et pas un disque complet. /dev/sdZ pourra toutefois être monté comme une partition standard.

Attention, une même partition formatée en EXT3 ou EXT4 ne doit pas être accédée en écriture depuis plusieurs VMs en même temps. Risques que les écritures se chevauchent et que cela se passe mal. Si l'on souhaite disposer d'un espace de stockage partagé entre plusieurs VMs ou machine, on utilisera NFS (en installant un serveur NFS donc).

Je rajoute cette doc, à checker : http://www.sky-future.net/2016/01/18/lier-un-point-de-montage-lxc-sur-proxmox/

Partage des périphériques USB

Carte son USB

Je souhaite que ma carte son soit accessible à la VM 101.

Les instructions sont détaillées par ici : https://pve.proxmox.com/wiki/USB_Devices_in_Virtual_Machines

Malheureusement, la carte son ne semble pas poser de soucis sur l'hôte, mais déclenche une erreur sur la machine virtuelle.

Sur l'hôte :

# qm monitor 101
Entering Qemu Monitor for VM 101 - type 'help' for help
qm> info usbhost
  Bus 1, Addr 20, Port 4, Speed 12 Mb/s
    Class 00: USB device 0763:2012, FastTrack Pro

On ajoute le périphérique à la VM :

# qm set 101 -usb0 host=1-4

On vérifie qu'il est bien présent dans le fichier de config:

# cat /etc/pve/qemu-server/101.conf
usb0: host=1-4

(sera en PENDING si la VM n'a pas été redémarrée)

Sur la machine virtualisée :

$ dmesg
...
[   40.033471] usb 3-1: Fast Track Pro switching to config #2
[   40.033501] snd-usb-audio: probe of 3-1:1.0 failed with error -5
[   40.041369] usb 3-1: Fast Track Pro config OK
[   40.125418] usbcore: registered new interface driver snd-usb-audio

Oh beeeh, ça marche quand même…

Dans /etc/modprobe.d/fasttrack.conf, on ajoute une option d'index pour que la carte son soit celle par défaut.

alias snd-card-0 snd-usb-audio
options snd-usb-audio index=0

Et on vérifie qu'elle est bien présente :

# cat /proc/asound/cards
 0 [Pro            ]: USB-Audio - FastTrack Pro
                      M-Audio FastTrack Pro at usb-0000:00:1d.0-1, full speed

Montage des disques durs USB

Sur l'un de mes disques durs externes (le plus vieux, mais pourtant du quasi même modèle qu'un autre qui fonctionne), j'ai une erreur qui m'empêche qu'il soit reconnu :

[ 1133.271362] usb 1-3: new high-speed USB device number 23 using xhci_hcd
[ 1133.383733] usb 1-3: device descriptor read/64, error -71

La reconnaissance du disque fonctionne bien sur mon ordi portable.

Des pistes :

Est-ce silencieux ?

Retour sur un point matériel. Le boitier est-il silencieux ou m'empêche t-il de dormir ?

La freebox fait du bruit !

Pour la petite histoire, la Freebox Mini (avec fibre) est bien plus bruyante que la Freebox v4 (qui est totalement silencieuse).

C'est elle qui m'empêchait de dormir, j'ai pu le constater en l'ayant réceptionnée quelques semaines avant d'avoir monté mon mini-serveur. Les premières nuits je l'éteignais, avant de lui trouver une place dans un coin de la pièce, derrière un petit meuble en bois, et posé sur la moquette, où elle ne me gênait plus du tout. Cool !

Le mini-serveur

Faut avouer qu'il est plutôt calme, mais pas calme au point de ne pas l'isoler avec des truc-bidules (et pas seulement câlé dans un meuble ouvert), sachant que le serveur est situé à 4m de mon lit.

Donc là ben euh je le barricade avec des coussins et pour le moment ça chauffe pas trop :)

Les disques durs externes

Eux par contre, ils font du bruit (en fait, je crois que ça dépend lesquels), et je n'ai pas de quoi les câler pour les isoler. Pour le moment, je les éteins avant de dormir.

Creuser par ici pour leur mise en veille : raspberry. Un seul de mes 2 disque durs semblent bien vouloir se mettre en veille avec hdparm/sdparm.

Remarques et conclusion

Dépenser 300 boules en prennant le risque d'acheter un truc qui allait potentiellement m'empêcher de m'endormir, j'avoue que je n'y avais pas beaucoup réfléchi, mais je suis plutôt soulagé, le couple Freebox + mini-serveur a été aménagé et toléré pendant plusieurs nuits avec succès !

J'avoue que pour le moment, par contre, je coupe les disques durs externes.

Services

article/linux/serveur-mini-itx-proxmox.txt · Dernière modification: 2017/02/05 22:00 par fab