[ howto ] Installation d'un serveur dédié (partie 1 debootstrap de devuan)

Rédigé par NaïLyK Aucun commentaire
Classé dans : howto, devuan, self-hosting, linux Mots clés : aucun

Je viens de prendre une nouvelle machine pour remplacer mon ancienne. Plus performante pour moins cher.
Au passage, je passe chez Hertzner. Premier fois chez eux, tout le monde m'en a dit du bien (contenu non sponsorisé bien évidement !)

L'idée de cet article est d'expliquer comment je mets en place Devuan avec des disques chiffrés sur un serveur distant.
Comme l'installation se fera via debootstrap, il est possible d'installer absolument n'importe quelle distribution basée sur une gestion des paquets par APT.

Pour commencer, étant donné que les manipulations suivantes ne sont pas sans risques, un petit disclamer (originellement utilisée sur Android) :

#include <std_disclaimer.h
/*
* Your warranty is now void.
*
* I am not responsible for bricked devices, dead SD cards,
* thermonuclear war, or you getting fired because the alarm app failed. Please
* do some research if you have any concerns about features included in this ROM
* before flashing it! YOU are choosing to make these modifications, and if
* you point the finger at me for messing up your device, I will laugh at you.
*/

Allez, on se lance !

 

Par défaut, la machine a boot en rescue. Parfait !

Si ce n'est pas le cas, ça peut se faire ici :

 

 

Première étape : Partitionnement

Comme je veux faire des disques chiffrés, le partitionnement sera un peu particulier. De plus, pas de raid car j'ai besoin de tout l'espace.
L'idée est la suivante :

  • /boot : Non chiffré, ext2, petite taille
  • / : Non Chiffré, ext4, taille moyenne
  • /media/data : Chiffré, ext4, grand
  • /home: Chiffré, ext4, grand

 

parted /dev/nvme0n1
mklabel msdos
mkpart primary ext4 1 512mb
mkpart primary ext4 512mb 50.5gb
mkpart primary 50.5gb 100%
toggle 1 boot
print free
quit
parted /dev/nvme1n1
mklabel msdos
mkpart primary 1 100%
quit

 

Resultat :

root@rescue ~ # lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
loop0         7:0    0     3G  1 loop
nvme0n1     259:0    0 476.9G  0 disk
|-nvme0n1p1 259:5    0   487M  0 part
|-nvme0n1p2 259:6    0  46.6G  0 part
`-nvme0n1p3 259:7    0 429.9G  0 part
nvme1n1     259:1    0 476.9G  0 disk

 

Deuxième étape: Préparer le terrain pour le debootstrap

mkfs.ext4 /dev/nvme0n1p1
mkfs.ext4 /dev/nvme0n1p2
export MY_CHROOT=/target
mkdir -p $MY_CHROOT
mount /dev/nvme0n1p2 $MY_CHROOT
mkdir ${MY_CHROOT}/boot
mount /dev/nvme0n1p1 ${MY_CHROOT}/boot

 

Petit problème: devuan n'est pas inclu dans le rescue disc

wget "https://git.devuan.org/devuan/debootstrap/raw/branch/suites/unstable/scripts/ceres" -O /usr/share/debootstrap/scripts/ceres
ln -s ceres /usr/share/debootstrap/scripts/chimaera

 

Troisième étape: On passe aux debootstrap

PKG="login,passwd,less,vim,netbase,wget,cpio,e2fsprogs,dpkg,apt,apt-utils,openssh-server,grub2,linux-image-amd64,bash,zsh,bash-completion,sudo,net-tools,inetutils-ping,iproute2,ifupdown,rsyslog,logrotate,cron"
LC_ALL=C debootstrap --arch amd64 --include=$PKG --variant=minbase chimaera $MY_CHROOT http://deb.devuan.org/merged

Et voilà !
Ce n'est pas plus compliqué que cela 🙂

 

Quatrième étape: Finaliser le système

On 'chroot' dans le système nouvellement installé

mount -o bind /sys ${MY_CHROOT}/sys
mount -o bind /dev ${MY_CHROOT}/dev
mount -t proc /proc ${MY_CHROOT}/proc

LC_ALL=C chroot ${MY_CHROOT}

 

Attention aux étapes suivantes. Il faut prendre le temps de bien faire si non le système ne démarrera pas (correctement) !

Premier chose importante à faire : Configurer le fstab

Récuperer la liste des UUID avec `blkid` puis les mettre dans le fstab :

root@rescue:/# blkid
/dev/loop0: UUID="2dceb8c1-0bfe-488e-820a-e4f78326dc0a" BLOCK_SIZE="4096" TYPE="ext2"
/dev/nvme0n1p1: UUID="af0c516a-4da3-4010-903f-e8a6213b1ec4" BLOCK_SIZE="1024" TYPE="ext4" PARTUUID="b5e79a8a-01"
/dev/nvme0n1p2: UUID="d6a7c1f4-036a-411c-a50d-eaee427131aa" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="b5e79a8a-02"
/dev/nvme0n1p3: PARTUUID="b5e79a8a-03"
/dev/nvme1n1p1: PARTUUID="9257632b-01"

root@rescue:/# cat /etc/fstab
# UNCONFIGURED FSTAB FOR BASE SYSTEM
UUID=af0c516a-4da3-4010-903f-e8a6213b1ec4       /boot   ext4    discard,noatime,nodiratime,errors=remount-ro    0       1
UUID=d6a7c1f4-036a-411c-a50d-eaee427131aa       /       ext4    discard,noatime,nodiratime,errors=remount-ro    0       0

puis mettre à jour GRUB pour prendre en compte les nouvelles partitions :

grub-install /dev/nvme0n1
update-grub

 

On crée un compte utilisateur

root@rescue:/# adduser nailyk
Adding user `nailyk' ...
Adding new group `nailyk' (1000) ...
Adding new user `nailyk' (1000) with group `nailyk' ...
Creating home directory `/home/nailyk' ...
Copying files from `/etc/skel' ...
New password: 
Retype new password:
passwd: password updated successfully
Changing the user information for nailyk
Enter the new value, or press ENTER for the default
        Full Name []: nailyk
        Room Number []:
        Work Phone []:
        Home Phone []:
        Other []:
Is the information correct? [Y/n]
 

Et le mettre sudoer

(ben oui, la première fois j'ai oublié, me suis retrouvé un peu bête 😁 )

adduser nailyk sudo

 

Creer le fichier interfaces :

Pour Hertzner, il y a une page de documentation à ce sujet : https://docs.hetzner.com/robot/dedicated-server/network/net-config-debian-ubuntu 

 

cat /etc/network/interfaces
## /etc/network/interfaces example Hetzner root server
# Loopback-Adapter
auto lo
iface lo inet loopback

#
# LAN interface
auto eth0
iface eth0 inet static
  # Main IP address of the server
  address 65.108.227.145
  # Netmask 255.255.255.255 (/32) independent from the
  # real subnet size (e.g. /27)
  netmask 255.255.255.192
  # explicit host route to the gateway
  gateway 65.108.227.129
  pointopoint 65.108.227.129

#
iface eth0 inet6 static
  # one IPv6 address from assigned subnet
  address 2a01:4f9:1a:a7af::2
  netmask 64
  gateway fe80::1

 

Et, enfin, mettre en place un hostname

Pas forcemment nécéssaire mais, d'experience, les Linux ont du mal à gérer le réseau quand ce n'est pas proprement mis en place, donc je ne prends pas le risque:

cat /etc/hostname
666

cat /etc/hosts
127.0.0.1       localhost
127.0.0.1       666
::1             localhost ip6-localhost ip6-loopback
ff02::1         ip6-allnodes
ff02::2         ip6-allrouters

cat /etc/resolv.conf
#fdn
nameserver 80.67.169.12
nameserver 80.67.169.40
nameserver 80.67.188.188
nameserver 89.234.141.66
nameserver 2001:910:800::12
nameserver 2001:910:800::40

 

Le moment stréssant : Le restart

Sortir du chroot puis redémarrer 🤞

 

Petites améliorations : Fichier de SWAP

(il peut être intéréssant de le mettre sur un disque chiffré, voir l'article suivant)

sudo fallocate -l 16G /media/data/swapfile
sudo chmod 600 /media/data/swapfile
sudo mkswap /media/data/swapfile
sudo swapon /media/data/swapfile
echo "vm.swappiness=10" | sudo tee -a /etc/sysctl.conf

 

🔖  vm.swappiness=10 permet de dire de commencer à utiliser le swap à partir de 10% de mémoire libre. Par defaut, sous de[bv]ian la valeur est de 60. Peu intéréssant dans le cas d'un serveur.

 

Quand ça se passe mal

Très probablement, certaines choses vont mal se passer.
Pas de panique !
Via l'interface de management de la machine, mettre en mode Rescue puis redémarrer la machine.

Une fois la machine redémarrée en mode rescue il faut remettre en place le chroot :

 

 

export MY_CHROOT=/target
mkdir -p $MY_CHROOT
mount /dev/nvme0n1p2 $MY_CHROOT
mount /dev/nvme0n1p1 ${MY_CHROOT}/boot
mount -o bind /sys ${MY_CHROOT}/sys
mount -o bind /dev ${MY_CHROOT}/dev
mount -t proc /proc ${MY_CHROOT}/proc
LC_ALL=C chroot ${MY_CHROOT}

 

Et débogger 😉

Écrire un commentaire

Capcha
Entrez le code de l'image

Fil RSS des commentaires de cet article