====== NAS Home made ======
Patapouf, c'est mon NAS home made.
Il tourne sur Ubuntu 18.04 ➡️ 20.04 ➡️ 22.04.
A l'époque, [[infra:debian|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 [[privacy:synology|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 [[infra:debian|Debian]] ou [[infra:ubuntu|Ubuntu]] - en mode serveur, j'ai l'impression que les deux se valent - même si [[infra:nixos|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/.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 -s /bin/bash -G borg
Il faut ensuite
- lui donner une clé de connexion,
- configurer un répertoire de sauvegarde,
- configurer [[infra:apps:rclone|rclone]] pour synchroniser les fichiers,
- configurer la récurrence de la sauvegarde.
===== Applications / Services =====
- [[infra:samba]]
- [[infra:borg:index]]
- [[infra:services:mssmtp]]
- [[infra:services:nginx]]