Table des matières

Serveur privé virtuel (VPS)

2019-03-07 : Projet personnel publié par Jean Leblond (jeanleblond@posteo.net)

Le but de ce projet est d'expérimenter un serveur virtuel (VPS - virtual private server) afin de se familiariser avec l'environnement des machines virtuelles que louent les fournisseur de services d'hébergement professionnel. Les avantages d'utiliser un VPS plutôt qu'un Raspberry Pi comme support sont notamment la robustesse, la performance et le débit. J'effectuerai l'installation de Yunohost, outil qui vous permet d’installer et d’utiliser facilement votre propre serveur, pour l'auto-hébergement de services avec votre nom de domaine (ex: 'mondomaine.ca'). Le site Web et le panneau de contrôle du fournisseur choisi étant en anglais, cette langue sera présente dans certaines sections de ce qui suit. Heureusement, leur portail 'compte client' est en français. Enfin, nous expérimenterons l'installation et l'utilisation des applications de Yunohost.

:!: Sécurité :

Spécifications matérielles pour l'installation de Yunohost

Basé sur mes lectures, voici les spécifications recommandées pour choisir un serveur virtuel, parmi un des nombreux fournisseurs, afin d'héberger le système Yunohost. Elles correspondent souvent aux serveurs minimaux offerts :

Choix d'un fournisseur et du type de serveur virtuel pour Yunohost

Suite à une comparaison des offres entre OVH et LunaNode, j'ai opté pour le premier. Autres notes :

De la page https://www.ovh.com/world/vps/ j'ai choisi 'VPS SSD'. Ensuite (la région 'North America - Beauharnois' est déjà sélectionnée) parmi les SSD, j'ai choisi 'VPN SSD 1', le moins cher et suffisant pour installer Yuno. Voici les informations utiles de mon choix que je note :

VPN SSD 1 : OpenStack KVM, 1 vCore(s), From 2 GHz, 2 GB RAM, 20 GB SSD, Local RAID From $3.35 /month

Included with your machine :

Adresses Web chez OVH et autres à conserver

Voici des liens utiles à garder sous la main :

Yunohost :

OVH :

DigitalOcean :

Achat du VPS

Bouton Redeem,

1. Options :

2. Review (Preview your order) :

3. Configuration :

4. Contracts :

5. Pay (Configuring renewal) :

Réception d'un 3e courriel '[vps123456.vps.ovh.ca] Installation de votre VPS' (c'est le nom de votre VPS) avec ce contenu :

Réception d'un 4e courriel 'Une facture est disponible dans votre espace client' (votre commande est disponible dans votre compte OVH ainsi que les courriels reçus précédemment).

Dans l'espace client / Gérer mes services, vous pouvez activer le renouvellement automatique (tous les 6 mois dans mon cas) pour éviter de devoir réinstaller votre serveur Yunohost et causer une perte de service pour vos utilisateurs).

Définitions de serveur dédié et de VPS

Un serveur privé virtuel (VPS, pour Virtual Private Server) est un serveur dédié virtualisé. Contrairement à un hébergement web (dit mutualisé) où la gestion technique est prise en charge par OVH, c’est vous qui administrez totalement votre VPS.

Un serveur dédié est une machine virtuelle créé sur mesure afin de déployer un environnement d’hébergement de sites web ou d’applications, stocker de larges volumes de données ou bénéficier d’une puissance de calcul importante, avec des configurations adaptées aux besoins des professionnels.

Premiers pas avec un serveur dédié (VPS)

Se connecter avec l’IPv4 ou le nom de la machine et le mot de passe root de la machine :

ssh root@IP_du_serveur

ou

ssh root@nom_du_serveur

Restez connecté pour la section suivante.

Créer un nouvel utilisateur avec accès sudo (poweruser)

Référence : How To Create a Sudo User on Ubuntu [Quickstart]

La commande sudo fournit un mécanisme d'attribution de privilèges d'administrateur, généralement uniquement disponible pour l'utilisateur root, aux utilisateurs normaux.

Nous allons créer un nouvel utilisateur, que j'appellerai dorénavant poweruser (donnez-lui le nom que vous voulez) avec un accès sudo pouvant agir sur le système avec les droits root, sans avoir à modifier le fichier sudoers de votre serveur.

Toujours connecté en tant que root, utilisons la commande adduser pour ajouter un nouvel utilisateur au système :

adduser poweruser

Configurer son mot de passe (un mot de passe fort est fortement recommandé, que je sauvegarde dans KeePassX). Vous pouvez laisser les autres informations vides.

Ajoutons l'utilisateur au groupe sudo (par défaut, dans Ubuntu, les utilisateurs du groupe sudo ont les privilèges sudo) :

usermod -aG sudo poweruser

Basculez sur le nouveau compte utilisateur :

su - poweruser

En tant que nouvel utilisateur, vérifiez que vous pouvez utiliser sudo en ajoutant “sudo” à la commande que vous souhaitez exécuter avec les privilèges de super-utilisateur (poweruser). Par exemple, lister le contenu du répertoire '/root' qui ne peut normalement être effectué par l'utilisateur root :

sudo ls -la /root

La première fois que vous utilisez sudo dans une session, vous serez invité à saisir le mot de passe du compte utilisateur. Entrez le mot de passe pour continuer.

Si votre utilisateur appartient au groupe approprié et que vous avez entré le mot de passe correctement, la commande que vous avez émise avec sudo devrait s'exécuter avec les privilèges root :

Revenir en 'root' en tapant exit (ne pas vous déconnecter pour la suite)

De votre poste de travail, testez la connexion de votre nouveau compte poweruser :

ssh poweruser@vps123456 -p 22

Vous devriez être connecté :

poweruser@mondomaine:~$

Fermez la connexion en tapant exit

Sécuriser un VPS

OVH n'ayant aucun accès aux machines, ils n’en sont pas les administrateurs et ne pourrons nous fournir d’assistance. De ce fait, il nous appartient d’en assurer la gestion logicielle et la sécurisation au quotidien.

La section Documentation OVH - VPS est très complète pour vous assister dans vos démarches et s'adresse au grand public (pas trop technique) :

apt-get update
apt-get upgrade
nano /etc/ssh/sshd_config
/etc/init.d/ssh restart
ssh poweruser@vps123456 -p nn

ou avec l'adresse IP du VPS comme ceci :

ssh poweruser@999.99.9999.9999 -p nn
nano /etc/ssh/sshd_config
apt-get install fail2ban
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.conf.backup
nano /etc/fail2ban/jail.conf

Je l'ai regardé rapidement sans le modifier, voir la documentation officielle de l'outil Fail2Ban : https://www.fail2ban.org/wiki/index.php/Main_Page et sa documentation en français : https://www.fail2ban.org/wiki/index.php/FAQ_french

/etc/init.d/fail2ban restart

Important : Nous ne configurerons pas ci-dessous le pare-feu interne (iptables) et n'installerons pas non plus le Firewall Réseau OVH, mais plutôt le Coupe-Feu de base UFW à la section 'Prérequis 1' suivante. Vous pouvez donc passer à la section Débuter avec un VPS.

iptables -L

(Inchangé pour l'instant, ceux qui l'utilisent ajustent à leur utilisation des règles sur ce pare-feu. Pour toute information sur les différentes manipulations possibles, il vous suffit de vous référer au fonctionnement de ce service sur la documentation officielle de la distribution utilisée.)

Débuter avec un VPS

Cette section va vous donner quelques points pour vous aider à prendre en main votre VPS nouvellement livré et installé.

Exemple d'espace client :

Utiliser le KVM pour les VPS

La console KVM permet une connexion directe à votre VPS sans avoir à utiliser un logiciel externe (terminal, Putty, etc.). Cette console est accessible via votre espace client ou les API.

Ce qu'est Yunohost

YunoHost est une plate-forme open source qui facilite l'installation et la configuration transparentes d'applications Web auto-hébergées, y compris les clients de messagerie Web, les gestionnaires de mots de passe et même les sites WordPress. La messagerie Web auto-hébergée et d'autres applications offrent une confidentialité et un contrôle sur vos informations personnelles. YunoHost vous permet de configurer les paramètres, de créer des utilisateurs et d’héberger vos propres applications à partir de son interface utilisateur graphique. Un marché d'applications est disponible via YunoHost à ajouter à votre environnement d'hébergement. L'interface utilisateur frontale agit comme une page d'accueil pour toutes vos applications.

Le site Web de Linux Magazine a consacré cet article très intéressant en 2018 sur Yunohost. Il décrit abondamment les composants de cette distribution Linux, liens à l'appui. Je vous recommande sa lecture, qui m'a rappelé qu'on peut essayer Yunohost…

Essayer Yunohost

Vous pouvez aller à https://yunohost.org/#/try pour essayer plusieurs applications déjà installées :

Installer Yunohost sur le VPS

Il n'y a que 2 commandes à exécuter pour que la plate-forme Yunohost soit montée.

À propos des pare-feu (firewall)

:-/ Section informative. Aucune modification pour l'instant en attendant de parfaire mes connaissances sur le sujet. Vous pouvez passer à la section 'prérequis' suivante.

apt update
apt install ufw
ufw app list

(OpenSSH est présent dans la liste d'applications)

ufw allow OpenSSH
ufw enable

(confirmer au message 'Command may disrupt existing ssh connections. Proceed with operation (y|n)?') (message 'Firewall is active and enabled on system startup')

ufw status

(Action = ALLOW pour OpenSSH & OpenSSH (v6) )

ssh poweruser@your_server_ip

(n'ai pu me connecter, donc ufw disable et ai pu me connecter)

Prérequis 1 : Tutoriel de configuration initiale du serveur Debian 9

usermod -aG sudo poweruser

(testé sudo nano /etc/fail2ban/jail.conf sans eu à saisir le mot de passe root) (ok)

Prérequis 2 : Configurer un nom d'hôte

Si vous souhaitez accorder à d'autres utilisateurs un accès externe aux services, vous devez utiliser votre propre domaine. Un nom de domaine configuré pointera vers votre serveur Yunohost.

Pour configurer un nom de domaine, vous devez faire deux choses. Tout d'abord, vous devez acheter un nom de domaine auprès d'un registraire de noms de domaine. Deuxièmement, vous devez configurer des enregistrements DNS pour votre domaine à l'aide d'un service d'hébergement DNS.

Afin de rendre l'auto-hébergement le plus accessible possible, YunoHost propose un service de noms de domaine gratuits et automatiquement configurés. En utilisant ce service, vous n'avez donc pas à réaliser vous-même la configuration des enregistrements DNS qui est assez technique.

Référence : https://www.digitalocean.com/docs/networking/dns/

Lors de mes expérimentations d'auto-hébergement passé de Yunohost sur un Raspberry Pi, j'ai effectué les prérequis suivants :

Plus tard, après l'installation de chacune des applications ou services de Yunohost sur mon VPS, je devrai effectuer :

1. Installer manuellement

apt install bash

Note : La command curl ci-dessous du site Yunohost n'ayant pas fonctionné, j'ai plutôt suivi les étapes du tutoriel de DigitalOcean dans ce qui suit.

curl https://install.yunohost.org | bash

(commande qui n'a pas fonctionné)

cd /tmp
wget -O yunohost https://install.yunohost.org/
sudo /bin/bash yunohost

Première connexion à mon serveur Yunohost via Firefox

Vérifier les ports Yunohost

Mettre à jour le système de Yunohost

Création d'utilisateurs

Récapitulons la liste des comptes à ce jour…

Chez votre hébergeur VPS :

Pour votre serveur Yunohost (installé sur votre VPS) :

Nous allons maintenant créer un autre compte co-administrateur Yunohost (qui sera dorénavant, quand disponible pour certains services que nous installerons, utilisé pour l'administration courante de ces services Yunohost) (évitera d'utiliser le compte 'administrateur') :

De plus, créez d'autres comptes utilisateurs standards (non administrateurs) selon vos besoins (stocker aussi ces infos dans KeePassX) qui vous serviront à tester les accès aux applications. Par exemple, des membres de votre famille ou des proches collaborateurs. Une fois vos essais concluants, vous pourrez les inviter sur votre serveur et saurez comment en ajouter d'autres. Vous pouvez aussi créer un utilisateur 'Visiteur'. Par exemple :

Enfin, la connexion à Yunohost par l'interface Web pour votre compte administrateur est (selon votre nom de domaine) :

https://mondomaine.ca/yunohost/admin/#/login

Et la connexion à Yunohost par l'interface Web pour tous les autres utilisateurs (celle que vous donnerez plus tard à vos collaborateurs) est :

https://mondomaine.ca/yunohost/sso/

Test d'accès utilisateur

Nous allons maintenant tester l'accès d'un de vos utilisateurs.

Saisir le nom et le mot de passe d'un des utilisateurs précédemment créé.

Tous les utilisateurs peuvent :

Installation d'un certificat Let's Encrypt

Cette étape est nécessaire si vous comptez ouvrir l’accès à votre serveur à des anonymes, par exemple pour héberger un site web.

Nous utiliserons la commande yunohost domain cert-install pour créer un certificat SSL avec Let's Encrypt, puis l'installerons afin qu'il sécurise la connexion via HTTPS à l'avenir. Cependant, cette approche présuppose que le registraire de domaine adapte d'abord l'enregistrement DNS A afin qu'il pointe vers l'adresse IP du domaine. Cela prend généralement 24 heures ou plus pour que le changement se propage.

sudo yunohost domain cert-status mondomaine.ca
sudo yunohost domain cert-install mondomaine.ca --force --no-checks

Vérification dans 'Domaines', sélectionner votre domaine, 'Certificat SSL':

Utilisation d'un sous-domaine

Certaines applications demandent d'avoir leur propre domaine. On peut alors créer un sous-domaine qu'on offrira à cette application. Yunohost fera le tri.

Dans le menu d'administration sous Domaine - ajouter un dommaine - vous devez déjà avoir votre domaine. - ensuite vous ajoutez le sous-domaine dans votre serveur de DNS en ajoutant un champs “A” avec la même adresse que votre domaine. - une fois enregistré, vous pourrez enregistrer un certificat Let's encrypt tel que décrit dans la section précédante

Gestion de Yunohost

La page Gestion de Yunohost décrit des astuces et des applications utilitaires facilitant la gestion administrative de ma machine (VPS ou Raspberry Pi) et du serveur Yunohost.

Applications de Yunohost

cas d'utilisation

Vous pouvez utiliser la liste suivante pour débuter votre site.

OpenSondage vous permettra d'envoyer des questions à vos parents et amis. DocuWiki pour faire un wiki personnel, texte et image modifiable par vos proches

retour d'expérience d'installation

Passer à la page Installation des applications de Yunohost sur VPS pour consulter mes applications auto-hébergées dans Yunohost sur mon VPS. Elle contient des notes sur mes expérimentations.