diff --git a/posts/Nixos/nixos-proxmox.md b/posts/Nixos/nixos-proxmox.md index 10fe593..df8c41d 100644 --- a/posts/Nixos/nixos-proxmox.md +++ b/posts/Nixos/nixos-proxmox.md @@ -1,7 +1,7 @@ --- Date: 2022-10-13 Author: Alexandre LUCAZEAU -Title: Nixos faire une image pour Proxmox +Title: "Nixos : faire une image pour Proxmox" Slug: categories: Nixos Tags: @@ -9,22 +9,69 @@ Tags: - virtualisation - nixos-option --- +L'objectif de ce post est d'avoir une doc sur la génération d'un template de VM pour Proxmox. + +Nous allons voir toutes les étape pour générer un fichier de VM Nixos, l'inclure dans Proxmox, le personnaliser et le transformer en template réutilisable. + # Créer une image à intégrer à Proxmox +La première étape consite à créer sur son poste un image de VM au format **Proxmox** + nix --extra-experimental-features nix-command --extra-experimental-features flakes run github:nix-community/nixos-generators -- --format proxmox - Ajouter --configuration filename.nix pour ajouter des choses à l'image +Cette commande va générer un fichier dans le store de nix. Elle est extremement basique. Elle démarre et il y a un simple compte root sans mot de passe. - Copier l'image générée sur le proxmox + +Copier l'image générée sur le proxmox : scp /nix/store/6c6n1lrdc30mk6fd9d5rbhiyba8inm0c-proxmox-nixos-22.05.3010.dd1f4d98244/vzdump-qemu-nixos-22.05.3010.dd1f4d98244.vma.zst root@192.168.10.112:/var/lib/vz/dump/ - Créer une VM à partir de l'image +Maintenant que l'image est sur notre Proxmox on peut la supprimer : + + nix --extra-experimental-features nix-command store gc + +# Transformer un fichier image en template dans Proxmox +Maintenant que notre image est sur notre serveur Proxmox, nous allons créer une VM : qmrestore /var/lib/vz/dump/vzdump-qemu-nixos-22.05.3010.dd1f4d98244.vma.zst 101 --unique true -Note : clooud-init peut être activé via : services.cloud-init.network.enable = true; -o -resize2fs /dev/vda1 -parted /dev/vda +Note : cloud-init peut être activé via : services.cloud-init.network.enable = true; + +A partir de là, nous pourrions transformer cette VM en template, mais comme il est trop basique, on va la modifier. Vous pouvez la démarrer. + +Lorsque la VM sera démarrée, le seul moyen d'y accéder c'est via la console, car le compte root ne possède pas de mot de passe. + +Perso je suis pas fan de la console série, donc je défini un mot de passe à root, puis je me connecte à la VM en SSH. On supprimera le mot de passe plus tard. + +## Customisation de la VM + +Comme vous l'aurez remarqué, la VM ne possède pas de dossier */etc/nixos* c'est brut. + +On va le générer : + + nixos-generate-config + +Attention par defaut ssh est désactivé. + +J'ai un dépôt avec une config de "base", comme les packets que j'aime retrouver sur une VM ou simplement mon compte utilisateur : + + nix-shell -p git --run git clone https://git.atlanticaweb.fr/alexandre/nixos-template-PX.git + +Après avoir apporté vos configurations de base, on fait le ménage et on éteint la VM: + + rm -rf nixos-template-PX + passwrd -d root + nix-collect-garbage -d + poweroff + +## Transformation de la VM +Maintenant que notre modèle est terminé, on peut le transformer en template et supprimer l'image dans **/var/lib/vz/dump/** + +## Nouvelle VM +Le disque par défaut fait que 2Go, ci-dessous les commandes, pour rappel, pour l'agrandir (après avoir configuré la nouvelle VM et lui avoir attribué un disque plus grand): + + parted /dev/vda + resizepart 1 100% + quit + resize2fs /dev/vda1 diff --git a/posts/Nixos/restic-hetzner.md b/posts/Nixos/restic-hetzner.md new file mode 100644 index 0000000..3dd0773 --- /dev/null +++ b/posts/Nixos/restic-hetzner.md @@ -0,0 +1,61 @@ +--- +date: 2022-12-15 +author: Alexandre LUCAZEAU +title: Faire ses sauvegardes dans un storage boxe de chez Hetzner +tags: +- nixos +- restic +- sftp +- storage boxes +- hetzner +- oneprovider +categories : +- nixos +draft: false +description : "Faire ses sauvegardes dans un storage boxe de chez Hetzner" +--- +En juillet j'ai fais un article sur la mise en place de sauvegardes via **restic** et **restic server**. + +Les sauvegardes fonctionnaient à merveille. Le serveur était un petit dédié à base d'atom et 1To d'espace disque que je louais chez OneProvider. Il s'agissait en réalité d'une petite dedibox. + +L'OS était donc **nixos** et cette semaine j'ai voulu la passer en version 22.11 + +La montée de version s'est bien passée, j'ai juste eu besoin de corriger la configuration de **caddy**. Suite à cette mise à jour majeur, j'ai fait un reboot et .... rien. + +Le serveur n'a jamais redémarré, et rien via l'ipmi. Je contact le support et quelques heures après on m'annonce que le serveur est mort et qu'ils n'ont pas de machines de secours. + +On me propose un remboursement, soit. Le plus étrange c'est que j'ai eu exactement la même chose à l'automne avec un autre petit serveur à 5€/mois. + +C'est pas un drame, mais la pratique commerciale est un peu fumeuse. Le vrai problème c'est que j'avais plus de sauvegarde :/ + +Après une recherche, je découvre l'offre de Hetzner pour des **storages boxes**. Le tarif est top (compter 3.84€/mois) pour un espace de stockage de 1To. + +Le processus de souscription est simple, accessible à tous et en 5 minutes l'espace de stockage est dispo. Il est accessible de plein des manières, comme du borg backup en version 1.2, du ssh et du webdav. + +Pour le sftp (ou ssh) il faut changer le port par défaut, pour le port 23. La doc est très bien faite. + +Que faire alors pour changer ma configuration et faire des sauvegardes, toujours via restic ? + +La première étape c'est de copier votre clé ssh sur le **storage boxe** pour avoir une connexion sans mdp : + + cat .ssh/id_ed25519.pub | ssh -p23 u3297xx@u3297xx.your-storagebox.de install-ssh-key + +Puis dans le **configuration.nix** on ajoute la configuration de connexion pour le **/etc/ssh/ssh_config** + + programs.ssh.extraConfig = "Host u3297xx.your-storagebox.de\n Hostname u3297xx.your-storagebox.de\n Port 23\n user u3297xx\n IdentityFile /home/alexandre/.ssh/id_ed25519"; + +Seconde étape la configuration de restic, ou l'on passe d'un localbackup à un remote, soit : + + remotebackup = { + initialize = true; # crée le repo s'il existe pas + passwordFile = "/run/restic_pass"; # mot de passe pour accéder au repo, voir article précédent + paths = [ "/var/lib/nextcloud/data/" "/var/backup/postgresql" ]; # ce que nous allons sauvegarder + repository = "sftp:u329746@u329746.your-storagebox.de:/home/Nextcloud"; # ou se fait la sauvegarde, ici dans un dossier Nextcloud sur le storage boxe + # Configuration de la périodicité des sauvegardes, cela cré un timer + timerConfig = { + OnCalendar = "02:05"; + RandomizedDelaySec = "5h"; + }; + }; + +Un petit `sudo nixos-rebuild switch` après et la sauvegarde est de nouveau opérationnelle, enjoy :-)