Grafana : remettre le mot de passe admin à sa valeur par défaut

Si vous arrivez sur cette page, c’est que comme moi vous avez probablement oublié le mot de passe que vous aviez défini un jour pour l’utilisateur admin dans Grafana 🙂 Dans ce cas, une solution est de redéfinir le mot de passe à sa valeur par défaut (admin) en modifiant directement la base de données.

Je vous propose ici une méthode pour les différents moteurs de base de données supportés par Grafana : MySQL, SQLite et PostgreSQL.

Continuer la lecture de « Grafana : remettre le mot de passe admin à sa valeur par défaut »

Docker et les volumes de données (1/2)

Vous venez de créer vos premiers conteneurs Docker et peut-être ne vous êtes pas encore demandé ce qu’il advient des données stockées à l’intérieur. Alors par défaut, les données contenues dans le conteneur disparaissent tout simplement avec lui lors de sa destruction. Ce peut être le comportement voulu dans la plupart des cas, mais il est parfois nécessaire de rendre les données persistantes. Par exemple, une base de données utilisateur ne devrait pas disparaitre lorsque l’on supprime le conteneur contenant le moteur de la base de données !

Docker offre plusieurs manières de gérer les données persistantes. Nous verrons dans un premier temps la notion de volume de données puis les conteneurs de données dans un deuxième article.

Continuer la lecture de « Docker et les volumes de données (1/2) »

Docker : premiers pas

Je me lance dans la découverte de Docker et quelques billets jalonneront donc ma progression dans cet univers. Ce premier billet couvre le lancement et la gestion de base d'un conteneur.

Juste pour introduire Docker en une phrase, disons que c'est un gestionnaire de conteneurs logiciels open source écrit en Go. Voilà 🙂

Pour plus d'informations, je vous conseille l'excellent site officiel qui regorge d'informations utiles et qui me servira de guide : https://www.docker.com/

Je m'appuie ici sur un Docker en version 1.4.1 installé sur une machine Ubuntu 14.10.

 

Continuer la lecture de « Docker : premiers pas »

CentOS 6 : schéma de partitionnement

Introduction

Suite à l'installation d'un nouveau serveur muni du système d'exploitation CentOS en version 6, je me suis posé la question du partitionnement.

Après la lecture de la documentation officielle de RedHat sur le sujet, j'en suis arrivé à la conclusion que le schéma de partitionnement ci-dessous convenait très bien pour un serveur avec 2 Gio de RAM et quelque soit la taille du disque dur associé.

Schéma

  • /boot : 256 Mio
  • / : 4 Gio
  • swap : 4 Gio
  • /home : 256 Mio
  • /tmp : 256 Mio
  • /var : 4 Gio

Explication des tailles

Malgré le gros disque dur, il ne me semble pas nécessaire de tailler de grosses partitions dès le départ puisqu'elles peuvent facilement s'agrandir par la suite en fonction des besoins, d'autant que c'est une opération faisable à chaud via LVM (sauf les partitions / et /boot qui ne sont pas en LVM mais qui ne sont pas sensés grossir après l'installation, sauf à empiler les kernel 🙂 ).

Par ailleurs, je considère que les applications principales devraient avoir leur propre volume logique pour le stockage des logs et données, le schéma indiqué ici ne devrait donc s'appliquer qu'à l'espace utilisé par le système et les applications mineures.

  • /boot : destiné à accueillir le noyau du système d'exploitation, je le laisse à la taille recommandée de 256 Mio
  • / : contient la plupart des fichiers et logiciels du système d'exploitation, notamment dans /usr que RedHat ne conseille pas de placer sur une partition séparée pour des questions de compléxité du processus de démarrage
  • swap : avec 2 Gio de RAM, on peut encore utiliser la formule de calcul "swap = 2 * RAM". Au-delà et jusque 8 Gio, mettre la même taille que la RAM
  • /home : taille minimum, à ajuster plus tard en fonction du nombre d'utilisateurs et de leurs besoins
  • /tmp : taille minimum
  • /var : contient des applications et sert de base au téléchargement des mises à jours de paquets : une taille de 4 Gio est plutôt conseillée

Et après ?

Le reste de la taille sera affecté à un ou plusieurs groupe de volumes LVM afin de pouvoir le distribuer plus tard aux différentes applications hébergées sur le serveur.

Variantes

Quelques variantes discutées dans les commentaires :

  • /home à 1 Gio
  • /var à 8 Gio
  • /tmp à 4 Gio
  • placer /usr et /lib dans des volumes séparés plutôt que dans /, et avoir un / plus petit

Authentifier avec Apache

Le but de cette petite note est l'authentification simple avec Apache permettant un contrôle d'accès sur un site.

L'environnement est un serveur Ubuntu en version 12.04 LTS muni d'un noyau Linux en version 3.2.13 et d'un serveur Apache en version 2.2.22.

1 – Créer un fichier utilisateur

La première chose à faire est de créer un fichier contenant les utilisateurs et mots de passe qui pourront se connecter au site.

Pour cela, il faut utiliser l'utilitaire htpasswd fourni par Apache.

La commande prendra trois arguments :

  • -c : pour créer le fichier, à ne plus utiliser lors de l'ajout d'autres utilisateurs
  • le nom du fichier contenant les utilisateurs/mots de passe
  • l'utilisateur à ajouter

Nous allons donc créer le fichier par l'ajout d'un premier utilisateur, la commande nous demandera ensuite de taper deux fois le mot de passe associé :

# htpasswd -c /etc/apache2/passwords toto
New password:
Re-type new password:
Adding password for user toto

Le nom et l'emplacement du fichier sont libres, attention à ne pas le mettre dans un répertoire accessible depuis l'Internet !

2 – Configurer Apache

La configuration de l'authentification peut se faire dans un fichier .htaccess situé dans le répertoire à protéger, ou dans une directive <Directory> de la configuration du site.

C'est cette deuxième méthode qui sera utilisée ici. Dans la section <Directory> correspondant au répertoire à protéger, nous allons ajouter ces directives :

AuthType Basic

Indique le type d'authentification, ici Basic. Attention, cela signifie que les mots de passe passeront en clair sur le réseau, ce type d'authentification est à coupler avec l'utilisation d'une couche SSL.

AuthName "Restricted Area"

Le nom de la zone à protéger. Elle sert à la fois d'information au visiteur mais permet aussi de regrouper plusieurs emplacements, évitant ainsi à l'utilisateur de devoir se ré-authentifier à chaque changement d'emplacement.

AuthBasicProvider file

Le fournisseur de l'authentification, ici un fichier. Ce pourrait être une base de données ou un LDAP par exemple.

AuthUserFile /etc/apache2/passwords

Comme on a précisé avant que l'on utilisé un fichier, cette directive indique son emplacement.

Require valid-user

Ce qui est requis pour accéder au répertoire. Ce pourrait être un nom d'utilisateur, ici on indique plutôt que tout utilisateur présent dans le fichier peut accéder au répertoire si son authentification a réussie.

3 – Redémarrer et tester

Il n'y a plus qu'à redémarrer Apache pour la prise en compte des modifications de configuration :

# service apache2 reload
 * Reloading web server config apache2                                                                    [ OK ]

Et à tester en se rendant sur la page : devrait alors apparaitre une boite de dialogue permettant de s'authentifier avec l'utilisateur et mot de passe configurés précédemment !

Créer une base de données MySQL

La création d'une base de données MySQL est très souvent un pré-requis à l'installation d'application Web sur u serveur.

La procédure est toujours la même, et très simple.

La création d'une base de données avec MySQL implique deux étapes :

  • la création de la base de données proprement dite
  • la création d'un utilisateur et l'attribution des droits sur cette base

La première chose à faire est de se connecter au serveur MySQL avec l'utilisateur root :

# mysql -u root -p

Une fois connecté, nous pouvons créer notre base, toto par exemple :

mysql> CREATE DATABASE toto;
Query OK, 1 row affected (0.00 sec)

Puis nous créons notre utilisateur toto qui aura comme mot de passe secret :

mysql> CREATE USER 'toto'@'localhost' IDENTIFIED BY 'secret';
Query OK, 0 rows affected (0.00 sec)

Enfin, on attribue à la base de données toto tous les droits pour l'utilisateur toto :

mysql> GRANT ALL ON toto.* TO 'toto'@'localhost';
Query OK, 0 rows affected (0.00 sec)

Voilà, la base toto est désormais configurée avec un utilisateur toto. Ces paramètres pourront ensuite être renseignés dans l'application qui ira créer ses propres tables.

Installer et configurer vsFTPd

vsFTPd (pour Very Secure FTP Daemon) s'annonce lui-même comme étant "probablement le plus sur et le plus rapide des serveurs FTP pour systèmes Unix".

La configuration portera essentiellement sur deux usages :

  • utilisation du FTP avec du SSL
  • utilisation du FTP avec des utilisateurs virtuels qui peuvent uloader

L'environnement est un serveur Ubuntu en version 12.04 LTS muni d'un noyau Linux en version 3.2.13.

Continuer la lecture de « Installer et configurer vsFTPd »