Afficher/cacher Sommaire
KVM Debian jessie serveur (nginx+php7+mariadb)
Package: 4 GB Mémoire, 2 CPU, 30 GB SSD, 100 Mbps
Selected Location: Paris
Debian jessie 64
Livraison : vps-26381 93.115.96.97
- IPv4 du serveur : 93.115.96.97
- IPv6 du serveur : 2a03:75c0:35:670d::1
Première connexion SSH
Via SSH
ssh root@93.115.96.97
Màj
apt update && apt upgrade
Locales
Locales : fr_FR.UTF-8
dpkg-reconfigure locales
Generating locales (this might take a while)...
fr_FR.UTF-8... done
Generation complete.
TimeZone
Europe/Paris
dpkg-reconfigure tzdata
Current default time zone: 'Europe/Paris'
Local time is now: Mon Oct 2 19:48:09 CEST 2017.
Universal Time is now: Mon Oct 2 17:48:09 UTC 2017.
Création utilisateur
Utilisateur jessie
useradd -m -d /home/jessie/ -s /bin/bash jessie
Mot de passe jessie
passwd jessie
Visudo pour les accès root via utilisateur jessie
apt install sudo
echo "jessie ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
Déconnexion puis connexion ssh en mode utilisateur
ssh jessie@93.115.96.97
DNS OVH
Configuration des champs DNS domaine yanfi.net
$TTL 3600
@ IN SOA dns110.ovh.net. tech.ovh.net. (2017123100 86400 3600 3600000 300)
IN NS ns110.ovh.net.
IN NS dns110.ovh.net.
IN A 93.115.96.97
IN AAAA 2a03:75c0:35:670d::1
* IN CNAME yanfi.net.
SSH
connexion avec clé
sur l'ordinateur de bureau
Générer une paire de clé curve25519-sha256 (ECDH avec Curve25519 et SHA2) nommé kvm-vps-26381 pour une liaison SSH avec le serveur KVM.
ssh-keygen -t ed25519 -o -a 100 -f ~/.ssh/kvm-vps-26381
Envoyer la clé publique sur le serveur KVM
scp ~/.ssh/kvm-vps-26381.pub jessie@93.115.96.97:/home/jessie/
sur le serveur KVM
On se connecte
ssh jessie@93.115.96.97
Copier le contenu de la clé publique dans /home/$USER/.ssh/authorized_keys
$ cd ~
Sur le KVM ,créer un dossier .ssh
pwd #pour vérifier que l'on est sous /home/$USER
mkdir .ssh
cat /home/$USER/kvm-vps-26381.pub >> /home/$USER/.ssh/authorized_keys
et donner les droits
chmod 600 /home/$USER/.ssh/authorized_keys
effacer le fichier de la clé
rm /home/$USER/kvm-vps-26381.pub
Modifier la configuration serveur SSH
sudo nano /etc/ssh/sshd_config
Modifier
Port = 55026
PermitRootLogin no
PasswordAuthentication no
session SSH ne se termine pas correctement lors d'un "reboot" à distance
Si vous tentez de redémarrer/éteindre une machine distance par ssh, vous pourriez constater que votre session ne se termine pas correctement, vous laissant avec un terminal inactif jusqu’à l’expiration d’un long délai d’inactivité. Il existe un bogue 751636 à ce sujet. Pour l’instant, la solution de contournement à ce problème est d’installer :
sudo apt install libpam-systemd #Installer par défaut sur debian jessie
cela terminera la session ssh avant que le réseau ne tombe.
Veuillez noter qu’il est nécessaire que PAM soit activé dans sshd.
Relancer openSSH
sudo systemctl restart sshd
Accès depuis le poste distant avec la clé privée
$ ssh -p 55028 -i ~/.ssh/kvm-vps-26381 jessie@93.115.96.97
Exécution script sur connexion
Exécuter un fichier utilisateur nommé $HOME/.ssh/rc si présent
Pour tous les utilisateurs exécuter un fichier nommé /etc/ssh/sshrc si présent
Installer les utilitaires curl jq figlet
sudo apt install curl jq figlet
Le batch
nano ~/.ssh/rc
#!/bin/bash
#clear
PROCCOUNT=`ps -Afl | wc -l` # nombre de lignes
PROCCOUNT=`expr $PROCCOUNT - 5` # on ote les non concernées
GROUPZ=`users`
ipinfo=$(curl -s ipinfo.io) # info localisation format json
publicip=$(echo $ipinfo | jq -r '.ip') # extraction des données , installer préalablement "jq"
ville=$(echo $ipinfo | jq -r '.city')
pays=$(echo $ipinfo | jq -r '.country')
cpuname=`cat /proc/cpuinfo |grep 'model name' | cut -d: -f2 | sed -n 1p`
echo "\033[0m\033[1;31m"
figlet "yanfi.net"
echo "\033[0m"
echo "\033[1;35m \033[1;37mHostname \033[1;35m= \033[1;32m`hostname`
\033[1;35m \033[1;37mWired Ip \033[1;35m= \033[1;32m`ip addr show eth0 | grep 'inet\b' | awk '{print $2}' | cut -d/ -f1`
\033[1;35m \033[1;37mKernel \033[1;35m= \033[1;32m`uname -r`
\033[1;35m \033[1;37mDebian \033[1;35m= \033[1;32m`cat /etc/debian_version`
\033[1;35m \033[1;37mUptime \033[1;35m= \033[1;32m`uptime | sed 's/.*up ([^,]*), .*/1/' | sed -e 's/^[ \t]*//'`
\033[1;35m \033[1;37mCPU \033[1;35m= \033[1;32m`echo $cpuname`
\033[1;35m\033[1;37mMemory Use \033[1;35m= \033[1;32m`free -m | awk 'NR==2{printf "%s/%sMB (%.2f%%)\n", $3,$2,$3*100/$2 }'`
\033[1;35m \033[1;37mUsername \033[1;35m= \033[1;32m`whoami`
\033[1;35m \033[1;37mSessions \033[1;35m= \033[1;32m`who | grep $USER | wc -l`
\033[1;35m\033[1;37mPublic Ip \033[1;35m= \033[1;32m`echo $publicip $pays`
\033[0m"
curl fr.wttr.in/Paris?0
Effacer motd
sudo rm /etc/motd
Déconnexion puis connexion
Yunohost
Une fois que vous avez accès à votre serveur, directement ou par SSH, vous pouvez installer YunoHost avec le script d’installation.
Installer git
sudo apt install git
Cloner le dépôt du script d’installation de YunoHost
git clone https://github.com/YunoHost/install_script /tmp/install_script
Lancer le script d’installation
cd /tmp/install_script && sudo ./install_yunohost
Postinstall
Domaine principal : yanfi.net
Mot de passe administration : xxxxxxx
Erreur dnsmasq , il faut désactiver bind9
sudo systemctl stop bind9 && sudo systemctl disable bind9
Puis relancer dnsmasq
sudo systemctl restart dnsmasq
Connexion administrateur sur https://yanfi.net/yunohost/admin/#/login
DNS OVH
$TTL 3600
@ IN SOA dns110.ovh.net. tech.ovh.net. (2017123111 86400 3600 3600000 300)
IN NS ns110.ovh.net.
IN NS dns110.ovh.net.
IN MX 10 yanfi.net.
IN A 93.115.96.97
IN AAAA 2a03:75c0:35:670d::1
600 IN TXT "v=spf1 a mx ip4:93.115.96.97 ip6:2a03:75c0:35:670d::1 -all"
_dmarc IN TXT "v=DMARC1; p=none"
_xmpp-client._tcp 3600 IN SRV 0 5 5222 yanfi.net.
_xmpp-server._tcp 3600 IN SRV 0 5 5269 yanfi.net.
mail._domainkey IN TXT ( "v=DKIM1; k=rsa; t=s; s=email; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQChqgKsvUMn3XJb+GEowf0CTRrE4PHDJh/M13d5lNKKKI0hzcB62yb0hAaIubKFU22/eYqAEIzHjxsqyHwOTSKRnpzYneHL0+ZAz+q/1cwrufHByTsXLg36GbLDLaLvgCTVdjMSmnsfOZBTg8XBcDWxQQeANwLYupYmLbckgyvXNQIDAQAB" )
muc 3600 IN CNAME yanfi.net.
pubsub 3600 IN CNAME yanfi.net.
vjud 3600 IN CNAME yanfi.net.
Utilisateurs
Création des utilisateurs
Applications
nextcloud
Se connecter à nextcloud avec l’utilisateur qui a été désigné comme administrateur
Clic sur la “roue dentelée” et “+ Applications” , sélectionner “Pack d’applications” puis “Pack pour travail collaboratif” et Tout activer
Cette opération va activer Calendar , Contacts et Talk
Erreurs VPS
Des erreurs non blocantes au démarrage du vps
sudo journalctl -b 0 -p err
-- Logs begin at dim. 2017-12-31 16:33:23 CET, end at dim. 2017-12-31 19:30:02 CET. --
déc. 31 16:33:23 yanfi.net kernel: [drm:vmw_driver_load] *ERROR* Hardware has no pitchlock
déc. 31 16:33:23 yanfi.net systemd-udevd[200]: Failed to apply ACL on /dev/dri/card0: No such file or directory
déc. 31 17:32:17 yanfi.net kernel: do_IRQ: 0.66 No irq handler for vector (irq -1)
déc. 31 18:30:34 yanfi.net kernel: do_IRQ: 1.196 No irq handler for vector (irq -1)
Correction des erreurs
sudo nano /etc/default/grub
Modifier comme suit les lignes
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nomodeset"
GRUB_CMDLINE_LINUX="pci=nomsi,noaer"
Générer un nouveau fichier de configuration avec la commande “grub-mkconfig”
sudo grub-mkconfig -o /boot/grub/grub.cfg
Création du fichier de configuration GRUB…
Image Linux trouvée : /boot/vmlinuz-3.16.0-4-amd64
Image mémoire initiale trouvée : /boot/initrd.img-3.16.0-4-amd64
fait
Redémarrer et vérifier
sudo journalctl -b 0 -p err
-- Logs begin at dim. 2017-12-31 20:16:09 CET, end at dim. 2017-12-31 20:17:42 CET. --
Sauvegarde distante (shuttle )
Autoriser un serveur distant à se connecter via ssh pour y exécuter rsync
Installer rsync
sudo apt install rsync # debian
Ajout utilisateur de backupuser qui ne peut exécuter que rsync et de la clé publique du “serveur de sauvegarde”
#création utilisateur backup
sudo useradd backupuser -c "limited backup user" -m -u 4210
#ajout clé publique ssh dans le fichier authorized_keys du nouvel utilisateur
sudo mkdir /home/backupuser/.ssh
sudo nano /home/backupuser/.ssh/authorized_keys #coller le contenu /home/backupuser/.ssh/id_rsa.pub copié sur terminal du serveur shuttle (yanspm.com)
Création script bash rsync-wrapper.sh
sudo nano /home/backupuser/rsync-wrapper.sh
Contenu du script
#!/bin/sh
date > /home/backupuser/backuplog
#echo $@ >> /home/backupuser/backuplog
/usr/bin/sudo /usr/bin/rsync "$@";
Droits sur le fichier
sudo chown backupuser:backupuser /home/backupuser/rsync-wrapper.sh
sudo chmod 755 /home/backupuser/rsync-wrapper.sh
Edition fichier sudoers pour un accès root à l’exécution de rsync
sudo -s
Ajouter ligne suivante en fin de fichier,exécution en mode root de rsync
echo "backupuser ALL=NOPASSWD: /usr/bin/rsync" >> /etc/sudoers
exit
Mémoire cache
Libère la mémoire des données cache et tampon
sudo -s
sync; echo 3 > /proc/sys/vm/drop_caches
La commande sync permet de s’assurer que toutes les informations en mémoire en attente d’écriture soient bien répercutées sur le disque
Créer une tâche pour vider le cache tous les jours
sudo -s
crontab -e
Ajouter en fin de fichier
0 12 * * * sync; echo 3 > /proc/sys/vm/drop_caches
Sauvegarde locale (yunohost backup)
Prérequis : vérifier que le dossier archives
existe bien dans le dossier /home/yunohost.backup/
sinon le créer via un
sudo mkdir -p /home/yunohost.backup/archives
Donner les droits d’accès aux archives au groupe de l’utilisateur $USER :
sudo chown -Rv root:$USER /home/yunohost.backup
Automatiser la sauvegarde locale
UNIQUEMENT VALABLE si vous avez installé “Sauvegarde distante (shuttle )”
Créer un bash pour la sauvegarde yunohost
sudo nano /home/backupuser/savyuno.sh
#!/bin/bash
DOMAINE="yanfi.net"
rm /home/backupuser/$DOMAINE.info.json
rm /home/backupuser/$DOMAINE.tar.gz
/usr/bin/yunohost backup create -n $DOMAINE
mv /home/yunohost.backup/archives/$DOMAINE.info.json /home/backupuser/
mv /home/yunohost.backup/archives/$DOMAINE.tar.gz /home/backupuser/
droits
sudo chmod +x /home/backupuser/savyuno.sh
Ordonnancement des tâches via Cron ,sauvegarde yunohost tous les jours à 2h15
sudo -s
crontab -e
Ajouter en fin de fichier
15 2 * * * /home/backupuser/savyuno.sh
Mises à jour de sécurité Debian
Toutes les instructions suivantes sont exécutées après passage en mode su ou sudo
Vérifier si la redirection des messages “root” est paramétrée (normalement réalisée à l’installation yunohost)
echo "hello world" |mail -s test root
si ok, on pourra paramétrer MAILTO=”root”
L’automatisation sera prise en charge par l’outil cron-apt. Cron-apt permet de vérifier à intervalle régulier, via le crontab , si des mises à jours sont disponibles et va les installer.
apt install cron-apt
Création du fichier security.sources.list utilisé par cron-apt et qui ne contiendra que le(s) dépôt(s) de sécurité Debian.
grep security /etc/apt/sources.list > /etc/apt/security.sources.list
Création du fichier de configuration de cron-apt /etc/cron-apt/config
APTCOMMAND=/usr/bin/apt
OPTIONS="-o quiet=1 -o Dir::Etc::SourceList=/etc/apt/security.sources.list"
MAILTO="root"
MAILON="always"
Pour déclencher la mise à jour automatique après téléchargement , supprimer option -d dans le fichier /etc/cron-apt/action.d/3-download
dist-upgrade -y -o APT::Get::Show-Upgraded=true
Test immédiat
cron-apt
Patienter quelques minutes!
Par défaut l’exécution est programmée à 4h00 chaque jour, pour spécifier un créneau horaire modifier le fichier /etc/cron.d/cron-apt.