Base de connaissances
1 000 FAQ, 500 tutoriels et vidéos explicatives. Ici, il n'y a que des solutions !
Ce guide concerne le module Apache mod_auth_mysql
qui permet l’authentification des utilisateurs et l’autorisation d’accès via une base de données MySQL.
Avec un hébergement mutualisé
Le module mod_auth_mysql
n'est pas disponible avec les hébergements mutualisés ; il faut envisager un Serveur Cloud ou utiliser scripts PHP et sessions.
Ce guide explique comment accéder à InnoDB chez Infomaniak.
Utiliser le moteur de stockage MySQL InnoDB
Dès lors que votre hébergement Infomaniak vous donne accès aux bases de données MySQL / MariaDB, InnoDB est disponible dans le même temps (MyISAM auparavant).
InnoDB offre des fonctionnalités avancées telles que les transactions ACID, les verrous au niveau de la ligne, les indexes de texte complet, etc. Vous pouvez tirer parti de ces fonctionnalités en utilisant des instructions SQL appropriées dans vos requêtes.
Ce guide concerne YAZ une bibliothèque logicielle utilisée pour implémenter le protocole Z39.50
, un protocole de recherche et de récupération d'informations permettant la communication entre différents systèmes de bibliothèques (SIGB) comme PMB largement utilisé en France.
Infomaniak pour une gestion efficace des bibliothèques
Sur les Hébergements Web Infomaniak, PMB est supporté et YAZ est activé par défaut.
Toutefois si vous rencontrez des erreurs comme Call to undefined function yaz_connect()
il sera nécessaire d'ouvrir des ports via le Manager. Le port 210
est le port standard utilisé pour les communications Z39.50
mais n'hésitez pas à consulter la documentation de vos applicatifs.
Pour les anciennes formules d'hébergement Infomaniak, il faut envisager un changement d'offre.
L'accès aux commandes système who
et users
est interdit aux utilisateurs LDAP sur tous les serveurs Infomaniak.
Ce guide explique comment spécifier un fichier qui sera chargé avant même la page voulue ou au début de chaque script PHP exécuté sur votre serveur, inclus comme s'il avait été appelé avec la fonction require()
, mais plus globalement en utilisant la directive auto_prepend_file
de PHP.
Préambule
- Pour par exemple déclarer les headers d'un site Web, il est possible de faire un fichier
headers.php
qui contient des fonctions PHPheader()
et qui soit prepend au début de chaque fichier PHP…- … via un fichier
.user.ini
(propre à un dossier), - … ou via la configuration du site du Manager (global) comme expliqué ci-dessous.
- … via un fichier
Inclure un fichier globalement depuis le Manager
Pour accéder à la gestion du site Web :
- Cliquez ici afin d'accéder à la gestion de votre produit sur le Manager Infomaniak (besoin d'aide ?).
- Cliquez directement sur le nom attribué au produit concerné:
- Cliquez sur Gérer sous Paramètres avancés:
- Cliquez sur l'onglet PHP / Apache.
- Complétez la ligne concernée en entrant le chemin du fichier à inclure.
- Cliquez sur le bouton pour sauvegarder:
Après avoir défini cette directive, toutes les pages PHP sur votre serveur incluront automatiquement le fichier spécifié avant d'exécuter leur propre code.
Les headers définis dans un fichier .htaccess
ne sont valables que pour le contenu non PHP (donc statique).
Infomaniak utilise php-fpm
qui reçoit les différents headers via apache fast_cgi
. Dans la RFC de cgi_www le header Strict-Transport-Security
ne fait pas partie des headers passés via CGI et la documentation Apache le confirme. Prenez connaissance de cette autre RFC.
⚠️ Pour de l'aide supplémentaire contactez un partenaire ou lancez gratuitement un appel d'offres — découvrez aussi le rôle de l'hébergeur.
Ce guide vous aidera si par exemple vous souhaitez déployer un package comme pymysql
et que celui-ci requiert une version de python supérieure à celle proposée sur votre hébergement.
Préambule
- Anaconda est une distribution libre et open source des langages de programmation Python. Cette distribution vise à simplifier la gestion des paquets et de déploiement.
- Il est recommandé alors d'utiliser conda livré avec une version récente de python et qui s'installe dans l'espace utilisateur, de sorte qu'il n'y a pas de conflit avec le système python (comme dans un environnement virtuel, qui nécessite toujours une installation système de la version souhaitée).
- Prenez connaissance de la documentation officielle.
⚠️ Pour de l'aide supplémentaire contactez un partenaire ou lancez gratuitement un appel d'offres — découvrez aussi le rôle de l'hébergeur.
Télécharger l'installateur
uid165116@od-12345:~$ wget https://repo.anaconda.com/miniconda/Miniconda3-py37_4.10.3-Linux-x86_64.sh
--2021-07-28 18:21:10-- https://repo.anaconda.com/miniconda/Miniconda3-py37_4.10.3-Linux-x86_64.sh
Resolving repo.anaconda.com (repo.anaconda.com)... 2606:4700::6810:8303, 2606:4700::6810:8203, 104.16.131.3, ...
Connecting to repo.anaconda.com (repo.anaconda.com)|2606:4700::6810:8303|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 89026327 (85M) [application/x-sh]
Saving to: ‘Miniconda3-py37_4.10.3-Linux-x86_64.sh’
Miniconda3-py37_4.10.3-Linux-x86_64.sh 100% [==============================================>] 84.90M 203MB/s in 0.4s
18:21:11 (100 MB/s) - ‘Miniconda3-py37_4.10.3-Linux-x86_64.sh’ saved [89026327/89026327]
Contrôler le hash
uid165116@od-12345:~$ test $(md5sum Miniconda3-py37_4.10.3-Linux-x86_64.sh | awk '{print $1}') == "9f186c1d86c266acc47dbc1603f0e2ed" && echo "OK"
OK
Lancer l'installation
uid165116@od-12345:~$ bash Miniconda3-py37_4.10.3-Linux-x86_64.sh -b
PREFIX=/home/clients/fc84cbbf6dcbd6dd76b15d3e56c1789f/miniconda3
Unpacking payload ...
Collecting package metadata (current_repodata.json): done
Solving environment: done
## Package Plan ##
environment location: /home/clients/fc84cbbf6dcbd6dd76b15d3e56c1789f/miniconda3
added / updated specs:
- _libgcc_mutex==0.1=main
- _openmp_mutex==4.5=1_gnu
- brotlipy==0.7.0=py37h27cfd23_1003
- ca-certificates==2021.7.5=h06a4308_1
- certifi==2021.5.30=py37h06a4308_0
- cffi==1.14.6=py37h400218f_0
- chardet==4.0.0=py37h06a4308_1003
- conda-package-handling==1.7.3=py37h27cfd23_1
- conda==4.10.3=py37h06a4308_0
- cryptography==3.4.7=py37hd23ed53_0
- idna==2.10=pyhd3eb1b0_0
- ld_impl_linux-64==2.35.1=h7274673_9
- libffi==3.3=he6710b0_2
- libgcc-ng==9.3.0=h5101ec6_17
- libgomp==9.3.0=h5101ec6_17
- libstdcxx-ng==9.3.0=hd4cf53a_17
- ncurses==6.2=he6710b0_1
- openssl==1.1.1k=h27cfd23_0
- pip==21.1.3=py37h06a4308_0
- pycosat==0.6.3=py37h27cfd23_0
- pycparser==2.20=py_2
- pyopenssl==20.0.1=pyhd3eb1b0_1
- pysocks==1.7.1=py37_1
- python==3.7.10=h12debd9_4
- readline==8.1=h27cfd23_0
- requests==2.25.1=pyhd3eb1b0_0
- ruamel_yaml==0.15.100=py37h27cfd23_0
- setuptools==52.0.0=py37h06a4308_0
- six==1.16.0=pyhd3eb1b0_0
- sqlite==3.36.0=hc218d9a_0
- tk==8.6.10=hbc83047_0
- tqdm==4.61.2=pyhd3eb1b0_1
- urllib3==1.26.6=pyhd3eb1b0_1
- wheel==0.36.2=pyhd3eb1b0_0
- xz==5.2.5=h7b6447c_0
- yaml==0.2.5=h7b6447c_0
- zlib==1.2.11=h7b6447c_3
The following NEW packages will be INSTALLED:
_libgcc_mutex pkgs/main/linux-64::_libgcc_mutex-0.1-main
_openmp_mutex pkgs/main/linux-64::_openmp_mutex-4.5-1_gnu
brotlipy pkgs/main/linux-64::brotlipy-0.7.0-py37h27cfd23_1003
ca-certificates pkgs/main/linux-64::ca-certificates-2021.7.5-h06a4308_1
certifi pkgs/main/linux-64::certifi-2021.5.30-py37h06a4308_0
cffi pkgs/main/linux-64::cffi-1.14.6-py37h400218f_0
chardet pkgs/main/linux-64::chardet-4.0.0-py37h06a4308_1003
conda pkgs/main/linux-64::conda-4.10.3-py37h06a4308_0
conda-package-han~ pkgs/main/linux-64::conda-package-handling-1.7.3-py37h27cfd23_1
cryptography pkgs/main/linux-64::cryptography-3.4.7-py37hd23ed53_0
idna pkgs/main/noarch::idna-2.10-pyhd3eb1b0_0
ld_impl_linux-64 pkgs/main/linux-64::ld_impl_linux-64-2.35.1-h7274673_9
libffi pkgs/main/linux-64::libffi-3.3-he6710b0_2
libgcc-ng pkgs/main/linux-64::libgcc-ng-9.3.0-h5101ec6_17
libgomp pkgs/main/linux-64::libgomp-9.3.0-h5101ec6_17
libstdcxx-ng pkgs/main/linux-64::libstdcxx-ng-9.3.0-hd4cf53a_17
ncurses pkgs/main/linux-64::ncurses-6.2-he6710b0_1
openssl pkgs/main/linux-64::openssl-1.1.1k-h27cfd23_0
pip pkgs/main/linux-64::pip-21.1.3-py37h06a4308_0
pycosat pkgs/main/linux-64::pycosat-0.6.3-py37h27cfd23_0
pycparser pkgs/main/noarch::pycparser-2.20-py_2
pyopenssl pkgs/main/noarch::pyopenssl-20.0.1-pyhd3eb1b0_1
pysocks pkgs/main/linux-64::pysocks-1.7.1-py37_1
python pkgs/main/linux-64::python-3.7.10-h12debd9_4
readline pkgs/main/linux-64::readline-8.1-h27cfd23_0
requests pkgs/main/noarch::requests-2.25.1-pyhd3eb1b0_0
ruamel_yaml pkgs/main/linux-64::ruamel_yaml-0.15.100-py37h27cfd23_0
setuptools pkgs/main/linux-64::setuptools-52.0.0-py37h06a4308_0
six pkgs/main/noarch::six-1.16.0-pyhd3eb1b0_0
sqlite pkgs/main/linux-64::sqlite-3.36.0-hc218d9a_0
tk pkgs/main/linux-64::tk-8.6.10-hbc83047_0
tqdm pkgs/main/noarch::tqdm-4.61.2-pyhd3eb1b0_1
urllib3 pkgs/main/noarch::urllib3-1.26.6-pyhd3eb1b0_1
wheel pkgs/main/noarch::wheel-0.36.2-pyhd3eb1b0_0
xz pkgs/main/linux-64::xz-5.2.5-h7b6447c_0
yaml pkgs/main/linux-64::yaml-0.2.5-h7b6447c_0
zlib pkgs/main/linux-64::zlib-1.2.11-h7b6447c_3
Preparing transaction: done
Executing transaction: done
installation finished.
Lancer conda
uid165116@od-12345:~$ source <(~/miniconda3/bin/conda shell.bash hook)
Installer pymysql (par exemple)
(base) uid165116@od-12345:~$ python3 -V
Python 3.7.10
(base) uid165116@od-12345:~$ pip3 install pymysql --user
Collecting pymysql
Downloading PyMySQL-1.0.2-py3-none-any.whl (43 kB)
|████████████████████████████████| 43 kB 892 kB/s
Installing collected packages: pymysql
Successfully installed pymysql-1.0.2
Ce guide concerne l'installation d'extension PHP sur Hébergements Web Infomaniak.
Utilisation d'extensions PHP Zend
- Zend Guard Loader est une extension PHP qui permet d'exécuter des scripts PHP chiffrés via Zend Guard.
- Zend Guard Loader est installé de base pour PHP <= 5.6 sur tous les hébergements Web et n'est pas disponible pour les versions de PHP >= 5.6.
- Depuis PHP 5.3.x, le module Zend Optimizer a été remplacé par ZendGuardLoader
- L'extension ZendOPCache nécessite un Serveur Cloud configuré avec PHP 5.5 minimum
Ce guide explique comment augmenter la valeur max_children
sur Serveur Cloud afin d'augmenter le nombre de processus PHP simultanés qui peuvent être utilisés par votre site. Cela sera très utile pour résoudre des problèmes de chargement infini des pages de votre site.
Préambule
- Par défaut sur tout hébergement, la limite de
max_children
est fixée à 20.- Bien qu'il soit possible d'augmenter cette valeur depuis le Manager Infomaniak, la limite de
max_children
est automatiquement ajustée en fonction de la configuration de votre Serveur Cloud. - Pour augmenter cette limite sur hébergement mutualisé, migrez sur Serveur Cloud.
- Bien qu'il soit possible d'augmenter cette valeur depuis le Manager Infomaniak, la limite de
- Pour comprendre comment calculer au plus juste les
max_children
nécessaires, prenez connaissance de cet article à ce sujet.
Augmenter la valeur max_children
Prérequis
- S'assurer que vous disposez des ressources nécessaires sur le serveur Cloud.
- S'assurer que l'ensemble des ressources du serveur Cloud ne soient pas utilisées ; s'il s'avère que celles-ci sont totalement utilisées, l'augmentation de la valeur
max_children
n'aura aucun effet (Modifier les ressources du Serveur Cloud). - Contrôler le monitoring des ressources de votre serveur, dans le cas où les ressources de votre serveur sont atteintes, il sera nécessaire de vérifier l'optimisation des processus et de votre site avant d'envisager d'augmenter la valeur
max_children
. - Consulter les rapports d'erreur PHP depuis le dossier
/ik-logs
(master process php logs - nom du fichier : php-fpm.log) pour vérifier si la limite "max_children
" a été dépassée... exemple d'erreur:[05-Jul-2024 09:08:58] WARNING: [pool www.infomaniak.ch] server reached max_children setting (20), consider raising it
Pour accéder à la gestion des paramètres PHP / Apache du site dont il faut augmenter la valeur max_children
sur Serveur Cloud, prenez connaissance de cet autre guide.
Vous pourrez notamment…
- … choisir une nouvelle valeur de
max_children
:
N'oubliez pas d'enregistrer les changements en bas de page.
Limites en fonction du serveur
Limite des max_children
en fonction des ressources du Serveur Cloud:
Configuration Serveur Cloud | max_children |
---|---|
2 CPU / 6 Go RAM | 20 |
4 CPU / 12 Go RAM | 40 |
6 CPU / 18 Go RAM | 60 |
8 CPU / 24 Go RAM | 80 |
12 CPU / 36 Go RAM | 120 |
16 CPU / 48 Go RAM | 160 |
24 CPU / 72 Go RAM | 240 |
32 CPU / 96 ou 128 Go RAM | 320 |
Ce guide explique comment modifier la valeur de la directive php_value include_path
.
Modifier le include_path
Comme tout autre paramètre PHP, include_path est défini dans le fichier .user.ini.
Voici un exemple de chemin à utiliser dans le fichier .user.ini
:
include_path = .:/home/clients/123456789a12345b12fc345d/web/www.domainetest.abc/public/abc/include
Prenez connaissance de cet autre guide au sujet du phpinfo afin de vérifier la prise en compte de votre nouvelle directive.
Le module Apache mod_userdir
n'est pas disponible.
Ce guide vous est destiné car vous avez choisi (ou allez choisir) Infomaniak comme hébergeur. Ce choix n'est pas anodin. Vous êtes sensible à l'écologie et souhaitez faire le maximum pour réduire l'empreinte carbone sur Internet.
Infomaniak vous remercie d'ores et déjà de choisir cet hébergeur qui se soucie de la planète et d'explorer les pistes ci-dessous pour progresser dans l'éco-conception de votre environnement Web.
Pourquoi agir ?
Les sites internet consomment de l'énergie pour fonctionner, et l'utilisation d'Internet est l'une des principales causes de l'augmentation des émissions de gaz à effet de serre.
Outre le fait qu'il est important de choisir un hébergeur éthique qui utilise des sources d'énergie renouvelable pour alimenter ses serveurs vous pouvez également contribuer à réduire ces émissions en adoptant des pratiques éco-responsables dans la conception et la gestion de vos sites et services Mail.
Comment agir ?
Comme vu plus haut, Infomaniak agit sur différents points jusqu'à son département support lui-même: il vous accompagnera dans le choix de services adaptés à vos besoins dans un souci de préservation de l'environnement, récoltera vos feedbacks permettant d’optimiser nos pratiques et s’inspirer de vos expériences, tout en communiquant les enjeux environnementaux dans le secteur de l’hébergement pour adopter les bonnes pratiques numériques.
A votre niveau, il existe plusieurs moyens de réduire votre empreinte carbone sur Internet:
Minimiser la consommation d'énergie
Pour réduire la consommation d'énergie des serveurs et des ordinateurs des utilisateurs: optimisez les images, utilisez des polices de caractères web, utilisez des scripts minifiés et des technologies de compression de données. Les designs épurés peuvent aider à réduire les besoins en bande passante.
Offrez des options pour réduire la consommation de données en utilisant des images de qualité inférieure ou en proposant des vidéos en streaming à différentes qualités, pour désactiver les pisteurs et les publicités qui consomment beaucoup de données.
Pour de bonnes pratiques dédiées à WordPress consultez les fiches de GreenIT.
Utiliser des technologies éco-responsables
Les technologies de développement durable, telles que l'HTML5, CSS3 et JavaScript, sont plus respectueuses de l'environnement.
Promouvoir la durabilité
Sensibilisez les utilisateurs à l'impact environnemental des technologies d'Internet et invitez-les à adopter des pratiques éco-responsables. Y compris avec la solution WordPress.
Et au niveau de la messagerie ?
Les mêmes réflexes peuvent se faire concernant votre communication par e-mail:
- Utiliser une signature éco-responsable qui invite les destinataires à réduire leur impact environnemental en utilisant des technologies éco-responsables ou en adoptant des pratiques éco-responsables…
- Utiliser des outils de gestion des e-mails éco-responsables qui utilisent des sources d'énergie renouvelable et qui ont des politiques éco-responsables en matière de consommation d'énergie…
- Utiliser des e-mails en texte brut plutôt que des e-mails en HTML, car les e-mails en HTML ont tendance à consommer plus d'énergie pour être affichés…
- Utiliser des pièces jointes en format PDF plutôt que des formats plus lourds…
- Utiliser des fonctionnalités de désinscription pour éviter d'envoyer des e-mails non désirés…
- Utiliser des outils de suivi pour savoir combien de personnes ouvrent vos e-mails et ainsi savoir si vous en envoyez trop ou pas assez…
Toutes ces actions peuvent être réalisées progressivement et doivent être adaptées à la situation de chaque site web, il n'y a pas de solution unique.
Surveillez régulièrement les statistiques de consommation d'énergie pour continuer à améliorer la performance écologique du site. Infomaniak proposera dans le futur des outils dans ce sens mais en attendant vous pouvez utiliser https://greenframe.io.
L'écriture dans les dossiers /etc
et /lib
est désactivée pour des raisons de sécurité.
Ce guide présente les différentes actions qui sont possibles sur une table MySQL en fonction des droits octroyés à un utilisateur.
Actions sur les tables selon les droits de l'utilisateur…
… sur hébergement Web mutualisé
Lecture + Ecriture + Admin
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, CREATE VIEW, SHOW VIEW
Lecture + Ecriture
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE TEMPORARY TABLES, LOCK TABLE
Lecture
GRANT SELECT
… sur Serveur Cloud
Lecture + Ecriture + Admin
GRANT ALL
Lecture + Ecriture
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE TEMPORARY TABLES, LOCK TABLES
Lecture
GRANT SELECT
Ce guide concerne les personnes souhaitant travailler avec la couche d'abstraction Propel (qui fait référence à un composant clé de la bibliothèque Propel, un ORM (Object-Relational Mapping) pour PHP).
Préambule
- L’ORM (Object-Relational Mapping) permet de lier les objets d’une application aux tables d’une base de données relationnelle. Plutôt que d’écrire du SQL, on manipule les données via des objets.
- Propel, une couche d’abstraction en PHP, facilite la création, manipulation et récupération d’objets sans se soucier des détails SQL. Elle permet de gérer les relations, les jointures et la pagination, tout en améliorant la lisibilité et la maintenance du code.
Particularités & limitations
- Propel n'est pas installé par défaut en tant que package Pear ; cela signifie que vous devrez l'installer manuellement sur votre serveur.
- La version "Conventionnal Package" de Propel peut être installée ; téléchargez et installez bien cette version spécifique.
- Etant donné que les lignes de commandes de Propel (
propel-gen
p.ex) ne sont pas accessibles, vous ne pourrez pas les utiliser directement. - Cela signifie que Propel ne pourra être utilisé qu'en production, une fois que vous aurez généré les classes et fichiers nécessaires localement ou sur un autre environnement de développement.
- Toutes les manipulations et génération de code devront être réalisées ailleurs, avant de transférer les fichiers résultants vers votre environnement de production.
Dépendances
- Toutes les dépendances nécessaires pour utiliser Propel sont disponibles, à l'exception de Phing.
- Phing n'est pas nécessaire pour la production, donc cela ne devrait pas poser problème.
- S'assurer d'avoir toutes les autres dépendances requises pour Propel installées correctement.
Ce guide vous présente les ports ouverts disponibles pour les sites Node.js (uniquement) hébergés chez Infomaniak.
Ports ouverts en sortie
Web
- HTTP (tcp/80)
- HTTP alternatif (tcp/8080)
- HTTPS (tcp/443)
- FTP Data (tcp/20)
- FTP Control (tcp/21)
- POP3 (tcp/110)
- IMAP (tcp/143)
- SMTP submission (+ STARTTLS) (tcp/587)
- SMTPS (tcp/465)
- IMAPS (tcp/993)
- POP3S (tcp/995)
DB
- MySQL (tcp/3306)
- MongoDB (tcp/27017)
- PostgreSQL (tcp/5432)
- Redis (tcp/6379)
- Redis TLS (tcp/6380)
- ElasticSearch (tcp/9200)
Misc
- SSH (tcp/22)
- Git pack transfer (tcp/9418)
Ports ouverts en entrée
- HTTP (tcp/80)
- HTTPS (tcp/443)
- SSH (tcp/22)
Ce guide vous accompagne dans l’installation sur Infomaniak de Ghost, une plateforme idéale pour les blogs (écriture régulière, format éditorial) et les sites de publication centrés sur le contenu, tels que Substack ou Medium.
Reposant sur Node.js et utilisant Markdown pour la rédaction, Ghost se distingue par sa légèreté, là où WordPress, bien que plus flexible et universel, reste plus lourd.
Pour de l'aide supplémentaire contactez un partenaire ou lancez gratuitement un appel d'offres — découvrez aussi le rôle de l'hébergeur.
Prérequis
- Avoir installé un site vierge de type Node.js sur un hébergement Web Infomaniak.
- Créer un accès SSH.
- Créer une base de données.
- Posséder une adresse mail valide et fonctionnelle (notamment les fonctionnalités de mot de passe oublié).
Installation de Ghost
Pour cela:
- Connectez-vous sur le serveur en SSH (besoin d'aide ?).
- Placez-vous dans le répertoire du site en exécutant la commande “cd chemin-vers-le-site” (par exemple
cd sites/ghost.domain.xyz
). Entrez la commande suivante:
npx -p ghost-cli ghost install --check-empty=false
et entrez les informations demandées (nom d'hôte de base de données, URL du site Web, etc.).
Modifiez le fichier
config.production.json
pour mettre à jour les paramètres du port et de l'hôte:"server": { "port": 3000, "host": "0.0.0.0" },
Spécifiez-y également les informations relatives à la messagerie:
"mail": { "transport": "SMTP", "options": { "service": "Infomaniak", "host": "mail.infomaniak.com", "port": 465, "auth": { "user": "<<email_username>>", "pass": "<<email_password>>" } }, "from": "<<email_address>>" },
Configuration Node.js
Pour exécuter l'application, rendez-vous sur le tableau de bord Node.js:
- Cliquez ici afin d'accéder à la gestion de votre produit sur le Manager Infomaniak (besoin d'aide ?).
- Cliquez directement sur le nom attribué au produit concerné.
- Cliquez sur Gérer sous Paramètres avancés:
- Cliquez sur l'onglet Node.js pour accéder aux réglages:
Dans le champ de commande d'exécution, entrez:
npx -p ghost-cli ghost run
- Cliquez sur le bouton Enregistrer en bas de page.
- Sur la page principale, cliquez sur le bouton Start ou Restart.
- Observez les journaux montrant la création de la base de données et le démarrage de l'application:
- Rendez-vous ensuite sur l'URL de votre site pour démarrer.
Configuration des utilisateurs / mail
Afin de créer le premier utilisateur, ajoutez /ghost
à l'URL de votre site (par exemple https://ghost.domain.xyz/ghost
) et suivez l'assistant.
Vous pouvez également configurer l'"adresse de support du portail des membres": lorsque de nouveaux membres souhaitent s'inscrire, le portail envoie la confirmation du double opt-in à partir d'une adresse spécifique. Par défaut, il s'agit de l'adresse “noreply” de votre domaine. Pour la mettre à jour, naviguez vers “Paramètres”, “Adhésion”, “Paramètres du portail”, “Personnaliser”, et “Page du compte”:
Résoudre une incompatibilité technique entre Ghost et MariaDB
Il existe un problème de compatibilité entre Ghost et la base de données MariaDB. Il en résulte ce type d'erreur:
[2025-05-26 12:54:28] ERROR "GET /ghost/api/admin/posts/6834625e35802b06f1496305/?formats=mobiledoc%2Clexical&include=tags%2Cauthors%2Cauthors.roles%2Cemail%2Ctiers%2Cnewsletter%2Ccount.conversions%2Ccount.clicks%2Csentiment%2Ccount.positive_feedback%2Ccount.negative_feedback" 400 27ms
Could not understand request.
Error ID:
8f2b0d90-3a30-11f0-a25f-fd9c83e1cf02
Error Code:
ER_BAD_FIELD_ERROR
----------------------------------------
Error: select `posts`.*, (with `k` as (select `member_id` from `members_subscription_created_events` where posts.id = members_subscription_created_events.attribution_id union select `member_id` from `members_created_events` where posts.id = members_created_events.attribution_id) select count(*) from `k`) as `count__conversions`, `posts`.*, (select count(distinct `members_click_events`.`member_id`) from `members_click_events` inner join `redirects` on `members_click_events`.`redirect_id` = `redirects`.`id` where posts.id = redirects.post_id) as `count__clicks`, `posts`.*, (select COALESCE(ROUND(AVG(score) * 100), 0) from `members_feedback` where posts.id = members_feedback.post_id) as `count__sentiment`, `posts`.*, (select count(*) from `members_feedback` where posts.id = members_feedback.post_id AND members_feedback.score = 0) as `count__negative_feedback`, `posts`.*, (select sum(`score`) from `members_feedback` where posts.id = members_feedback.post_id) as `count__positive_feedback` from `posts` where (`posts`.`type` = 'post' and `posts`.`status` in ('draft', 'published', 'scheduled', 'sent')) and `posts`.`id` = '2834125e33802b06e1433305' limit 1 - Unknown column 'posts.id' in 'where clause'
at Child.<anonymous> (/srv/customer/sites/ghost.domain.xyz/versions/5.120.2/core/server/models/base/plugins/crud.js:194:31)
at Packet.asError (/srv/customer/sites//versions/5.120.2/node_modules/mysql2/lib/packets/packet.js:740:17)
at Query.execute (/srv/customer/sites//versions/5.120.2/node_modules/mysql2/lib/commands/command.js:29:26)
at Connection.handlePacket (/srv/customer/sites//versions/5.120.2/node_modules/mysql2/lib/base/connection.js:475:34)
at PacketParser.onPacket (/srv/customer/sites//versions/5.120.2/node_modules/mysql2/lib/base/connection.js:93:12)
at PacketParser.executeStart (/srv/customer/sites//versions/5.120.2/node_modules/mysql2/lib/packet_parser.js:75:16)
at Socket.<anonymous> (/srv/customer/sites//versions/5.120.2/node_modules/mysql2/lib/base/connection.js:100:25)
at Socket.emit (node:events:518:28)
at addChunk (node:internal/streams/readable:561:12)
at readableAddChunkPushByteMode (node:internal/streams/readable:512:3)
at Readable.push (node:internal/streams/readable:392:5)
at TCP.onStreamRead (node:internal/stream_base_commons:189:23)
Certaines requêtes SQL générées par Ghost, utilisant des expressions de table communes (CTE) imbriquées dans des sous-requêtes scalaires, provoquent des erreurs HTTP 400
lorsqu'elles sont exécutées sur MariaDB. Ces requêtes sont valides en MySQL 8, qui prend en charge les CTE dans les sous-requêtes scalaires, mais pas en MariaDB jusqu'à la version 10.6.
Un correctif existe pour adapter le comportement de Ghost et éviter ces erreurs (prenez connaissance du guide officiel).
Pour utiliser ce patch, entrez cette commande:
cd current
curl -L https://gist.githubusercontent.com/reneluria/8cbbfbc001e542c77d6d5887fbafe5d3/raw/65e0ce31753b4687d0eb67fc030734a35d3ffbad/ghost-post.patch | patch -p0
Ce guide explique comment ajuster la configuration d'un site Node.js hébergé sur l'infrastructure Infomaniak afin d’adapter le comportement de votre application en fonction de son évolution, de ses dépendances ou de vos préférences techniques.
Prérequis
- Installer un site Node.js sur votre hébergement.
- Tester vos modifications en local avant de les appliquer en production.
- Vérifier que vos scripts (
start
,build
) sont bien définis dans votre fichierpackage.json
. - Si vous modifiez la structure de votre projet, penser à ajuster le dossier d’exécution et les commandes associées.
- Le port d’écoute défini dans le Manager doit impérativement correspondre à celui utilisé dans le code de l’application.
Accéder à la configuration
Chaque site dispose d’un tableau de bord dédié pour contrôler l’application (start, stop, restart), consulter la console d’exécution, gérer les versions de Node.js, configurer les domaines et activer les certificats SSL:
- Cliquez ici afin d'accéder à la gestion de votre produit sur le Manager Infomaniak (besoin d'aide ?).
- Cliquez directement sur le nom attribué au produit concerné.
- Vous pouvez ouvrir la console, stopper le projet (une page de maintenance sera appliquée) ou le redémarrer.
- Pour accéder aux paramètres avancés, cliquez sur Gérer sous Paramètres avancés:
- Cliquez sur l'onglet Node.js pour accéder aux réglages:
Appliquer les changements
Pour cela:
- Enregistrez les modifications depuis l’interface du Manager.
- Redémarrez votre application pour que les changements soient pris en compte.
Prenez connaissance de cet autre guide en cas de problème.
Commandes principales
Dossier d’exécution
Le dossier d’exécution indique l’emplacement sur le serveur où seront exécutées les commandes de construction et de lancement. Il doit pointer vers le répertoire racine de votre application, c’est-à-dire là où se trouve votre fichier package.json
.
Par exemple, vous pouvez spécifier pour la racine du projet:
./
ou si votre application est dans un sous-dossier nommé app
:
./app
ou si elle se trouve dans un dossier backend
:
./backend
Commande de construction (facultative)
Si votre application Node.js nécessite une étape de compilation avant d’être exécutée, renseignez une commande de construction dans le champ prévu à cet effet. Cette commande sera exécutée automatiquement avant le démarrage de l’application.
Par exemple, vous pouvez indiquer :
npm install && npm run build
ou, si vous utilisez yarn :
yarn install && yarn build
Si votre projet ne nécessite aucune compilation, ce champ peut être laissé vide.
Commande de lancement
La commande de lancement correspond à l’instruction utilisée pour démarrer votre application. Elle doit être identique à celle que vous utilisez en local pour exécuter le projet.
Par exemple, vous pouvez indiquer :
node index.js
npm start
ou
yarn start
Cette commande doit permettre de lancer directement le serveur ou le point d’entrée de votre application tel qu’il est défini dans votre environnement de développement.
Port d’écoute
Votre application doit écouter sur un port spécifique qui est défini dans le Manager. Ce port est transmis à votre application via une variable d’environnement PORT
.
Exemple dans votre code Node.js :
const port = process.env.PORT || 8080;
app.listen(port, () => {
console.log(`Application lancée sur le port ${port}`);
});
Assurez-vous que ce port est bien pris en compte dans votre code.
Version de Node.js
Vous pouvez sélectionner la version de Node.js que votre site doit utiliser. Il est conseillé d’utiliser une version stable et toujours supportée pour garantir la sécurité et la compatibilité de votre application.
Ce guide permet de résoudre un problème sur le CMS Prestashop et plus particulierement avec son module “Recherche à facette” ("Faceted search") qui permet la gestion de filtre dans les pages catégorie de produits.
Le problème
Le module crée un cache en base de données, pour accélérer la recherche, cependant la table correspondante n'est jamais nettoyée, ce qui pose problème à l'infrastructure d'hébergement.
Les solutions
Le première solution consiste à désactiver la mise en cache proposée. Si vous disposez d'un module de cache, comme par exemple Ultimate Cache
, il n'y aura aucun impact négatif. Pour cela, depuis les paramètres du module, désactivez le bouton à ce sujet:
La seconde solution consiste à mettre un cronjob qui permet de nettoyer la table, par exemple toutes les soirs.
Depuis les paramètres du module, copiez l’URL existante sur le bouton Clear cache
:
Puis depuis le Manager Infomaniak, créez un webcron (prenez connaissance de cet autre guide à ce sujet) afin d'exécuter l'URL en question, par exemple 1 fois par jour et par nuit.
Ce guide concerne les applications OAuth2 pour vous connecter à vos services externes via votre identifiant de connexion Infomaniak.
Gérer les apps OAuth2 Infomaniak
Pour cela:
- Cliquez ici afin d'accéder à la gestion de votre produit sur le Manager Infomaniak (besoin d'aide ?).
- Cliquez le bouton bleu Créer une nouvelle application:
- Choisissez le type adéquat selon votre besoin et projet actuel.
- Donnez un nom à l'application.
- Entrez l'URL de l'application selon les informations techniques à votre disposition.
- Cliquez sur le bouton pour créer l'application:
- Copiez les informations (
Client ID
,Client secret
) en lieu sûr - elles ne seront plus accessibles après cela:
Ce guide concerne le module WordPress "Infomaniak Connect for OpenID" qui permet aux utilisateurs de se connecter à votre site WordPress (qu'il soit hébergé par Infomaniak ou pas) en utilisant leurs identifiants Infomaniak.
Préambule
- Autoriser la connexion via un compte Infomaniak sur votre site WordPress permet à vos visiteurs de commenter, de s'inscrire à des cours ou d'accéder à tout contenu réservé aux membres en un seul clic, sans avoir à créer un nouveau compte.
- C'est un gain de temps pour eux et une méthode plus sûre pour vous, car vous n'avez pas à gérer de mots de passe supplémentaires.
- Le fonctionnement de ce module externe est identique aux options "Se connecter avec Google", "Se connecter avec Facebook" ou “Se connecter avec Apple” ; il utilise les protocoles standard OAuth2 et OpenID Connect pour permettre une authentification unique (SSO).
A. Créer une application avec Auth Infomaniak
Pour cela:
- Cliquez ici afin d'accéder à la gestion de votre produit Auth sur le Manager Infomaniak (besoin d'aide ?).
- Cliquez sur le bouton pour Créer une nouvelle application:
- Choisissez le type “Web Front-End”.
- Donnez un nom à votre application.
- Dans le champ URL, indiquez le nom de domaine correspondant à votre site WordPress après lequel vous ajoutez
/openid-connect-authorize
(prenez connaissance de la documentation github si nécessaire). - Cliquez sur le bouton pour terminer la création de l'app:
- Notez précieusement les 2 informations obtenues lors de la finalisation de votre application OAuth2:
B. Configurer l'extension WordPress
Pour cela:
- Recherchez l'extension
Infomaniak Connect for OpenID
sur la plateforme d'extensions WordPress depuis votre site. - Installez et activez l'extension:
- Configurez l'extension depuis le menu Paramètres:
- Les seuls champs à remplir sont Client ID et Client Secret Key et proviennent des informations obtenues au point A ci-dessus:
- N'oubliez pas d'enregistrer les modifications apportées aux réglages de l'extension.
- Un bouton supplémentaire, pour une connexion par identifiant Infomaniak, est désormais visible sur votre page de connexion destinée aux utilisateurs
/wp-admin
(/wp-login.php
):