Table of Contents

NAS Home made

Patapouf, c'est mon NAS home made. Il tourne sur Ubuntu 18.04 ➡️ 20.04 ➡️ 22.04.

A l'époque, Debian arrivait en période de freeze et je n'avais pas le courage d'attendre que la période se termine pour installer la machine. J'ai donc pris une Ubuntu - que je ne regrette absolument pas, tant les passages de version me prennent par la main.

Il est monté avec deux RAID1 (2x4To, hérités d'un ancien Synology qui m'a gonflé à réécrire ses fichiers htpasswd au démarrage et 2x2To récupérés d'une (autre) ancienne configuration). Il est programmé pour s'arrêter la nuit et pour se rallumer le lendemain (merci les options du BIOS), pendant la journée. J'essaie de faire en sorte que les opérations qui le concernent soient évidemment coordonnées.

A refaire, je pense que je repartirais sur Debian ou Ubuntu - en mode serveur, j'ai l'impression que les deux se valent - même si NixOS me tenterait bien aussi.

Configuration

A part la configuration des disques en LVM et en RAID1, la seule grosse modification concerne les mises à jour automatiques avec `unattended-upgrades` et une petite partie de sécurité :

apt install unattended-upgrades needrestart build-essentials
apt install ufw
apt install haveged curl git unzip zip
apt install rkhunter
apt install fail2ban
sudo dpkg-reconfigure --priority=low unattended-upgrades

SSHd

Et adaptez les valeurs dans le fichier `/etc/fail2ban/jail.d/defaults-debian.conf`:

[sshd]
enabled = true
bantime = 3600
maxretry = 3
findtime = 600

UFW

Voir ici : https://www.citizenz.info/firewall-utiliser-ufw-sur-scaleway

On change la politique INPUT par défaut à ACCEPT et non plus DROP $ sudo vim /etc/default/ufw DEFAULT_INPUT_POLICY=“ACCEPT”

2 - On ajoute une règle DROP-ALL à la fin du fichier suivant, juste avant la ligne finale COMMIT : $ sudo vim /etc/ufw/after.rules -A ufw-reject-input -j DROP

3 - On désactive le logging d'UFW. Scaleway n'aime pas trop : $ sudo ufw logging off

4 - On n'oublie surtout pas d'activer SSH pour pouvoir accéder au serveur : $ sudo ufw allow ssh

5 - enfin on active UFW : $ sudo ufw enable

Et ensuite ici :) https://www.citizenz.info/ufw-un-par-feu-facile-a-utiliser-pour-son-serveur

Nginx

apt install nginx
apt install certbot
certbot certonly --authenticator standalone --installer nginx --email fred@grimbox.be -d grimbox.be -d benjamin.grimbox.be -d cloud.grimbox.be -d nearflagey.be -d alexis.grimbox.be --pre-hook "service nginx stop" --post-hook "service nginx start"

Le certificat généré se trouvera dans /etc/letsencrypt/live.

On peut ensuite renouveller automatiquement le certificat grâce à la commande `cerbot renew`, dont le comportement est décrit dans le fichier `/etc/letsencrypt/renewal/<site>.conf`.

L'autre solution est de reprendre la génération des certificats, de mettre ça dans un fichier `renew-certs.sh` et de le démarrer via un crontab en root:

```cron @monthly /root/renew-certs.sh ```

Gestion et création des utilisateurs

Nous allons créer un utilisateur, son propre répertoire utilisateur (afin d'y stocker sa configuration de connexion) et l'ajouter à notre groupe de sauvegarde, afin que borg puisse gérer ses fichiers.

Le paramètre -m s'occupe de créer le répertoire utilisateur. Et comme on n'est pas des salauds, on va lui fournir un shell un peu utile (au cas où), et l'ajouter directement au groupe borg.

sudo useradd -m <user> -s /bin/bash -G borg

Il faut ensuite

  1. lui donner une clé de connexion,
  2. configurer un répertoire de sauvegarde,
  3. configurer rclone pour synchroniser les fichiers,
  4. configurer la récurrence de la sauvegarde.

Applications / Services