====== 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 [[https://yunohost.org/#/|Yunohost]].
:!: Sécurité :
* Dans ce projet, les informations suivantes ont été remplacées et masquées. Vous pourrez les remplacer par vos informations :
* Mon nom de domaine -> 'mondomaine.ca'
* L'adresse IP de mon VPS -> 999.99.999.999
* Le nom de mon VPS -> vps123456.vps.ovh.ca
* Le numéro du port SSH de mon VPS (par défaut 22) -> nn
* Quand je mentionne **//poweruser//**, je fais référence au compte que nous allons créer (à la section [[#creer_un_nouvel_utilisateur_avec_acces_sudo_poweruser|Créer un nouvel utilisateur avec accès sudo (poweruser)]]) et ajouter au groupe 'sudo' afin d'effectuer des tâches administratives (en évitant d'utiliser le compte 'root') comme se connecter en SSH sur le VPS, installer des paquets, configurer la sauvegarde, etc.
===== 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 :
* 1 CPU (//Core//)
* 2 Go de RAM (mémoire vive)
* 10 Go d'espace de stockage (selon vos besoins)
* Système d'exploitation Debian version 9.x (nom de sortie ou //namecode// "Stretch")
===== Choix d'un fournisseur et du type de serveur virtuel pour Yunohost =====
Suite à une comparaison des offres entre OVH et [[https://www.lunanode.com/pricing|LunaNode]], j'ai opté pour le premier. Autres notes :
* Chez LunaNode, le serveur à 7$ est l'équivalent.
* [[https://cloudatcost.com/developer-cloud|cloudatcost]] offre aussi des serveurs 'payer une fois'
* J'ai aussi vu l'offre gratuite d'Amazon, mais elle est trop contraignante ; être étudiant, avoir un compte GMail valide...et j'essaie de ne pas encourager GAFAM!
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 :
* SLA (Service Level Agreement) : 99.95%
* Scalability : Add resources via the Control Panel
* Bandwidth : 100 Mbps - Unlimited traffic
* Anti-DDoS protection (Distributed Denial Of Service) hacking attempts : Protection included
* IP : 1 IPv4 included (all ports open), 1 IPv6 included (all ports open)
* Management :
* Customer Area (Control Panel) :
* Manage multiple services, such as renewals, configurations, administration and customer information
* Pick a more powerful model if your activities require it, protect your data through backup management, isolate your websites by adding geolocalized IPs, or switch over to KVM or Rescue mode for programmed maintenance
* Management of all your maintenance and billing operations
* Unlimited reinstallation with our operating systems
* RESTful API (administrative actions, classified by category, like reboot, re-install, configure, upgrade, activate additional features, access logs...)
* KVM
* Root access (total control of your VPS on a day-to-day basis)
===== Adresses Web chez OVH et autres à conserver =====
Voici des liens utiles à garder sous la main :
**Yunohost :**
* [[https://yunohost.org/#/apps|Applications officielles Yunohost]]
* [[https://yunohost.org/#/try|Essayer Yunonohost]] (interface utilisateur et d'administration)
**OVH :**
* **Espace client** : https://www.ovh.com/auth/?action=gotomanager (connexion)
* [[https://docs.ovh.com/gb/en/customer/all-about-your-username/|Tout savoir sur l'utilisation de l'identifiant client chez Ovh]]
* **Guides** : https://www.ovh.com/ca/en/support (pour vous expliquer pas à pas comment administrer vos services), dont :
* [[http://www.ovh.com/ca/en/g1260.comment_se_connecter_a_son_vps|Comment se connecter à son VPS]]
* [[https://docs.ovh.com/fr/dedicated/ssh-introduction/|Introduction au SSH]]
* [[https://docs.ovh.com/fr/dedicated/ssh-introduction/|Installer la clé SSH OVH]] (Ce guide vous décrit l’installation d’une clé SSH OVH pour permettre l’intervention des administrateurs d'OVH, au besoin, puis sa désactivation.)
* [[https://docs.ovh.com/fr/vps/|Documentation OVH - VPS]] est très complète pour vous assister dans vos démarches et s'adresse au grand public (pas trop technique)
* **Communauté OVH** : https://community.ovh.com/ (entraide entre utilisateurs)
* **Mailing list** : vps@ml.ovh.net (pour écrire à l'entreprise)
* **Soutien Client OVH** : Téléphone : 1-855-OVH-LINE (684-5463)
* **OVH Labs** : https://labs.ovh.com/ (expérimentation de nouveaux services)
* **OVH GitHub** : https://github.com/ovh-ux (dépôt)
* **OVH Gitter** : https://gitter.im/ovh/ux (canal de discussion pour parlons des problèmes d’expérience utilisateur)
* **OVH Actualités** : [[https://www.ovh.com/ca/fr/news/articles/||Actualités OVH]] (actualité, innovation et tendances ti)
* [[https://www.ovh.com/ca/fr/articles/news/a1413.5-raisons-choisir-vps-avant-infras-dediees|5 raisons de choisir un VPS avant de passer aux infrastructures dédiées]]
**DigitalOcean :**
* [[https://www.digitalocean.com/community/tutorials/how-to-install-yunohost-on-debian-9|Comment installer Yunohost sur Debian 9]] (installation, configuration DNS, installation d'un client webmail pour consulter votre messagerie, installation d'un certificat //Let's Encrypt//)
===== Achat du VPS =====
* Voici mes notes prises pendant le parcours des différentes étapes de sélection de mon serveur sur le site d'OVH.
* Si vous choisissez un autre fournisseur, les étapes devraient être similaires.
* Avant de procéder à l'achat, je vous recommande de vous créer un identifiant sur leur site et de vous y connecter, ce qui facilitera les étapes d'achat.
Bouton //Redeem//,
1. Options :
* Monthly subscription, monthly rental
* VPS 2018 SSD 1 (1 vCore/2 GB/20 GB) ($4.49 /month before taxes) x 1
* Operating system : Linux
* Distribution : Debian (plusieurs autres disponibles pour réaliser d'autres projets plus tard)
* Version : Debian 9 (Stretch) 64bits
* Language : English (seulement)
* Options (pas achetées) :
* Additional disk (au choix, 50 GB par ex. à $7.00 excl.VAT/month /VM)
* Snapshot (1 Snap. kept) ($4.19 excl.VAT/month /VM)
2. Review (Preview your order) :
* Renewal frequency : 6 month $26.94 i.e. $4.49/month + $4.04 taxes = $30.98 total (mon choix)
* Créer compte OVH (gérer vos services, commandes en cours, factures et moyens de paiement)
* Choisir moyen de paiement
* Réception d'un 1er courriel **'Activation de votre compte client'** (liens pour vous connecter à l'espace client, aux guides pour vous expliquer pas à pas comment administrer vos services et numéro de téléphone pour contacter le soutien client OVH)
* Réception d'un 2e courriel **'Notification de connexion à votre compte'** (à la suite d'une connexion réussie à votre interface client, destiné à vous sensibiliser à la sécurité des services que vous avez chez OVH et à mieux les protéger, mention de la possibilité de modifier les réglages d'alertes via votre espace client, [[https://docs.ovh.com/gb/en/customer/all-about-your-username/|tout savoir sur l'utilisation de l'identifiant client chez Ovh]])
* Notez que vous recevrez un courriel à chacune des connexion à votre espace client (notification de sécurité)
3. Configuration :
* Responsibilities : Administrator, Billing, Technician
4. Contracts :
* Téléchargé et lu :
* //'Specific conditions for automatic renewal of services, Last version of 4th December 2017'//
* //'General terms and conditions of service, Last version of 22nd May 2014'//
* //'Specific terms and conditions on the rental of a Virtual Private Server, Last version of 29 May 2018'//
* Cocher '//(X)I have read and accepted all the conditions.' (Important : By accepting the special terms and conditions, you acknowledge that the automatic renewal will be applied to all your services.
You can either activate or deactivate this feature in your customer control panel.)//
5. Pay (Configuring renewal) :
* Choose the default payment method that will be used to automatically renew your service. Once you've ordered, you need to make an online payment.
* Order payment : 1 Domain, $26.94 CAD + 2 taxes = $30.98 CAD (on vous remettra une adresse IP pour votre VPS afin d'y accéder, que vous pourrez lier à votre nom de domaine pour en faciliter l'accès à vos utilisateurs)
* Choisir 'Payment method'
Réception d'un 3e courriel **'[vps123456.vps.ovh.ca] Installation de votre VPS'** (c'est le nom de votre VPS) avec ce contenu :
* **Votre VPS vient d'être installé** sous le système d'exploitation / distribution Debian 9 (Stretch) (en version 64 bits)
* PARAMETRES D'ACCES:
* L'adresse IPv4 du VPS est : nnn.nn.nnn.nnn
* L'adresse IPv6 du VPS est : nnnn:nnnn:nnnn:nnnn:0000:0000:0000:nnnn
* Le nom du VPS est : vps123456.vps.ovh.ca
* Le compte administrateur suivant a été configuré sur le VPS :
* Nom d'utilisateur : root
* Mot de passe : xxxxxxxx
* POUR BIEN DEMARRER:
* Si vous vous connectez pour la première fois à un VPS, nous vous recommandons de consulter le guide suivant : [[http://www.ovh.com/ca/en/g1260.comment_se_connecter_a_son_vps|Comment se connecter à son VPS]]
* GESTION, FACTURATION, ASSISTANCE:
* Vous pouvez gérer votre VPS depuis votre espace client web à l'adresse suivante : https://ca.ovh.com/manager/
* OBTENIR DE L'AIDE:
* Pour vous accompagner dans la prise en main de votre VPS, nous mettons à votre disposition de nombreux guides d'utilisation : http://www.ovh.com/ca/en/support/
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) =====
* Prérequis: Posséder un serveur dédié, visible dans votre espace client OVH dans la partie 'Dédié / Serveurs Dédiés'.
* Donc, attendre le 3e courriel mentionné ci-dessus confirmant l'installation de votre VPS. Lorsque votre serveur dédié est configuré pour la première fois, ce e-mail contenant les identifiants de connexion et votre mot de passe vous sera envoyé avec les accès //root//. C'est une question de quelques heures entre l'achat et la livraison de votre VPS.
* Pour le système d'exploitation de votre serveur dédié Linux, il vous faut vous connecter en ligne de commande en SSH. (Si votre ordinateur est sous Windows, il existe le logiciel Putty qui vous le permettra).
* Documentation : Home / Cloud / Serveurs dédiés / [[https://docs.ovh.com/fr/dedicated/ssh-introduction/|Introduction au SSH]]
* Sur Linux, l’outil Console ou Terminal est installé nativement sur votre poste de travail et peut être utilisé pour se connecter.
* Pour de la gestion multi-onglets, le paquet Terminator peut être installé. Vous pouvez en trouver une présentation sur la documentation d’Ubuntu : https://doc.ubuntu-fr.org/terminator.
* OpenSSH (Gratuit).
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.
* (Au besoin seulement) Documentation : Home / Cloud / Serveurs dédiés / [[https://docs.ovh.com/fr/dedicated/ssh-introduction/|Installer la clé SSH OVH]] Ce guide vous décrit l’installation d’une clé SSH OVH pour permettre l’intervention des administrateurs d'OVH, puis sa désactivation.
===== Créer un nouvel utilisateur avec accès sudo (poweruser) =====
Référence : [[https://www.digitalocean.com/community/tutorials/how-to-create-a-sudo-user-on-ubuntu-quickstart|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// :
{{ vps-ovh-jl-yunohost-verifier-cpt-poweruser-acces-sudo.png?400 |}}
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 [[https://docs.ovh.com/fr/vps/|Documentation OVH - VPS]] est très complète pour vous assister dans vos démarches et s'adresse au grand public (pas trop technique) :
{{ vps-ovh-jl-documentation-ovh-vps.png?800 |}}
* Dans la section 'Premiers pas', cliquez sur le lien [[https://docs.ovh.com/ca/fr/vps/conseils-securisation-vps/|Sécuriser un VPS]]
* Prérequis: Être connecté en SSH (accès root) sous Linux (ou en tant qu’administrateur sous Windows).
* Mettre régulièrement à jour votre système (liste des paquets et les paquets eux-mêmes) :
apt-get update
apt-get upgrade
* Modifier le port d’écoute par défaut du service SSH :
* Par défaut, définie sur le port 22 et visés en premier par les robots des pirates)
* Selon la page [[https://phoenixnap.com/blog/linux-ssh-security|5 Linux SSH Security Recommendations To Secure Your Systems]], les bénéfices de changer ce port sont l'impact sur les fichiers de journalisation et la charge sur votre serveur, suite aux attaques automatisées.
* Un inconvénient rencontré est que la commande rsync de sauvegarde [[.:yuno_gestion#exemple_pratique|(section Gestion / Sauvegarde programmée de Yunohost sur VPS / Exemple pratique)]] ne fonctionne pas à priori sur un autre port (un paramètre à fournir?). Donc le compromis est de ne laisser le port SSH 22 que pendant la sauvegarde.
* J'utiliserai dorénavant 'nn' pour mon nouveau port SSH) (**netstat -nlp** montre que le port 22 écoute en TCP) (enlever le '#' devant 'Port nn') :
nano /etc/ssh/sshd_config
* Redémarrer le service SSH :
/etc/init.d/ssh restart
* (**netstat -nlp** montre que c'est maintenant le port nn qui écoute en TCP)
* On devra obligatoirement renseigner le port lors des prochaines connexions SSH sur le serveur comme ceci :
ssh poweruser@vps123456 -p nn
ou avec l'adresse IP du VPS comme ceci :
ssh poweruser@999.99.9999.9999 -p nn
* Modifier le mot de passe associé à l’utilisateur root (très fortement conseillé de le personnaliser, KeePassed)
* Désactiver l’accès au serveur via l’utilisateur root (déconseillé, voire dangereux de laisser votre VPS accessible uniquement via cet utilisateur) (recommandé de désactiver son accès direct via le protocole SSH) :
nano /etc/ssh/sshd_config
* PermitRootLogin yes -> **no**
* Les prochaines connexions au système se feront maintenant avec votre compte superuser
* Installer et configurer le paquet Fail2ban (structure logicielle 'framework' de prévention contre les intrusions dont le but est de bloquer les adresses IP inconnues qui tentent de pénétrer dans votre système, recommandé, voire indispensable, pour vous prémunir contre toute tentative de brute force sur vos services) :
apt-get install fail2ban
* Sauvegarder son fichier de configuration, puis le modifier pour l'adapter à votre configuration et redémarrer ce service :
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 [[#debuter_avec_un_vps|Débuter avec un VPS]].
* Configurer le pare-feu interne : iptables
iptables -L
{{ vps-ovh-iptables-1.png?600 |}}
(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.)
* Configurer le Coupe-feu Réseau d’OVH (Firewall Network) (OVH vous propose un pare-feu à l’entrée de l’infrastructure appelé le Coupe-feu réseau. Sa mise en place et sa configuration permettent le blocage des protocoles avant même leur arrivée sur votre serveur. Son guide : https://docs.ovh.com/ca/fr/dedicated/firewall-network/ (non configuré pour l'instant)
* Sauvegarder votre système et vos données selon une des 3 options de sauvegarde :
* Service disponible à partir de $4,19/mois (pas acheté pour l'instant)
* Voir [[https://www.ovh.com/ca/fr/vps/backup-vps|Sauvegarde de vos VPS]]
===== Débuter avec un VPS =====
Cette section va vous donner quelques points pour vous aider à prendre en main votre VPS nouvellement livré et installé.
* Allez à la page de documentation [[https://docs.ovh.com/ca/fr/vps/|Utiliser les VPS OVH]]
* Cliquez sur le lien [[https://docs.ovh.com/ca/fr/vps/debuter-avec-vps/|Débuter avec un VPS]]
* Allez à l'espace client, partie Cloud, colonne de gauche 'Serveurs'.
* Vous verrez ici tout ce qui concerne votre VPS : les informations générales au milieu, les actions que vous pouvez effectuer sous la forme de boutons à droite de l’écran et les options tout en bas (Info : 'Votre instance est maintenant associée avec une IPv6 gratuite en plus de l'IPv4 par défaut.') :
* Connexion au VPS (voir section précédente)
* Installer ou réinstaller son VPS (au besoin)
* Sécuriser votre VPS (voir section précédente)
* Sécuriser son domaine avec un certificat SSL (nous installerons un certificat //Lets Encrypt// sous Yunohost). OVH propose aussi le SSl Gateway (voir la page).
Exemple d'espace client :
{{ vps-ovh-jl-espace-client-cloud-1.png?1000 |}}
===== 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.
* Prérequis : connecté à l'espace client
* **Solution 1 'Connexion au KVM via l’espace client'** :
* Page de gestion de votre VPS / KVM
* Une fenêtre va alors initier la connexion sur votre VPS, ce qui peut durer quelques secondes. Vous n’aurez plus qu’à vous connecter (cliquer sur le lien 'Ouvrir dans une nouvelle fenêtre') (voir image ci-dessous) :
* Test de connexion avec compte poweruser (ok)
* **Solution 2 'Connexion au KVM via les API'** :
* Il est parfois possible que vous rencontriez des difficultés à vous connecter au KVM via votre espace client. Il vous reste donc la solution des API.
* Connectez-vous d’abord sur [[https://api.ovh.com/|API OVH]]
* Lu cette page ainsi que la page [[https://docs.ovh.com/gb/en/customer/first-steps-with-ovh-api/|First step with the API]] (explorer plus tard)
{{ vps-ovh-kvm-screen-1.png?400 |}}
* Aller plus loin en échangeant avec la communauté d’utilisateurs sur https://community.ovh.com
====== 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 [[http://www.linux-magazine.com/Issues/2018/208/YunoHost|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 :
{{ vps-ovh-jl-yunohost-essayer.png?800 |}}
===== Installer Yunohost sur le VPS =====
Il n'y a que 2 commandes à exécuter pour que la plate-forme Yunohost soit montée.
* Voir [[https://yunohost.org/#/install_on_vps_fr|Installation sur un serveur dédié]]
* Voir [[https://www.digitalocean.com/community/tutorials/how-to-install-yunohost-on-debian-9|DigitalOcean How To Install YunoHost on Debian 9]]
==== À 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.
* Installer un Coupe-Feu de base UFW :
* Debian servers can use firewalls to make sure only connections to certain services are allowed. Although the iptables firewall is installed by default, Debian does not strongly recommend any specific firewall. We will install and use the UFW firewall to help set policies and manage exceptions.
* We can use the apt package manager to install UFW. Update the local index to retrieve the latest information about available packages and then install the firewall by typing:
apt update
apt install ufw
* Firewall profiles allow UFW to manage sets of firewall rules for applications by name. Profiles for some common software are bundled with UFW by default and packages can register additional profiles with UFW during the installation process. OpenSSH, the service allowing us to connect to our server now, has a firewall profile that we can use. You can see this by typing:
ufw app list
(OpenSSH est présent dans la liste d'applications)
* We need to make sure that the firewall allows SSH connections so that we can log back in next time. We can allow these connections by typing:
ufw allow OpenSSH
* Afterwards, we can enable the firewall by typing:
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//')
* You can see that SSH connections are still allowed by typing:
ufw status
(Action = ALLOW pour OpenSSH & OpenSSH (v6) )
* As the firewall is currently blocking all connections except for SSH, if you install and configure additional services, you will need to adjust the firewall settings to allow acceptable traffic in. You can learn some common UFW operations in this [[https://www.digitalocean.com/community/tutorials/ufw-essentials-common-firewall-rules-and-commands|guide]].
* Enabling External Access for Your Regular User :
* Now that we have a regular user for daily use, we need to make sure we can SSH into the account directly. The process for configuring SSH access for your new user depends on whether your server's root account uses a password or SSH keys for authentication.(uses a password dans mon cas)
* If you logged in to your root account using a password, then password authentication is enabled for SSH. You can SSH to your new user account by opening up a new terminal session and using SSH with your new username:
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 ====
* Ajouté le poweruser au groupe sudoers :
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 [[https://yunohost.org/#/dns_nohost_me_fr|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 :
* La [[.:nom_domaine|création d'un nom de domaine]] (j'ai réservé un domaine '.ca' via 'namesilo')
* La [[.:rpi:cloudflare|création d'un compte chez cloudflare]]
Plus tard, après l'installation de chacune des applications ou services de Yunohost sur mon VPS, je devrai effectuer :
* La [[.cloudflare|délégation de mon nom de domaine et création d'hôtes chez Cloudflare]] (comme doku.mondomaine.ca) (? à confirmer)
1. Installer manuellement
* Connecté au serveur en tant que root, installer //bash// :
apt install bash
* Installer Yunohost :
Note : La command curl ci-dessous du site Yunohost n'ayant pas fonctionné, j'ai plutôt suivi les étapes du [[https://www.digitalocean.com/community/tutorials/how-to-install-yunohost-on-debian-9|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
* **yes** to overwrite configuration files (of postfix, dovecot, mysql, nginx, metronome)
* Confirmer aussi...
* Post-installation (on n'a pas l'écran de confirmation de l'installation de YunoHost ; **yes** pour procéder au processus de //post-installation//)
* Deux choix possibles :
* Choix 1 : **yunohost tools postinstall** as root
* Choix 2 : web browser https://999.99.999.999/ (j'ai fait ce choix en saisissant l'adresse IP de mon VPS chez OVH)
* Message: 'La connexion n'est pas sécurisée', normal car je n'ai pas encore installé de certificat auto-généré (on installera un tel certificat 'Let's Encrypt' plus tard)
* Donc on ajoute une exception de sécurité pour ce site…
* Sélectionner 'Avancé', puis 'Ajouter une exception…', confirmer, 'Retour'
* Fenêtre 'Félicitations ! YunoHost a été installé avec succès.'
* Deux étapes de configuration supplémentaires sont nécessaires pour activer les services de votre serveur.
* Bouton 'C'est parti!'
* Domaine : C'est le premier nom de domaine pour accéder à votre serveur YunoHost, mais également celui qui servira pour le portail d'authentification. Il sera donc visible pour tous vos utilisateurs, choisissez-le avec soin.
* Lien 'J'ai déjà un nom de domaine...'
* Configurez votre fournisseur DNS pour votre nouveau domaine :
* En louant un VPS chez OVH, j'ai aussi reçu une adresse IP de domaine (999.99.999.999).
* Je me connecte à mon compte de mon fournisseur de domaine qui est [[https://dash.cloudflare.com/login|Cloudflare]]. Je dois ainsi m'assurer que mon nom de domaine réservé 'mondomaine.ca' soit associé à l'adresse IP de mon VPS reçue de mon hébergeur (OVH) :
{{ vps-ovh-jl-yunohost-cloudflare-config-1.png?800 |}}
* Pour plus d'information au sujet de la configuration des DNS, voir [[https://yunohost.org/#/dns|DNS : système de nom de domaine]] du site Yunohost
* 'J'ai configuré mes DNS correctement'
* Saisi **mondomaine.ca** (mon nom de domaine réservé)
* Note : C'est le premier nom de domaine (principal) lié à votre serveur YunoHost, mais également celui qui servira pour le portail d'authentification. Il sera donc visible pour tous vos utilisateurs, choisissez-le avec soin.
* Voir aussi [[https://linuq.org/auto-heber/nom_domaine|Création d'un nom de domaine]])
* 'Suivant'
* Mot de passe du compte administrateur : Choisissez et entrez un mot de passe sécurisé pour le compte administrateur. Je vous suggère de le conserver dans l'application [[https://www.keepassx.org/|KeePassX]] (ou KeePass)
* Bouton 'Go!'
* 'Vous êtes sur le point de lancer le processus de post-installation sur le domaine mondomaine.ca. Cela peut prendre du temps, **n'interrompez pas l'opération avant la fin**.
* Bouton 'OK' (prend 2 min sur un VPS comparativement à entre 20 et 60 min sur un RPi en fonction de la vitesse de la carte SD)
* Patienter le Pac-Man...(env 2 min)
* 'La post-installation est terminée, mais YunoHost a besoin d’au moins un utilisateur pour fonctionner correctement. Vous devez en ajouter un en utilisant « yunohost user create » ou l’interface d’administration.' (je le ferai plus tard par l'interface)
* Vous avez maintenant installé YunoHost sur votre serveur. Dans l'étape suivante, vous vous connecterez à votre nouvelle instance YunoHost pour configurer et gérer les domaines.
===== Première connexion à mon serveur Yunohost via Firefox =====
* Dans l'interface Web, coller le mot de passe du compte d'administration créé précédemment (KeePassX)
* Message 'Connecté' (en haut de la page)
{{ vps-ovh-jl-yunohost-premiere-connection-1.png?1000 |}}
* Il est possible que votre navigateur reconnaisse le nouveau nom de domaine et change l'adresse en https://mondomaine.ca/yunohost/admin/#/login
* Sinon, changer l'adresse IP dans l'URL par votre nom de domaine (https://mondomaine.ca/yunohost/admin/#/)
* Message : 'La connexion n’est pas sécurisée'
{{ vps-ovh-jl-yunohost-premiere-connection-2.png?600 |}}
* Encore une fois, bouton 'Avancé' :
* Bouton 'Ajouter une exception...' de sécurité pour ce site
* Dans la fenêtre 'Ajout d'une exception de sécurité', bouton 'Confirmer l'exception de sécurité' :
{{ vps-ovh-jl-yunohost-premiere-connection-3.png?400 |}}
* Votre navigateur reconnaît maintenant votre nouveau nom de domaine :
{{ vps-ovh-jl-yunohost-premiere-connection-4.png?1000 |}}
* Connectez-vous avec le mot de passe d'administration de Yunohost
* Explorez les différents menus et notez la version actuelle 3.4.2.4 stable (visible en bas à droite de la page, sinon dans le menu Outils / Version)
* Restez connecté pour la suite.
===== Vérifier les ports Yunohost =====
* La page de vérification ci-dessous affiche l'état des ports utilisés actuellement par Yunohost. Ceux qui sont fermés en rouge et les ouverts en vert.
* Aller à https://ports.yunohost.org/?
* Saisir votre nom de domaine (ou son adresse IP)
* Bouton 'Check' :
{{VPS-OVH-jl-yunohost-ports-check-1.png?800|}}
* On voit que le port 22 est désactivé, suite à sa désactivation précédente pour SSH au profit d'un autre port.
===== Mettre à jour le système de Yunohost =====
* Le but est de mettre à jour la version actuelle 3.4.2.4 stable provenant dépôt GitHub de Yunohost en sa version la plus récente
* Ce qu'il y a de nouveau ? [[https://forum.cabane-libre.org/topic/453/yunohost-des-versions-de-3-0-%C3%A0-3-3|YunoHost des versions de 3.0 à 3.3]]
* Connecté avec le compte 'admin' dans Yunohost, sélectionner 'Mettre à jour le système' (voir le 'Pac-Man, env. 2 min)
* Soit aucun paquet ne sera à mettre à jour, soit certains le seront. Dans ce dernier cas, allez en bas de la liste bouton 'Mettre à jour tous les paquets' (confirmer). (voir le 'Pac-Man) (la mise à jour du système est plus rapide sur un VPS que sur un RPi)
* Vérification de la version de Yunohost : 3.4.2.4 (stable)
===== Création d'utilisateurs =====
Récapitulons la liste des comptes à ce jour...
Chez votre hébergeur VPS :
* Compte 'client' pour accéder à votre 'espace client' chez notre hébergeur de VPS
* Compte 'root' pour administrer le VPS (à qui nous avons retiré la possibilité de se connecter par SSH, par sécurité)
* Compte //poweruser// membre du groupe //sudoer// pour l'administration courante du VPS (évite d'utiliser le compte 'root'), pouvant se connecter par SSH
Pour votre serveur Yunohost (installé sur votre VPS) :
* Compte 'administration' pouvant administrer Yunohost (comme mettre à jour le système Yunohost, créer d'autres comptes Yunohost, installer des applications, etc.)
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') :
* Connecté en administrateur dans l'interface graphique de Yunohost, aller dans le menu 'Utilisateurs'.
* Créer ce 2e compte administrateur (sauvegarder dans KeePassX)
* Noter que son courriel doit se terminer par votre nom de domaine (voir [[https://yunohost.org/#/email_fr|Emails Yunohost]])
* Dans les comptes Yunohost mêmes, il n'y a pas de possibilité de sélection pour le type 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 :
* compte utilisateur 1 : Prénom Nom ; un compte non administrateur pour votre propre usage
* compte utilisateur 2 : Prénom Nom ; un compte non administrateur pour un collaborateur
* compte utilisateur 3 : Prénom Nom ; un compte non administrateur pour un collaborateur
* compte utilisateur 4 : Prénom Nom ; un compte non administrateur pour un collaborateur
* compte utilisateur 5 : Visiteur Visiteur ; un compte non administrateur pour un invité ad hoc (démonstrations)
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.
{{VPS-OVH-jl-yunohost-connexion-1.png?200|}}
Saisir le nom et le mot de passe d'un des utilisateurs précédemment créé.
Tous les utilisateurs peuvent :
* 'Éditer mon profil' : Modifier leur mot de passe
* 'Documentation' : Accéder à la documentation : https://yunohost.org/#/docs (Guide de l'utilisateur, Guide de l'administrateur & Guide du contributeur, ainsi qu'à d'autres liens utiles)
* 'Support' : Accéder au support : https://yunohost.org/#/help
* 'Administration : Basculer à l'écran de connexion d'administration (réservé au compte d'administration)
* 'Déconnexion' : mettre fin à leur session
===== 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.
* Pour activer HTTPS sur votre site Web, vous devez obtenir un certificat (un type de fichier) d'une autorité de certification. //Let’s Encrypt// est une autorité de certification. Pour obtenir un certificat pour le domaine de votre site Web à partir de //Let’s Encrypt//, vous devez démontrer le contrôle de ce domaine. Avec //Let’s Encrypt//, vous utilisez un logiciel utilisant le protocole //ACME//, qui s’exécute généralement sur votre hôte Web. Pour informations: [[https://letsencrypt.org/getting-started/|Let's Encrypt Getting started]]
* Suivre les instructions de cette page : https://yunohost.org/#/certificate_fr
* Vérification que mon DNS est correctement configuré (mon domaine pointe sur l'IP de mon serveur) et mon site est accessible en HTTP depuis l'extérieur (testé l'adresse sur mon mobile http://mondomaine.ca/yunohost/ et 'Cette connexion n'est pas certifiée').
* J'ai choisi de l'installer avec les lignes de commandes.
* Vérifier le statut du certificat actuel :
sudo yunohost domain cert-status mondomaine.ca
* Installer le certificat :
sudo yunohost domain cert-install mondomaine.ca --force --no-checks
* Réponse :
{{ :auto-heber:vps-ovh-jl-yunohost-lets-encrypt-install-1.png?600 |}}
Vérification dans 'Domaines', sélectionner votre domaine, 'Certificat SSL':
{{ :auto-heber:jl-yunohost-certificat-lets-encrypt-installe.png?600 |}}
* Une fois l'installation effectuée, vous pouvez vous rendre sur votre domaine via votre navigateur, en HTTPS (si ce n'était pas le cas), pour vérifier que votre certificat est bien signé par //Let's Encrypt//. (Le triangle orange avec point d'exclamation 'exception' sera remplacé par un cadenas vert 'Vérifié par : Let's Encrypt'.)
* Le certificat sera renouvelé automatiquement tous les trois mois environ. Vous recevrez un courriel à ce moment afin de le renouveler.
* Enfin, si vous exécutez à nouveau la commande **sudo yunohost domain cert-status mondomaine.ca**, ceci aura changé :
* CA_type : Self-signed -> **Let's Encrypt**
* Summary : WARNING -> **Great!**
* Validity : 3649 -> **89** (nombre de jours restants avant son échéance)
* Au besoin, consultez la page https://www.digitalocean.com/community/tutorials/how-to-install-yunohost-on-debian-9 (configurations DNS pour certaines applications & installation //Lets Encrypt//, etc.)
===== 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 [[:auto-heber:yuno_gestion|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 [[:auto-heber:vps_yunoapps|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.