LINUX:HuMo Genealogy
→ retour au logiciels de Généalogie
But
HuMo-Genealogy est un autre programme serveur qui permet de gérer des arborescences généalogiques. Il est libre. Il est nettement plus complet que GeneWeb. Nous nous intéresserons à la version Linux. On l'installe sur un serveur et via un interface Web, on accède à notre généalogie. Consultez leur site: https://sourceforge.net/projects/humo-gen/
Téléchargement
Sous Linux, on peut effectuer la commande:
wget https://sourceforge.net/projects/humo-gen/files/HuMo-genealogy_7.0.5.zip/download -O humogen.zip
pour récupérer la dernière version 7.0.5. Elle s'amende régulièrement. Quand vous aurez installé ce produit, votre site vous proposera une mise à jour automatique si nécessaire.
On crée un répertoire où on met ce fichier ZIP. Par exemple "humogen". On décompresse ce fichier:
unzip humogen.zip
On peut dès lors effacer ce fichier ZIP ou le mettre de côté.
Prérequis
Ce logiciel nécessite:
- un serveur Web Apache
- un gestionnaire de base de données de type MySQL tel MariaDB
- un interpréteur PHP
Dans mon cas, ces produits sont tous sur une même machine Linux
Apache
On déplace ce répertoire "humogen" parmi nos autres sites Web; dans notre exemple sous le répertoire "/web".
ATTENTION: L'exemple de configuration le présente comme un des sites de votre domaine. Si ce site doit être accessible en direct, cette configuration qui suit doit être adaptée en conséquence.
On crée une configuration pour ce site dans Apache. On crée un fichier "webtrees.conf" dans le répertoire "/etc/httpd/conf.d":
Alias "/humogen" "/web/humogen"
<Directory "/web/humogen">
Options +FollowSymLinks -Indexes
AllowOverride All
<IfModule mod_authz_core.c>
Require all denied
Require ip 127.0.0.1
Require ip 192.168.1
</IfModule>
Include conf.d/php83.cfg
</Directory>
On limite l'accès à notre réseau privé "192.168.1.0/24".
La commande "AllowOverride All" permet l'activation des fichiers spéciaux ".htaccess". Il nous servira par la suite.
Nous avons utilisé la version 8.3 de PHP. Voyez l'article sur Coexistence de plusieurs versions de PHP. D'où la ligne:
Include conf.d/php83.cfg
Ne pas oublier de relancer le service Apache:
systemctl restart httpd.service
Droits
Ce répertoire doit appartenir à l'utilisateur "apache" sous lequel s'exécute le service 'httpd.service":
chown -R apache:apache /web/humogen
Comme le produit propose régulièrement une mise à jour automatique, il est plus aisé de laisser les droits d'écriture en plus de la lecture:
chmod -R 750 /web/humogen find /web/humogen -type f -print0 | xargs -0 chmod 640
MariaDB
Avant tout début de configuration, il est plus aisé que la base de données MariaDB (MySQL) comprenne un schéma vide qui va accueillir vos données.
Nous avons nommé ce schéma "dbhumogen".
Voici le script SQL qui permet de le créer à vide; on nomme ce script: "schema.sql":
DROP SCHEMA IF EXISTS dbhumogen ; CREATE SCHEMA dbhumogen ;
On l'exécute via la commande:
mysql --user=root --password=<MOT_DE_PASSE_DE_ROOT> < ./schema.sql
avec un nom d'utilisateur de la base de donnés qui a les droits administrateur.
Il nous faut en outre, créer un utilisateur dans cette base de données qui a tous les droits sur ce schéma nouvellement créé.
On lui a donné le nom "userhumogen". C'est lui que le logiciel utilisera pour accéder à nos données.
Voici le script SQL qui permet de le créer et de lui attribuer des droits nécessaires; on nomme ce script: "user.sql":
create user 'userhumogen'@'localhost' identified by '<MOT_DE_PASSE_HUMOGEN>' ; grant all privileges on dbhumogen.* to 'userhumogen'@'localhost';
Vous y remplacez le mot de passe "<MOT_DE_PASSE_HUMOGEN>" par celui désiré.
On l'exécute via la commande:
mysql --user=root --password=<MOT_DE_PASSE_DE_ROOT> < ./user.sql
avec un nom d'utilisateur de la base de donnés qui a les droits administrateur.
Configuration
Maintenant que tout est en place, on peut lancer la configuration qui se fait directement via l'interface Web. Si notre serveur Web se "serverdb.home.dom", on lance l'URL: http://serverdb.home.dom/humogen
Comme c'est la première fois qu'on y accède, le système détecte qu'il n'y a pas de tables dans la base de données, l'interface Web nous demande d'aller vers une autre URL proposée en anglais.

La suite des écrans est assez classique.
Avant d'aller plus loin, choisissez la langue, française dans notre cas, dans le menu en haut à gauche.

Dans cet écran, remplissez le nom de la base de données "dbhumogen", le nom d'utilisateur Mysql "userhumogen" et son mot de passe comme créé au point précédent.
On clique sur le bouton "Sauvegarder". La configuration entrée sera placée en début de fichier "/web/humogen/include/db_login.php".

Si tous est "OK", on peut passer à la phase suivante.

On nous y propose de créer deux utilisateurs de base. Remplissez les deux zones correspondantes avec un mot de passe de votre choix. Il permettent d'accéder à la gestion de l'interface.
On passe à l'étape finale:

qui nous demande une dernière confirmation du lancement de l'installation proprement dite.

Les tables de la base de données sont enfin créés et on nous invite à passer à l'écran principal.
Premier contact
Mais auparavant, on doit s'authentifier en tant qu'administrateur (utilisateur "admin") en utilisant le mot de passe entré juste ci-dessus.

Nous y voilà enfin. On nous y propose quelques adaptations.

Paramétrage
On va passer en revue quelques paramètres.
Paramètres généraux
La langue par défaut est toujours l'anglais.
On peut la changer via le paramétrage général. On y accède via le menu, option "Contrôle", sous-menu "Paramètres".

Plus bas, on peut aussi régler les "Paramètres internationaux".
Préfixe
Par défaut, le logiciel sépare le nom de famille entre son préfixe s'il existe du reste du nom.
Pour ma part, cette séparation me perturbait, mon "De Bast" étant composé de deux parties et du prénom "Albert". Ceci conduisait dans l'affichage à "Bast, Albert, De" alors qu'usuellement on a "De Bast Albert".
J'ai donc décidé d'annuler cette fonctionnalité.
Soit on édite directement le fichier source "/web/humogen/admin/include/prefixes.php". Soit on utilise l'interface Web. Pour y accéder, on utilise le menu, option "Contrôle", sous-menu "Editeur de préfixe".
Attention, ce fichier doit comporter au moins un préfixe sinon le programme ne fonctionne plus par exemple lors de l'importation d'un fichier GedCom. J'en ai créé un bidon.
Au final, voici ce qui reste au minimum:
<?php $pers_prefix[] = "XXX_XXX_";
Cette opération doit être faite avant toute injection de données. Sinon vous devrez éditer chaque fiche pré-existante pour transférer le préfixe dans le nom de famille.
Catégories d'images
Définition de catégories d'images
Quand je le peux, je récupère une image d'un acte ou tout autre document, ce qui fait vite un grand nombre. Ils sont associés à un individu ou à une famille.
Je les classe dans divers dossiers selon leur catégorie:
- naissance (dossier: na)
- baptême (dossier: ba)
- publication de mariage (dossier: pu)
- mariage (dossier: ma)
- divorce (dossier: di)
- décès (dossier: de)
- sépulture (dossier: se)
- documents divers (dossier: do), par exemple: index, registre de population,...
- portrait (dossier: po), image de l'individu
Comme je procède à une injection d'un fichier GedCom adapté d'une extraction du logiciel Geneanet, je place directement ces images sur le serveur.
Dans le logiciel il est prévu de définir ces catégories. On y accède via le menu, option "Arbres généalogiques", sous-menu "Images, création de vignettes", onglet "Catégories d'album photo".

En suivant ses directives, nous avons adopté une nomenclature des dossiers selon deux lettres comme exposé ci-dessus. On ajoute ces différentes catégories. Au final, nous obtenons ce qui suit.

Création des dossiers des catégories d'images
Ceci fait, il faut créer ces dossiers. Ils se placent sous le dossier du serveur "/web/humogen/media". Nous créons donc les dossiers "/web/humogen/medi/na", "/web/humogen/medi/ba",... En outre, il faut créer les dossiers équivalent pour le traitement des vignettes. Ce sont la même série de dossiers mais préfixés par "thumbs_", par exemple: "thumbs_na", "thumbs_ba",...
Nous pouvons y placer nos images dans les dossiers correspondants. Les dossiers "thumbs_*" restant vides.
Ne pas oublier d'adapter les privilèges: appartenance à l'utilisateur "apache" et droits de lecture, écriture comme défini en début d'article.
Bugs
Mais lors de l'accès à ces images, le logiciel a besoin d'une vignette, image redimensionnées, plus petite. Il est possible de les créer en utilisant le même menu, second onglet. Mais a chaque exécution, il les recrée toutes ce qui est long et inutile.
Normalement lorsqu'il en a besoin, le logiciel les crée automatiquement. Dans le cas d'images directement mises dans le dossier "/web/humogen/media", il n'y a pas de problème. Mais dans le cas d'utilisation de sous-répertoires, le programme se plante et génère une erreur dans le journal de PHP.
La cause est la suivante. Dans le programme, il y a séparation du nom de dossier où se trouve l'image et du nom de l'image. Or ici, le sous-dossier se retrouve dans le nom de l'image.
Pour régler le problème (version 7.0.5 et précédentes), il faut ajouter un bout de code dans le fichier "/web/humogen/include/ShowMedia.php" à la ligne 380, en gras ci-dessous:
...
// check for mime type and no_thumb file
//if ($resizePicture->check_media_type($folder, $file) && !is_file($folder . '.' . $file . '.no_thumb')) {
if ($resizePicture->check_media_type($folder, $file)) {
// script will possibily die here and hidden no_thumb file becomes persistent
// so this code might be skipped afterwards
// TODO: aug 2025 thumbnails are created always at this moment, because of new thumbnail size.
//if ($humo_option["thumbnail_auto_create"] == 'y' && $resizePicture->create_thumbnail($folder, $file)) {
// ADB
$files=explode("/",$file);
$nbs=count($files);
if ($nbs == "2")
{
$folder=$folder.$files[0]."/";
$file=$files[1];
}
if ($resizePicture->create_thumbnail($folder, $file)) {
$src_path = $mediaPath->give_media_path($folder, 'thumb_' . $file . '.jpg');
return '<img src="' . $src_path . '"' . $img_style . $img_class . '>';
}
}
...
Le principe est simple; si on détecte un sous-répertoire dans le nom de fichier, on le transfère à la suite du nom de dossier.
Autre problème, dans la fenêtre d'édition d'un individu ou de sa famille, les miniatures des documents ne sont pas affichées.
Après recherche, il apparaît que dans ce même script PHP, le chemin vers le fichier image est préfixé de "../" et une variable du nom "$prefix" est aussi garni de la valeur "../". J'ai donc dû ajouter un test pour éliminer ce double préfixe.
Il est à intercaler dans le script "/web/humogen/include/ShowMedia.php" vers la ligne 360, en gras ci-dessous:
...
// I modified thumbnail_exist function to serve also only file in swcond mode with its logic because i have not enough know
$mode = 'onlyfile';
$fileName = $this->thumbnail_exists($folder, $file, $mode);
$src_path = $mediaPath->give_media_path($folder_for_give_media_path, $fileName);
// ADB
$src_paths=explode("/",$src_path);
if ($src_paths[0] == "..")
$prefix="";
return '<img src="' . $prefix . $src_path . '"' . $img_style . $img_class . '>';
...
Création d'un arbre
Jusqu'à maintenant, il n'y a pas d'arbre, ou plutôt, il y en a un créé par défaut "SANS NOM". Nous allons changer ce nom. On y accède via le menu, option "Arbres généalogiques", sous-menu "Arbres généalogiques", onglet "Textes arbre généalogiques (par langue)".

Dans cet écran, on renomme notre arbre "SANS NOM", dans notre exemple "De Bast".

Dans le premier onglet "Arbres généalogiques", on peut créer d'autres arbres.

Injection d'un fichier GedCom
On peut garnir notre arbre individu après individu et leurs familles manuellement. Mais nous avons choisi d'injecter les données généalogiques d'un autre logiciel. Ceci se fait au départ d'un fichier GedCom exporté d'un autre logiciel. Il est a noter que les informations exportées divergent d'un logiciel à l'autre. Il se peut qu'il faille l'adapter. Dans notre cas, il a fallu adapter les chemins et noms des images.
En tant qu'administrateur, on y accède via le menu, option "Arbres généalogiques", sous-menu "Arbres généalogiques", onglet "Importer un fichier Gedcom".

Dans l'écran qui s'ouvre, on choisit notre fichier à importer dans la partie supérieure et on clique sur le bouton "Téléverser". Sur le serveur, il se retrouvera dans le répertoire "/web/humogen/admin/gedcom_files".
Dans la partie du dessous, on s'assure que c'est le bon fichier.
Dans la troisième partie, nous avons sélectionné le traitement des images avec les sous-répertoires (option "Paramétrage des images".
Dans la quatrième partie, on a coché l'affichage des problèmes de traitement.
Enfin en bas, on peut passer à la seconde étape. Si vous aviez déjà des données, une option vous permet d'effacer ces données préexistantes.

L'étape deux se charge du nettoyage de la base de données.

L'étape 3 charge les données.

L'étape 4 finalise l'importation.

Fichier GedCom et médias
Si le fichier GedCom comprend les balises permettant de déterminer le répertoire et le nom des fichiers médias (portraits, actes,... sous forme d'images par exemple) en liaison avec un individu, une famille ou des événements (naissance, décès,...) et si ces fichiers médias se trouvent déjà sur le serveur à leur emplacement dédié, le logiciel les repère et effectue la liaison. Ces images apparaissent alors dans l'interface Web. HuMo-Genealogy supporte la répartition des médias dans divers sous-répertoires.
Par exemple, pour notre exemple "/web/humogen" et la configuration par défaut "/media", ils doivent se retrouver sous le répertoire "/web/humogen/media" avec éventuellement une répartition dans des sous-répertoires.
Consultation
Enfin on a des données; voyons comment elles se présentent.
Dans l'écran précédent, on clique sur le lien du bas "index.php".

On est connecté en tant qu'invité (utilisateur "guest").
Il se peut qu'il vous demande de vous identifier:

L'écran d'accueil vous présente les statistiques des noms de familles les plus courantes.

On clique sur la famille "De Bast".

Dans l'écran de recherche qui s'ouvre, on a retreint la recherche au prénom "Joseph". On sélectionne dans la liste de trois individus, le second "Joseph Jean".
En début, se retrouvent les informations sur cette personne. En dessous se retrouvent celles de sa famille.

Devant chaque individu, une petite icône est présente. En cliquant dessus, une fenêtre contextuelle s'ouvre. Parmi diverses options, en bas, on peut accéder à l'édition de la fiche de cet individu.

Privatisation
Par défaut, tout le monde peut consulter votre arbre. Pour ne le rendre disponible qu'aux utilisateurs connectés, on va régler quelques droits.
Cet utilisateur ayant tous ces droits de consultation s'appelle "guest" et il appartient au groupe "guest". Ils sont créés lors de l'installation.
En tant qu'administrateur, on active l'écran d'administration via le menu, option "Contrôle", sous-option "Admin". Dans le nouvel écran qui s'ouvre, allez à la gestion des groupes via le menu, option "Utilisateurs", sous-menu "Groupes d'utilisateurs".
On choisit le groupe "guest" et on désactive à peu près toutes les options. Laissez l'option "Afficher le lien "Connexion" (peut être modifié dans le groupe "invité" uniquement)" cochée.
Sauvez.
Dorénavant, nous aurons l'écran suivant à l'ouverture du site; la seule solution est de s'authentifier.

→ retour au logiciels de Généalogie