Suivant: , Précédent: , Monter: Configuration du système   [Table des matières][Index]


3.6 Lancer Guix sur un serveur Linode

Pour lancer Guix sur un serveur hébergé par Linode, commencez par un serveur Debian recommandé. Nous vous recommandons d’utiliser la distribution par défaut pour amorcer Guix. Créez vos clés SSH.

ssh-keygen

Assurez-vous d’ajouter votre clé SSH pour vous connecter facilement sur le serveur distant. C’est facilité par l’interface graphique de Linode. Allez sur votre profil et cliquez sur le bouton pour ajouter une clé SSH. Copiez la sortie de :

cat ~/.ssh/<username>_rsa.pub

Éteignez votre Linode.

Dans l’onglet de stockage du Linode, modifiez la taille du disque Debian pour qu’il soit plus petit. Nous recommandons 30 Go d’espace libre. Ensuite, cliquez sur « Ajouter un disque » et remplissez le formulaire de cette manière :

Dans l’onglet de configuration, cliquez sur « modifier » sur le profil Debian par défaut. Dans « Block Device Assignment » cliquez sur « Add a Device ». Il devrait apparaître en tant que /dev/sdc et vous pouvez sélectionner le disque « Guix ». Sauvegardez les changements.

Maintenant « Add a Configuration », avec ce qui suit :

Maintenant démarrez le serveur avec la configuration Debian. Une fois lancé, connectez vous en ssh au serveur avec ssh root@<IP-de-votre-serveur-ici>. (Vous pouvez trouver l’adresse IP de votre serveur dans la section résumé de Linode). Maintenant vous pouvez lancer les étapes d’installation de voir Installation binaire dans GNU Guix :

sudo apt-get install gpg
wget https://sv.gnu.org/people/viewgpg.php?user_id=15145 -qO - | gpg --import -
wget https://git.savannah.gnu.org/cgit/guix.git/plain/etc/guix-install.sh
chmod +x guix-install.sh
./guix-install.sh
guix pull

Maintenant il est temps d’écrire une configuration pour le serveur. Voici ce que vous devrez obligatoirement écrire, en plus de vos propres configurations. Enregistrez le fichier avec le nom guix-config.scm.

(use-modules (gnu)
             (guix modules))
(use-service-modules networking
                     ssh)
(use-package-modules admin
                     certs
                     package-management
                     ssh
                     tls)

(operating-system
  (host-name "my-server")
  (timezone "America/New_York")
  (locale "en_US.UTF-8")
  ;; Ce code va générer un grub.cfg
  ;; sans installer le chargeur d'amorçage grub sur le disque.
  (bootloader (bootloader-configuration
               (bootloader
                (bootloader
                 (inherit grub-bootloader)
                 (installer #~(const #true))))))
  (file-systems (cons (file-system
                        (device "/dev/sda")
                        (mount-point "/")
                        (type "ext4"))
                      %base-file-systems))


  (swap-devices (list "/dev/sdb"))


  (initrd-modules (cons "virtio_scsi"    ; Requis pour trouver le disque
                        %base-initrd-modules))

  (users (cons (user-account
                (name "janedoe")
                (group "users")
                ;; Ajoute le compte au groupe « wheel »
                ;; pour en faire un sudoer.
                (supplementary-groups '("wheel"))
                (home-directory "/home/janedoe"))
               %base-user-accounts))

  (packages (cons* nss-certs            ; pour l'accès HTTPS
                   openssh-sans-x
                   %base-packages))

  (services (cons*
             (service dhcp-client-service-type)
             (service openssh-service-type
                      (openssh-configuration
                       (openssh openssh-sans-x)
                       (password-authentication? #false)
                       (authorized-keys
                        `(("janedoe" ,(local-file "janedoe_rsa.pub"))
                          ("root" ,(local-file "janedoe_rsa.pub"))))))
             %base-services)))

Remplacez les champs suivants dans la configuration ci-dessus :

(host-name "my-server")       ; remplacez avec le nom de votre serveur
; si vous avez choisi un serveur Linode en dehors des U.S.,
; utilisez tzselect pour trouver le bon fuseau horaire
(timezone "America/New_York") ; remplacez le fuseau horaire si besoin
(name "janedoe")              ; remplacez avec votre nom d'utilisateur
("janedoe" ,(local-file "janedoe_rsa.pub")) ; remplacez par votre clé ssh
("root" ,(local-file "janedoe_rsa.pub")) ; remplacez par votre clé ssh

Cette dernière ligne vous permet de vous connecter au serveur en root et de créer le mot de passe initial de root (voir la note à la fin de cette recette sur la connexion en root). Après avoir fait cela, vous pouvez supprimer cette ligne de votre configuration et reconfigurer pour empêcher la connexion directe en root.

Copiez votre clé ssh publique (ex : ~/.ssh/id_rsa.pub) dans <votre-nom-d'utilisateur>_rsa.pub et ajoutez votre guix-config.scm au même répertoire. Dans un nouveau terminal lancez ces commandes.

sftp root@<adresse IP du serveur distant>
put /path/to/files/<username>_rsa.pub .
put /path/to/files/guix-config.scm .

Dans votre premier terminal, montez le disque guix :

mkdir /mnt/guix
mount /dev/sdc /mnt/guix

À cause de la manière dont nous avons paramétré la section du chargeur d’amorçage dans le fichier guix-config.scm, nous installons seulement notre fichier de configuration grub. Donc on doit copier certains fichiers GRUB déjà installés sur le système Debian :

mkdir -p /mnt/guix/boot/grub
cp -r /boot/grub/* /mnt/guix/boot/grub/

Maintenant initialisez l’installation de Guix :

guix system init guix-config.scm /mnt/guix

Ok, éteignez maintenant le serveur ! Depuis la console Linode, démarrez et choisissez « Guix ».

Une fois démarré, vous devriez pouvoir vous connecter en SSH ! (La configuration du serveur aura cependant changé). Vous pouvez rencontrer une erreur de ce type :

$ ssh root@<server ip address>
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@     WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!      @@@@@@@@@@@@@@@@@@@@@@@@@@@@@ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ECDSA key sent by the remote host is
SHA256:0B+wp33w57AnKQuHCvQP0+ZdKaqYrI/kyU7CfVbS7R4.
Please contact your system administrator.
Add correct host key in /home/joshua/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /home/joshua/.ssh/known_hosts:3
ECDSA host key for 198.58.98.76 has changed and you have requested strict checking.
Host key verification failed.

Vous pouvez soit supprimer ~/.ssh/known_hosts, soit supprimer la ligne qui pose problème, qui commence par l’adresse IP de votre serveur.

Assurez-vous de configurer votre mot de passe et celui de root.

ssh root@<remote ip address>
passwd  ; pour le mot de passe root
passwd <username> ; pour le mot de passe utilisateur

Il se peut que vous ne puissiez pas lancer les commandes précédentes si vous n’arrivez pas à vous connecter à distance via SSH, auquel cas vous devrez peut-être configurer vos mot de passes utilisateurs et root en cliquant sur « Launch Console » dans votre espace Linode. Choisissez « Glish » au lieu de « Weblish ». Maintenant vous devriez pouvoir vous connecter en ssh à la machine.

Hourra ! Maintenant vous pouvez étendre le serveur, supprimer le disque Debian et redimensionner celui de Guix. Bravo !

Au fait, si vous sauvegardez le résultat dans une image disque maintenant, vous pourrez plus facilement démarrer de nouvelles images de guix ! Vous devrez peut-être réduire la taille de l’image Guix à 6144 Mo, pour la sauvegarder en tant qu’image. Ensuite vous pouvez redimensionner la partition à la taille maximum.


Suivant: , Précédent: , Monter: Configuration du système   [Table des matières][Index]