Outils pour utilisateurs

Outils du site


documentation:yunohost:vps_pingfiles

Auto-hébergement | Installation de YunoHost sur un VPS chez PingFiles

(VPS : Serveur Privé Virtuel ou Virtual Private Server) sur une base Debian 8 en 64bits (en cours de relecture)

PingFiles : https://www.pingfiles.com/ | https://www.pingfiles.com/serveur-prive-virtuel.html

Debian : https://www.debian.org/index.fr.html

YunoHost : https://yunohost.org/ | https://yunohost.org/#/install_on_debian_fr

Let’s Encrypt : https://letsencrypt.org/

Ne pas opter pour un VPS de type OpenVZ. La virtualisation logiciel ne convient pour installer YunoHost.

Il faut choisir un VPS de type KVM dont la virtualisation est matériel.

Toujours choisir une offre avec une adresse en IPv4 car tous les équipements ne supportent pas l'IPv6.

Le déploiement de YunoHost se fait sur un serveur Debian 8 fraîchement installé sans aucune autre instance pré-installée ou en cours de fonctionnement. Les scripts de configuration peuvent casser/reconfigurer des configurations existantes sur d'autres instances qui auraient été installées avant son déploiement.
En ayant choisi la première offre VPS P-5 en virtualisation matériel (KVM), il faut compter environ 3/4 d'heure en enchaînant les commandes pour se connecter au panel d'administration de son installation YunoHost, et ainsi pouvoir commencer à créer son premier utilisateur puis installer sa première application.

Prérequis

Gérer son serveur et les données qui y sont stockées demande, entre autres, de mettre en place des dispositifs de sécurisation du serveur ainsi que des solutions de sauvegardes qui ne seront pas abordés ici.
Générer des mots de passe forts est essentiel. https://doc.ubuntu-fr.org/pwgen

VPS et Debian 8 chez PingFiles

Après avoir créer son compte et commandé un VPS “KVM” dont la virtualisation est matériel, il faut dans le panel PingFiles :

  • arrêter le VPS ;
  • changer le nom d'hôte en “YunoHost” ;
  • Réinstaller le système en choisissant Debian 8 en 64 Bits et en définissant le mot de passe root.
Par précaution, bien attendre au moins 2 minutes suite à la réinstallation de Debian 8 en 64 Bits avant de démarrer l'installation de YunoHost … même un peu plus, genre 5 minutes, que tout soit bien en place et démarré comme il faut.

Préparation du serveur

La suite des commandes suivantes vous permettra d'installer YunoHost sur un VPS PingFiles et sur une base Debian 8 :

  • Connexion en ssh (avec le mot de passe défini lors de la création de son compte VPS PingFiles)
ssh root@ip_assignee_du_VPS_PingFiles
  • Mettre à l'heure pour la France :
dpkg-reconfigure tzdata
Europe
Paris
Appuyez sur “e” pour “Europe” puis valider par “Entrée” Appuyez sur “p” pour “Paris” puis valider par “Entrée”
  • Mettre les locales en français :
dpkg-reconfigure locales
Faites défiler avec la flèche du bas pour choisir “fr_FR.UTF-8”.

[*] fr_FR.UTF-8 UTF-8

La “barre d'espace” au clavier permet de sélectionner/désélectionner et valider par “Entrée”.

Choisissez fr_FR.UTF-8 par défaut et valider par “Entreé”

  • Ensuite on fait une vérification de son /etc/apt/sources.list pour ne pas passer de Debian 8 à Debian 9 lors des mises à jours car *YunoHost n'est pas encore porté sous Debian 9*.
cat /etc/apt/sources.list

Il doit ressembler à ça :

deb http://ftp.debian.org/debian jessie main contrib non-free
deb http://ftp.debian.org/debian jessie-updates main contrib non-free
deb http://security.debian.org jessie/updates main contrib non-free

S'il y a “stable” à la place de “jessie”, ou bien “stretch” à la place de “jessie” alors il vous faut changer tout ça :

apt-get install nano
nano /etc/apt/sources.list
Faites alors les changements puis :
  • Ctrl+O pour enregistrer
  • Ctrl+X pour sortir

Sinon :

sed -i 's|stable|jessie|' /etc/apt/sources.list
sed -i 's|stretch|jessie|' /etc/apt/sources.list
  • Ensuite on fait une mise à jour :

apt-get update

apt-get dist-upgrade
Appuyer sur “q” pour ne pas lire le “changelogs” … sauf si ça vous intéresse ;-)
Configuring grub-pc

Valider en appuyant sur “Entrée”

Déplacez-vous avec la touche “Tabulation” sur la première ligne, puis sélectionner en appuyant sur la “Barre d'espace” afin d'avoir cela :

[*] /dev/sda (21474 MB; QEMU_HARDDISK)
[ ] - /dev/sda1 (20401 MB; /)

Toujours avec la touche “Tabulation”, déplacez-vous sur <Ok> et validez avec la touche “Entrée”

apt-get autoremove apache2.2 bind9

Installation de YunoHost et première post-installation

  • L'installation de YunoHost se fait en clonant un le dépôt du script d'installation dan le répertoire /tmp. Puis, en se positionnant dans le répertoire /tmp, il suffit d'exécuter le script d'installation :
apt-get install git dialog
git clone https://github.com/YunoHost/install_script /tmp/install_script
cd /tmp/install_script && ./install_yunohost
Si vous avez répondu “non” à la question “voulez-vous procéder à la post-installation ?” vous pouvez y revenir avec cette commande
yunohost tools postinstall
  • Pour finir, et avant un redémarrage du tout, on vérifie que tout soit bien à jour et nettoyé au niveau des paquets :
apt-get update
apt-get dist-upgrade
apt-get autoclean
apt-get autoremove
reboot

Seconde post-installation de YunoHost

Rendez-vous sur la page d'accueil de votre YunoHost via votre navigateur en suivant le lien construit de la manière suivante :

https://ip.assignee.du.VPS-PingFiles/yunohost/admin ou https://mon_nom_de_domaine/yunohost/admin/

A vous de créer votre premier utilisateur, PUIS, d'installer les premières applications.

Le premier champ “Nom d'utilisateur” ne doit pas contenir d'espace. C'est ce champ qui servira à l'identification de l'utilisateur ici https://ip_assignee_du_VPS_PingFiles/yunohost/sso ou là https://mon.nom.de.domaine/yunohost/sso.
La documentation est ici https://yunohost.org/#/docs_fr et le forum par là https://forum.yunohost.org/ .

A vous de jouer maintenant !

Si tout vous convient mais que l'espace vous manque et/ou que la configuration est un peu légère, alors n'hésitez pas à upgrader votre offre pour passer à la vitesse supérieure. ;-)

Pour mémoire

L'adresse d'administration de votre YunoHost est https://monserveur.org/yunohost/admin/ et l'adresse du portail de votre YunoHost est https://monserveur.org/.

Pour régénérer les services :
yunohost service regen-conf

Pour mettre à jour la liste des applications YunoHost :

yunohost app fetchlist

Pour mettre à jour les applications YunoHost :

yunohost app upgrade

Pour faire une sauvegarde :

mkdir /home/yunohost.backup/archives
yunohost backup create

Pour récupérer une sauvegarde depuis son serveur vers le /home de son ordinateur (avec 1234 comme port SSH ; avec IP_ou_NDD comme adresse IP [locale ou pas] ou NDD son Nom De Domaine ; avec $USER son nom d'utilisateur ; avec aaaammjj-hhmmss comme par exemple 20161002-084907 [nom de la sauvegarde YunoHost]) :

scp -P 1234 root@IP_ou_NDD:/home/yunohost.backup/archives/aaaammjj-hhmmss.tar.gz /home/$USER
scp -P 1234 root@IP_ou_NDD:/home/yunohost.backup/archives/aaaammjj-hhmmss.info.json /home/$USER

Sur le même principe que précédemment, envoyer une sauvegarde depuis le /home de son ordinateur vers son serveur (s'assurer que le dossier archive existe bien sinon lancer une première sauvegarde ou bien en dernier recours créer le dossier en root : mkdir /home/yunohost.backup/archives) :

scp -P 1234 /home/$USER/aaaammjj-hhmmss.info.json root@IP_ou_NDD:/home/yunohost.backup/archives
scp -P 1234 /home/$USER/aaaammjj-hhmmss.tar.gz root@IP_ou_NDD:/home/yunohost.backup/archives

Pour restaurer une sauvegarde :

yunohost backup restore nom_de_la_sauvegarde

Sources pour la sauvegarde :

Pour retirer l'accès d'une application à un utilisateur :

yunohost app removeaccess application -u utilisateur

au pluriel :

yunohost app removeaccess app1 app2 app3 -u user1 user2 user3

Pour redonner l'accès d'une application à un utilisateur :

yunohost app addaccess application -u utilisateur

au pluriel :

yunohost app addaccess app1 app2 app3 -u user1 user2 user3

Source : https://forum.yunohost.org/t/suggestion-refuser-lacces-dune-application-a-un-utilisateur/3266

Vous pouvez aussi contribuer à ce projet ici https://yunohost.org/#/contribute_fr.

Pour aller plus loin ...

Les sections suivantes sont destinées aux utilisateurs avancés car de mauvais réglages et/ou paramétrages peuvent, à minima, altérer la sécurité mise en place par défaut des applications et du serveur Yunohost, voire engendrer de plus gros soucis.

Être averti par mail lors d'une connexion ssh au serveur :

Il faut installer mailutils pour que la fonction mail du script fonctionne :

apt-get install mailutils

Ensuite, il faut créer, ou éditer s'il existe, le fichier /etc/ssh/sshrc.

nano /etc/ssh/sshrc

Entrer lignes suivantes en adaptant à minima l'adresse mail de réception :

#!/bin/sh
# source: http://blog.uggy.org/post/2009/06/05/...
DATE=`date "+%d.%m.%Y--%Hh%Mm"`
IP=`echo $SSH_CONNECTION | awk '{print $1}'`
REVERSE=`dig -x $IP +short`
echo "Connexion de $USER sur $HOSTNAME
IP: $IP
ReverseDNS: $REVERSE
Date: $DATE

" | mail -s "Connexion de $USER sur $HOSTNAME" moi@mon.domaine.ndd.net

Ensuite, redémarrer ssh :

service ssh restart

Source : http://yeuxdelibad.net/Logiciel-libre/Installation_et_securisation_d_un_serveur_auto-heberge.html#surveiller

Être averti par SMS lors d'une connexion ssh au serveur pour les "Free-Mobilonautes" :

Pour les “Free-Mobilonautes”, il est aussi possible d'être averti en plus par un SMS. Il suffit d'ajouter au fichier précédent le script suivant (à adapter avec l'identifiant et la clé de l'API après avoir activé l'option de notification par SMS sur le panel client Free https://mobile.free.fr/moncompte/ ) :
  • Ajouter aux lignes du paragraphes précédent celles-ci :
# 
# Script d'envoi de notification SMS via l'API Free Mobile
# https://github.com/C-Duv/freemobile-smsapi-client
# 
# Auteur: DUVERGIER Claude (http://claude.duvergier.fr)
# 
# Nécessite: sed, sh et wget
# 
# Possible usages:
#   send-notification.sh "All your base are belong to us"
#   echo "All your base are belong to us" | send-notification.sh
#   uptime | send-notification.sh


##
## Configuration système
##

# Caractère de fin de ligne (http://en.wikipedia.org/wiki/Percent-encoding#Character_data)
NEWLINE_CHAR="%0D" # Valeurs possibles : %0A, %0D et %0D%0A

# URL d'accès à l'API
SMSAPI_BASEURL="https://smsapi.free-mobile.fr"

# Action d'envoi de notification
SMSAPI_SEND_ACTION="sendmsg"


##
## Configuration utilisateur
##

# Login utilisateur / identifiant Free Mobile (celui utilisé pour accéder à l'Espace Abonné)
USER_LOGIN="1234567890"

# Clé d'identification (générée et fournie par Free Mobile via l'Espace Abonné, "Mes Options" : https://mobile.free.fr/moncompte/index.php?page=options)
API_KEY="s0me5eCre74p1K3y"

# Texte qui sera ajouté AVANT chaque message envoyé
MESSAGE_HEADER="Notification :${NEWLINE_CHAR}"

# Texte qui sera ajouté APRÈS chaque message envoyé
MESSAGE_FOOTER="${NEWLINE_CHAR}--${NEWLINE_CHAR}Le serveur de la maison"


##
## Traitement du message
##

MESSAGE_TO_SEND=""
if [ "$1" ]; then # Message en tant qu'argument de la ligne de commande
    MESSAGE_TO_SEND="$1"
else # Message lu de STDIN
    while read line
    do
        MESSAGE_TO_SEND="$MESSAGE_TO_SEND$line$NEWLINE_CHAR"
    done
    MESSAGE_TO_SEND=$(echo $MESSAGE_TO_SEND | sed 's/'$NEWLINE_CHAR'$//') # Retire le dernier saut de ligne
fi

FINAL_MESSAGE_TO_SEND="$MESSAGE_HEADER$MESSAGE_TO_SEND$MESSAGE_FOOTER" # Assemble header, message et footer

##
## Appel à l'API (envoi)
##

# echo "Will send the following to $USER_LOGIN:" #DEBUG
# echo "$FINAL_MESSAGE_TO_SEND" #DEBUG

# --insecure : Certificat de $SMSAPI_BASEURL ne fourni pas d'informations sur son propriétaire
# --write-out "%{http_code}" --silent --output /dev/null : Renvoi le code réponse HTTP uniquement
HTTP_STATUS_CODE=$(curl --insecure --get "$SMSAPI_BASEURL/$SMSAPI_SEND_ACTION" --data "user=$USER_LOGIN" --data "pass=$API_KEY" --data "msg=$FINAL_MESSAGE_TO_SEND" --write-out "%{http_code}" --silent --output /dev/null)

# Codes réponse HTTP possibles
# 200 : Le SMS a été envoyé sur votre mobile.
# 400 : Un des paramètres obligatoires est manquant.
# 402 : Trop de SMS ont été envoyés en trop peu de temps.
# 403 : Le service n'est pas activé sur l'espace abonné, ou login / clé incorrect.
# 500 : Erreur côté serveur. Veuillez réessayez ultérieurement.

if [ "$HTTP_STATUS_CODE" -eq 200 ]; then
    # echo "API responded with 200: exiting with 0" #DEBUG
    exit 0
else
    echo "Error: API responded with $HTTP_STATUS_CODE"
    exit 1
fi

Source : https://github.com/C-Duv/freemobile-smsapi-client

  • Ensuite, redémarrer ssh :

service ssh restart

fail2ban

Cela permet de bannir les adresses ip essayant de se connecter “furieusement”. Il est à priori installé par défaut sur Yunohost.

sudo apt-get install fail2ban

Ensuite, il faut éditer le fichier de configuration afin de donner une adresse mail afin d'envoyer les rapports de ban.

nano /etc/fail2ban/jail.conf
findtime = 3600
bantime = 86400
destemail = votre@email.com

Toujours dans ce même fichier, rechercher la ligne qui commence par action = afin de rajouter mwl après le _ afin d'avoir un rapport complet.

action =%(action_mwl)s

Apparemment, il y a beaucoup de brute-force sur sasl, il est donc préférable de commenter cette règle failregex = (?i): warning: [-._\w]+\[<HOST>\]: SASL (?:LOGIN|PLAIN|(?:CRAM|DIGEST)-MD5) authentication failed(: [A-Za-z0-9+/]*={0,2})?$ et appliquer celle-ci failregex = (?i): warning: [-._\w]+\[<HOST>\]: SASL (?:LOGIN|PLAIN|(?:CRAM|DIGEST)-MD5) authentication failed: \w :

nano /etc/fail2ban/filter.d/sasl.conf
#failregex = (?i): warning: [-._\w]+\[<HOST>\]: SASL (?:LOGIN|PLAIN|(?:CRAM|DIGEST)-MD5) authentication failed(: [A-Za-z0-9+/]*={0,2})?$
failregex = (?i): warning: [-._\w]+\[<HOST>\]: SASL (?:LOGIN|PLAIN|(?:CRAM|DIGEST)-MD5) authentication failed: \w

D'autres réglages sont disponibles ici : http://doc.ubuntu-fr.org/fail2ban

Changer le port d'écoute ssh

Editer /etc/ssh/sshd_config :

nano /etc/ssh/sshd_config

Le numéro de port d'écoute est par défaut le 22. En choisir un au delà du numéro 1024, par exemple : 12345.

Ensuite, il faut éditer le fichier de configuration de fail2ban pour lui dire d'écouter le port 12345 au lieu du port 22.

nano /etc/fail2ban/jail.conf 

Dans la section #JAIL au chapitre [ssh] et [ssh-ddos], il faut changer :

port = ssh
par
port = 12345

Ensuite, il faut redémarrer le pare-feux, désactiver l'ancien port dans le pare-feux (a priori le 22), redémarrer le service ssh et recharger le service fail2ban :

yunohost firewall reload
yunohost firewall disallow Both 22
service ssh restart
fail2ban-client reload

Rappels en matière de sécurité : https://yunohost.org/#/security_fr

Installation de logwatch

Si vous souhaitez avoir un historique de ce qui s'est passé sur le serveur la veille, il suffit d'installer logwatch :

apt-get install logwatch
mkdir /var/cache/logwatch

Avant de modifier le fichier de configuration, en faire une copie :

cp /usr/share/logwatch/default.conf/logwatch.conf /usr/share/logwatch/default.conf/logwatch.conf_OLD

Ensuite faire les modifications ici :

 nano /usr/share/logwatch/default.conf/logwatch.conf

Par exemple, l'envoi des rapports sur une adresse électronique et/ou modifier le niveau de détail du résumé généré :

MailTo = moi@mon.domaine.ndd
Detail = Med

Pour lancer logwatch en console :

logwatch

Pour aller plus loin dans la configuration : http://doc.ubuntu-fr.org/logwatch#configuration

Notification des mises à jours de YunoHost par mail

Méthode automatique par une des applications YunoHost (non officielle) :

Entrer l'adresse suivante tout en bas du panel d'installation des applications de votre instance YunoHost et valider :

https://github.com/ldidry/apticron_ynh
Méthode manuelle :

Installation du paquet :

apt-get install apticron

Par défaut l'adresse est root (root@mon-serveur.com)

Pour modifier cette valeur il faut éditer le fichier de configuration d'apticron :

nano /etc/apticron/apticron.conf
et remplacer la valeur
EMAIL="root"
par
EMAIL="moi@ndd.tld"

Source : https://www.bisolweb.com/raspberry-pi/etre-averti-des-mises-jour-par-e-mail-apticron/

Synchronisation avec son appareil Android 4 et +

Les 4 applications sont issues de F-Droid (https://f-droid.org/ | https://fr.wikipedia.org/wiki/F-Droid)

Après avoir installé Nextcloud https://fr.wikipedia.org/wiki/Nextcloud sur son instance YunoHost, il est possible de synchroniser la partie purement “cloud” en installant l'application du client de synchronisation Nextcloud sur son téléphone Android :

https://f-droid.org/packages/com.nextcloud.client/
=> Adresse des données : https://mon_nom_de_domaine/nextcloud/
=> Renseigner les champs suivant suivants :
nom_d_utilisateur
mot_de_passe_de_l_utilisateur

Si les applications “Calendar” et “Contacts” ont été ajoutées à Nextcloud, alors il est possible de synchroniser le calendrier et les contacts en installant DAVdroid sur son téléphone Android :

https://f-droid.org/packages/fr.gaulupeau.apps.InThePoche/
https://f-droid.org/packages/at.bitfire.davdroid/
=> Adresse des données : https://mon_nom_de_domaine/nextcloud/remote.php/dav/
=> Renseigner les champs suivant suivants :
nom_d_utilisateur
mot_de_passe_de_l_utilisateur

Pour plus de détails : https://soozx.fr/synchroniser-lagenda-et-les-contacts-de-nextcloud-et-un-ordinateur/

Si l'application “Phone Sync” dans la catégorie “Multimédia” a été ajoutée à Nextcloud, alors il est possible de synchroniser les SMS en installant Nextcloud SMS sur son téléphone Android :

https://f-droid.org/packages/fr.unix_experience.owncloud_sms/
=> Ajouter un compte
=> Nextcloud SMS
Adresse des données : https://mon_nom_de_domaine/nextcloud/
=> Renseigner les champs suivant suivants :
nom_d_utilisateur
mot_de_passe_de_l_utilisateur
=> Synchroniser un compte
=> Nextcloud SMS

Si l'application “Wallabag” est installée sur votre instance YunoHost, alors il est possible de synchroniser les liens vers vos pages web à lire plus tard à partir de votre téléphone Android :

https://f-droid.org/packages/fr.gaulupeau.apps.InThePoche/
=> Menu
=> Paramètres
=> Connexion
=> Renseigner les champs suivant suivants :
Votre URL wallabag (du type : https://mon_nom_de_domaine/wallabag
nom_d_utilisateur
mot_de_passe_de_l_utilisateur
=> Remplir automatiquement
N'hésitez pas faire un don aux développeurs de ces applications afin qu'ils puissent assurer la pérennité de leur travail.
documentation/yunohost/vps_pingfiles.txt · Dernière modification: le 04-12-2018 à 17h59 (modification externe)