Knowledge base
1000 FAQs, 500 tutorials and explanatory videos. Here, there are only solutions!
This guide concerns the Apache module mod_auth_mysql
which allows user authentication and access authorization via a MySQL database.
With shared hosting
The mod_auth_mysql
module is not available with shared hosting; consider a Cloud Server or use PHP scripts and sessions.
This guide explains how to access InnoDB at Infomaniak.
Use the MySQL InnoDB storage engine
Once your Infomaniak hosting gives you access to MySQL / MariaDB databases, InnoDB is available at the same time (previously MyISAM).
InnoDB offers advanced features such as ACID transactions, row-level locks, full-text indexes, etc. You can take advantage of these features by using appropriate SQL statements in your queries.
Access to the system commands who
and users
is prohibited for LDAP users on all Infomaniak servers.
This guide concerns YAZ a software library used to implement the Z39.50
protocol, an information retrieval protocol that allows communication between different library systems (ILS) such as PMB widely used in France.
Infomaniak for efficient library management
On the Web Hosting Infomaniak, PMB is supported and YAZ is activated by default.
However, if you encounter errors such as Call to undefined function yaz_connect()
it will be necessary to open ports via the Manager. Port 210
is the standard port used for Z39.50
communications but do not hesitate to consult the documentation of your applications.
For the old Infomaniak hosting plans, consider a change of offer.
This guide will help you if, for example, you want to deploy a package like pymysql
and it requires a Python version higher than the one offered on your hosting.
Preamble
- Anaconda is a free and open-source distribution of the Python programming language. This distribution aims to simplify package management and deployment.
- It is recommended to use conda which comes with a recent version of python and installs in the user space, so there is no conflict with the system python (like in a virtual environment, which always requires a system installation of the desired version).
- Refer to the official documentation.
⚠️ For additional help contact a partner or launch a free tender — also discover the role of the host.
Download the installer
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]
Check the hash
uid165116@od-12345:~$ test $(md5sum Miniconda3-py37_4.10.3-Linux-x86_64.sh | awk '{print $1}') == "9f186c1d86c266acc47dbc1603f0e2ed" && echo "OK"
OK
Launch the 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.
Launch conda
uid165116@od-12345:~$ source <(~/miniconda3/bin/conda shell.bash hook)
Install pymysql (for example)
(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
This guide explains how to specify a file that will be loaded before the desired page or at the beginning of each PHP script executed on your server, included as if it had been called with the function require()
, but more globally using the PHP directive auto_prepend_file
.
Preamble
- For example, to declare the headers of a website, you can create a file called
headers.php
that contains PHPheader()
functions and that is prepended at the beginning of each PHP file…- … via a
.user.ini
file (specific to a folder), - … or via the site configuration of the Manager (global) as explained below.
- … via a
Include a file globally from the Manager
To access website management:
- Click here to access the management of your product on the Infomaniak Manager (need help?).
- Click directly on the name assigned to the product concerned:
- Click on Manage under Advanced Settings:
- Click on the PHP / Apache tab.
- Fill in the relevant line by entering the path of the file to include.
- Click the button to save:
After setting this directive, all PHP pages on your server will automatically include the specified file before executing their own code.
The headers defined in a .htaccess
file are only valid for non-PHP (i.e., static) content.
Infomaniak uses php-fpm
which receives the various headers via apache fast_cgi
. In the RFC of cgi_www the header Strict-Transport-Security
is not part of the headers passed via CGI and the Apache documentation confirms this. Refer to this other RFC.
⚠️ For additional help, contact a partner or launch a free tender — also discover the role of the host.
This guide concerns the installation of PHP extensions on Web Hosting Infomaniak.
Using Zend PHP extensions
- Zend Guard Loader is a PHP extension that allows you to run encrypted PHP scripts via Zend Guard.
- Zend Guard Loader is pre-installed for PHP <= 5.6 on all web hosting and is not available for PHP versions >= 5.6.
- Since PHP 5.3.x, the Zend Optimizer module has been replaced by ZendGuardLoader
- The ZendOPCache extension requires a Serveur Cloud configured with PHP 5.5 minimum
This guide explains how to increase the max_children
value on Serveur Cloud to increase the number of simultaneous PHP processes that can be used by your site. This will be very useful for resolving infinite page loading issues on your site.
Preamble
- By default, the limit for
max_children
is set to 20 for all hosting.- Although it is possible to increase this value from the Infomaniak Manager, the limit for
max_children
is automatically adjusted based on the configuration of your Cloud Server. - To increase this limit on shared hosting, migrate to Cloud Server.
- Although it is possible to increase this value from the Infomaniak Manager, the limit for
- To understand how to calculate the
max_children
needed as accurately as possible, refer to this article on the subject.
Increase the max_children value
Prerequisites
- Ensure that you have the necessary resources on the Cloud Server.
- Ensure that all resources of the Cloud Server are not used; if it turns out that they are fully used, increasing the value of
max_children
will have no effect (Modify the resources of the Cloud Server). - Monitor your server's resource usage, if your server's resources are maxed out, it will be necessary to check the optimization of your processes and site before considering increasing the
max_children
value. - Check the PHP error reports from the
/ik-logs
folder (master process php logs - file name: php-fpm.log) to verify if the "max_children
" limit has been exceeded... example of error:[05-Jul-2024 09:08:58] WARNING: [pool www.infomaniak.ch] server reached max_children setting (20), consider raising it
To access the management of PHP / Apache parameters for the site for which you need to increase the max_children
value on Serveur Cloud, refer to this other guide.
You will be able to…
- … choose a new value for
max_children
:
Do not forget to save the changes at the bottom of the page.
Limits depending on the server
Limit of max_children
based on the resources of the Serveur Cloud:
Cloud Server Configuration | max_children |
---|---|
2 CPU / 6 GB RAM | 20 |
4 CPU / 12 GB RAM | 40 |
6 CPU / 18 GB RAM | sixty |
8 CPU / 24 GB RAM | 80 |
12 CPU / 36 GB RAM | 120 |
16 CPU / 48 GB RAM | 160 |
24 CPU / 72 GB RAM | 240 |
32 CPU / 96 or 128 GB RAM | 320 |
This guide explains how to modify the value of the directive php_value include_path
.
Modify the include_path
Like any other PHP parameter, include_path is defined in the .user.ini file.
Here is an example of path to use in the .user.ini
file:
include_path = .:/home/clients/123456789a12345b12fc345d/web/www.domainetest.abc/public/abc/include
Check out this other guide about phpinfo to verify that your new directive has been applied.
The Apache module mod_userdir
is not available.
This guide is for you because you have chosen (or will choose) Infomaniak as your host. This choice is not trivial. You are sensitive to ecology and want to do everything possible to reduce the carbon footprint on the Internet.
Infomaniak already thanks you for choosing this hosting provider that cares for the planet and for exploring the paths below to progress in the eco-design of your web environment.
Why act?
Websites consume energy to function, and the use of the Internet is one of the main causes of the increase in greenhouse gas emissions.
In addition to choosing an ethical host that uses renewable energy sources to power its servers, you can also contribute to reducing these emissions by adopting eco-responsible practices in the design and management of your sites and Mail services.
How to act?
As mentioned earlier, Infomaniak takes action on various points, including its support department: it will assist you in choosing services tailored to your needs with a focus on environmental preservation, gather your feedback to optimize our practices and draw inspiration from your experiences, while also communicating the environmental challenges in the hosting sector to adopt good digital practices.
At your level, there are several ways to reduce your carbon footprint on the Internet:
Minimize energy consumption
To reduce the energy consumption of servers and users' computers: optimize images, use web fonts, use minified scripts and data compression technologies. Clean designs can help reduce bandwidth requirements.
Offer options to reduce data consumption by using lower quality images or providing streaming videos in different qualities, to disable trackers and advertisements that consume a lot of data.
For good practices dedicated to WordPress consult the GreenIT sheets.
Use eco-responsible technologies
Sustainable development technologies, such as HTML5, CSS3, and JavaScript, are more environmentally friendly.
Promote sustainability
Raise user awareness of the environmental impact of Internet technologies and encourage them to adopt eco-responsible practices. Including with the WordPress solution.
And what about email?
The same habits can be applied to your email communication:
- Use an eco-friendly signature that encourages recipients to reduce their environmental impact by using eco-friendly technologies or adopting eco-friendly practices…
- Use eco-friendly email management tools that utilize renewable energy sources and have eco-friendly policies regarding energy consumption…
- Use plain text emails instead of HTML emails, as HTML emails tend to consume more energy to be displayed…
- Use PDF attachments instead of heavier formats…
- Use unsubscribe features to avoid sending unwanted emails…
- Use tracking tools to find out how many people open your emails and thus know if you are sending too many or too few…
All these actions can be implemented gradually and should be adapted to the situation of each website. There is no one-size-fits-all solution.
Regularly monitor energy consumption statistics to continue improving the site's ecological performance. Infomaniak will offer tools in this direction in the future, but in the meantime, you can use https://greenframe.io.
Writing to the /etc
and /lib
directories is disabled for security reasons.
This guide presents the various actions possible on a MySQL table depending on the rights granted to a user.
Actions on tables according to user rights…
… on shared Web hosting
Read + Write + Admin
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, CREATE VIEW, SHOW VIEW
Read + Write
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE TEMPORARY TABLES, LOCK TABLE
Read
GRANT SELECT
… on Cloud Server
Read + Write + Admin
GRANT ALL
Read + Write
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE TEMPORARY TABLES, LOCK TABLES
Read
GRANT SELECT
This guide is for people who want to work with the Propel abstraction layer (which refers to a key component of the Propel library, an ORM (Object-Relational Mapping) for PHP).
Preamble
- Object-Relational Mapping (ORM) allows linking application objects to the tables of a relational database. Instead of writing SQL, data is manipulated through objects.
- Propel, a PHP abstraction layer, facilitates the creation, manipulation, and retrieval of objects without worrying about SQL details. It allows for managing relationships, joins, and pagination, while improving code readability and maintainability.
Particularities & limitations
- Propel is not installed by default as a Pear package; this means that you will have to install it manually on your server.
- The "Conventionnal Package" version of Propel can be installed; make sure to download and install this specific version.
- Since Propel command lines (e.g.,
propel-gen
) are not accessible, you will not be able to use them directly. - This means that Propel can only be used in production once you have generated the necessary classes and files locally or in another development environment.
- All manipulations and code generation must be done elsewhere before transferring the resulting files to your production environment.
Dependencies
- All the necessary dependencies to use Propel are available, except for Phing.
- Phing is not required for production, so this should not be an issue.
- Ensure that all other required dependencies for Propel are installed correctly.
This guide presents the open ports available for Node.js sites (only) hosted by Infomaniak.
Outbound open ports
Web
- HTTP (tcp/80)
- Alternative HTTP (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)
Open inbound ports
- HTTP (tcp/80)
- HTTPS (tcp/443)
- SSH (tcp/22)
This guide helps you install Ghost on Infomaniak, an ideal platform for blogs (regular writing, editorial format) and content-focused publishing sites, such as Substack or Medium.
Based on Node.js and using Markdown for writing, Ghost stands out for its lightness, whereas WordPress, although more flexible and universal, is heavier.
For additional help, contact a partner or launch a free tender — also discover the role of the host.
Prerequisites
- Have installed a blank Node.js site on Infomaniak Web hosting.
- Create an SSH access.
- Create a database.
- Have a valid and functional email address (especially the forgotten password features).
Ghost Installation
To do this:
- Log in to the server via SSH (need help?).
- Navigate to the site directory by running the command “cd chemin-vers-le-site” (for example
cd sites/ghost.domain.xyz
). Enter the following command:
npx -p ghost-cli ghost install --check-empty=false
and enter the requested information (database host name, website URL, etc.).
Edit the
config.production.json
file to update the port and host parameters:"server": { "port": 3000, "host": "0.0.0.0" },
Specify the email information there as well:
"mail": { "transport": "SMTP", "options": { "service": "Infomaniak", "host": "mail.infomaniak.com", "port": 465, "auth": { "user": "<<email_username>>", "pass": "<<email_password>>" } }, "from": "<<email_address>>" },
Node.js Configuration
To run the application, go to the Node.js dashboard:
- Click here to access the management of your product on the Infomaniak Manager (need help?).
- Click directly on the name assigned to the relevant product.
- Click on Manage under Advanced Settings:
- Click on the Node.js tab to access the settings:
In the execution command field, enter:
npx -p ghost-cli ghost run
- Click the Save button at the bottom of the page.
- On the main page, click the Start or Restart button.
- Observe the logs showing the creation of the database and the start of the application:
- Then, go to your site's URL to start.
User/mail configuration
To create the first user, add /ghost
to the URL of your site (for example https://ghost.domain.xyz/ghost
) and follow the assistant.
You can also configure the "member portal support address": when new members want to register, the portal sends the double opt-in confirmation from a specific address. By default, this is the “noreply” address of your domain. To update it, navigate to “Settings”, “Membership”, “Portal Settings”, “Customize”, and “Account Page”:
Resolve a technical incompatibility between Ghost and MariaDB
There is a compatibility issue between Ghost and the MariaDB database. This results in this type of error:
[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)
Some SQL queries generated by Ghost, using common table expressions (CTE) nested in scalar subqueries, cause HTTP 400
errors when executed on MariaDB. These queries are valid in MySQL 8, which supports CTE in scalar subqueries, but not in MariaDB until version 10.6.
A patch is available to adapt Ghost's behavior and avoid these errors (refer to the official guide).
To use this patch, enter this command:
cd current
curl -L https://gist.githubusercontent.com/reneluria/8cbbfbc001e542c77d6d5887fbafe5d3/raw/65e0ce31753b4687d0eb67fc030734a35d3ffbad/ghost-post.patch | patch -p0
This guide explains how to adjust the configuration of a Node.js site hosted on the Infomaniak infrastructure to adapt the behavior of your application according to its evolution, its dependencies or your technical preferences.
Prerequisites
- Install a Node.js site on your hosting.
- Test your modifications locally before applying them to production.
- Check that your scripts (
start
,build
) are properly defined in yourpackage.json
file. - If you modify the structure of your project, remember to adjust the execution folder and the associated commands.
- The listening port defined in the Manager must absolutely correspond to the one used in the application's code.
Access the configuration
Each site has a dedicated dashboard to control the application (start, stop, restart), access the execution console, manage Node.js versions, configure domains and activate SSL certificates:
- Click here to access the management of your product on the Infomaniak Manager (need help?).
- Click directly on the name assigned to the relevant product.
- You can open the console, stop the project (a maintenance page will be applied) or restart it.
- To access the advanced settings, click on Manage under Advanced Settings:
- Click on the Node.js tab to access the settings:
Apply the changes
To do this:
- Save the changes from the Manager interface.
- Restart your application for the changes to take effect.
Refer to this other guide if you encounter any issues.
Main commands
Execution folder
The execution folder indicates the location on the server where build and launch commands will be executed. It should point to the root directory of your application, i.e., where your package.json
file is located.
For example, you can specify for the project root:
./
or if your application is in a subfolder named app
:
./app
or if it is located in a backend
folder:
./backend
Optional build command
If your Node.js application requires a compilation step before it can be run, enter a build command in the designated field. This command will be executed automatically before the application starts.
For example, you can specify:
npm install && npm run build
or, if you use yarn :
yarn install && yarn build
If your project does not require any compilation, this field can be left empty.
Launch command
The launch command corresponds to the instruction used to start your application. It must be identical to the one you use locally to run the project.
For example, you can specify:
node index.js
npm start
or
yarn start
This command should allow you to directly start the server or the entry point of your application as defined in your development environment.
Listening port
Your application must listen on a specific port that is defined in the Manager. This port is passed to your application via an environment variable PORT
.
Example in your Node.js code:
const port = process.env.PORT || 8080;
app.listen(port, () => {
console.log(`Application lancée sur le port ${port}`);
});
Make sure this port is properly accounted for in your code.
Node.js version
You can select the Node.js version that your site should use. It is recommended to use a stable and always supported version to ensure the security and compatibility of your application.
This guide concerns OAuth2 applications to connect to your external services via your Infomaniak login ID.
Manage Infomaniak OAuth2 apps
To do this:
- Click here to access the management of your product on the Infomaniak Manager (need help?).
- Click the blue Create a new application button:
- Choose the type appropriate to your current need and project.
- Give a name to the application.
- Enter the URL of the application according to the technical information available to you.
- Click on the button to create the application:
- Copy the information (
Client ID
,Client secret
) to a safe place - they will no longer be accessible after that:
This guide concerns the WordPress module "Infomaniak Connect for OpenID" which allows users to log in to your WordPress site (whether it is hosted by Infomaniak or not) using their Infomaniak credentials.
Preamble
- Allowing login via an Infomaniak account on your WordPress site allows your visitors to comment, register for courses, or access any member-only content with a single click, without having to create a new account.
- It saves them time and is a safer method for you, as you do not have to manage additional passwords.
- The operation of this external module is identical to the options "Log in with Google", "Log in with Facebook" or "Log in with Apple"; it uses the standard OAuth2 and OpenID Connect protocols to enable single sign-on (SSO).
A. Create an application with Auth Infomaniak
To do this:
- Click here to access the management of your Auth product on the Infomaniak Manager (need help?).
- Click the button to Create a new application:
- Choose the type "Web Front-End".
- Give a name to your application.
- In the URL field, indicate the domain name corresponding to your WordPress site followed by
/openid-connect-authorize
(refer to the GitHub documentation if necessary). - Click the button to complete the app creation:
- Carefully note the 2 pieces of information obtained when finalizing your OAuth2 application:
B. Configure the WordPress extension
To do this:
- Search for the extension
Infomaniak Connect for OpenID
on the WordPress extensions platform from your site. - Install and activate the extension:
- Configure the extension from the Settings menu:
- The only fields to fill in are Client ID and Client Secret Key and come from the information obtained in point A above:
- Do not forget to save the changes made to the extension settings.
- An additional button for logging in with an Infomaniak identifier is now visible on your login page for users
/wp-admin
(/wp-login.php
):
This guide helps to solve a problem on the Prestashop CMS and more specifically with its “Faceted Search” module that allows the management of filters in the product category pages.
The problem
This specific search module of Prestashop creates a cache in the database to speed up the search, however the corresponding table is never cleaned, which poses a problem for the hosting infrastructure.
First solution
The first solution is to disable the proposed caching.
If you have a cache module, such as Ultimate Cache
, there will be no negative impact.
To do this:
- In the PrestaShop administration panel, go to Modules → Module Manager.
- Select Modules and use the search field to find “facet”.
- Click on Configure next to the module obtained in the result:
- Disable the button for this:
Second solution
The second solution is to set up a cron job to clean the table, for example every night:
- From the module settings, copy the existing URL on the
Clear cache
button:
Then from the Infomaniak Manager, create a webcron (refer to this other guide on this subject) to execute the URL copied in point 1 above, for example 1 time per day and per night.