CitizenZ

Blog Libre, Net & Société

[TUTO] Sauvegardes journalières et accès à distance sur votre serveur MySQL 

Rédigé par citizenz 2 commentaires

Le défi est simple : sauvegarder de manière journalière sur un serveur A, une (ou plusieurs) base(s) MySQL située(s) sur un serveur B (distant).

Nous utiliserons l'utilitaire mysqldump.

Mysqldump : c'est quoi ?
Sources : https://dev.mysql.com/doc/refman/5.7/en/mysqldump.html
L'utilitaire client mysqldump effectue des sauvegardes logiques, produisant un ensemble d'instructions SQL qui peuvent être exécutées pour reproduire les définitions d'objets et les données de table d'origine de la base de données.
Il peut "sauvegarder" une ou plusieurs bases de données MySQL et les "transférer" vers un autre serveur SQL.
La commande mysqldump peut également générer des résultats dans CSV, d'autres textes délimités ou au format XML.

En gros, en utilisant la commande mysqldump avec certains arguments, on peut se connecter directement sur le serveur distant et rapatrier les bases voulues.

ETAPE 1 : PREPARATION
On va préparer le terrain sur le serveur distant où nous allons créer un utilisateur "spécial", chargé exclusivement des sauvegardes (pour ce cas précis).

Postulats de départ : 
- MySQL est installé et fonctionne sur vos deux serveurs
- phpmyadmin est installé et focntionnel sur votre serveur distant
On travaillera donc avec phpMyadmin plutôt qu'en ligne de commande.

Création d'un "remote-user" :

  1. Se connecter sur phpMyadmin
  2. Aller sur Utilisateurs puis Ajouter utilisateur
  3. Création d'un utilisateur : choisissez un nom (Exemple : remote-user)
  4. Client : choisissez "tout client" ou symbole %
  5. Entrez un mot de passe (solide si possible !)
  6. Privilèges globaux : cochez la case "tout cocher"
  7. Validez

Vous aurez ainsi un utilisateur qui s'appellera "remote-user" avec des privilèges sur tout le serveur / toutes les bases.

ETAPE 2 : CONFIGURATION
On va configurer MySQL pour écouter sur l'adresse IP publique :

  1. Ouvrez /etc/mysql/my.cf
  2. Commentez la ligne bind-address 127.0.0.1 (en ajoutant un # devant, soit : #bind-address 127.0.0.1)
  3. Ajoutez juste en-dessous : bind-address xx.xx.xx.xx (xx.xx.xx.xx étant l'adresse IP publique de votre serveur)
  4. Sauvegardez
  5. Relancez MySQL : /etc/init.d/mysql restart

Désormais vous pourrez vous connecter "à distance" sur le serveur MySQL.

/!\ : Si vous avez un firewall, pensez à ouvrir le port 3306 sur le serveur distant !

ETAPE 3 : SYNTAXE
Pour faire une sauvegarde journalière des bases MySQL du serveur distant avec la date et l'heure de sauvegarde (soyons fous !), nous allons utiliser mysqldump avec certaines options :
- h : hote distant (ou adresse IP)
- u : utilisateur distant ("remote-user" dans notre exemple)
- p : mot de passe de l'utilisateur distant créé à l'étape 1

Ce qui donne la commande complète suivante :

/usr/bin/mysqldump -h mon.serveur-distant.com -u remote-user -p'MonMotDePasse' ma-base-mysql > /home/moi/backup/mabase-`date +%Y%m%d`-`date +%H%M`.sql

/!\ : Il n'y a pas d'espace entre -p et le mot de passe qui se trouve entre les guillemets simples : c'est normal !
Evitez donc d'utiliser un mot de passe qui possède des guillemets simples. Perso, j'ai galéré à en devenir chèvre à cause de ce... détail.

ETAPE 4 : AUTOMATISER LA TACHE AVEC CRON
On va utiliser Cron pour une sauvegarde journalière "automatique" :

  1. Tapez crontab -e
  2. On va y mettre la ligne suivante (bas de fichier) : @daily /usr/bin/mysqldump -h mon.serveur-distant.com -u remote-user -p'MonMotDePasseQuilEstBeau' ma-base-mysql > /home/moi/backup/mabase-`date +%Y%m%d`-`date +%H%M`.sql (c'est en gros la même commande que précisée plus haut avec l'option @daily qui précise à Cron de se déclencher chaque jour... à 00:00 en l'occurrence).
  3. Sauvegardez

ETAPE 5 (facultatif) : SUPPRIMER LES SAUVEGARDES VIEILLES DE 7 JOURS
Effacer automatiquement les sauvegardes vieilles de 7 jours (ou 15 jours, ou 4 jours, ... si vous voulez !) : ça permet de faire un peu de ménage dans les sauvegardes... et de s'y retrouver.
Vous pouvez aussi choisir de ne pas supprimer vos sauvegardes (là, il vaut mieux avoir suffisamment d'espace de stockage), de garder une seule sauvegarde journalière, une sauvegarde par semaine, une sauvegarde mensuelle, etc. Tout dépend de vos besoins.

  1. crontab -e
  2. On va ajouter la ligne suivante : @daily find /mon/repertoire/desauvegarde -type f -mtime +6 -delete (ce qui aura pour effet de supprimer tout fichier dans le répertoire vieux de 7 jours au moins).

Et voila votre/vos base(s) sauvegardée(s) !

Cette article est certainement complémentaire de l'article : https://www.citizenz.info/utilser-rsync-ssh-et-sudo-pour-copier-facilement-vos-donnees
 

Les "Stats" pour les Nuls : Netdata

Rédigé par citizenz Aucun commentaire

​Afficher les stats d'un serveur, cela peut être bien utile : vérifier la charge processeur, la RAM utilisée, la "santé" de sa base de données SQL, etc.
Jusqu'à maintenant, j'avais l'habitude d'installer Munin qui nous propose de jolis graphiques. Mais, à mon goût, l'un des inconvénients de Munin, c'est que, outre l'aspect esthétique graphique un peu répétitif, ça devient vite "assez lourd" sur des petits systèmes (sur un petit VPS avec un proc et 2 GO de RAM, vous êtes vite dépassé niveau charge avec des crêtes d'utilisation assez élevées...).

Et puis je suis tombé sur Netdata. Un site proposait d'aller "voir" ses stats en ligne : ahurissant !
Netdata, c'est du "live", "temps réel", "en direct", blablabla, ... et vous avez beau descendre dans la page de stats, vous en avez toujours, encore et encore.
C'est ULTRA complet, esthétiquement à des années lumières de Munin. Ca flash !

C'est quoi Netdata ?
Netdata est un outil de supervision en temps réel pour les systèmes Linux qui va nous permettre de visualiser les éléments importants d'un système (processeur, mémoire, débit du disque dur, traffic réseau, application, etc.).
C'est assez exhaustif et vous serez surpris du nombres d'éléments visualisables ! 

Comment on installe Netdata ?
Bon : on va l'installer sur notre serveur Debian. Mais avant cela, on va installer quelques éléments indispensables :

$sudo apt install zlib1g-dev gcc make git autoconf autogen automake pkg-config

J'ai l'habitude d'installer mes sites web dans /var/www/monsite.com/web.
Je pars du postulat que Nginx (version stable depuis le dépot officiel), php5 ou php7 sont installés.
N'oubliez pas de changer monsite.com avec vos propres infos.

Pour plus d'aisance, on passe directement en root :

$sudo -s

Puis on crée le répertoire web qui va accueillir les fichiers netdata :

#mkdir /var/www/netdata.mondomaine.com

Si vous n'avez jamais encore configuré de site dans ce répertoire, entrez plutôt la commande suivante : 

#mkdir -p /var/www/netdata.mondomaine.com

On se place dans le répertoire web qu'on vient de créer :

#cd /var/www/netdata.mondomaine.com

La ligne suivante est facultative (mais ça me permet de placer les logs du site afin de les consulter facilement, notamment en cas de soucis...)

#mkdir logs

On va maintenant cloner le repertoire git du projet Netdata :

#git clone https://github.com/firehol/netdata.git netdata --depth=1

L'étape suivante est facultative. Je renomme le répertoire netdata pour coller avec ma config et mon "organisation" :

#mv netdata/ web/

On se place dans le répertopire web/ :

#cd web/

... et on installe Netdata :

#./netdata-installer.sh

... et c'est tout !

Configuration Nginx
Il reste quand même à configurer Nginx :

#cd /etc/nginx/conf.d
#vim netdata.mondomaine.com.conf

Cerise sur le gateau, nous allons configurer le vhost Nginx avec HTTPS Let's Encrypt :
- netdata écoute, par défaut, sur le port 19999
- IPV6 ready
- tous les accès sur le port 80 sont "automagiquement" renvoyer sur le port 443 (HTTPS)
- on ne log pas les accès sur le port 80
- on ajoute plusieurs options SSL "qui vont bien" ...
- nous configurerons Let's Encrypt juste après cette partie

Voici le fichier :

#/etc/nginx/conf.d/netdata.mondomaine.com.conf
upstream backend {
    server 127.0.0.1:19999;
    keepalive 64;
}
server {
    listen 80;
    listen [::]:80;
    server_name netdata.mondomaine.com;
    return 301 https://$server_name$request_uri;
    access_log /dev/null;
    error_log /dev/null;
}
server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name netdata.mondomaine.com;
    charset utf-8;
    access_log /var/www/netdata.mondomaine.com/logs/netdata.access.log combined;
    error_log /var/www/netdata.mondomaine.com/logs/netdata.error.log error;
    ssl_certificate /etc/letsencrypt/live/netdata.mondomaine.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/netdata.mondomaine.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/netdata.mondomaine.com/chain.pem;
    ssl_protocols TLSv1.2;
    ssl_ecdh_curve prime256v1;
    ssl_ciphers EECDH+AESGCM:EECDH+AES;
    ssl_prefer_server_ciphers on;
    resolver 80.67.169.12 80.67.169.40 valid=300s;
    resolver_timeout 5s;
    ssl_session_cache shared:SSL:10m;
    add_header Strict-Transport-Security "max-age=15768000";
    add_header Referrer-Policy "strict-origin-when-cross-origin";
    location / {
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://backend;
        proxy_http_version 1.1;
        proxy_pass_request_headers on;
        proxy_set_header Connection "keep-alive";
        proxy_store off;
    }
}

Et voila. Vous enregistrez ce fichier après avoir adapté les passages avec netdata.mondomaine.com.

Configuration de Let's Encrypt
On passe à la config Let's Encrypt. On installe d'abord les backports Debian (à moins que cela ne soit déjà fait ...) :

#echo "deb http://httpredir.debian.org/debian jessie-backports main" >> /etc/apt/sources.list

On met à jour : 

#apt update && apt full-upgrade -y

On installe Let's Encrypt :

#apt install -t jessie-backports letsencrypt

Pour obtenir un certificat Let's Encrypt, il faut arrêter Nginx (port 80) :

#service nginx stop

Puis on génére le certifcat (à adapter pour netdata.mondomaine.com et l'adresse e-mail) :

#letsencrypt certonly -d netdata.mondomaine.com --agree-tos -m contact@mondomaine.com --rsa-key-size 4096 --standalone

Si vous voyez "Congratulations..." etc., c'est bon, votre certificat Let's Encrypt a été créé et installé dans /etc/letsencrypt/live/netdata.mondomaine.com/.
Vous y trouverez plusieurs fichiers : fullchain.pen, chain.pem, privkey.pem, ...

Redémarrez maintenant votre serveur Nginx :

#service nginx start

Si vous ne voyez pas d'erreur : VICTOIRE !

Vous pouvez aller voir vos superbes stats sur l'adresse https://netdata.mondomaine.com !
 

Utiliser rsync (+ ssh et sudo) pour copier facilement vos données

Rédigé par citizenz 13 commentaires

​Imaginons : vous avez plusieurs centaines de fichiers et des répertoires entiers à rapatrier depuis votre anciens serveur vers votre nouveau serveur. Pour aller plus vite, l'outil idéal, c'est rsync.

Le wiki Ubuntu nous dit :

rsync (pour remote synchronization ou synchronisation à distance), est un logiciel de synchronisation de fichiers.
Il est fréquemment utilisé pour mettre en place des systèmes de sauvegarde distante.
rsync travaille de manière unidirectionnelle c'est-à-dire qu'il synchronise, copie ou actualise les données d'une source (locale ou distante) vers une destination (locale ou distante) en ne transférant que les octets des fichiers qui ont été modifiés.

Mettons tout cela en place sur notre Debian :
sudo apt install rsync

Il vous faut également ssh (sudo apt install ssh).

Voici un exemple assez complet de rsync :
rsync -av --progress --delete --stats --human-readable -e 'ssh -p xxxx' user@serveurdistant.fr:/home/user/* /home/user/

-a : c'est l'option de la "mort-qui-tue". En fait ça fait tout (ou presque). C'est un moyen rapide de dire que vous voulez la récursivité et préserver pratiquement tout. C'est équivalent aux optissn combinées -rlptgoD.
-v : verbeux
--progress : vous indique la progression de la copie/transfert
--stats : affichage de stats sur le transfert des fichiers
--human-readable : lecture "humaine" des chiffres. Idem à l'option ls -h (transforme en KO, MO, GB, ...)
- e : spécifie un shell distant

Il existe une autre option bien pratique :

 --delete : cette option demande à rsync d'effacer tous les fichiers superflus côté réception (ceux qui ne sont pas du côté envoi); uniquement pour les répertoires synchronisés. Attention toutefois à l'utilser correctement ...

Vous avez "la totale" des options rsync ici :

http://www.delafond.org/traducmanfr/man/man1/rsync.1.html

Résultat ?

Avec la commande utilisée plus haut, une fois rentré le mot de passe de l'utilisateur distant (en ayant précisé un éventuel port ssh au cas où le serveur ssh ne tournerait pas sur le traditionnel port 22), rsync va "copier" tous les fichiers du répertoire /home/user (/home/user/*) depuis le serveur distant VERS votre nouveau serveur dans le répertoire /home/user.

Il peut arriver que certains répertoires ou fichiers ne puissent être récupérés pour des questions de droits. Il va alors falloir, sur le serveur distant, configurer sudo

Sur le serveur distant, si sudo n'est pas installé :
sudo apt install sudo 

Il faut configurer sudo :
sudo visudo

Nous allons rajouter dans le fichier la ligne suivante (où vous voulez) :
user ALL= NOPASSWD:/usr/bin/rsync 

Evidemment, changez "user" par votre véritable nom/pseudo... C'est le truc con qui arrive quand on fait des copier/coller. Je dis ça, car je suis le roi du "Ca marche pas... pourquoi ... Oh M.... ! J'ai pas changé user / mondomaine.com !"

Puis on va utiliser l'option "--rsync-path" pour préciser à rsync de démarrer avec l'option sudo :
rsync -av --progress --stats --human-readable --rsync-path="sudo rsync" -e "ssh -p xxxx" useronremoteserver@remoteserver:/data/to/sync /archive/data/

Et hop, là, plus de soucis on récupère tous les répertoires et fichiers.

Le réseau social Mastodon pour les Nuls

Rédigé par citizenz 4 commentaires

Nul besoin de refaire le monde à ce niveau : en me basant sur les nombreux articles publiés un peu partout sur le Net, voici un simple et modeste guide sur Mastodon, le nouveau réseau social à la mode qui fait actuellement bouillonner la toile...

C’est « koi » Mastodon ?

Mastodon est donc un nouveau réseau social décentralisé dont le vrai coup d’envoi a été donné il y a quelques jours. Depuis, de nombreuses instances (comprenez « serveurs ») se sont créées un peu partout. Eh oui ! Chacun peut créer son instance Mastodon, pour peu que l’on maitrise un tant soit peu les bases de l’administration d’un serveur Nginx, Postgresql, le langage Ruby, etc. Si ce que je vous raconte est de l’austro-hongrois dans vos oreilles, passez votre chemin !

Mais rien n’est perdu : devenez un utilisateur de Mastodon, … un Pouetos ou une Pouetas. Et oui, sur Mastodon, on ne « tweet » pas évidemment, on « pouet » (toot en anglais).

À l’heure actuelle, Mastodon.social (que l’on qualifiera de « site originel »), créé par le développeur principal de Mastodon, Eugen Rochko, est reliée à plusieurs centaines d’autres instances.

Création d’un compte

Pour créer un compte, il faut commencer par trouver une instance. Idéalement, on en cherchera une qui nous convient ou, par défaut, une plus généraliste comme celle d'Eugen Rochko. Malheureusement, cette dernière est actuellement « pleine », l’infrastructure mise en place ayant ses limites.

N’hésitez pas, par exemple, à vous connecter sur l’instance que j’ai mise en place : https://spacejerk.fr

Une fois que vous avez choisi votre instance, la création du compte est rapide : une adresse email, un pseudonyme, un mot de passe. On reçoit un mail de confirmation muni d’un lien à usage unique qu'il vous suffira de cliquer.

Et voici l’interface principale

Ca marche comment ?

Alors ok, au début, c’est un peu rock n’ roll… mais une fois qu’on a compris le truc, « ça passe crème »… (quoi ça se dit plus ??!)

  1. La première colonne sert ainsi à la rédaction des messages, à la recherche ainsi qu'à différents outils.
  2. La deuxième colonne est le flux principal, aussi appelé Accueil.
  3. La troisième colonne sert aux notifications.
  4. Quant à la quatrième, elle pourra afficher soit tous les « pouets » (messages) de l’instance sur laquelle on se trouve (Fil public Local), soit tous ceux des instances fédérées (Fil public global).

Pour s’y retrouver, regardez le diagramme ci-dessous. C’est plus clair que 50 explications :

Regardons de plus prêt un Pouet (toot!) fait un user de l’instance :

Vous retrouvez l'image de présentation du compte (on y reviendra…), le pseudo (si vous passez la souris dessus vous verrez également son « adresse » sur le serveur du type : https://spacejerk.fr/@citizenz7), l’ancienneté du Pouet, le message … et enfin, diverses icones.

La première sert à « Répondre » : facile !

La deuxième, les deux flèches entrecroisées, s’appelle le « boost ». Comprenez « retweet » ou « partage » selon les autres réseaux sociaux.

L’étoile sert à mettre en favoris.

Enfin, les 3 petits points possèdent plusieurs options :

  • Déplier (le status)
  • Mentionner (le nom du « poueteur » par exemple avec l’extrait du Pouet…)
  • Masquer…
  • Bloquer (il y a une whiteliste / blackliste pour chaque poueteur !)
  • Signaler…

Vous avez également un menu, en haut à gauche :

La première « étoile » (qui s’intitule « Pour commencer ») vous permet de faire apparaitre … un autre menu dans la quatrième colonne :

Vous avez donc accès à :

  • Fil public local. C’est le « fil » de l’instance sur laquelle vous avez votre compte.
  • Fil public global. C’est la fédération des Pouets de toutes les instances… Tout du moins, y sont affichés tous les Pouets des Poueteurs que je suis… plus ceux des Poueteurs suivis par … mes propres Poueteurs. Je vous ai perdu ? Pour plus de clarté, regardez le fameux diagramme présenté plus haut.
  • Préférences vous donne accès à la configuration de votre compte. Vous pourrez y mettre/changer votre image de profil et votre image d’entête (qui sert à la présentation de votre compte si quelqu’un clique sur votre image de profil), changer votre mot de passe, votre nom public, importer / exporter certaines données comme les personnes que vous suivez ou bloquez sur votre compte sur cette instance à partir de fichiers crées sur une autre instance. Vous pourrez même rendre votre compte Privé : vous devrez alors approuver chaque abonné⋅e et vos statuts ne s'afficheront qu'à vos abonné⋅es. La partie Administration est réservée…  à l’Admin de l’instance.

Image d’entête (exemple) :

  • Favoris : liste tous les Pouets que vous avez taggé Favoris…
  • Utilisateurs bloqués : liste tous les utilisateurs que vous avez bloqués grâce au petit menu vu plus haut.
  • Plus d’information : vous emmène sur la page de présentation de votre instance. Vous y retrouverez une présentation (plus ou moins importante selon les instances…), le contact de l’admin de l’instance, le nombre d’utilisateurs et de pouets de l’instance et le nombre d’instances « connectées » à votre instance.

Comment j’écris des Pouets au fait ?!!

Rendez-vous dans la première colonne, vous l’aurez deviné. Rentrez votre texte. Vous avez 500 caractères de disponibles ! Enorme par rapport à Twitter… par exemple !

Vous disposez de smileys et de 3 icones :

  • L’appareil photo vous permet d’intégrer des photos, images
  • La mappemonde vous propose plusieurs niveaux d’affichage de votre Pouet. Voyez l’image ci-dessus, c’est très clair.
  • CW (Content Warning) : maque le texte derrière un avertissement… Peut être utile pour proposer un contenu « dérangeant » ou non accessible à tous les publics…
  • NSFW : la même chose que CW pour mais pour un média (image, vidéo...)

Barre de recherche… à tout faire

Enfin, la barre de recherche vous permet de rechercher non seulement des utilisateurs (par leur pseudo, leur adresse d’instance) mais aussi des hashtags (exemple : #libre ou bien #présidentielle, etc.)

VOILA !

Ce petit guide n’est évidemment pas complet, exhaustif, et demande certainement à être complété, corrigé…

Y’a plus qu’à attendre vos retours alors ?!!

Installer votre Mastodon !

Rédigé par citizenz 3 commentaires

La folie du moment s'appelle Mastodon... C'est koidon Mastodon ?

Mastodon (tenant son nom d'un animal préhistorique, le mastodonte en français) est un réseau social libre et décentralisé, fondé sur le principe du microblogging qui est la marque de fabrique du petit oiseau bleu.

Je ne vais pas refaire un énième article tant ce nouveau réseau social libre fait parler de lui actuellement. Certains iraient même jusqu'à délaisser Twitter...

Toujours est-il, cet éléphant en a derrière la trompe.

L'instance principale mastodon.social a fermé ses portes aux nouvelles inscriptions, elle comptabilise alors plus de 40 000 utilisateurs.

Aujourd'hui, il est nécessaire de choisir une autre instance pour rejoindre le réseau ou de déployer la vôtre.

De mon côté, j'ai "déployé" une instance https://spacejerk.fr.

Si vous souhaitez installer votre propre instance, voici deux liens indispensables à ne pas rater :

https://angristan.fr/installer-instance-mastodon-debian-8/ : le blog d'Angristan, toujours précis.

https://psychedeli.cat/mastodon/ : le blog de Wonderfall : une mine ! Avec notamment plus de détails pour utiliser Docker.

A vos claviers !

Fil RSS des articles de cette catégorie