Skip to content

fr_Troubleshooting

michel-heon edited this page Mar 11, 2026 · 6 revisions

Résolution de problèmes

🇬🇧 This page is also available in English: Troubleshooting

Problèmes courants rencontrés lors du déploiement et de l'exploitation de VIVO sur Azure Marketplace.

Lancez d'abord le diagnostic automatisé. La commande make diag vérifie tous les services, les règles de pare-feu, le certificat TLS, Solr, le point de terminaison SPARQL et les journaux en une seule passe depuis votre poste de travail. → Voir fr_Post-Deployment-Verification#diagnostic-automatisé pour la mise en place et l'utilisation.


Échec du déploiement — VIVO_LANGUAGES : unbound variable

Symptôme :

VIVO_LANGUAGES: unbound variable
cloud-final.service: Failed

Cause : La VM a été créée en dehors du modèle de déploiement Marketplace — les paramètres de configuration requis n'ont jamais été injectés.

Correction : Supprimez la VM et redéployez depuis la page de l'offre Azure Marketplace en utilisant le modèle de déploiement standard.


SSH — UNPROTECTED PRIVATE KEY FILE

Symptôme :

Permissions 0777 for 'key.pem' are too open.
bad permissions: ignore key

Cause : Le fichier de clé se trouve sur un système de fichiers Windows/NTFS (ex. : /mnt/c/...). La commande chmod n'y a aucun effet.

Correction :

cp /mnt/c/Users/<VotreNom>/Downloads/your-key.pem ~/.ssh/
chmod 600 ~/.ssh/your-key.pem
ssh -i ~/.ssh/your-key.pem azureuser@<public-ip>

Erreur de déploiement — osDisk.diskSizeGB trop petit

Symptôme :

"code": "OperationNotAllowed",
"message": "The specified disk size 64 GB is less than the size of the corresponding disk in the VM image: 256 GB."

Cause : Le modèle de déploiement d'une version précédente de l'offre définissait une taille de disque inférieure à celle requise par l'image. Ce problème a été corrigé.

Correction : Redéployez en utilisant la version actuelle de l'offre depuis Azure Marketplace.


Erreur de déploiement — linuxConfiguration.ssh.publicKeys.path invalide

Symptôme :

"code": "InvalidParameter",
"target": "linuxConfiguration.ssh.publicKeys.path"

Cause : adminUsername a été laissé vide, produisant le chemin /home//.ssh/authorized_keys.

Correction : Assurez-vous que adminUsername est renseigné (valeur par défaut : azureuser).


VIVO est accessible mais affiche le namespace example.org par défaut

Cause : Les paramètres de déploiement (vivoNamespace, vivoAdminEmail) ont été laissés à leurs valeurs par défaut.

Correction : Redéployez avec les valeurs de votre institution, ou mettez à jour manuellement runtime.properties. Voir fr_Configuring-VIVO.


Avertissement de sécurité du navigateur — certificat non approuvé

Symptôme : Firefox/Chrome affiche « Risque de sécurité potentiel » ou « Votre connexion n'est pas privée » pour le FQDN.

Cause : certbot n'a pas réussi à obtenir un certificat Let's Encrypt lors du premier démarrage.

Diagnostic :

sudo grep -i certbot /var/log/vivo-first-boot.log
sudo cat /var/log/letsencrypt/letsencrypt.log | tail -30

Correction : Exécutez certbot manuellement — voir fr_HTTPS-TLS-Certificate.


Vérification de l'état des services

systemctl status tomcat solr nginx
sudo journalctl -u tomcat --no-pager -n 50
sudo tail -100 /opt/tomcat/logs/catalina.out

Carte des compétences vide — JSONP bloqué par le type MIME

Symptôme :

La carte des compétences VIVO à /vis/capabilitymap charge son cadre mais n'affiche aucun nœud, même après le chargement des données d'exemple et avec plus de 400 documents dans Solr. La console du navigateur affiche :

La ressource à l'adresse /visualizationAjax... a été bloquée en raison d'un type MIME
(« text/html ») incorrect (X-Content-Type-Options: nosniff)

Cause :

L'endpoint /visualizationAjax de VIVO retourne Content-Type: text/html pour toutes les réponses, y compris les réponses JSONP (dont le corps est du JavaScript de la forme ipretResults({...})). Nginx applique X-Content-Type-Options: nosniff de manière globale. Les navigateurs respectent cette directive et bloquent l'exécution du rappel JSONP, ce qui rend la carte vide.

Étape 1 — Vérifier que les données sont présentes côté serveur

Avant de corriger nginx, confirmez que le backend retourne des données :

curl -sk "https://<fqdn>/visualizationAjax?vis=capabilitymap&query=Rhetoric&callback=ipretResults&noCacheIE=1" | head -c 200

Résultat attendu (JSONP) :

ipretResults({"researchers":[...], "researchAreas":[...]})

Si la sortie est du HTML vide, les données d'exemple n'ont pas été chargées — consultez fr_Loading-Sample-Data.

Étape 2 — Vérifier l'en-tête Content-Type

curl -sk -I "https://<fqdn>/visualizationAjax?vis=capabilitymap&query=Rhetoric&callback=ipretResults&noCacheIE=1" \
  | grep -i content-type
  • Retourne text/html → correction nginx requise (voir Étape 3)
  • Retourne application/javascript → nginx est déjà corrigé, vérifiez la console du navigateur pour d'autres erreurs

Étape 3 — Appliquer la correction nginx

Ajoutez un bloc location /visualizationAjax {} dédié dans chaque bloc server { listen 443 ... } du fichier /etc/nginx/conf.d/vivo.conf :

# Correctif JSONP — VIVO retourne text/html pour /visualizationAjax
location /visualizationAjax {
    proxy_pass         http://127.0.0.1:8080;
    proxy_set_header   Host              $host;
    proxy_set_header   X-Real-IP         $remote_addr;
    proxy_set_header   X-Forwarded-For   $proxy_add_x_forwarded_for;
    proxy_set_header   X-Forwarded-Proto https;
    proxy_read_timeout 300s;
    proxy_connect_timeout 60s;
    proxy_hide_header  Content-Type;
    add_header Content-Type              "application/javascript; charset=UTF-8" always;
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains"   always;
    add_header X-Frame-Options           "SAMEORIGIN"                            always;
    add_header Referrer-Policy           "strict-origin-when-cross-origin"       always;
}

Pourquoi pas de X-Content-Type-Options: nosniff ici ? Lorsqu'un bloc location définit un add_header, il remplace tous les add_header hérités des blocs parents (règle d'héritage nginx). Le bloc ci-dessus omet intentionnellement nosniff pour permettre au navigateur d'accepter Content-Type: application/javascript. Les autres en-têtes de sécurité (HSTS, X-Frame-Options, Referrer-Policy) sont explicitement répétés pour maintenir la posture de sécurité.

Après modification, validez et rechargez nginx :

sudo nginx -t && sudo systemctl reload nginx

Relancez la vérification de l'Étape 2 — content-type: application/javascript; charset=UTF-8 confirme que la correction est active.

Ce correctif est inclus dans le modèle d'image Packer (packer/provisioners/04-configure-nginx.sh) et la configuration nginx Docker (docker/nginx/vivo.conf) depuis le commit f92ba3f. Les nouveaux déploiements depuis ces sources ne sont pas affectés.


Page originale (English) : Troubleshooting

Clone this wiki locally