Monter son serveur VPS

Monter son serveur VPS

Un serveur VPS (pour Virtual Private Server) permet de réaliser beaucoup de choses, et surtout mutualiser les services au sein d'un seul et même serveur pour un coût relativement faible.
Mon propre blog est hébergé sur un vps OVH ayant 2Go de RAM et 10Go de SSD. c'est peu, mais suffisant pour monter de nombreux services.
Mais avant d'installer le moteur de blogging ghost, je vais décrire ici les sécurités et les indispensables à mettre en place sur le serveur, juste après l'avoir commandé. Pour commencer, il est nécessaire de se connecter en root par ssh, le mot de passe ayant été envoyé par email.
L'instance OVH que j'ai commandé est une instance docker sur ubuntu 14.04 (elle commence à dater !)

mise à jour du système

On commence donc par une mise à jour du système. Une fois loggué en root, à la première connexion, notre système d'exploitation recommande de passer à la nouvelle release.

Using username "root".
root@vpsXXXXXX.ovh.net's password:
Welcome to Ubuntu 14.04.5 LTS (GNU/Linux 3.13.0-125-generic x86_64)

 * Documentation:  https://help.ubuntu.com/

  System information as of Fri Nov 24 12:11:35 CET 2017

  System load:  0.29             Processes:              78
  Usage of /:   8.6% of 9.81GB   Users logged in:        0
  Memory usage: 4%               IP address for eth0:    XX.XX.XX.XX
  Swap usage:   0%               IP address for docker0: 172.17.0.1

  Graph this data and manage this system at:
    https://landscape.canonical.com/

  Get cloud support with Ubuntu Advantage Cloud Guest:
    http://www.ubuntu.com/business/services/cloud

0 packages can be updated.
0 updates are security updates.

New release '16.04.3 LTS' available.
Run 'do-release-upgrade' to upgrade to it.

La commande suivante permet un passage en 16.04 LTS do-release-upgrade.

L'utilitaire de mise à jour propose alors de créer un second daemon SSH (car vous utilisez un démon qui sera lui même mis à jour). et si votre connexion est perdue, vous risquez de ne plus pouvoir vous connecter en ssh. Vous pouvez répondre Y pour Yes. En cas de problème, vous pourrez vous reconnecter sur le port 1022 du serveur.

Pendant l'installation, plusieurs questions sont posées, quant à savoir s'il faut garder ou non les fichiers de configuration existants, ou les remplacer par ceux contenu dans les packages. Je préfère écraser les anciens et utiliser les nouveaux fichiers de configuration qui seront plus en phase avec les nouvelles versions de packages.
Un redémarrage, et hop !

Après redémarrage, je me rends compte que j'utilise 20% de l'espace disque de 10Go (on était à 8.6%) avant mise à jour. On va récupérer un peu d'espace désormais ! 10Go c'est peu, il faut optimiser au mieux !
une commande pratique pour voir les répertoires qui consomme le plus : find / -xdev -printf '%h\n' | sort | uniq -c | sort -k 1 -n. Les dernières lignes indiquent les plus gros répertoires, et donc les emplacements à vider en priorité si possible.
un petit coup de apt clean et apt autoremove et on récupère quelques centaines de Mo.

fail2ban

La première chose que j'installe en général, c'est le fail2ban. Il permet de repousser les tentatives de connexions sur son serveur. Au bout de 3 essais, l'ip de l'attaquant est bloqué pour un temps déterminé (5 minutes).

installation

Dans la console, exécuter en root : apt install fail2ban

exclusion de son ip

Pour éviter un ban de son propre pc lors de tests par exemple, il peut être utile de noter son ip en zone d'exclusion. Pour ce faire, il suffit de modifier le fichier /etc/fail2ban/jail.conf et ajouter votre ip à la ligne suivante :

ignoreip = 127.0.0.1/8 AAA.BBB.CCC.DDD

docker-compose

L'instance OVH installe par défaut docker en version community 17.05.0-ce. Mais il est beaucoup plus pratique de gérer ses containers avec docker-compose pour une gestion multi-services.

curl -L https://github.com/docker/compose/releases/download/1.17.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

Ensuite, il est assez pratique d'installer la complétion automatique sur docker-compose
sudo curl -L https://raw.githubusercontent.com/docker/compose/1.17.1/contrib/completion/bash/docker-compose -o /etc/bash_completion.d/docker-compose
Relancer un terminal pour prendre en compte la complétion automatique du docker-compose.