====== Installer Yunohost v2.4.x sur Raspberry Pi et sur la base d'une Raspbian Jessie minimale (totalement expérimental) ====== "YunoHost est un outil qui vous permet d’installer et d’utiliser facilement votre propre serveur." [...] "YunoHost vous permet par défaut de gérer vos adresses mail et de messagerie instantanée via des interfaces simples d’utilisation et de manière sécurisée. Vous pourrez également étendre les fonctionnalités via des apps installables en un click." Plus de détail sur le site de l'éditeur https://doc.yunohost.org/#/index_fr ===== Prérequis ===== * avoir une Raspberry Pi 1B, 1B+ ou 2B raccordée à la box ou au routeur ; * une carte SD compatible avec la Raspberry Pi d'au moins 4 Go et si possible de classe 10 (http://elinux.org/RPi_SD_cards#Working_.2F_Non-working_SD_cards | http://elinux.org/RPi_VerifiedPeripherals#SD_cards) ; * avoir téléchargé la dernière version de raspbian-ua-netinst à cette adresse : https://github.com/debian-pi/raspbian-ua-netinst/ ; * disposer d'une connexion à internet via la box ou le routeur ; * disposer d'un nom de domaine pointant vers l'adresse IP publique de votre Box/routeur. (cf no-ip.org, dyndns, ...) ou alors bénéficier d'un de ceux mis à disposition par Yunohost : https://yunohost.org/#/dns_fr //**Cette méthode est totalement expérimentale. Si vous souhaitez continuer et l'appliquer c'est à vos risques et périls. /!\ Ne fonctionne qu'avec les Raspberry Pi 1B, 1B+ ou 2B (https://github.com/debian-pi/raspbian-ua-netinst/blob/v1.0.9/README.md). Pour les Raspberry Pi 3 ou 3B il faut passer par une image Raspbian lite (http://avignu.wiki.tuxfamily.org/doku.php?id=documentation:yunohost-jessie-v2.5.x-rpi3b).**// //Avec l'éditeur nano, pour enregistrer : Ctrl+O et pour quitter Ctrl+X.// Une image pour tests basée sur Raspbian a été publiée ici : https://forum.yunohost.org/t/universal-raspberry-pi-image/2085 https://mega.nz/#!XgVhQIpT!DDQL3kgg_4A5LeIU5TBW47LijLoPGPLf9LuUN4s04yA ===== Formatage de la carte SD et y copier les fichiers raspbian-ua-netinst ===== Il est nécessaire de : * formater la carte SD en FAT 32 ; * télécharger le fichier zip de la dernière version de raspbian-ua-netinst (https://github.com/debian-pi/raspbian-ua-netinst/releases/) ; * extraire les fichiers du zip sur la carte SD. Insérer la carte dans la Raspberry Pi et branchez la. Lors du démarrage, une installation minimale de Raspbian se fera par le réseau et activera SSH. ===== Connexion en SSH après le redémarrage ===== Une fois redémarré, il faudra se connecter en ssh. Le mot de passe est raspbian ssh root@192.168.xxx.xxx ou ssh root@NomDeDomaine.tld Il est nécessaire de changer le mot de passe root immédiatement : passwd ===== ATTENTION : "Procédure" d'installation totalement expérimentale ===== Dans le genre plus ou moins expérimental, il est aussi possible **sous Raspbian de //mettre à jour le firmware du Raspberry Pi// à vos risques et périls**. sudo apt-get install rpi-update sudo rpi-update reboot Source : https://github.com/Hexxeh/rpi-update Les commandes à appliquer en ssh : ==== Configurer la langue et le fuseau horaire ==== dpkg-reconfigure locales dpkg-reconfigure tzdata ==== Mettre à jour la listes des paquets, installer l'éditeur nano, git, le paquet de configuration du Raspberry, de quoi décompresser des fichiers zip, ... et nettoyer ==== apt-get update apt-get install nano git raspi-config unzip ssl-cert fakeroot gcc apt-get autoclean && apt-get autoremove ==== Installer des paquets avec leurs dépendances afin de permettre l'installation de metronome* ==== A priori non nécessaire avec une Raspberry Pi 3. apt-get -f install lua5.1 liblua5.1-0 libidn11 libssl1.0.0 lua-event lua-expat lua-socket lua-sec lua-filesystem debhelper txt2man quilt liblua5.1-0-dev lua-filesystem libidn11-dev libssl-dev lua-zlib lua-bitop source : https://forum.yunohost.org/t/installation-de-yunohost-2-4-sur-raspbian-jessie-minimal-sur-un-raspberry-pi-3/1597 * sources : https://forum.yunohost.org/t/how-install-yunohost-on-raspberry-pi/1466 https://open-freax.fr/heberger-serveur-xmpp-jappix/ A priori nécessaire pour une Raspberry Pi 0. sudo apt-get install dh-autoreconf quilt Source : https://forum.yunohost.org/t/pi-zero-manual-installation-of-metronome-fails/2386/2 ==== Étendre l'espace disque de la carte SD et changer le nom de la machine ==== raspi-config Expand Filesystem Advanced Option : Hostname : changer pi en YunoHost Reboot : yes ==== Installer metronome manuellement* ==== A priori non nécessaire avec une Raspberry Pi 3. source : https://forum.yunohost.org/t/installation-de-yunohost-2-4-sur-raspbian-jessie-minimal-sur-un-raspberry-pi-3/1597 Sur Raspberry Pi 1, il est nécessaire de refaire cette installation manuelle de metronome afin de pouvoir faire les mises à jour. Cela car metronome dépend de yunohost et inversement. Sans cette réinstallation manuelle de metronome, il reste non-configuré. Empêchant le bon déroulement de la commande //apt-get upgrade// ou //apt-get dist-upgrade// et de la configuration des paquets. wget https://github.com/YunoHost/metronome/archive/debian/3.7.9+33b7572-1.zip unzip 3.7.9+33b7572-1.zip cd metronome-debian-3.7.9-33b7572-1 dpkg-buildpackage -rfakeroot -uc -b -d cd .. dpkg -i metronome_3.7.9+33b7572-1_armhf.deb apt-mark hold metronome * source : https://forum.yunohost.org/t/how-install-yunohost-on-raspberry-pi/1466 Afin de ne pas mettre à jour le paquet metronome une fois installé, il faut le marquer comme à conserver : apt-mark hold metronome Pour démarquer le paquet metronome afin de pouvoir le mettre à jour : apt-mark unhold metronome ==== Enlever apache et redémarrer ==== apt-get autoremove apache2.2 reboot ==== Cloner le script d'installation YunoHost et procéder à l'installation ==== git clone https://github.com/YunoHost/install_script /tmp/install_script cd /tmp/install_script && ./install_yunohost "Normalement", le paquet metronome devrait poser problème et rester non-configuré. A priori ce problème n'est pas rencontré avec une Raspberry Pi 3. source : https://forum.yunohost.org/t/installation-de-yunohost-2-4-sur-raspbian-jessie-minimal-sur-un-raspberry-pi-3/1597 ==== Installer les dépendances manquantes (ce qui reconfigurera le tout), nettoyer et redémarrer ==== apt-get -f install apt-get update && apt-get autoclean && apt-get autoremove shutdown -r now ==== Lancer la post-installation ==== yunohost tools postinstall Il faudra renseigner votre Nom De Domaine et définir un mot de passe d'administration. ==== Configurer GIT ==== git config --global user.email "moi@ndd.tld" git config --global user.name "Votre Nom" ==== Passer en mode "Bêta-test" : YunoHost 2.5.x Testing (instable) | Uniquement pour les utilisateurs avertis ==== Ouvrez un terminal en root : sudo -i Mettez à jour votre instance : apt-get update && apt-get dist-upgrade Indiquez le dépôt testing en lieu et place du dépôt stable : echo 'deb http://repo.yunohost.org/debian/ jessie stable testing' > /etc/apt/sources.list.d/yunohost.list Mettez à jour votre instance (à nouveau) avec les dépôts testing : apt-get update && apt-get dist-upgrade Source : https://forum.yunohost.org/t/yunohost-2-5-0-beta-call-for-beta-testers-and-translators/2243 === Pour revenir en arrière et repasser en mode stable === Ouvrez un terminal root : sudo -i Indiquez le dépôt stable à la place du dépôt testing : echo 'deb http://repo.yunohost.org/debian/ jessie stable' > /etc/apt/sources.list.d/yunohost.list Mise à jour de l'instance : apt-get update && apt-get dist-upgrade N.B.: Votre version ne reviendra à la version stable qu'à la publication de nouveaux paquets stables. Source : https://forum.yunohost.org/t/yunohost-2-5-0-beta-call-for-beta-testers-and-translators/2243 ===== 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 forcer la regénération de la configuration de metronome si nécessaire : yunohost service regen-conf metronome --force Pour ne pas mettre à jour metronome : apt-get upgrade --no-upgrade metronome 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 : * https://yunohost.org/#/backup_fr * https://forum.yunohost.org/t/a-propos-de-la-sauvegarde-yunohost-v2-4/1612/2 Vous pouvez aussi contribuer à ce projet ici https://doc.yunohost.org/#/contribute_fr. A vous de tester et bidouiller car **c'est totalement expérimental !** ;-) ===== 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. sudo 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 : /etc/init.d/ssh restart ou 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", 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/ ) : #!/bin/sh # # 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 ==== cron ==== Pour programmer des tâches, comme par exemple une mise à jour suivi d'une mise à niveau de l'installation, vous pouvez utiliser cron. Plus de détail ici : http://doc.ubuntu-fr.org/cron ==== 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. sudo 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 Ensuite, toujours dans le même fichier, afin d'avoir les rapports sur les principaux services, il faut remplacer false par true dans les parties suivantes : * ssh ; * ssh-ddos ; 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]+\[\]: SASL (?:LOGIN|PLAIN|(?:CRAM|DIGEST)-MD5) authentication failed(: [A-Za-z0-9+/]*={0,2})?$ et appliquer celle-ci failregex = (?i): warning: [-._\w]+\[\]: SASL (?:LOGIN|PLAIN|(?:CRAM|DIGEST)-MD5) authentication failed: \w : nano /etc/fail2ban/filter.d/sasl.conf #failregex = (?i): warning: [-._\w]+\[\]: SASL (?:LOGIN|PLAIN|(?:CRAM|DIGEST)-MD5) authentication failed(: [A-Za-z0-9+/]*={0,2})?$ failregex = (?i): warning: [-._\w]+\[\]: 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 : sudo 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. sudo 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 22 sudo service ssh restart sudo fail2ban-client reload Source : 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 : sudo apt-get install logwatch sudo mkdir /var/cache/logwatch Avant de modifier le fichier de configuration, en faire une copie : sudo cp /usr/share/logwatch/default.conf/logwatch.conf /etc/logwatch/conf/ Ensuite faire les modifications ici : nano /etc/logwatch/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 : sudo logwatch Pour aller plus loin dans la configuration : http://doc.ubuntu-fr.org/logwatch#configuration ===== Pour mémoire : old section ===== ==== Installer quelques paquets supplémentaires et nécessaires à l'installation ==== apt-get install mariadb-server-10.0 postfix slapd Paquets suggérés : apt-get install mailx mariadb-test tinyca postfix-mysql postfix-pgsql sasl2-bin resolvconf postfix-cdb mail-reader ufw postfix-doc libsasl2-modules-gssapi-mit libsasl2-modules-gssapi-heimdal