Monorailcat

Serveur@Home

icon 2013-01-19

Avoir un serveur @home, ce n'est pas très compliqué, ni très coûteux, et c'est aussi pratique que formateur.

Utilisation
Un serveur "de maison" va servir à partager des fichiers entre les différentes machines, et à pouvoir les rendre disponibles depuis internet, et éventuellement héberger plus de services.
Pour ça, il y a quelques contraintes :
  • Le serveur doit rester connecté et allumé quand on va y accéder
  • Le serveur doit être fiable, aussi bien au niveau logiciel que matériel
  • Le serveur ne doit absolument pas rendre toutes vos données publiques

Bien sûr, pourquoi ne pas utiliser d'autres services, "gratuits" ? Parfois on peut être rebuté par des conditions d'utilisation trop restrictives trop de publicité, des droits d'auteur non respectés, ou même lorsqu'il n'existe pas de service équivalent gratuit et fiable.

Hardware
On va avoir un serveur qui va être allumé pendant de longues périodes, avec de longues périodes d'inactivité, et d'activité intense. Là aussi, on va imposer quelques contraintes :
  • Machine peu-chère
  • Faible consommation électrique
  • Faible bruit
  • Matériel fiable
  • Grande capacité de stockage

Le premier critère impose directement une machine d'occasion ou de récupération. Les second, troisième et quatrième critères renvoient vers les machines d'entreprise (HP Compaq, Dell Optiplex), très répandues.
En s'attardant sur la fiabilité et le bruit, on peut remarquer que ces machines sont souvent usées après une dizaine d'années : les premiers composants usés sont mécaniques : ventilateurs (encrassés, et roulements usés), et disques durs.
J'ai ainsi récupéré un IBM PC-300GL de 2000 en 2007.
  • Nettoyage complet de la machine, au compresseur
  • Changement des ventilateurs (utilisation de patins anti-vibration)
  • Upgrades basiques
  • Changement du disque dur (8Go -> 320Go)
  • Réglages dans le BIOS : activation du reboot en cas de coupure de secteur, désactivation du test du clavier

Ainsi, on a un serveur coûtant 100€ (pièces neuves), qui consomme peu (40~50W à la prise), quasiment inaudible et fiable (plusieurs années sans interuption). Par contre, le matériel n'est pas tout jeune, mais on verra que ça ne pose pas tant de problèmes que ça.

Upgrades
  • 2007 : Disque dur 8Go IDE -> 320Go IDE, 64Mio de RAM -> 256Mio, ventilateurs
  • 2011 : Contrôleur SATA, carte réseau Gigabit, disque dur 320Go IDE -> 2To SATA
  • 2013 : Alimentation Flex-ATX (panne) -> Alimentation ATX Enermax (modifiée fanless), 256Mio de RAM -> 512Mio, ventilateurs
  • 2016 : Disque dur 2To (remplacement avant panne), remplacement
IBM PC-300GL 6288 (front)
IBM PC-300GL 6288 (top)

OS
Comme il faut un système d'exploitation peu cher, fiable et facile à maintenir, le choix se porte tout de suite vers Linux.
J'ai choisi la distribution Debian, pour son installation et sa maintenance automatisable.
Comme on a un serveur, il ne faut pas perdre de vu quelques rudiments :

  • Pas d'interface graphique
  • Partitionnement du/des disques séparant les données du système

Une interface graphique consomme des ressources système, pas illimitées avec ce genre de machine, rajoute des problèmes de sécurité potentiels, et ne sert à rien sur un serveur (puisqu'on a pas de clavier ni d'écran).
Le schéma de partitions suivant :

  • sda1 : /boot ~100Mo
  • sda5 : swap 200~500Mo
  • sda6 : / 2~5Go
  • sda7 : /stuff (tout le reste)

La partition /boot pourra être montée en lecture seule pour éviter les problèmes. La séparation des documents et du système facilite grandement la maintenance (changement de disque dur, sauvegardes et restorations...).

Services

On va mettre quelques services :

  • SSH : administration et utilisation à distance (et transferts de fichiers)
  • Apache : serveur web "usine à gaz"
  • lighttpd : serveur web "light"
  • vsftpd : serveur FTP : transferts de fichiers
  • SaMBa et NFS : partage de fichiers en réseau local

On peut y rajouter quelques uns, comme un serveur DNS avec bind ou dnsmasq, l'extension PHP, des bases de données mySQL, un serveur mail...
Pour une machine connectée h24, ça peut être très utile pour partager des torrents (torrentflux) ou pour rester connecté sur IRC ou jabber (ssh + screen + client im).

Configuration
On va connecter le serveur au réseau local, pour celà, il faut configurer le serveur avec une adresse statique, sur la même plage que le routeur, hors de sa réserve DHCP. Le serveur est ainsi utilisable en réseau local.
On va configurer les routes et le DNS:

route add default gw ADRESSE_DU_ROUTEUR
cat "nameserver ADRESSE_DU_ROUTEUR" > /etc/resolv.conf"


Mais comme ce n'est pas persistant, il faut le forcer dans /etc/network/interfaces. Le serveur peut maintenant accéder à internet.
Ensuite, on configure le routeur pour qu'il redirige les ports voulus de l'adresse publique (internet) vers l'adresse privée (réseau local). Les ports 21 (FTP), 22 (SSH), 80 (HTTP), 433 (HTTPs) sont utiles. Mais attention, il y a beaucoup d'attaques sur les protocoles FTP et SSH, assurez-vous de bien les avoir configurés avant de les rendre publics, et dans certains cas (brute-force ou firewall "fasciste"), il est utile de changer les ports (mettre SSH sur le port 443 permet d'accèder à son serveur depuis n'importe où.

icon Tags de l'article : , ,

No comments

icon Flux RSS des commentaires de cet article

Notice : Your comment will be visible after approbation by the webmaster.