Mirror the French docs onto the English structure
This commit is contained in:
@@ -1,63 +0,0 @@
|
||||
---
|
||||
title: NAT & DHCP
|
||||
description: Comprendre le NAT, la redirection de ports et le DHCP sur un routeur domestique. Configurer des baux IP fixes et exposer des services locaux.
|
||||
---
|
||||
|
||||
:ellipsis{left=0px width=40rem top=10rem blur=140px zIndex=60}
|
||||
# Routeur et NAT
|
||||
::note
|
||||
🎯 __Objectifs :__
|
||||
|
||||
- Comprendre le principe de la redirection de port
|
||||
- Savoir configurer le NAT de son routeur
|
||||
- Savoir émettre des baux DHCP (IP fixes)
|
||||
::
|
||||
|
||||

|
||||
|
||||
## Qu'est-ce qu'un "port" ?
|
||||
Les ports sont différents canaux par lesquels votre routeur envoie et reçoit des données, ce qui permet d'utiliser plusieurs services en meme temps. Lorsqu'il reçoit une donnée via un port, otre routeur transmet ensuite les données à la machine qui :
|
||||
|
||||
- soit a émis la requête de départ
|
||||
- soit est configurée pour recevoir les données reçues par un port spécifique du routeur
|
||||
|
||||
Votre routeur dispose de plus de 65 000 ports à utiliser.
|
||||
|
||||
Certains programmes et applications sont conçus pour utiliser des ports spécifiques. Par exemple, lorsque votre réseau envoie des données à partir d'une page HTML, le routeur les recevra via le port numéro 80 (non sécurisé) ou `443` (sécurisé via SSL).
|
||||
|
||||
Le routeur sert donc de plateforme d'aiguillage des données entre internet et votre machine.
|
||||
|
||||
## La redirection de port
|
||||
Rediriger un `port`, c'est émettre une règle qui spécifie que telle `source` peut envoyer des données à tel `port` de votre routeur, qui redirigera les données sur tel `port` de telle `machine`. Les `sources` et la `machine de destination` sont identifiées par leur `adresse IP`.
|
||||
|
||||
| Variable | Description | exemple |
|
||||
|--------------------------|----------------------------------------------------------|-------------------------|
|
||||
| `machine source` | IP de la machine source (sur internet) | `All`<br>`123.45.67.89` |
|
||||
| `port source` | Port d'arrivée sur le routeur | `443` |
|
||||
| `port de destination` | Port d'arrivée sur la machine de destination | `3000` |
|
||||
| `machine de destination` | IP de la machine de destination (sur votre réseau local) | `192.168.1.50` |
|
||||
|
||||
Selon ce tableau, si on enlève le `All` et que l'on garde l'ip `123.45.67.89` en provenance d'internet, tout le traffic envoyé depuis cette IP sur le port `443` du routeur sera redirigé vers le port `3000` de l'IP locale `192.168.1.50`.
|
||||
|
||||
Si on enlève l'IP de l'exemple et qu'on laisse le `All`, tout le traffic d'internet envoyé au port `443` du routeur sera redirigé vers le port `3000` de l'IP locale `192.168.1.50`.
|
||||
|
||||
C'est utile si par exemple vous avez un serveur qui a un service qui nécessite d'etre accessible par internet. Par exemple, un site web. Le web utilise le port `80` (non sécurisé) et le port 443 (sécurisé par certificat SSL) pour communiquer. Ainsi, si je veux que mon site internet soit accessible, je vais faire en sorte que lorsqu'on tape le nom de domaine de mon site, le routeur redirige bien vers mon serveur local (avec l'exemple de l'IP locale du tableau). Par exemple, imaginons que mon service est sur le port `3000` de mon routeur (accessible en local via `http://192.168.1.50:3000`), je vais donc rediriger comme dans l'exemple toutes les sources (All) qui passent par le port `443` du routeur vers le port `3000` de mon serveur local.
|
||||
|
||||
::warning
|
||||
|
||||
__Attention :__ Si vous avez plusieurs services à rendre accessible, avec par exemple `sousdomaine1.mondomaine.fr` et `sousdomaine2.mondomaine.fr`, votre routeur ne peut pas rediriger vers plusieurs port selon la requête. Vous devrez utiliser un [Reverse Proxy](../../serveex/coeur/swag) qui selon la requete redirigera vers le bon service de votre serveur.
|
||||
::
|
||||
|
||||
## Le DHCP
|
||||
A chaque fois que vous connectez un appareil sur votre réseau local, votre routeur lui attribue une adresse IP via les règles DHCP. Celle-ci est aléatoire selon des règles prédéfinies. A chaque redémarrage de l'appareil, l'IP peut changer. C'est embetant si vous exposez un service et que vous avez une redirection de port dans votre routeur car si l'IP change, la redirection enverra les données dans le vide. Le serveur DHCP de votre box permet d'attribuer une IP fixe à un appareil.
|
||||
|
||||
Chaque appareil a une adresse physique dite "adressse MAC". Pour fixer l'IP, vous devez connaitre l'adresse physique de votre appareil (visible dans votre routeur si votre machine est connectée au réseau), et lui attribuer une adresse IP fixe, ce qu'on appel un "bail DHCP fixe".
|
||||
|
||||
Ainsi, l'IP de votre machine ne changera jamais et la redirection de port sera toujours effective.
|
||||
|
||||
| Variable | Description | Exemple |
|
||||
|---------------|--------------------------------|---------------------|
|
||||
| `IP` | IP locale fixe à attribuer | `192.168.1.50` |
|
||||
| `Adresse Mac` | Adresse physique de la machine | `5E:FF:56:A2:AF:15` |
|
||||
|
||||
Pour plus d'information sur ces sujets, consultez la documentation de votre routeur.
|
||||
@@ -0,0 +1,88 @@
|
||||
---
|
||||
title: Généralités
|
||||
description: Les bases d'un homelab, réseau, stockage et matériel, valables au-delà de n'importe quelle application auto-hébergée.
|
||||
navigation:
|
||||
icon: i-lucide-bookmark
|
||||
---
|
||||
|
||||
|
||||
:ellipsis{left=0px width=40rem top=10rem blur=140px zIndex=60}
|
||||
## Les bases d'un homelab
|
||||
|
||||
Cette section rassemble les connaissances générales sur lesquelles [Serveex](/serveex/introduction) s'appuie sans les réexpliquer à chaque fois : comment le réseau fonctionne réellement à la maison, comment choisir et mettre en place son stockage, et sur quel matériel faire tourner tout ça. À lire une fois, puis à recroiser depuis n'importe quel tutoriel d'application.
|
||||
|
||||
### Réseau
|
||||
|
||||
:::div{class="relative"}
|
||||
:ellipsis{left=0px width=40rem top=10rem blur=140px}
|
||||
:::
|
||||
|
||||
::card-group
|
||||
::card{icon="i-lucide-router" title="NAT & DHCP" to="/general/networking/nat"}
|
||||
Redirection de ports et baux DHCP fixes sur votre box
|
||||
::
|
||||
|
||||
::card{icon="i-lucide-globe" title="Zone DNS" to="/general/networking/dns"}
|
||||
Lire et modifier la zone DNS d'un nom de domaine
|
||||
::
|
||||
|
||||
::card{icon="i-lucide-folder-sync" title="Samba" to="/general/networking/samba"}
|
||||
Partager des dossiers sur le réseau local
|
||||
::
|
||||
::
|
||||
|
||||
### Stockage
|
||||
|
||||
:::div{class="relative"}
|
||||
:ellipsis{left=0px width=40rem top=10rem blur=140px}
|
||||
:::
|
||||
|
||||
::card-group
|
||||
::card{icon="i-lucide-database" title="RAID" to="/general/storage/raid"}
|
||||
Grappes de disques redondantes, matériel ou logiciel
|
||||
::
|
||||
|
||||
::card{icon="i-lucide-layers" title="ZFS" to="/general/storage/zfs"}
|
||||
Snapshots, sommes de contrôle et redondance intégrée
|
||||
::
|
||||
::
|
||||
|
||||
### Matériel
|
||||
|
||||
:::div{class="relative"}
|
||||
:ellipsis{left=0px width=40rem top=10rem blur=140px}
|
||||
:::
|
||||
|
||||
::card-group
|
||||
::card{icon="i-lucide-cpu" title="Les bases" to="/general/hardware/basics"}
|
||||
Processeurs, RAM, stockage et formats de machine
|
||||
::
|
||||
|
||||
::card{icon="i-lucide-network" title="Réseau" to="/general/hardware/network"}
|
||||
Switchs, cartes réseau et câblage
|
||||
::
|
||||
|
||||
::card{icon="i-lucide-hard-drive" title="Le ProloNAS" to="/general/hardware/prolonas"}
|
||||
Un serveur maison N100 à petit budget
|
||||
::
|
||||
::
|
||||
|
||||
### Linux pour les nuls
|
||||
|
||||
:::div{class="relative"}
|
||||
:ellipsis{left=0px width=40rem top=10rem blur=140px}
|
||||
:::
|
||||
|
||||
::card-group
|
||||
::card{icon="i-lucide-terminal" title="Bases de la ligne de commande" to="/general/linux/cli-basics"}
|
||||
Comment une commande est construite, et celles qui servent vraiment
|
||||
::
|
||||
|
||||
::card{icon="i-lucide-folder-tree" title="Dossiers et partitions" to="/general/linux/filesystem"}
|
||||
Ce qui vit où sur Debian, et les habitudes qui gardent tout propre
|
||||
::
|
||||
|
||||
::card{icon="i-lucide-wrench" title="Outils CLI pratiques" to="/general/linux/handy-tools"}
|
||||
Les outils en ligne de commande à installer, et comment les configurer
|
||||
::
|
||||
::
|
||||
@@ -0,0 +1,71 @@
|
||||
---
|
||||
title: NAT & DHCP
|
||||
description: Comprendre le NAT, la redirection de ports et le DHCP sur un routeur domestique. Configurer des baux IP fixes et exposer des services locaux.
|
||||
---
|
||||
|
||||
|
||||
:ellipsis{left=0px width=40rem top=10rem blur=140px zIndex=60}
|
||||
|
||||
|
||||

|
||||
|
||||
## Qu'est-ce qu'un « port » ?
|
||||
|
||||
Les ports sont différents canaux par lesquels votre routeur envoie et reçoit des données. Cela permet d'utiliser plusieurs services en même temps.
|
||||
Lorsqu'il reçoit des données via un port, votre routeur les transmet à la machine qui :
|
||||
|
||||
- soit a émis la requête de départ,
|
||||
- soit est configurée pour recevoir les données arrivant sur un port spécifique.
|
||||
|
||||
Votre routeur dispose de plus de 65 000 ports.
|
||||
|
||||
Certains programmes et applications sont conçus pour utiliser des ports spécifiques. Par exemple, lorsque votre réseau envoie des données depuis une page HTML, le routeur les reçoit via le port 80 (non sécurisé) ou le port `443` (sécurisé via SSL).
|
||||
|
||||
Le routeur sert donc de plateforme d'aiguillage des données entre internet et vos machines locales.
|
||||
|
||||
## La redirection de port
|
||||
|
||||
Rediriger un `port`, c'est émettre une règle qui spécifie quelle `source` peut envoyer des données à quel `port` de votre routeur, qui les transmettra ensuite à un `port` précis d'une `machine` précise. Les `sources` et la `machine de destination` sont identifiées par leur adresse IP.
|
||||
|
||||
| Variable | Description | Exemple |
|
||||
|--------------------------|----------------------------------------------------------|-------------------------|
|
||||
| `machine source` | IP de la machine source (depuis internet) | `All`<br>`123.45.67.89` |
|
||||
| `port source` | Port d'arrivée sur le routeur | `443` |
|
||||
| `port de destination` | Port sur la machine de destination | `3000` |
|
||||
| `machine de destination` | IP de la machine visée (sur votre réseau local) | `192.168.1.50` |
|
||||
|
||||
Selon ce tableau :
|
||||
Si on enlève le `All` et qu'on garde l'IP `123.45.67.89`, tout le trafic venant de cette IP envoyé sur le port `443` de votre routeur sera redirigé vers le port `3000` de l'IP locale `192.168.1.50`.
|
||||
|
||||
Si on enlève l'IP et qu'on garde `All`, alors tout le trafic venant d'internet sur le port `443` sera redirigé vers le port `3000` de `192.168.1.50`.
|
||||
|
||||
C'est utile quand vous avez un serveur qui doit être accessible depuis internet. Par exemple, un site web utilise le port `80` (non sécurisé) ou `443` (sécurisé par SSL).
|
||||
Pour rendre le site accessible, vous configurerez votre routeur pour rediriger la requête du nom de domaine vers votre serveur local.
|
||||
Imaginons que votre service tourne sur le port `3000` en local (`http://192.168.1.50:3000`), vous redirigerez tout le trafic du port `443` du routeur vers le port `3000` du serveur local.
|
||||
|
||||
::warning{to="/serveex/core/swag"}
|
||||
|
||||
__Attention :__ si vous avez plusieurs services à exposer, du type `sousdomaine1.mondomaine.fr` et `sousdomaine2.mondomaine.fr`, votre routeur ne peut pas différencier les requêtes et rediriger vers des ports différents.
|
||||
Vous devez utiliser un **Reverse Proxy** pour aiguiller le trafic selon la requête.
|
||||
::
|
||||
|
||||
## Le DHCP
|
||||
|
||||
À chaque fois qu'un appareil se connecte à votre réseau local, votre routeur lui attribue une adresse IP via les règles DHCP.
|
||||
Cette IP est choisie au hasard dans une plage prédéfinie.
|
||||
À chaque redémarrage de l'appareil, l'IP peut changer, ce qui pose problème si vous redirigez des ports, car l'IP visée peut ne plus être la bonne.
|
||||
|
||||
Pour éviter ça, utilisez le serveur DHCP de votre routeur pour attribuer une adresse IP fixe.
|
||||
|
||||
Chaque appareil a une adresse physique dite « adresse MAC ».
|
||||
Pour fixer une IP, vous devez connaître l'adresse MAC de votre appareil (visible dans votre routeur quand il est connecté), et lui attribuer une IP fixe.
|
||||
C'est ce qu'on appelle un « bail DHCP fixe ».
|
||||
|
||||
Ainsi, l'IP de votre machine ne change jamais et vos règles de redirection de port restent valables.
|
||||
|
||||
| Variable | Description | Exemple |
|
||||
|---------------|----------------------------------|---------------------|
|
||||
| `IP` | IP locale fixe à attribuer | `192.168.1.50` |
|
||||
| `Adresse MAC` | Adresse physique de l'appareil | `5E:FF:56:A2:AF:15` |
|
||||
|
||||
Pour plus d'informations, consultez la documentation de votre routeur.
|
||||
+5
-10
@@ -3,17 +3,11 @@ title: Zone DNS
|
||||
description: Comprendre le fonctionnement du DNS, lire et éditer une zone DNS, et configurer des noms de domaine pour vos services auto-hébergés.
|
||||
---
|
||||
|
||||
|
||||
:ellipsis{left=0px width=40rem top=10rem blur=140px zIndex=60}
|
||||
# Noms de domaines et zone DNS
|
||||
|
||||
::note
|
||||
🎯 __Objectifs :__
|
||||
|
||||
- Comprendre le fonctionnement d'un serveur DNS
|
||||
- Comprendre comment modifier une zone DNS
|
||||
::
|
||||
|
||||
## Introduction
|
||||
|
||||
Lorsque vous naviguez sur un site, ou une application, des requêtes sont émises vers un ou des domaines afin d'afficher le contenu de votre page. Votre appareil ne connait pas les adresses IP de ces serveurs à joindre. Pour les connaitre, il va contacter un _serveur de nom_ (Domain Name Server) qui lui va lui répondre avec l'adresse IP la plus à jour pour le domaine de la requête.
|
||||
|
||||
La zone DNS, c'est une sorte de registre avec des panneaux qui redirige vos requêtes vers la bonne destination.
|
||||
@@ -21,6 +15,7 @@ La zone DNS, c'est une sorte de registre avec des panneaux qui redirige vos requ
|
||||

|
||||
|
||||
## La zone DNS
|
||||
|
||||
Lorsque vous réservez un domaine chez votre registrar (cloudflare, ovh...), ce registrar vous attribue une zone DNS que vous pouvez personnaliser.
|
||||
|
||||
Vous pouvez rentrer des _enregistrements_ dans cette zone DNS qui permettront d'orienter les requêtes au bon endroit. Vous trouverez [plus d'information ici](https://help.ovhcloud.com/csm/fr-dns-servers-general-information?id=kb_article_view&sysparm_article=KB0051661).
|
||||
@@ -48,9 +43,9 @@ Ainsi, si vous choisissez de pointer le domaine `mondomaine.fr` vers votre serve
|
||||
|
||||
::warning
|
||||
|
||||
- __Attention,__ Si votre serveur est chez vous :
|
||||
__Attention :__ si votre serveur est hébergé chez vous :
|
||||
- l'IP publique est celle de votre box internet. Assurez-vous auprès de votre opérateur que cette IP est fixe ou configurez un [DDNS](https://aws.amazon.com/fr/what-is/dynamic-dns/).
|
||||
- assurez-vous d'avoir [redirigé le port 443 vers le port d'écoute de votre serveur](/fr/general/networking/nat).
|
||||
- assurez-vous d'avoir [redirigé le port 443 vers le port d'écoute de votre serveur](/general/networking/nat).
|
||||
::
|
||||
|
||||
Et si vous ajoutez un sous-domaine qui doit pointer vers votre serveur, vous pouvez utiliser un enregistrement `CNAME` vers `mondomaine.fr`.
|
||||
+4
-4
@@ -3,6 +3,7 @@ title: Samba
|
||||
description: Configurer Samba sur Debian pour partager des dossiers sur votre réseau local et y accéder depuis Windows, macOS ou Linux.
|
||||
---
|
||||
|
||||
|
||||
:ellipsis{left=0px width=40rem top=10rem blur=140px zIndex=60}
|
||||
|
||||
Samba est un protocole permettant d'accèder à un dossier situé sur un disque réseau. Il peut être configuré sous Mac, Windows ou Linux.
|
||||
@@ -39,8 +40,8 @@ Ensuite nous allons éditer le fichier `/etc/samba/smb.conf`
|
||||
sudo nano /etc/samba/smb.conf
|
||||
```
|
||||
|
||||
::tip{icon=""}
|
||||
✨ __Astuce :__ vous pouvez utiliser [File Browser](/fr/serveex/files/file-browser) pour naviguer dans vos fichier et éditer vos documents au lieu d'utiliser les commandes du terminal.
|
||||
::tip{icon="" to="/serveex/files/file-browser-quantum"}
|
||||
✨ __Astuce :__ vous pouvez utiliser **File Browser Quantum** pour naviguer dans vos fichier et éditer vos documents au lieu d'utiliser les commandes du terminal.
|
||||
::
|
||||
|
||||
Localisez la variable `workgroup` et nommez votre workgroup, par exemple `workgroup = WORKGROUP`
|
||||
@@ -161,7 +162,6 @@ sudo chmod 600 /smb/.credentials
|
||||
```
|
||||
|
||||
### Monter le dossier partagé
|
||||
|
||||
::warning
|
||||
__Attention :__ Si vous utilisez un pare-feu comme ufw, vous devez ajouter une règle pour autoriser votre machine distante à accéder à votre partage.
|
||||
```bash [Terminal]
|
||||
@@ -222,4 +222,4 @@ __Démonter le dossier partagé__
|
||||
```bash [Terminal]
|
||||
sudo umount -t cifs /mnt/video
|
||||
```
|
||||
::
|
||||
::
|
||||
@@ -3,6 +3,7 @@ title: RAID
|
||||
description: Comprendre le RAID, matériel vs logiciel, niveaux RAID, et comment mettre en place des grappes de disques redondants pour votre homelab.
|
||||
---
|
||||
|
||||
|
||||
:ellipsis{left=0px width=40rem top=10rem blur=140px zIndex=60}
|
||||
|
||||
_Redundant Array of Independent Disks_
|
||||
@@ -102,3 +103,6 @@ Utilisez RAID 5 pour un stockage fiable avec 3 à 5 disques et une perte minimal
|
||||
- Minimum de 4 disques (6 recommandés pour minimiser la perte d’espace).
|
||||
|
||||
Utilisez RAID 6 dans les mêmes cas que RAID 5, surtout avec 6 disques ou plus. Plus de disques = plus de risque de panne. RAID 6 vous apportera plus de fiabilité en cas de panne simultanée de deux disques. Il n'y a rien de plus frustrant que de perdre un second disque en pleine reconstruction du remplacement du premier.
|
||||
|
||||
## RAID logiciel
|
||||
(bientôt)
|
||||
@@ -3,21 +3,27 @@ title: ZFS
|
||||
description: Introduction à ZFS, système de fichiers et gestionnaire de volumes combinés avec snapshots, checksums et redondance intégrée pour un stockage fiable.
|
||||
---
|
||||
|
||||
|
||||
:ellipsis{left=0px width=40rem top=10rem blur=140px zIndex=60}
|
||||
|
||||
ZFS est populaire dans le monde des serveurs, des NAS (comme FreeNAS / TrueNAS), de la virtualisation, et même chez les particuliers qui veulent un stockage résilient. C'est est un _système de fichier_ (à l'instar de NTFS pour windows, EXT4, FAT32 etc...) mais également un __gestionnaire de volume__ (comme LVM par exemple). Pour le dire (très) rapidement, un gestionnaire de volume arrange l'espace sur des espaces physiques comme un ou plusieurs disques durs, et un gestionnaire de fichier arrange la maniere dont sont organisés les blocs de données dans ces volumes pour écrire, lire et supprimer les données.
|
||||
|
||||
ZFS dépasse largement les limites des autres systèmes de fichiers, que cela soit en terme de performance ou de fonctionnalité.
|
||||
ZFS est populaire dans le monde des serveurs, des NAS (comme FreeNAS / TrueNAS), de la virtualisation, et même chez les particuliers qui veulent un stockage résilient. C'est est un _système de fichier_ (à l'instar de NTFS pour windows, EXT4, FAT32 etc...) mais également un _gestionnaire de volume_ (comme LVM par exemple).
|
||||
|
||||
Pour le dire simplement :
|
||||
|
||||
- un **gestionnaire de volume** organise le stockage physique (un ou plusieurs disques durs).
|
||||
- un **système de fichiers** organise la manière dont les blocs de données sont écrits, lus et supprimés dans ces volumes.
|
||||
|
||||
ZFS dépasse largement les limites des autres systèmes de fichiers, que ce soit en termes de performance ou de fonctionnalités.
|
||||
Ce qui nous intéresse le plus :
|
||||
|
||||
- ses fonctionnalités de __gestion des instantanés__ (snaphsot), permettant de rapidement revenir en arrière en cas de problème
|
||||
- sa gestion des grappes de disques et [__ses équivalent au RAID__](/fr/general/storage/raid) (Z-Mirror, RAIDZ1, RAIDZ2, RAIDZ3)
|
||||
- sa gestion des grappes de disques et [__ses équivalent au RAID__](/general/storage/raid) (Z-Mirror, RAIDZ1, RAIDZ2, RAIDZ3)
|
||||
- sa __reconstruction automatique des données corrumpues__ (via le scrubbing)
|
||||
- ses performance avec son cache RAM (ZFS ARC)
|
||||
- ses notifications en cas d'erreur
|
||||
|
||||
## Structure
|
||||
|
||||

|
||||
|
||||
ZFS dispose d'une structure particulière :
|
||||
@@ -33,14 +39,13 @@ Il existe plusieurs types de dataset :
|
||||
- __snapshot__ : un état figé d’un autre dataset à un instant donné. Ils peuvent etre créés manuellement ou via des outils de sauvegarde. Ils peuvent etre montés pour parcourir les données dans leur état au moment du snapshot.
|
||||
|
||||
## Pourquoi ZFS vs les autres ?
|
||||
|
||||
### Intégrité des données
|
||||
|
||||
ZFS vérifie automatiquement que les données stockées ne sont pas corrompues. Chaque bloc de données est accompagné d’une empreinte (checksum) qui permet à ZFS de détecter toute altération, même minime. Et s’il y a un problème, il peut souvent le réparer automatiquement, si une copie saine existe ailleurs dans le système.
|
||||
|
||||
### RAID intégré
|
||||
|
||||
ZFS propose son propre système de gestion de volumes (vdev). Vous pouvez créer un pool de stockage (zpool) en combinant plusieurs disques, un peu comme avec le [RAID](/fr/general/storage/raid) classique, mais de façon plus souple. Par exemple :
|
||||
ZFS propose son propre système de gestion de volumes (vdev). Vous pouvez créer un pool de stockage (zpool) en combinant plusieurs disques, un peu comme avec le [RAID](/general/storage/raid) classique, mais de façon plus souple. Par exemple :
|
||||
|
||||
- __Z-mirror__ => equivalent du RAID 1
|
||||
- __RAIDZ1__ => équivalent du RAID 5 (tolérance à 1 panne disque)
|
||||
@@ -51,7 +56,7 @@ ZFS gère cela directement, pas besoin de logiciel RAID externe.
|
||||
|
||||
::note
|
||||
|
||||
Consultez [l'article sur le RAID](/fr/general/storage/raid) pour en savoir plus sur la solution qui vous convient.
|
||||
Consultez [l'article sur le RAID](/general/storage/raid) pour en savoir plus sur la solution qui vous convient.
|
||||
::
|
||||
|
||||
### Snapshots et clones
|
||||
@@ -62,4 +67,6 @@ ZFS permet de créer des snapshots, c’est-à-dire des captures instantanées d
|
||||
|
||||
ZFS peut compresser les données à la volée (transparente pour l’utilisateur), ce qui permet d’économiser de l’espace disque. Il propose aussi la déduplication (éliminer les doublons), mais cette fonctionnalité consomme beaucoup de mémoire et n’est pas recommandée pour tous les usages.
|
||||
|
||||
Voilà, à présent vous savez pourquoi ZFS est Ze systeme de fichier à déployer sur votre NAS.
|
||||
---
|
||||
|
||||
Voilà, à présent vous savez pourquoi ZFS est *Ze* système de fichiers à déployer sur votre NAS.
|
||||
+37
-17
@@ -3,8 +3,8 @@ title: Les bases
|
||||
description: Les fondamentaux du matériel serveur. CPU, RAM, stockage et facteurs de forme pour bien démarrer votre homelab.
|
||||
---
|
||||
|
||||
|
||||
:ellipsis{left=0px width=40rem top=10rem blur=140px zIndex=60}
|
||||
# Les bases d'un serveur
|
||||
|
||||

|
||||
|
||||
@@ -30,11 +30,9 @@ Il existe plusieurs formats de carte mère grand public :
|
||||
Bien sûr, selon la taille, le nombre de ports et de fonctionnalité diffère. D'autre part, les constructeurs de machines déjà assemblées peuvent aussi profiter de formats plus personnalisés.
|
||||
|
||||
## Le CPU
|
||||
|
||||
<div style="display: flex; align-items: center;">
|
||||
<img src="/img/global/cpu.svg" alt="Image" style="max-width: 25%; max-height:230px; margin-right: 20px;">
|
||||
<p>
|
||||
Le <strong>CPU</strong> (Central processor Unit) est la supercalculette de l’ordinateur. Il traite la plupart des tâches logicielles. Aujourd’hui les processeurs comportent plusieurs cœurs, parfois eux même divisé en deux de façon logicielle, afin de mieux répartir la charge de travail et optimiser son fonctionnement. Il nécessite d'etre refroidit avec un dissipateur actif (avec ventilateur) ou passif (sans ventilateur) selon la chaleur qu'iil dégage, et donc selon la puissance en Watt qu'il requiert. Dans le cadre d'un serveur, on veillera donc à le choisir selon les usages que l'on aura. </p>
|
||||
<p>Le <strong>CPU</strong> (Central processor Unit) est la supercalculette de l’ordinateur. Il traite la plupart des tâches logicielles. Aujourd’hui les processeurs comportent plusieurs cœurs, parfois eux même divisé en deux de façon logicielle, afin de mieux répartir la charge de travail et optimiser son fonctionnement. Il nécessite d'etre refroidit avec un dissipateur actif (avec ventilateur) ou passif (sans ventilateur) selon la chaleur qu'iil dégage, et donc selon la puissance en Watt qu'il requiert. Dans le cadre d'un serveur, on veillera donc à le choisir selon les usages que l'on aura. </p>
|
||||
</div>
|
||||
|
||||
::warning
|
||||
@@ -60,9 +58,9 @@ La __RAM__ (Random Access Memory), est une zone de stockage éphémère ultra ra
|
||||
|
||||
Elle prend généralement la forme de barettes, à brancher sur la carte mère. Il en existe plusieurs format selon le type de carte mère, et de plusieurs générations (DDR5 de nos jours).
|
||||
|
||||
## Le GPU
|
||||
## Le GPU
|
||||
|
||||
Le __GPU__ (Graphical Processor Unit) est un processeur dédié aux calculs graphiques, vidéo, et parfois d'intelligence artificielle. Dans le cadre d'un serveur, il aura son utilité pour tout ce qui touche au media center (Streaming de video comme [Plex](/fr/serveex/media/plex) par exemple), mais aussi en terme d'accélération matérielle pour les calculs d'IA comme la reconnaissance faciale ou la recherche sur des photos (comme via [Immich](/fr/serveex/cloud/immich) par exemple).
|
||||
Le __GPU__ (Graphical Processor Unit) est un processeur dédié aux calculs graphiques, vidéo, et parfois d'intelligence artificielle. Dans le cadre d'un serveur, il aura son utilité pour tout ce qui touche au media center (par exemple [Jellyfin](/serveex/media/jellyfin)), mais aussi en terme d'accélération matérielle pour les calculs d'IA comme la reconnaissance faciale ou la recherche sur des photos (comme via [Immich](/serveex/cloud/immich) par exemple).
|
||||
|
||||
Selon la puissance requise, on choisira un GPU dédié avec sa propre VRAM (une carte graphique à brancher sur un port PCIe de la carte mère), ou un iGPU, c'est à dire un GPU compris dans le CPU (comme les N100/N150 et N305/N355), qui utilisera la RAM globale de la machine
|
||||
|
||||
@@ -72,12 +70,14 @@ Selon la puissance requise, on choisira un GPU dédié avec sa propre VRAM (une
|
||||
<img src="/img/global/hdd.svg" alt="Image" style="max-width: 50%; margin-right: 20px;">
|
||||
</p>
|
||||
|
||||
Un __HDD__ (Hard Disk Drive) ou disque dur, est un composant servant à stocker des données. Autrefois, c'etait le stockage standard des machines informatiques. Ils sont constitués d'un ou plusieurs disques superposés en plateau, et de têtes de lecture, presque comme une platine vinyle. Si aujourd'hui on arrive à stocker des quantités extraordinaire de données dans un HDD (jusqu'à 30To soit 30 000 Giga-octet de nos jours pour le grand public), ils sont limités dans leur vitesse de lecture et d'écriture par leur caractère mécaniques. Ils sont également volumineux et très lourds.
|
||||
Un __HDD__ (Hard Disk Drive) ou disque dur, est un composant servant à stocker des données. Autrefois, c'etait le stockage standard des machines informatiques. Ils sont constitués d'un ou plusieurs disques superposés en plateau, et de têtes de lecture, presque comme une platine vinyle.
|
||||
|
||||
Aujourd'hui, les HDD peuvent stocker des quantités extraordinaires de données (jusqu'à 30 To, soit 30 000 gigaoctets, pour les modèles grand public), mais ils restent limités en vitesse de lecture et d'écriture par leur nature mécanique. Ils sont également volumineux et très lourds.
|
||||
|
||||
De manière générale, on les privilégiera pour stocker des données qui ne servent pas à des calculs et ne nécessitent pas d'ecriture rapide, comme les media (videos, photos...) ou les cloud drive, stockage d'archives, etc. Ils sont performants dans ces scenario et surtout coutent beaucoup moins cher que des SSD à espace de stockage égal.
|
||||
|
||||
::tip{icon=""}
|
||||
✨ __Astuce :__ Vous pouvez combiner plusieurs HDD ensemble en [RAID](/fr/general/storage/raid) afin d'accroitre les performances de votre machine.
|
||||
::tip{icon="" to="/general/storage/raid"}
|
||||
✨ __Astuce :__ combinez plusieurs HDD en **RAID** pour améliorer les performances et la redondance.
|
||||
::
|
||||
|
||||
Il existe plusieurs formats de HDD : 3.5" et 2.5". De manière générale dans un serveur on privilégiera les 3.5, plus fiables.
|
||||
@@ -88,11 +88,13 @@ Il existe plusieurs formats de HDD : 3.5" et 2.5". De manière générale dans u
|
||||
<img src="/img/global/nvme.svg" alt="Image" style="max-width: 50%; margin-right: 20px;">
|
||||
</p>
|
||||
|
||||
Un __SSD__ (Solid State Drive) est une petite carte sur laquelle sont soudées des puces de mémoires servant à stocker de l'information. Contrairement à la RAM, ces puces conservent les informations même lorsqu'elles ne sont pas alimentées et donc les conservent après un redémarrage. C'est ce qui sert globalement de stockage pour votre serveur. Contrairement aux HDD, ils ne disposent pas de parties mécaniques, sont très miniaturisés et surtout sont extrêmement rapides, de l'ordre de plusieurs Giga-octets par seconde pour les plus performants.
|
||||
Un __SSD__ (Solid State Drive) est une petite carte sur laquelle sont soudées des puces de mémoires servant à stocker de l'information. Contrairement à la RAM, ces puces conservent les informations même lorsqu'elles ne sont pas alimentées et donc les conservent après un redémarrage. C'est ce qui sert globalement de stockage principal pour votre serveur.
|
||||
|
||||
Contrairement aux HDD, ils ne disposent pas de parties mécaniques, sont très miniaturisés et surtout extrêmement rapides, de l'ordre de plusieurs gigaoctets par seconde pour les plus performants.
|
||||
|
||||
On les trouve dans plusieurs formats, aujourd'hui on priviligiera les versions M.2 NVMe, car ce sont les plus petits et plus rapides, et sont devenu un standard sur les cartes mères.
|
||||
|
||||
Ils sont en revanche beaucoup plus chers que les disque durs à capacité de stockage égale. Généralement, on y stockera au moins le système d'exploitation de la machine (Operating System ou OS) pour garantir une certaine rapidité d'execution. Dans le cadre d'un serveur, on y stockera aussi si possible les conteneurs type [docker](/fr/serveex/core/docker) et les bases de données. De manière générale, toute données dont un a besoin régulièrement et rapidement pour des calculs (site web, applications, etc...).
|
||||
Ils sont en revanche beaucoup plus chers que les disque durs à capacité de stockage égale. Généralement, on y stockera au moins le système d'exploitation de la machine (Operating System ou OS) pour garantir une certaine rapidité d'execution. Dans le cadre d'un serveur, on y stockera aussi si possible les conteneurs type [docker](/serveex/core/docker) et les bases de données. De manière générale, toute données dont un a besoin régulièrement et rapidement pour des calculs (site web, applications, etc...).
|
||||
|
||||
### La carte réseau
|
||||
|
||||
@@ -110,19 +112,32 @@ Une __carte réseau__ sert à faire communiquer votre machine avec votre réseau
|
||||
__Attention :__ Pensez bien à dimensionner vos appareils réseaux (routeurs, switch, cables...) en fonction du débit que vous souhaitez entre vos appareils. D'autre part, il existe plusieurs normes de cables RJ45 selon la vitesse permise. On privilegiera dans la plupart des cas des cables RJ45 CAT5E, et au delà de 10Gbps, on privilégiera du CAT6A, bien que le CAT5E soit utilisable à ces vitesses à courte distance. Quant à la fibre, c'est tout un sujet (simplex, duplex, transceiver...).
|
||||
::
|
||||
|
||||
La carte réseau est généralement directement intégrée à la carte mère, mais vous pouvez utiliser des cartes réseau dédiées comme par USB par exemple ou via un port d'extension PCIe. De manière générale, sur un serveur, on appréciera d'avoir au moins deux ports ethernet afin d'avoir de la redondance en cas de panne.
|
||||
La carte réseau est généralement directement intégrée à la carte mère, mais vous pouvez aussi utiliser des cartes réseau dédiées, par exemple en USB ou via un port d'extension PCIe.
|
||||
|
||||
De manière générale, sur un serveur, on appréciera d'avoir au moins deux ports ethernet afin d'avoir de la redondance en cas de panne.
|
||||
|
||||
### Entrées et sorties
|
||||
|
||||
Les __ports d'entrées et sorties__ (Input/Outpout) sont l'ensemble des ports de la machine permettant d'échanger de l'information avec des appareils externes (écrans, clavier, souris, réseau...). Généralement, sur une carte mère on retrouve le ou les ports réseaux, des ports USB de plusieurs formats et vitesse différentes, un ou plusieurs port vidéo, et des ports audio.
|
||||
Les __ports d'entrées et sorties__ (I/O) permettent de communiquer avec des appareils externes (écrans, clavier, souris, réseau...). Sur une carte mère, on trouve généralement :
|
||||
|
||||
Selon vos usages, vous devrez choisir votre carte mere et ses éventuelles cartes d'extension en fonction de vos besoin à ce niveau.
|
||||
- des ports Ethernet
|
||||
- des ports USB (formats et vitesses variés)
|
||||
- des ports vidéo
|
||||
- des prises audio
|
||||
|
||||
Choisissez votre carte mère et ses cartes d'extension en fonction de vos besoins en I/O.
|
||||
|
||||
### L'alimentation
|
||||
|
||||
__L'alimentation__ est le composant qui permet d'alimenter électriquement les composants de votre machine. Elle se compose d'un cable secteur en entrée, et de plusieurs types de cables en sorties. Ces cables se branchent sur la carte mère et différents périphériques le nécessitant, comme les disques dur, ou certaines cartes graphiques dédiées. L'alimentation se caractérise par sa puissance, en Watt, sa modularité (cables attachés ou détachables), et son rendement, en pourcentage. Comprendre qu'une alimentation de 500W avec un rendement de 80% consommera en fait 625W pour fournir ces 500W.
|
||||
__L'alimentation__ est le composant qui fournit l'énergie électrique aux composants de votre machine. Elle se branche au secteur par un cordon et dispose de plusieurs câbles de sortie qui vont sur la carte mère et sur divers périphériques, comme les disques durs ou les cartes graphiques dédiées.
|
||||
|
||||
Une autre caractéristiques des alimentations sont leur format. Il en existe plusieurs standard, comme ATX L pour les plus grandes jusqu'à SFX pour les plus petites. Il en existe aussi des spécifiques aux serveurs rackables, par définition assez plats.
|
||||
Une alimentation se caractérise par plusieurs éléments clés :
|
||||
|
||||
- sa puissance (sa capacité totale, en watts),
|
||||
- sa modularité (câbles fixes ou détachables),
|
||||
- son rendement (en pourcentage). Par exemple, une alimentation de 500W avec 80% de rendement tirera en réalité 625W au mur pour fournir 500W à la machine.
|
||||
|
||||
Un autre facteur important est le format. Il en existe plusieurs standard, comme ATX L pour les plus grandes jusqu'à SFX pour les plus petites. Il en existe aussi des spécifiques aux serveurs rackables, par définition assez plats.
|
||||
|
||||
Pour choisir votre alimentation, la convention est d'estimer la puissance electrique demandée par votre machine à usage et de multiplier par deux cette puissance. En effet, le rendement des alimentations se situe environ à 50% de sa charge totale.
|
||||
|
||||
@@ -130,5 +145,10 @@ Pour choisir votre alimentation, la convention est d'estimer la puissance electr
|
||||
|
||||
<div style="display: flex; align-items: center;">
|
||||
<img src="/img/global/case.svg" alt="Image" style="max-width: 25%; max-height:230px; margin-right: 20px;">
|
||||
<p>Le <strong>boitier</strong> est également un composant essentiel pour votre machine. Il conditionne le refroidissement de cette dernière, avec ses ventilateurs et sa conception gérant les flux d'air, mais aussi le format de votre carte mere, de votre alimentation et de votre éventuel GPU dédié. D'autre part, il conditionne également le nombre de HDD et leur format. Certains boitiers sont dit rackables, c'est à dire qu'ils peuvent etre fixés dans des racks pour des armoires informatiques (baies serveurs). Choisissez consciencieusement votre boitier en fonction de vos besoins.</p>
|
||||
<p>Le <strong>boitier</strong> est également un composant essentiel pour votre machine. Il joue un rôle clé dans le refroidissement, avec ses ventilateurs et sa conception des flux d'air, et il détermine la compatibilité de format de votre carte mère, de votre alimentation et de l'éventuel GPU dédié que vous installerez.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
Par ailleurs, le boitier détermine combien de HDD vous pouvez installer et quels formats ils acceptent. Certains boitiers sont rackables, c'est-à-dire qu'ils peuvent être installés dans des racks (baies serveurs).
|
||||
|
||||
Choisissez votre boitier avec soin en fonction de vos besoins précis et du matériel que vous comptez utiliser.
|
||||
+29
-11
@@ -3,8 +3,8 @@ title: Réseau
|
||||
description: Aperçu du matériel réseau pour homelab. Switches, cartes réseau, câbles et comment connecter efficacement vos serveurs.
|
||||
---
|
||||
|
||||
|
||||
:ellipsis{left=0px width=40rem top=10rem blur=140px zIndex=60}
|
||||
# Réseau
|
||||
|
||||

|
||||
|
||||
@@ -21,7 +21,7 @@ Plus généralement, un routeur est composé :
|
||||
- d'un switch, c'est à dire d'un hub composé de plusieurs ports __LAN__ (Local Area Network) permettant de connecter plusieurs lignes et appareils à votre routeur. Ils peuvent etre RJ45 ou SFP/SFP+.
|
||||
- parfois d'un emetteur/recepteur WiFi
|
||||
|
||||
Le routeur peut posséder des capacité de _firewall_, c'est à dire de limiter le traffic d'appareils en particulier, et de _[NAT (Network Adress Translation)](/fr/general/networking/nat)_, c'est à dire de redirection de port. Il possède aussi généralement un _[DHCP (Dynamic Host Configuration Protocol)](/fr/general/networking/nat#le-dhcp)_, servant à attribuer dynamiquement des _adresses IP_ à votre matériel branché au réseau.
|
||||
Le routeur peut posséder des capacité de _firewall_, c'est à dire de limiter le traffic d'appareils en particulier, et de _[NAT (Network Adress Translation)](/general/networking/nat)_, c'est à dire de redirection de port. Il possède aussi généralement un _[DHCP (Dynamic Host Configuration Protocol)](/general/networking/nat#le-dhcp)_, servant à attribuer dynamiquement des _adresses IP_ à votre matériel branché au réseau.
|
||||
|
||||
Le routeur conditionne directement la vitesse de communication entre vos appareils. En effet, le port WAN conditionne le débit qu'il peut recevoir de la part de votre FAI. Si vous avez un abonnement de 5 Gb/s, il vous faudra un port WAN d'au moins 5 Gb/s. Mais il conditionne également la vitesse de communication entre vos équipements. Si vous avez des appareils qui communiquent à 5 Gb/s, il faudra que la partie _switch_ du routeur disposent de ports 5 Gb/s. Enfin, si vous avez du matériel WiFi 7 et que vous souhaitez profiter de ces débits, il faudra également que votre routeur le supporte. Et dans le cas d'une borne Wifi tierce, n'oubliez pas que son port réseau doit disposer d'un débit au moins égale au WiFi qu'il diffuse, et le routeur également.
|
||||
|
||||
@@ -48,14 +48,16 @@ __Attention :__ Veillez à bien utiliser un switch avec des ports disposant des
|
||||
|
||||
## Les cables
|
||||
|
||||
Les cables sont des composants essentiels de votre réseau. Selon leur type et catégorie, ils limiteront le débit entre vos appareils et nécessitent donc d'etre dimensionnés de manière cohérente avec votre réseau. Ils doivent être compatibles avec les ports de vos apapreils. Pour rappel, voici les normes de ports les plus utilisées:
|
||||
Les cables sont des composants essentiels de votre réseau. Selon leur type et catégorie, ils limiteront le débit entre vos appareils et nécessitent donc d'etre dimensionnés de manière cohérente avec votre réseau. Ils doivent aussi être compatibles avec les ports de vos appareils.
|
||||
|
||||
- RJ45 Gigabit ethernet 10/100/1000 : le format standard de prise RJ45 permettant de dialoguer à des débit allant de 10Mbps (soit 0,125Mo/s) à 1000Mbps (soit 125Mo/s)
|
||||
- RJ45 2.5G : Même prise, pouvant dialoguer jusqu'à 2,5Gpbs soit 2 500Mbps (donc 312,5Mo/s)
|
||||
- RJ45 5G : Même prise, pouvant dialoguer jusqu'à 5Gpbs (donc 625Mo/s)
|
||||
- RJ45 10G Base T : Même prise pouvant dialoguer jusqu'à 10Gb/s (soit 1,25Go/s)
|
||||
- SFP 1G : Prise SFP, généralement utilisée pour la fibre optique, pouvant dialoguer jusqu'à 1Gpbs
|
||||
- SFP+ 10G : Prise SFP amélioriée, aussi utilisée pour la fibre optique, pouvant dialoguer jusqu'à 10Gb/s.
|
||||
Voici un rappel des normes de cables et de ports les plus courantes :
|
||||
|
||||
- **RJ45 Gigabit Ethernet 10/100/1000** : le format standard de prise RJ45 permettant de dialoguer à des débit allant de 10Mbps (soit 0,125Mo/s) à 1000Mbps (soit 125Mo/s)
|
||||
- **RJ45 2.5G** : Même prise, pouvant dialoguer jusqu'à 2,5Gpbs soit 2 500Mbps (donc 312,5Mo/s)
|
||||
- **RJ45 5G** : Même prise, pouvant dialoguer jusqu'à 5Gpbs (donc 625Mo/s)
|
||||
- **RJ45 10GBase-T** : Même prise pouvant dialoguer jusqu'à 10Gb/s (soit 1,25Go/s)
|
||||
- **SFP 1G** : Prise SFP, généralement utilisée pour la fibre optique, pouvant dialoguer jusqu'à 1Gpbs
|
||||
- **SFP+ 10G** : Prise SFP amélioriée, aussi utilisée pour la fibre optique, pouvant dialoguer jusqu'à 10Gb/s.
|
||||
|
||||
### Les cables Ethernet
|
||||
|
||||
@@ -75,12 +77,20 @@ Ils sont définis en plusieurs catégorie, définissant le débit maximal selon
|
||||
| 100 Mbs | CAT 5 | 100 m |
|
||||
|
||||
Certains de ces cables sont plats, ronds, blindés (à relier à la terre), etc. Choisissez en fonction de votre installation. ce qu'il faut comprendre, c'est que pour relier un appareil qui dispose d'une prise RJ45 ethernet 2.5 Gb/s sur un routeur 2.5G b/s, il faut au moins un cable `CAT 5e`.
|
||||
|
||||
En revanche, si votre appareil est limité à 100 Mb/s, vous n'avez besoin que d'un cable `CAT 5`.
|
||||
|
||||
Aujourd'hui, dans les nouvelles construction, la norme est d'installer des cables `CAT 6A` dans les murs. Ainsi, les prises murales sont prêtes à accepter du 10 Gb/s sur 100 m
|
||||
|
||||
|
||||
### Les cables optiques
|
||||
Très fins mais très fragile, on commence à les voir de plus en plus dans les installations chez soi. A commencer par le cable opérateur qui est relié entre votre prise fibre et votre box/routeur. Ils ont l'avantage de prendre peu de place, de ne rien consommer comparé à un cable en cuivre qui subit des déperdition d'energie liée à la chauffe, de n'emettre aucun rayonnement (pas besoin de blindage, pas de perturbation du signal) et d'accepter des débits très élevés sur de longue distance.
|
||||
|
||||
Très fins mais très fragile, on commence à les voir de plus en plus dans les installations chez soi. A commencer par le cable opérateur qui relie votre prise fibre à votre box/routeur. Ils ont plusieurs avantages :
|
||||
|
||||
- Extrêmement compacts
|
||||
- Consommation électrique nulle (contrairement au cuivre, qui perd de l'énergie en chaleur)
|
||||
- Aucun rayonnement électromagnétique (pas besoin de blindage, pas de perturbation du signal)
|
||||
- Débits très élevés sur de longues distances
|
||||
|
||||
Pour du réseau local, il faut comprendre qu'il existe plusieurs types de cables fibres, conditionnant le débit selon la distance, et conditionnant le type de `transceiver` à utiliser. En effet, les cables fibres se branchent sur les ports SFP+ de vos appareils, via un petit objet qui traduit le signal lumineux en information électrique, et qui, dans le sens inverse, traduit les informations électrique en signal lumineux.
|
||||
|
||||
@@ -91,11 +101,19 @@ Globalement, pour du réseau local, on évitera de choisir autre chose qu'un cab
|
||||
__Attention :__ Veillez à bien utiliser des `transceiver` compatibles avec vos materiels (routeur, switch ou appareil). Il n'existe pas encore de standard absolu, les constructeurs précisent généralement les marques compatibles.
|
||||
::
|
||||
|
||||
|
||||
### Les cables DAC
|
||||
|
||||
Ce sont des cables en cuivre fichés dans des `transceiver`. Ils permettent à deux ports SFP/SFP+ de dialoguer, à courte distance, sans utiliser une fibre plus fragile ou d'adapteteur RJ45. Cependant, ils demandent plus d'énergie, la deperdition dans le cuivre etant non négligeable.
|
||||
|
||||
|
||||
### Les transceiver SFP+
|
||||
Il permettent de connecter différents typle de cable à vos ports SFP/SFP+. Il en existe pour fibre optique, pour DAC et pour RJ45.
|
||||
|
||||
Ils permettent de connecter différents types de cables à vos ports SFP/SFP+. Il en existe pour :
|
||||
|
||||
- la fibre optique
|
||||
- le DAC
|
||||
- le RJ45
|
||||
|
||||
::warning
|
||||
|
||||
+24
-22
@@ -3,6 +3,7 @@ title: Le ProloNAS
|
||||
description: Construire un serveur domestique performant avec un mini PC Intel N100. Guide pratique pour démarrer l'auto-hébergement pour moins de 130 €.
|
||||
---
|
||||
|
||||
|
||||
:ellipsis{left=0px width=40rem top=10rem blur=140px zIndex=60}
|
||||
|
||||
::note
|
||||
@@ -19,24 +20,25 @@ Un Mini PC à 100 balles + un dock USB à 50 balles accueillant des disques durs
|
||||
|
||||
C'est tout simplement ça le **ProloNAS, un NAS accessible pour les prolo**. Charge à vous ensuite de calibrer votre besoin en Disques Durs.
|
||||
|
||||
En exemple :
|
||||
|
||||
- Mini PC - **Attention : prendre 16GB - 512GB** : [Aliexpress](https://fr.aliexpress.com/item/1005008477986765.html)
|
||||
- DAS (Direct Attached Storage) - **Attention : prendre "EU plug"** : [Aliexpress](https://fr.aliexpress.com/item/1005007933987260.html)
|
||||
|
||||
- Alternatives avec ventilateur et plus soigné : [Amazon](https://www.amazon.fr/Boîtier-Disque-Ventilateur-Supportant-Capacité/dp/B0DD3GSSCX)
|
||||
|
||||
Je précise que cela ne sont pas des liens affiliés, prenez ce que vous voulez.
|
||||
|
||||

|
||||
|
||||
## Exemple de matériel
|
||||
|
||||
- Mini PC (**Attention : prendre 16 Go / 512 Go**) : [Aliexpress](https://fr.aliexpress.com/item/1005008477986765.html)
|
||||
- DAS (Direct Attached Storage) (**Attention : prendre « EU plug »**) : [Aliexpress](https://fr.aliexpress.com/item/1005007933987260.html)
|
||||
- Alternative plus soignée avec ventilateur : [Amazon](https://www.amazon.fr/Boîtier-Disque-Ventilateur-Supportant-Capacité/dp/B0DD3GSSCX)
|
||||
|
||||
> *Ce ne sont pas des liens affiliés, achetez où vous voulez.*
|
||||
|
||||
## Pourquoi un NAS ?
|
||||
|
||||
Un NAS (Network Attached Storage), c'est une machine conçue autour d'un espace de stockage ayant vocation a être partagé sur un réseau. L'idée du NAS, c'est d'avoir un stockage fiable et sécurisé sur lequel s'appuie nos usages et nos applicatifs comme des données cloud par exemple (un drive comme [Nextcloud](/fr/serveex/cloud/nextcloud), une synchro photo comme [Immich](/fr/serveex/cloud/immich). Mais aussi vos media comme vos films (par exemple avec [Plex](/fr/serveex/media/plex)) ou les videos de vos caméra de surveillance.
|
||||
Un NAS (Network Attached Storage), c'est une machine conçue autour d'un espace de stockage ayant vocation a être partagé sur un réseau. L'idée du NAS, c'est d'avoir un stockage fiable et sécurisé sur lequel s'appuie nos usages et nos applicatifs comme des données cloud par exemple (un drive comme [Nextcloud](/serveex/cloud/nextcloud), une synchro photo comme [Immich](/serveex/cloud/immich). Mais aussi vos media comme vos films (par exemple avec [Jellyfin](/serveex/media/jellyfin)) ou les videos de vos caméra de surveillance.
|
||||
|
||||
**Mais pourquoi un Mini PC sans DAS ne suffirait il pas ?** Bien sûr, un simple mini PC avec ses 1 à 2To de stockage devraient suffire pour la plupart des gens. Et les films pourraient tenir dans un disque dur externe de quelques TB supplémentaire. En revanche ce n'est pas une solution fiable ni extensible de faire tourner ses applications et usages sur du stockage qui au moindre choc, au moindre probleme, fait perdre vos données définitivement.
|
||||
### Mais pourquoi un Mini PC avec un disque dur externe ne suffirait-il pas ?
|
||||
|
||||
Le vrai NAS est construit autour de la fiabilité du support qui contient vos données. Il nécessite de mettre en place des stratégies de stockages type [RAID](/fr/general/storage/raid) afin de préserver vos données en cas de panne et de la sauvegarde en cas de corruption (comme les snapshot [ZFS](/fr/general/storage/zfs)).
|
||||
Bien sûr, un simple mini PC avec ses 1 à 2To de stockage devraient suffire pour la plupart des gens. Et les films pourraient tenir dans un disque dur externe de quelques TB supplémentaire. En revanche ce n'est pas une solution fiable ni extensible de faire tourner ses applications et usages sur du stockage qui au moindre choc, au moindre probleme, fait perdre vos données définitivement.
|
||||
|
||||
Le vrai NAS est construit autour de la fiabilité du support qui contient vos données. Il nécessite de mettre en place des stratégies de stockages type [RAID](/general/storage/raid) afin de préserver vos données en cas de panne et de la sauvegarde en cas de corruption (comme les snapshot [ZFS](/general/storage/zfs)).
|
||||
|
||||
Vous l'aurez compris, l'idée du NAS c'est de déporter chez vous tout ce que vous confiez actuellement à des tiers, tout en assurant la fiabilité du support et la sauvegarde des données stockées.
|
||||
|
||||
@@ -54,24 +56,24 @@ Rappelez vous le **ProloNAS** : un N100 4 coeurs, 16Go de RAM, un SSD de 512Go,
|
||||
|
||||
« Oui mais ok l'argument du prix, mais au moins tu lances le truc et c'est bon, t'as de jolies applications qui tournent toute seule sans maintenance ».
|
||||
|
||||
Une année. Une année c'est le temps qu'il m'a fallu pour jeter à la poubelle mon Syno en me disant que j'aurais du dès le départ partir sur mon **ProloNAS** (devenu un vrai serveur, depuis).
|
||||
Une année.
|
||||
Une année c'est le temps qu'il m'a fallu pour jeter à la poubelle mon Syno en me disant que j'aurais du dès le départ partir sur mon **ProloNAS** (devenu un vrai serveur, depuis).
|
||||
|
||||
Les constructeurs vous mettent à disposition des OS linux customisés à leur sauce, ne partageant pas les catalogues d'applications linux des distributions majeures, avec des noyaux linux datant souvent de l'antiquité, et surtout des OS tres fermés ne vous permettant pas de développer votre NAS exactement selon vos besoins.
|
||||
|
||||
En gros, soit vous utilisez leurs applications, soit vous rentrer dans un monde de souffrance. Pour donner un exemple, de nombreux conteneurs docker ne fonctionnent pas sur ces NAS constructeurs car le kernel est tellement vieux qu'il ne peut supporter les versions pourtant pas toujours récentes de docker.
|
||||
Les constructeurs vous mettent à disposition des OS linux customisés à leur sauce, ne partageant pas les catalogues d'applications linux des distributions majeures, avec des noyaux linux datant souvent de l'antiquité, et surtout des OS tres fermés ne vous permettant pas de développer votre NAS exactement selon vos besoins. En gros, soit vous utilisez leurs applications, soit vous rentrer dans un monde de souffrance. Pour donner un exemple, de nombreux conteneurs docker ne fonctionnent pas sur ces NAS constructeurs car le kernel est tellement vieux qu'il ne peut supporter les versions pourtant pas toujours récentes de docker.
|
||||
|
||||
### Dépendance des mises à jours propriétaires
|
||||
|
||||
« Oui mais moi j'ai pas d'autre usages que ce que leurs applicatifs natifs proposent ». Oui oui, moi aussi j'ai cru ça. Mais 1 an après mon Syno, mes usages ont explosés. Media center, gestion de mot de passe, plateforme git, plateforme de développement, Authentification forte et SSO hébergement web... Pourquoi etre bloqués par les solutions constructeurs jamais excellentes, souvent baclées et compatibles avec rien ?
|
||||
« Oui mais moi j'ai pas d'autre usages que ce que leurs applicatifs natifs proposent ».
|
||||
Oui oui, moi aussi j'ai cru ça. Mais 1 an après mon Syno, mes usages ont explosés. Media center, gestion de mot de passe, plateforme git, plateforme de développement, Authentification forte et SSO hébergement web... Pourquoi etre bloqués par les solutions constructeurs jamais excellentes, souvent baclées et compatibles avec rien ?
|
||||
|
||||
D'autre part, ces applicatifs, vous devenez dépendant de la bonne volonté du constructeur, en terme de sécurité, de mises à jour, et de disponibilités. Je préfère confier cette dépendance à des projets open-source, mis à jour plus régulièrement et ne dépendant pas de la bonne volonté d'un board commercial.
|
||||
|
||||
Et cela ne s'arrête pas là, qui vous dit que les disques dur que vous avez inséré dans ces NAS proproietaires vont etre supportés ? Synology a rendu incompatible son matériel avec les marques n'ayant pas un partenariat avec eux, afin de booster la vente de leurs propres disques.
|
||||
|
||||
Qui vous dit que votre media center pourra profiter des performances de l'iGPU de votre processeur pour streamer vos media vers vos appareils ? [Synology a désactivé le transcodage matériel de ses NAS](https://www.cachem.fr/synology-desactive-transcodage-materiel-nas/).
|
||||
Et cela ne s'arrête pas là, qui vous dit que les disques dur que vous avez inséré dans ces NAS proproietaires vont etre supportés ? Synology a rendu incompatible son matériel avec les marques n'ayant pas un partenariat avec eux, afin de booster la vente de leurs propres disques. Qui vous dit que votre media center pourra profiter des performances de l'iGPU de votre processeur pour streamer vos media vers vos appareils ? [Synology a désactivé le transcodage matériel de ses NAS](https://www.cachem.fr/synology-desactive-transcodage-materiel-nas/).
|
||||
|
||||
Bref, vous n'avez aucun pouvoir sur un produit qui n'est pas réellement ni ouvert ni à vous.
|
||||
|
||||
## OK mais omment je passe de mon Mini PC Serveex à un ProloNAS ?
|
||||
## OK, mais comment je passe de mon Mini PC Serveex à un ProloNAS ?
|
||||
|
||||
Comme dit plus haut, avec un DAS (hub disque) + de quoi faire du [RAID](/fr/general/storage/raid) avec [ZFS](/fr/general/storage/zfs) par exemple.
|
||||
Comme dit plus haut, avec un DAS (hub disque) + de quoi faire du [RAID](/general/storage/raid) avec [ZFS](/general/storage/zfs) par exemple.
|
||||
|
||||
Enjoy !
|
||||
@@ -0,0 +1,2 @@
|
||||
title: Linux pour les nuls
|
||||
icon: i-lucide-terminal
|
||||
@@ -0,0 +1,255 @@
|
||||
---
|
||||
title: Bases de la ligne de commande
|
||||
description: Comprendre comment une commande Linux est construite, apprendre les commandes essentielles du terminal, ce que veulent dire leurs noms, et repartir avec un aide-mémoire.
|
||||
---
|
||||
|
||||
|
||||
:ellipsis{left=0px width=40rem top=10rem blur=140px zIndex=60}
|
||||
|
||||
Un serveur n'a pas de bureau, pas d'icônes et pas de souris. Tout se passe dans un terminal, et cette fenêtre noire avec un curseur clignotant est la seule chose qui décourage les gens de s'auto-héberger. À tort : le terminal n'est qu'une conversation. Vous tapez une ligne, la machine fait exactement ça et répond. Rien de plus magique qu'une barre de recherche, sauf qu'il en fait bien plus et ne cache jamais une option derrière trois menus.
|
||||
|
||||
La bonne nouvelle, c'est que vous n'avez pas besoin de connaître cent commandes. Dix d'entre elles couvrent presque tout ce que vous ferez sur un serveur maison, et elles suivent toutes le même schéma. Apprenez le schéma d'abord, et chaque commande croisée ensuite devient lisible, même celles que vous n'avez jamais vues.
|
||||
|
||||
## Comment une commande est construite
|
||||
|
||||
Chaque ligne de commande, sans exception, est la même phrase : **quoi lancer**, **comment le lancer**, **sur quoi le lancer**.
|
||||
|
||||
```text [Anatomie d'une commande]
|
||||
sudo apt install -y nano
|
||||
│ │ │ │ └─ argument : ce sur quoi la commande travaille
|
||||
│ │ │ └──── option : change son comportement
|
||||
│ │ └──────────── sous-commande : ce que le programme doit faire
|
||||
│ └──────────────── le programme que vous lancez
|
||||
└───────────────────── le lancer avec les droits administrateur
|
||||
```
|
||||
|
||||
Lue à voix haute, cette ligne dit « en tant qu'administrateur, demande au gestionnaire de paquets d'installer le paquet nano, et ne me demande pas de confirmer ». Ce sont les espaces qui séparent les morceaux, et c'est pour ça qu'un dossier nommé `Mes Sauvegardes` doit être mis entre guillemets (`cd "Mes Sauvegardes"`), sinon le shell y lit deux choses différentes.
|
||||
|
||||
### Les options, courtes et longues
|
||||
|
||||
Les options changent le comportement d'une commande. Elles existent en deux saveurs, et la plupart des commandes acceptent les deux :
|
||||
|
||||
- **Courtes**, un tiret et une seule lettre : `ls -a`. Elles peuvent s'empiler, donc `ls -l -a -h` s'écrit généralement `ls -lah`.
|
||||
- **Longues**, deux tirets et un mot entier : `ls --all`. Plus longues à taper, mais vous saurez encore ce qu'elles font six mois plus tard, ce qui en fait le meilleur choix dans un script.
|
||||
|
||||
Certaines options attendent une valeur juste après elles : `ssh-keygen -t ed25519` (`-t` pour type), `rsync --exclude @eaDir`. Et la casse compte, toujours. Dans `ls`, `-r` inverse l'ordre de tri alors que `-R` descend dans les sous-dossiers. Deux choses différentes, à une lettre près.
|
||||
|
||||
### Les arguments et les chemins
|
||||
|
||||
L'argument est la cible : un fichier, un dossier, un nom de paquet, une adresse. Beaucoup de commandes en acceptent plusieurs à la fois, séparés par des espaces, et c'est ce qui rend le terminal rapide : `rm fichier1.txt fichier2.txt fichier3.txt` supprime trois fichiers d'un coup.
|
||||
|
||||
Quand la cible est un endroit sur le disque, vous l'écrivez sous forme de chemin, et quelques raccourcis valent la peine d'être connus :
|
||||
|
||||
| Chemin | Signification |
|
||||
| --- | --- |
|
||||
| `/` | la racine de tout le système, tout vit en dessous |
|
||||
| `~` | votre propre dossier personnel, `/home/utilisateur` |
|
||||
| `.` | le dossier dans lequel vous vous trouvez |
|
||||
| `..` | le dossier juste au-dessus |
|
||||
| `/var/log` | un chemin **absolu**, même résultat depuis n'importe où |
|
||||
| `logs/aujourdhui` | un chemin **relatif**, compris depuis là où vous êtes |
|
||||
|
||||
Quel dossier contient quoi est un sujet à part entière, traité dans [dossiers et partitions](/general/linux/filesystem).
|
||||
|
||||
L'invite de commande vous dit elle-même où vous êtes : dans `utilisateur@serveex:~/docker$`, vous êtes connecté en tant qu'`utilisateur` sur la machine nommée `serveex`, dans le dossier `docker` de votre home. Ce `$` final signifie un utilisateur normal. S'il affiche un jour `#`, vous êtes root et chaque faute de frappe compte double.
|
||||
|
||||
### Trouver de l'aide
|
||||
|
||||
Deux habitudes vous rendent indépendant des tutoriels. `commande --help` affiche un résumé rapide de chaque option, et `man commande` ouvre le manuel complet (`man` pour *manual*), que vous quittez en appuyant sur :kbd{value="Q"}.
|
||||
|
||||
::tip{icon=""}
|
||||
✨ __Astuce :__ trois réflexes clavier qui changent tout : :kbd{value="Tab"} complète le nom de fichier ou de dossier que vous avez commencé à taper, si bien que vous ne tapez presque jamais un chemin complet ; la flèche :kbd{value="Up"} rappelle vos commandes précédentes, ce qui évite de retaper une longue ligne pour un caractère ; et :kbd{value="Ctrl"} + :kbd{value="C"} arrête ce qui est en train de tourner.
|
||||
::
|
||||
|
||||
### Enchaîner les commandes
|
||||
|
||||
Une fois le schéma compris, les commandes se branchent les unes aux autres :
|
||||
|
||||
- `&&` lance la suivante seulement si la précédente a réussi : `sudo apt update && sudo apt full-upgrade`
|
||||
- `|`, le pipe, envoie la sortie d'une commande dans une autre : `ls -l | grep sauvegarde` liste le dossier, puis ne garde que les lignes contenant « sauvegarde »
|
||||
- `>` écrit la sortie dans un fichier au lieu de l'écran, et `>>` l'ajoute à la fin de ce fichier : `df -h > rapport-disques.txt`
|
||||
|
||||
## Les commandes que vous utiliserez vraiment
|
||||
|
||||
La plupart des noms de commandes sont des abréviations d'une expression anglaise. Une fois que vous savez ce qu'elles signifient, elles cessent de ressembler à du bruit de clavier.
|
||||
|
||||
### `pwd`, print working directory
|
||||
|
||||
Vous dit où vous êtes. Elle ne change rien, elle répond juste à la question.
|
||||
|
||||
```bash [Terminal]
|
||||
pwd
|
||||
```
|
||||
|
||||
```console [Sortie]
|
||||
/home/utilisateur/docker
|
||||
```
|
||||
|
||||
### `ls`, list
|
||||
|
||||
Liste ce qu'il y a dans le dossier courant. Seule, elle n'affiche que les noms, elle est donc presque toujours utilisée avec des options : `-l` pour le format long avec tailles, dates et permissions, `-a` pour afficher aussi les fichiers cachés (ceux qui commencent par un point), `-h` pour des tailles en K/M/G plutôt qu'en octets bruts.
|
||||
|
||||
```bash [Terminal]
|
||||
ls -lah
|
||||
```
|
||||
|
||||
```console [Sortie]
|
||||
total 20K
|
||||
drwxr-xr-x 4 utilisateur utilisateur 4.0K Sep 5 10:12 .
|
||||
drwxr-xr-x 18 utilisateur utilisateur 4.0K Sep 4 21:03 ..
|
||||
-rw-r--r-- 1 utilisateur utilisateur 512 Sep 5 10:12 .env
|
||||
-rw-r--r-- 1 utilisateur utilisateur 1.2K Sep 5 09:58 compose.yaml
|
||||
drwxr-xr-x 3 utilisateur utilisateur 4.0K Sep 2 18:44 immich
|
||||
```
|
||||
|
||||
La première colonne, ce sont les permissions, le `d` tout au début signifiant qu'il s'agit d'un dossier. Puis le propriétaire, la taille, la date de dernière modification, et le nom.
|
||||
|
||||
### `cd`, change directory
|
||||
|
||||
Vous déplace. Avec un chemin elle y va, avec `..` elle remonte d'un niveau, et sans rien du tout elle vous ramène chez vous.
|
||||
|
||||
```console [Terminal]
|
||||
utilisateur@serveex:~/docker$ cd /var/log
|
||||
utilisateur@serveex:/var/log$ cd ..
|
||||
utilisateur@serveex:/$ cd
|
||||
utilisateur@serveex:~$
|
||||
```
|
||||
|
||||
Remarquez l'invite qui vous suit : elle montre toujours où vous vous trouvez, si bien qu'en pratique vous avez rarement besoin de `pwd`.
|
||||
|
||||
### `mkdir`, make directory
|
||||
|
||||
Crée un dossier. Plusieurs à la fois si vous les listez, et `-p` crée toute la chaîne de parents d'un coup, c'est la version que vous utiliserez vraiment.
|
||||
|
||||
```bash [Terminal]
|
||||
mkdir sauvegardes
|
||||
mkdir -p docker/immich/config
|
||||
```
|
||||
|
||||
```console [Sortie]
|
||||
|
||||
```
|
||||
|
||||
Rien. Ce n'est pas un bug, c'est la règle : la plupart des commandes ne disent rien quand elles réussissent et ne se manifestent que si quelque chose se passe mal. Le silence est une bonne nouvelle, et `ls` confirme que le dossier est bien là.
|
||||
|
||||
### `cp` et `mv`, copy et move
|
||||
|
||||
`cp` copie, `mv` déplace. Même forme dans les deux cas : d'abord la source, puis la destination. Copier un dossier demande `-r`, pour *recursive*, puisqu'un dossier veut dire tout ce qu'il contient aussi. `mv` sert également de commande pour renommer, parce que renommer un fichier revient simplement à le déplacer vers un nouveau nom.
|
||||
|
||||
```bash [Terminal]
|
||||
cp compose.yaml compose.yaml.bak
|
||||
cp -r config/ config-backup/
|
||||
mv ancien-nom.txt nouveau-nom.txt
|
||||
ls
|
||||
```
|
||||
|
||||
```console [Sortie]
|
||||
compose.yaml compose.yaml.bak config config-backup nouveau-nom.txt
|
||||
```
|
||||
|
||||
Trois commandes silencieuses, et `ls` qui montre le résultat : la copie est à côté de l'original, le dossier a été dupliqué, et `ancien-nom.txt` a disparu parce que le déplacer vers un autre nom, c'est exactement ce que veut dire renommer.
|
||||
|
||||
### `rm`, remove
|
||||
|
||||
Supprime. Il n'y a pas de corbeille, pas d'annulation, pas de fenêtre de confirmation. `-r` supprime un dossier et son contenu, `-f` force sans demander.
|
||||
|
||||
::warning{to="/nonsense/bash/rm-confirmation"}
|
||||
`rm -rf` est la commande qui efface les homelabs. Elle ne vérifie pas, ne prévient pas, et ne s'arrête pas. Relisez le chemin deux fois avant d'appuyer sur :kbd{value="Enter"}, surtout quand la ligne commence par `sudo` et contient un `/` ou un `*`. Vous pouvez aussi vous en prémunir en enveloppant `sudo` dans une petite fonction Bash qui demande **« êtes-vous sûr ? »** avant de laisser passer un `rm`, c'est le sujet de **rm confirmation guard**.
|
||||
::
|
||||
|
||||
### `cat` et `nano`, lire et modifier
|
||||
|
||||
`cat` (abréviation de *concatenate*) déverse un fichier entier à l'écran, parfait pour une config courte. Pour tout ce qui est plus long, `less` le fait défiler (nommé en clin d'œil à `more`, le pager plus ancien qu'il a remplacé), et vous en sortez avec :kbd{value="Q"}.
|
||||
|
||||
Pour modifier réellement un fichier, `nano` ouvre un éditeur simple : les flèches pour se déplacer, :kbd{value="Ctrl"} + :kbd{value="O"} pour enregistrer, :kbd{value="Ctrl"} + :kbd{value="X"} pour quitter.
|
||||
|
||||
```bash [Terminal]
|
||||
cat .env
|
||||
```
|
||||
|
||||
```properties [Sortie]
|
||||
PUID=1000
|
||||
PGID=1000
|
||||
TZ=Europe/Paris
|
||||
```
|
||||
|
||||
### `grep`, chercher dans les fichiers
|
||||
|
||||
`grep` veut dire *global regular expression print*, une façon compliquée de dire « trouve-moi ce texte ». Vous lui donnez quoi chercher et où, et il affiche chaque ligne correspondante. `-r` cherche dans tout un dossier, `-i` ignore les majuscules et minuscules, `-n` affiche les numéros de ligne.
|
||||
|
||||
```bash [Terminal]
|
||||
grep -rin "password" /home/utilisateur/docker
|
||||
```
|
||||
|
||||
```console [Sortie]
|
||||
/home/utilisateur/docker/immich/.env:6:DB_PASSWORD=changeme
|
||||
/home/utilisateur/docker/vaultwarden/compose.yaml:14: ADMIN_PASSWORD=hunter2
|
||||
```
|
||||
|
||||
Chaque ligne indique le fichier, puis le numéro de ligne à l'intérieur, puis la ligne correspondante elle-même. Très pratique le jour où vous ne vous souvenez plus dans quelle stack se trouve un réglage.
|
||||
|
||||
### `sudo`, lancer en administrateur
|
||||
|
||||
*Substitute user do*. Un utilisateur normal ne peut pas toucher aux fichiers du système, et c'est précisément ce qui vous protège de casser la machine par accident. Préfixer une commande par `sudo` lance cette seule commande avec les droits administrateur, et demande votre mot de passe la première fois.
|
||||
|
||||
```bash [Terminal]
|
||||
nano /etc/ssh/sshd_config
|
||||
```
|
||||
|
||||
```console [Sortie]
|
||||
Error writing /etc/ssh/sshd_config: Permission denied
|
||||
```
|
||||
|
||||
```bash [Terminal]
|
||||
sudo nano /etc/ssh/sshd_config
|
||||
```
|
||||
|
||||
```console [Sortie]
|
||||
[sudo] password for utilisateur:
|
||||
```
|
||||
|
||||
::note
|
||||
Si une commande répond `Permission denied`, c'est en général tout le problème : il lui fallait `sudo`. Résistez quand même au réflexe de mettre `sudo` partout, un fichier créé en root continuera de vous embêter ensuite parce que votre utilisateur normal n'en est plus propriétaire.
|
||||
::
|
||||
|
||||
## Aide-mémoire
|
||||
|
||||
Celles qui valent la peine d'être gardées sous la main, et d'où viennent leurs noms.
|
||||
|
||||
| Commande | Abréviation de | Ce qu'elle fait |
|
||||
| --- | --- | --- |
|
||||
| `pwd` | print working directory | Affiche où vous êtes |
|
||||
| `ls` | list | Liste les fichiers et les dossiers |
|
||||
| `cd` | change directory | Vous déplace ailleurs |
|
||||
| `mkdir` | make directory | Crée un dossier |
|
||||
| `touch` | mot anglais courant | Crée un fichier vide, ou rafraîchit sa date |
|
||||
| `cp` | copy | Copie un fichier ou un dossier |
|
||||
| `mv` | move | Déplace ou renomme |
|
||||
| `rm` | remove | Supprime, définitivement |
|
||||
| `cat` | concatenate | Affiche un fichier à l'écran |
|
||||
| `less` | jeu de mots sur `more` | Fait défiler un fichier long |
|
||||
| `nano` | l'éditeur qui remplace Pico | Modifie un fichier |
|
||||
| `grep` | global regular expression print | Cherche du texte |
|
||||
| `find` | mot anglais courant | Cherche des fichiers par nom, taille ou date |
|
||||
| `man` | manual | Ouvre la documentation complète d'une commande |
|
||||
| `df` | disk free | Affiche l'espace libre par partition |
|
||||
| `lsblk` | list block devices | Dessine l'arbre des disques et des partitions |
|
||||
| `du` | disk usage | Affiche ce que pèse un dossier |
|
||||
| `ps` | process status | Liste les processus en cours |
|
||||
| `htop` | le `top` de Hisham | Vue en direct du CPU, de la RAM et des processus |
|
||||
| `kill` | mot anglais courant | Arrête un processus par son numéro |
|
||||
| `chmod` | change mode | Change les permissions d'un fichier |
|
||||
| `chown` | change owner | Change le propriétaire d'un fichier |
|
||||
| `sudo` | substitute user do | Lance une commande en administrateur |
|
||||
| `apt` | advanced package tool | Installe, met à jour et supprime des paquets |
|
||||
| `systemctl` | control systemd | Démarre, arrête et active des services |
|
||||
| `ssh` | secure shell | Ouvre une session sur une machine distante |
|
||||
| `scp` | secure copy | Copie des fichiers via SSH |
|
||||
| `tar` | tape archive | Empaquette et dépaquette des archives |
|
||||
| `wget` | web get | Télécharge un fichier depuis une URL |
|
||||
| `curl` | client URL | Envoie une requête à une URL |
|
||||
| `history` | mot anglais courant | Liste les commandes tapées précédemment |
|
||||
|
||||
::tip{icon=""}
|
||||
✨ __Astuce :__ personne ne retient tout ça. Vous rechercherez les trois mêmes options pendant des semaines, puis un jour vous réaliserez que vous les tapez sans réfléchir. En attendant, `--help` et ce tableau sont parfaitement légitimes.
|
||||
::
|
||||
@@ -0,0 +1,59 @@
|
||||
---
|
||||
title: Dossiers et partitions
|
||||
description: Comment le système de fichiers de Debian est organisé, ce que contient chaque dossier racine, la différence entre partitions et dossiers, et les habitudes qui gardent un serveur propre.
|
||||
---
|
||||
|
||||
|
||||
:ellipsis{left=0px width=40rem top=10rem blur=140px zIndex=60}
|
||||
|
||||
Windows donne à chaque disque sa propre lettre. Linux non : il y a exactement un arbre, il commence à `/`, et tout le reste s'y accroche, y compris vos autres disques. Un deuxième disque n'est pas `D:`, il est *monté* sur un dossier de l'arbre, `/mnt/data` par exemple, et à partir de là il ressemble à n'importe quel autre dossier. Déroutant au début, très pratique ensuite, puisqu'un programme n'a jamais à savoir sur quel disque physique il écrit.
|
||||
|
||||
## L'arbre
|
||||
|
||||
Cet arbre n'a rien d'arbitraire non plus. Toutes les installations de Debian ont les mêmes dossiers aux mêmes endroits, et c'est pour ça qu'un tutoriel écrit pour le serveur de quelqu'un d'autre s'applique au vôtre.
|
||||
|
||||
| Dossier | Ce qu'il contient |
|
||||
| --- | --- |
|
||||
| `/home` | Les fichiers des utilisateurs. Le vôtre est `/home/utilisateur`, aussi écrit `~` |
|
||||
| `/root` | Le dossier personnel du compte root, à ne pas confondre avec `/` |
|
||||
| `/etc` | La configuration du système, uniquement des fichiers texte |
|
||||
| `/var` | Les données qui grossissent : les logs dans `/var/log`, Docker dans `/var/lib/docker` |
|
||||
| `/tmp` | Les fichiers temporaires, vidés à chaque redémarrage |
|
||||
| `/usr` | Les programmes installés eux-mêmes, gérés par `apt` |
|
||||
| `/opt` | Les logiciels installés en dehors du gestionnaire de paquets |
|
||||
| `/mnt` et `/media` | Là où sont montés les disques supplémentaires, `/media` pour les amovibles |
|
||||
| `/boot` | Le noyau et le chargeur de démarrage, sur une petite partition à part |
|
||||
| `/dev` | Votre matériel, exposé sous forme de fichiers (`/dev/sda` est un disque) |
|
||||
| `/proc` et `/sys` | L'état vivant du noyau, inventé à la volée, pas de vrais fichiers |
|
||||
|
||||
## Un dossier n'est pas une partition
|
||||
|
||||
Les partitions sont une question distincte des dossiers. Une installation minimale de Debian en crée typiquement deux, une pour `/` et une pour le swap, si bien que tous les dossiers ci-dessus sauf `/boot` vivent sur la même partition et se partagent le même espace libre. Deux commandes pour en voir la réalité : `lsblk` dessine l'arbre des disques et des partitions, `df -h` montre le taux de remplissage de chacune.
|
||||
|
||||
```bash [Terminal]
|
||||
lsblk
|
||||
```
|
||||
|
||||
```console [Output]
|
||||
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
|
||||
sda 8:0 0 465.8G 0 disk
|
||||
├─sda1 8:1 0 512M 0 part /boot/efi
|
||||
├─sda2 8:2 0 461.3G 0 part /
|
||||
└─sda3 8:3 0 4G 0 part [SWAP]
|
||||
sdb 8:16 0 3.6T 0 disk
|
||||
└─sdb1 8:17 0 3.6T 0 part /mnt/data
|
||||
```
|
||||
|
||||
## Quelques habitudes à prendre
|
||||
|
||||
- **Donnez un seul foyer à vos stacks Docker, et gardez-les là.** `/srv` est le dossier que la norme réserve aux données servies par la machine, ce qui en fait l'endroit le plus propre pour les fichiers compose et leurs bind mounts. [Serveex](/serveex/introduction) met tout dans `/srv/docker`, un dossier par stack. Ce qui compte, c'est de choisir un endroit et de s'y tenir, plutôt que d'en éparpiller la moitié dans votre dossier personnel.
|
||||
- **Vos fichiers à vous vont dans votre home.** Les scripts dans `~/bin`, les notes, les téléchargements, tout ce qui est personnel. `/root` est le dossier du compte root, pas un endroit commode où déposer des choses.
|
||||
- **Ne modifiez jamais quoi que ce soit sous `/usr` ou `/bin` à la main.** `apt` en est propriétaire, et vos changements disparaîtront à la prochaine mise à jour. Ce que vous avez le droit de configurer vit dans `/etc`.
|
||||
- **Dans `/etc`, préférez un fichier additionnel plutôt que de modifier le principal.** Beaucoup de services lisent tous les `.conf` d'un dossier `quelquechose.d/` posé à côté de leur config principale, `/etc/ssh/sshd_config.d/` par exemple. Votre fichier survit alors à une mise à jour de paquet qui réécrirait l'original.
|
||||
- **Montez les disques de données par UUID, pas par `/dev/sdb`.** Les lettres de périphérique sont attribuées dans l'ordre où le noyau trouve les disques, elles peuvent donc s'échanger après un redémarrage ou l'ajout d'un disque. `lsblk -f` vous donne l'UUID à mettre dans `/etc/fstab`.
|
||||
- **Gardez un œil sur `/var`.** Les images Docker, les logs des conteneurs et ceux du système s'y accumulent tous, sur la même partition que le reste. `du -sh /var/lib/docker` vous dit ce que pèsent les conteneurs, `df -h` s'il faut s'inquiéter.
|
||||
- **Ne créez pas vos fichiers avec `sudo` quand ce n'est pas nécessaire.** Un fichier créé en root dans votre home reste la propriété de root, et vous vous battrez avec des erreurs de permissions dessus pendant des semaines.
|
||||
|
||||
::note{to="/general/linux/cli-basics"}
|
||||
Tout ce qui précède suppose que vous savez déjà vous déplacer dans un terminal. Si `cd`, `ls` et `sudo` ne vous parlent pas encore, commencez par les **bases de la ligne de commande**.
|
||||
::
|
||||
@@ -0,0 +1,261 @@
|
||||
---
|
||||
title: Outils CLI pratiques
|
||||
description: Une poignée d'outils en ligne de commande à installer sur un serveur maison, ce que chacun remplace, et les étapes pour les installer et s'en servir.
|
||||
---
|
||||
|
||||
|
||||
:ellipsis{left=0px width=40rem top=10rem blur=140px zIndex=60}
|
||||
|
||||
Une installation minimale de Debian embarque le strict minimum, ce qui veut dire que les outils fournis sont ceux de 1995. Ils fonctionnent, mais lire la sortie de `df` ou chercher ce qui a rempli un disque avec `du` est inutilement pénible quand de meilleures versions existent et ne coûtent rien à installer.
|
||||
|
||||
Tout ce qui suit sauf le dernier vient directement des dépôts Debian, il n'y a donc aucune source tierce à qui faire confiance et `apt` les maintient à jour en même temps que le reste du système.
|
||||
|
||||
::note{to="/general/linux/cli-basics"}
|
||||
Toutes les commandes ici se tapent dans un terminal via SSH. Si `sudo`, `apt` et `cd` ne vous parlent pas encore, commencez par les **bases de la ligne de commande**.
|
||||
::
|
||||
|
||||
## La version courte
|
||||
|
||||
| Outil | Remplace | À quoi ça sert |
|
||||
| --- | --- | --- |
|
||||
| `btop` | `top`, `htop` | Surveiller le CPU, la RAM et les processus |
|
||||
| `duf` | `df -h` | L'espace libre, en lisible |
|
||||
| `ncdu` | `du -sh` | Trouver ce qui a rempli le disque |
|
||||
| `tldr` | `man` | Les cinq commandes dont vous avez vraiment besoin |
|
||||
| `lazydocker` | `docker ps` et compagnie | Gérer les conteneurs en SSH |
|
||||
| `ufw` | `iptables` brut | Un pare-feu réellement lisible |
|
||||
|
||||
## La version pressée
|
||||
|
||||
Une seule ligne installe tous ceux qui sont empaquetés, et chaque section ci-dessous explique ce que vous venez d'obtenir.
|
||||
|
||||
```bash [Terminal]
|
||||
sudo apt update
|
||||
sudo apt install btop duf ncdu tealdeer ufw
|
||||
```
|
||||
|
||||
## `btop`, surveiller ce que fait la machine
|
||||
|
||||
Le remplaçant moderne de `top` et `htop` : CPU, RAM, disques, réseau et processus sur un seul écran, avec des graphiques, des couleurs et une souris qui marche. C'est ce que vous ouvrez quand quelque chose semble lent.
|
||||
|
||||
::steps{level="4"}
|
||||
#### L'installer
|
||||
|
||||
```bash [Terminal]
|
||||
sudo apt install btop
|
||||
```
|
||||
|
||||
#### Le lancer
|
||||
|
||||
```bash [Terminal]
|
||||
sudo btop
|
||||
```
|
||||
|
||||

|
||||
|
||||
Cliquez sur un processus pour le sélectionner, :kbd{value="Esc"} ouvre le menu, :kbd{value="Q"} quitte. Les touches `+` et `-` replient et déplient les panneaux si l'écran paraît chargé.
|
||||
|
||||
#### Terminé !
|
||||
::
|
||||
|
||||
## `duf`, l'espace disque qui se lit comme un tableau
|
||||
|
||||
`df -h` affiche tous les loop devices que Docker a créés un jour et vous laisse plisser les yeux sur les colonnes. `duf` montre les mêmes informations groupées, alignées et colorées, avec une barre d'utilisation par système de fichiers.
|
||||
|
||||
::steps{level="4"}
|
||||
#### L'installer
|
||||
|
||||
```bash [Terminal]
|
||||
sudo apt install duf
|
||||
```
|
||||
|
||||
#### Le lancer
|
||||
|
||||
```bash [Terminal]
|
||||
sudo duf
|
||||
```
|
||||
|
||||

|
||||
|
||||
Les disques locaux, les partages réseau et les montages système sont groupés séparément. Ajoutez `--only local` pour masquer les pseudo-systèmes de fichiers que Docker laisse derrière lui.
|
||||
|
||||
#### Terminé !
|
||||
::
|
||||
|
||||
## `ncdu`, trouver ce qui a mangé le disque
|
||||
|
||||
Quand `duf` vous dit que le disque est plein, `ncdu` vous dit pourquoi. Il parcourt un dossier, trie tout par taille réelle, et vous laisse descendre avec les flèches au lieu de lancer `du -sh *` vingt fois.
|
||||
|
||||
::steps{level="4"}
|
||||
#### L'installer
|
||||
|
||||
```bash [Terminal]
|
||||
sudo apt install ncdu
|
||||
```
|
||||
|
||||
#### Le pointer sur un dossier
|
||||
|
||||
```bash [Terminal]
|
||||
sudo ncdu /srv/docker
|
||||
```
|
||||
|
||||
Les flèches pour se déplacer, :kbd{value="Enter"} pour ouvrir un dossier, :kbd{value="D"} pour supprimer l'élément sélectionné, :kbd{value="Q"} pour quitter. Sur un gros disque le premier scan prend un moment, il lit tout.
|
||||
|
||||
::warning
|
||||
:kbd{value="D"} supprime immédiatement, avec une seule confirmation et sans corbeille. Lancez `ncdu` sans `sudo` quand vous ne faites que regarder, comme ça une touche tapée de travers ne peut rien toucher de ce qui appartient au système.
|
||||
::
|
||||
|
||||
#### Terminé !
|
||||
::
|
||||
|
||||
## `tldr`, le manuel sans les 400 lignes
|
||||
|
||||
`man tar` est exhaustif et illisible. `tldr tar` vous donne les cinq commandes que les gens tapent vraiment, avec une ligne d'explication chacune. Ce sont des exemples maintenus par la communauté plutôt qu'un substitut au vrai manuel, et sur Debian le client est empaqueté sous le nom `tealdeer`.
|
||||
|
||||
::steps{level="4"}
|
||||
#### L'installer
|
||||
|
||||
```bash [Terminal]
|
||||
sudo apt install tealdeer
|
||||
```
|
||||
|
||||
#### Télécharger le cache des pages
|
||||
|
||||
```bash [Terminal]
|
||||
tldr --update
|
||||
```
|
||||
|
||||
Les exemples sont récupérés une fois et stockés en local, la commande fonctionne donc hors ligne ensuite. À relancer tous les quelques mois.
|
||||
|
||||
#### Lui demander quelque chose
|
||||
|
||||
```bash [Terminal]
|
||||
tldr rsync
|
||||
```
|
||||
|
||||
#### Terminé !
|
||||
::
|
||||
|
||||
## `lazydocker`, gérer ses conteneurs depuis le terminal
|
||||
|
||||
La seule exception : il n'est pas empaqueté par Debian. C'est une interface texte complète pour Docker, conteneurs, images, volumes et logs sur un seul écran, avec des touches pour redémarrer, arrêter ou suivre les logs de n'importe quoi. Pratique quand vous êtes déjà en SSH et que vous n'avez pas envie d'ouvrir Dockge.
|
||||
|
||||
::steps{level="4"}
|
||||
#### Télécharger la dernière version
|
||||
|
||||
```bash [Terminal]
|
||||
curl -Lo /tmp/lazydocker.tar.gz "https://github.com/jesseduffield/lazydocker/releases/latest/download/lazydocker_0.25.2_Linux_x86_64.tar.gz"
|
||||
```
|
||||
|
||||
Vérifiez le numéro de version actuel sur la [page des releases](https://github.com/jesseduffield/lazydocker/releases), et prenez `arm64` au lieu de `x86_64` si le serveur est un Raspberry Pi ou équivalent.
|
||||
|
||||
#### Installer le binaire
|
||||
|
||||
```bash [Terminal]
|
||||
sudo tar -xzf /tmp/lazydocker.tar.gz -C /usr/local/bin lazydocker
|
||||
rm /tmp/lazydocker.tar.gz
|
||||
```
|
||||
|
||||
`/usr/local/bin` est le dossier prévu pour les logiciels que vous installez vous-même, et c'est pour ça qu'`apt` n'y touche jamais.
|
||||
|
||||
#### Vérifier qu'il est bien là
|
||||
|
||||
```bash [Terminal]
|
||||
lazydocker --version
|
||||
```
|
||||
|
||||
#### Le lancer
|
||||
|
||||
```bash [Terminal]
|
||||
sudo lazydocker
|
||||
```
|
||||
|
||||

|
||||
|
||||
Il a besoin d'accéder au socket Docker, d'où le `sudo` à moins que votre utilisateur soit dans le groupe `docker`. Les touches à connaître :
|
||||
|
||||
| Touche | Ce qu'elle fait |
|
||||
| --- | --- |
|
||||
| `1` à `6` | Aller à un panneau : projets, services, conteneurs, images, volumes, réseaux |
|
||||
| Flèches | Se déplacer dans le panneau, la partie droite suit la sélection |
|
||||
| :kbd{value="Enter"} | Passer sur le panneau principal à droite, :kbd{value="Esc"} revient |
|
||||
| `x` | Ouvrir le menu de tout ce que vous pouvez faire avec la sélection |
|
||||
| `m` | Suivre les logs |
|
||||
| `s` / `r` / `p` | Arrêter, redémarrer, mettre en pause le conteneur sélectionné |
|
||||
| `E` | Ouvrir un shell dans le conteneur |
|
||||
| `d` | Le supprimer |
|
||||
| `b` | Commandes groupées, dont le nettoyage des images et des volumes |
|
||||
| `/` | Filtrer la liste |
|
||||
| `+` et `_` | Agrandir ou réduire les panneaux |
|
||||
| `q` | Quitter |
|
||||
|
||||
La casse compte : `E` ouvre un shell dans le conteneur, `e` masque ceux qui sont arrêtés.
|
||||
|
||||
La [liste complète](https://github.com/jesseduffield/lazydocker/blob/master/docs/keybindings/Keybindings_en.md) se trouve dans la documentation du projet.
|
||||
|
||||
::note
|
||||
Être en dehors d'`apt` veut aussi dire qu'il ne sera pas mis à jour par `apt full-upgrade`. Refaites ces étapes quand vous voudrez une version plus récente.
|
||||
::
|
||||
|
||||
#### Terminé !
|
||||
::
|
||||
|
||||
## `ufw`, un pare-feu réellement lisible
|
||||
|
||||
Le pare-feu de Debian (`iptables`/`nftables` sous le capot) est puissant et illisible tel quel. `ufw`, *uncomplicated firewall*, est une fine couche par-dessus qui le transforme en règles courtes et compréhensibles : tout bloquer par défaut et n'ouvrir que ce que vous exposez réellement.
|
||||
|
||||
::steps{level="4"}
|
||||
#### L'installer
|
||||
|
||||
```bash [Terminal]
|
||||
sudo apt install ufw
|
||||
```
|
||||
|
||||
#### Définir la politique par défaut
|
||||
|
||||
```bash [Terminal]
|
||||
sudo ufw default deny incoming
|
||||
sudo ufw default allow outgoing
|
||||
```
|
||||
|
||||
Rien n'entre à moins qu'une règle ne l'autorise, tout ce que le serveur initie lui-même sort toujours normalement.
|
||||
|
||||
#### Autoriser ce dont vous avez réellement besoin
|
||||
|
||||
```bash [Terminal]
|
||||
sudo ufw allow OpenSSH
|
||||
sudo ufw allow 443/tcp
|
||||
```
|
||||
|
||||
`OpenSSH` est un profil intégré qui correspond au port SSH, pas besoin de se souvenir duquel il s'agit. Ajoutez un `allow` par port que vous exposez, [SWAG](/serveex/core/swag) sur le `443` par exemple.
|
||||
|
||||
::warning
|
||||
Autorisez SSH **avant** d'activer le pare-feu, à l'étape suivante. Activez-le d'abord et la connexion depuis laquelle vous tapez est coupée, sans plus aucun écran branché pour réparer.
|
||||
::
|
||||
|
||||
#### L'activer
|
||||
|
||||
```bash [Terminal]
|
||||
sudo ufw enable
|
||||
```
|
||||
|
||||
#### Vérifier les règles
|
||||
|
||||
```bash [Terminal]
|
||||
sudo ufw status verbose
|
||||
```
|
||||
|
||||
```console [Sortie]
|
||||
Status: active
|
||||
Logging: on (low)
|
||||
Default: deny (incoming), allow (outgoing), disabled (routed)
|
||||
|
||||
To Action From
|
||||
-- ------ ----
|
||||
22/tcp (OpenSSH) ALLOW IN Anywhere
|
||||
443/tcp ALLOW IN Anywhere
|
||||
```
|
||||
|
||||
#### Terminé !
|
||||
::
|
||||
|
||||
Reference in New Issue
Block a user