Afficher/cacher Sommaire
KVM Debian jessie 64
KVM OpenStack
1 vCore(s)
2,4 GHz
4 Go de RAM
20 Go SSD
Local RAID 10
Selected Location: Strasbourg
Debian jessie 64
Livraison : vps506197
- IPv4 du serveur : 164.132.104.145
- IPv6 du serveur : 2001:41d0:0401:3200:0000:0000:0000:06e7
Première connexion SSH
Via SSH
ssh root@164.132.104.145
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: Sun Jan 21 08:26:54 CET 2018.
Universal Time is now: Sun Jan 21 07:26:54 UTC 2018.
Création utilisateur
Utilisateur jessie
useradd -m -d /home/jessie/ -s /bin/bash jessie
Mot de passe jessie et root
passwd jessie
passwd root
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@164.132.104.145
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 164.132.104.145
IN AAAA 2001:41d0:401:3200::6e7
* 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é ovh-vps506197 pour une liaison SSH avec le serveur KVM.
ssh-keygen -t ed25519 -o -a 100 -f ~/.ssh/ovh-vps506197
Envoyer la clé publique sur le serveur KVM
scp ~/.ssh/ovh-vps506197.pub jessie@164.132.104.145:/home/jessie/
sur le serveur KVM
On se connecte
ssh jessie@164.132.104.145
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/ovh-vps506197.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/ovh-vps506197.pub
Modifier la configuration serveur SSH
sudo nano /etc/ssh/sshd_config
Modifier
Port = 55030
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
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 55030 -i ~/.ssh/ovh-vps506197 jessie@164.132.104.145
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 -y
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/Strasbourg?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 -y
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
DNS OVH
Activer les DNS
$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 164.132.104.145
IN AAAA 2001:41d0:401:3200::6e7
Activer le reverse DNS : yanfi.net
Certificat SSL
Installer les certificats Lestsencrypt pour le domaine yanfi.net
sudo yunohost domain cert-install
Succès ! La configuration de SSOwat a été générée
Succès ! Installation avec succès d’un certificat Let’s Encrypt pour le domaine yanfi.net !
Utilisateurs
Création des utilisateur yanfi
sudo yunohost user create yanfi
Mot de passe d'administration :
Prénom : yan
Nom : fi
Adresse courriel : yanfi@yanfi.net
Mot de passe :
Confirmez : mot de passe :
Création du répertoire « /home/yanfi ».
Succès ! La configuration de SSOwat a été générée
Succès ! L'utilisateur a été créé
fullname: yan fi
mail: yanfi@yanfi.net
username: yanfi
Pour créer les autres utilisateurs se connecter en administrateur https://yanfi.net/yunohost/admin/#/login
Réseau ipv6
Ajout adressage ipv6 sur le réseau
sudo nano /etc/network/interfaces
Ajouter en fin de fichier
iface eth0 inet6 static
address 2001:::::7
netmask 64
gateway 2001:::::1
REDEMARRER LE VPS
Mises à jour de sécurité Debian
Toutes les instructions suivantes sont exécutées après passage en mode su ou sudo
Installer les outils de messagerie mailutils
apt install mailutils
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! Un mesage sera expédié…
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.
Applications Yunohost
Nextcloud
Installation nextcloud en ligne de commande
sudo -s
yunohost app install nextcloud
Domaines disponibles :
- yanfi.net
Choisissez un domaine pour Nextcloud (default: yanfi.net) :
Choisissez un chemin pour Nextcloud (default: /nextcloud) :
Choisissez l'administrateur de Nextcloud (doit être un utilisateur YunoHost existant) : yanfi
Accéder au dossier personnel des utilisateurs depuis Nextcloud ? [0 | 1] (default: 0) : 1
Extraction des modèles depuis les paquets : 100%
Attention : 2018-06-20 13:42:45 URL:https://download.nextcloud.com/server/releases/nextcloud-13.0.2.tar.bz2 [44842305/44842305] -> "app.tar.bz2" [1]
Attention : 2018-06-20 13:43:09 URL:https://codeload.github.com/YunoHost-Apps/yunohost.multimedia/tar.gz/v1.0 [15907/15907] -> "v1.0.tar.gz" [1]
Succès ! La configuration de SSOwat a été générée
Succès ! Installation terminée
Baïkal
Baïkal est un serveur de calendriers et de contacts accessible par les protocoles CalDAV (calendriers) et CardDAV (carnets d’adresses), autorisant ainsi la synchronisation avec de nombreux clients (Thunderbird + Lightning par exemple).
Installation par l’interface yunohost administrateur , applications
Connexion à l’interface d’admin
Sur le portail SSO Yunohost, si on clique sur la tuile « Baïkal », on tombe sur une page bien peu conviviale qui explique que le service fonctionne.
Pour accéder à l’admin, il faut rajouter /admin
. Par exemple : https://example.com/baikal/admin
Le nom d’utilisateur à spécifier est « admin » suivi du mot de passe spécifique que vous avez choisi lors de l’installation de Baïkal. Attention, le mot de passe ne doit pas contenir de caractères spéciaux.
Création d’un nouvel utilisateur
Aller dans l’onglet « settings », sélectionner « Digest » dans « WebDAV authentication type ».
Ajouter les utilisateurs dans l’onglet « Users and resources ».
Connexion Thunderbird + Lightning
Ajoutez un nouvel agenda de type « Réseau » puis « CalDAV ».
L’URL à entrer est la suivante : https://example.com/baikal/cal.php/calendars/utilisateur/default
Caldav et cardav DAVdroid ,on utilise la Connexion avec une URL et nom d’utilisateur pour l’ajout d’un compte
- calendrier : https://exemple.com/baikal/cal.php/calendars/utilisateur/default
- contacts : https://exemple.com/baikal/card.php/addressbooks/utilisateur/default
En prenant soin de remplacer « exemple.com » par votre domaine puis « utilisateur » par votre nom d’utilisateur
Rainloop
Installation
sudo yunohost app install rainloop
Choisissez un domaine pour Rainloop (default: yanfi.net) :
Choisissez un chemin pour Rainloop (default: /rainloop) :
Est-ce une page publique ? [Yes | No] (default: No) :
Choisissez un mot de passe fort pour l'administrateur 'admin' :
Souhaitez-vous ajouter les utilisateurs YunoHost dans les suggestions de destinataires ? [Yes | No] (default: Yes) :
Definir la langue par defaut [English | Francais] (default: English) : Francais
Transmission
Transmission permet le téléchargement et la création de torrents. Ce logiciel supporte les technologies décentralisées sans tracker, tel que PEX, DHT et les liens magnets.
A-Installation yunohost transmission en ligne de commande (mode su)
yunohost app install transmission
Choose a domain for Transmission (default: yanfi.net) :
Choose a path for Transmission (default: /torrent) :
Succès ! La configuration de SSOwat a été générée
Succès ! Installation terminée
Dossiers
ls -la /home/yunohost.transmission/
drwxrwxr-x+ 5 debian-transmission www-data 4096 août 2 11:49 .
drwxr-xr-x 19 root root 4096 août 2 11:49 ..
drwxrwxr-x+ 2 debian-transmission www-data 4096 août 2 11:49 completed
drwxrwxr-x+ 2 debian-transmission debian-transmission 4096 août 2 11:49 progress
drwxrwxr-x+ 2 debian-transmission debian-transmission 4096 août 2 11:49 watched
B-Configurer les utilisateurs et les permissions
Il est recommandé que Transmission fonctionne sous son propre nom d’utilisateur pour des raisons de sécurité.Cela crée quelques problèmes avec l’accès aux fichiers et dossiers par transmission ainsi qu’avec votre compte utilisateur).
Deux possibilités , l’une avec l’ utilisateur et l’autre en créant un groupe sur lequel on ajoute des utilisateurs
utilisateur
Modifier le groupe du dossier completed (remplacer www-data par debian-transmission)
sudo chown debian-transmission.debian-transmission -R /home/yunohost.transmission/completed
Ajoutez le nom d’utilisateur au groupe debian-transmission :
sudo usermod -a -G debian-transmission user
NOTE : Changez “user” à votre propre nom d’utilisateur.
REMARQUE : Lors de l’ajout d’un utilisateur à un nouveau groupe, l’utilisateur doit se déconnecter et se reconnecter pour qu’il prenne effet. Un redémarrage permettra également d’atteindre cet objectif.
groupe
Création d’un groupe
groupadd transmission-completed
Ajout des utilisateurs au groupe
usermod -a -G transmission-completed nextcloud
usermod -a -G transmission-completed www-data
usermod -a -G transmission-completed debian-transmission
Modification groupe du dossier completed (remplacer www-data par transmission-completed)
chown -R debian-transmission:transmission-completed /home/yunohost.transmission/completed/
C-Nextcloud stockage externe
On ajoute le partage local dans nextcloud via les stockages externes
Nom du dossier : Transmission
Stockage externe : local
Configuration : /home/yunohost.transmission/completed
Paramètres
Sauvegarde BorgBackup
Préparation de la machine à sauvegarder
On se connecte sur la machine et on passe en mode su
sudo -s
Installation BorgBackup
Installation en utilisant les dépôts “backports”
apt edit-sources # pour ajouter la ligne pour les dépôts "backports"
deb http://deb.debian.org/debian stretch-backports main contrib non-free
Votre fichier « /etc/apt/sources.list » a changé, veuillez lancer « apt-get update »
apt update
Installer borgbackup
apt -V -t=stretch-backports install borgbackup
Créer un jeu de clé sur machine à sauvegarder (yanfi.net)
Créer un utilisateur borg dédié aux sauvegardes par BorgBackup :
useradd borg
Générer un jeu de clé sur /root/.ssh
mkdir -p /root/.ssh
ssh-keygen -t ed25519 -o -a 100 -f /root/.ssh/yanfi_ed25519
Le jeu de clé
ls /root/.ssh
yanfi_ed25519 yanfi_ed25519.pub
Autoriser utilisateur borg à exécuter /usr/bin/borg uniquement
echo "borg ALL=NOPASSWD: /usr/bin/borg" >> /etc/sudoers
Ajout clé publique sur la machine qui stocke les sauvegardes
Se connecter sur la machine xoyize.xyz en ssh et ajouter de la clé publique
sudo -s
mkdir -p /srv/ssd-two/borg-backups/.ssh
cat >> /srv/ssd-two/borg-backups/.ssh/authorized_keys
Copier/coller le contenu du fichier du fichier de clef publique (fichier /root/.ssh/yanfi_ed25519.pub de la machine à sauvegarder ) dans ce terminal, et presser [Ctrl]+[D] pour valider.
Le dossier de base pour les sauvegardes sur le serveur xoyize.xyz : /srv/ssd-two/borg-backups/
Création dépôt et lancement des sauvegardes depuis la machine à sauvegarder
machine cliente yanfi.net
On se connecte sur la machine et on passe en mode su
sudo -s
Création du dépôt distant (A FAIRE UNE SEULE FOIS)
export BORG_RSH='ssh -i /root/.ssh/yanfi_ed25519' # ce n'est pas la clé par défaut id_rsa
borg init --encryption=repokey-blake2 ssh://borg@xoyize.xyz:55029/srv/ssd-two/borg-backups/yanfi.net
The authenticity of host '[xoyize.xyz]:55029 ([2a01:e34:eebf:df3::1]:55029)' can't be established.
ECDSA key fingerprint is SHA256:RQJzuV1z2w3o8NHlbQ3110/822ozKiosobS6ohpIrTs.
Are you sure you want to continue connecting (yes/no)? yes
Remote: Warning: Permanently added '[xoyize.xyz]:55029,[2a01:e34:eebf:df3::1]:55029' (ECDSA) to the list of known hosts.
Enter new passphrase:
Enter same passphrase again:
Do you want your passphrase to be displayed for verification? [yN]:
By default repositories initialized with this version will produce security
errors if written to with an older version (up to and including Borg 1.0.8).
If you want to use these older versions, you can disable the check by running:
borg upgrade --disable-tam ssh://borg@xoyize.xyz:55029/srv/ssd-two/borg-backups/yanfi
See https://borgbackup.readthedocs.io/en/stable/changes.html#pre-1-0-9-manifest-spoofing-vulnerability for details about the security implications.
IMPORTANT: you will need both KEY AND PASSPHRASE to access this repo!
Use "borg key export" to export the key, optionally in printable format.
Write down the passphrase. Store both at safe place(s).
Sauvegarder la “passphrase” dans un fichier pour une procédure automatique
mkdir -p /root/.borg
nano /root/.borg/passphrase
Générer une sauvegarde d’un dossier local vers le dépôt distant
borg create ssh://borg@xoyize.xyz:55029/srv/ssd-two/borg-backups/yanfi.net::2019-01-11 /home/yanfi
Enter passphrase for key ssh://borg@xoyize.xyz:55029/srv/ssd-two/borg-backups/yanfi.net:
Automatiser la procédure de sauvegarde pour le client yanfi.net
script de sauvegarde (notez l’usage de borg prune pour supprimer les archives trop anciennes)
nano /etc/cron.daily/borg-backup
Pour lancement à une heure précise
nano /root/.borg/borg-backup # après création on exécute crontab -e
#!/bin/sh
#
# Script de sauvegarde.
#
# Envoie les sauvegardes sur un serveur distant, via le programme Borg.
# Les sauvegardes sont chiffrées
#
set -e
BACKUP_DATE=`date +%Y-%m-%d-%Hh%M`
LOG_PATH=/var/log/borg-backup.log
export BORG_PASSPHRASE="`cat ~root/.borg/passphrase`"
export BORG_RSH='ssh -i /root/.ssh/yanfi_ed25519'
BORG_REPOSITORY=ssh://borg@xoyize.xyz:55029/srv/ssd-two/borg-backups/yanfi.net
BORG_ARCHIVE=${BORG_REPOSITORY}::${BACKUP_DATE}
borg create \
-v --stats --compression lzma,9 \
$BORG_ARCHIVE \
/bin /boot /etc /home /lib /lib64 /opt /root /sbin /srv /usr /var \
>> ${LOG_PATH} 2>&1
# Nettoyage des anciens backups
# On conserve
# - une archive par jour les 7 derniers jours,
# - une archive par semaine pour les 4 dernières semaines,
# - une archive par mois pour les 6 derniers mois.
borg prune \
-v --list --stats --keep-daily=7 --keep-weekly=4 --keep-monthly=6 \
$BORG_REPOSITORY \
>> ${LOG_PATH} 2>&1
Le rendre exécutable
chmod +x /root/.borg/borg-backup
Programmer la tâche à 2h30 du matin
crontab -e
# Sauvegarde sur distant avec BorgBackup
30 02 * * * /root/.borg/borg-backup > /dev/null