Requirements

Hosting

WIKINDX requires a web server environment comprising a web server (typically Apache, Nginx, or Microsoft IIS), PHP scripting, and a MariaDB (or MySQL) server.

Most web-hosting providers can provide this configuration at a low cost. Even small VPS of a few bucks per month are more than enough. If you don’t have any system administration skills or don’t have the time to deal with it this is definitely your best option. Placing WIKINDX on such a remote web server means that it can be accessed from any machine and people on the web. The constraint of this solution is security. Be sure to update WIKINDX regularly to benefit from our security fixes

WIKINDX can also be installed on a private network within a company, institution or an organization or locally for a single user on one desktop or laptop computer.

Inside a private network you probably need to contact your administrator who will provide the infrastructure support necessary for your installation.

For a single installation there are a variety of LAMP software bundles that can be downloaded to create the required web server environment. Users reported to setup successfully:

  • Caddy2 (Web server only, OS versatile, Go based, for advanced users only)
  • WAMP (Windows only, Apache based)
  • WinNMP (Windows only, Nginx based)
  • MAMP (Windows/MacOS, Apache based)
  • XAMPP (Windows, Linux, MacOS, Apache based)
  • Homebrew (package manager for MacOS)

If you have a BSD or Linux server then choose the softwares available from the package manager of your distribution / OS. They are usually very well endowed. Favour Apache over Nginx as it is much easier to configure. As a general rule we follow the software versions to be compatible with the latest stable version of Debian.

If a third party is configuring your hosting, provide them with the information on this page.

MariaDB & MySQL

Disclaimer: WIKINDX is not supposed to share its database with any other software. This widespread practice involves serious security breaches and possible data loss in the event of software bugs. Dedicate a database to WIKINDX!

MariaDB & MySQL Engine versions

Minimal versions are required for good support of UTF-8 and are runtime-checked by WIKINDX: the setup blocks the installation if the db engine does not correspond to the minimum required.

In the case of a migration, if you really need to lower the minimum version, you can change the value of WIKINDX_MYSQL_VERSION_MIN and WIKINDX_MARIADB_VERSION_MIN constants. But be prepared to hack SQL code and replay the migration several times to avoid data and schema corruption …

Not all versions of WIKINDX have been tested with every version of the database engine. Only the most stable, recommended and tested combinations are given here.

MariaDB version Min WIKINDX Version Max WIKINDX Version
11.2 (alpha) Not supported Not supported
11.1 (RC) Not supported Not supported
11.0.2 6.6.8 trunk
10.11.4 (LTS) 6.6.8 trunk
10.10.5 6.0.8 trunk
10.9.7 6.0.8 trunk
10.8.8 6.0.8 trunk
10.7.8 6.0.8 trunk
10.6.14 (LTS) 6.0.8 trunk
10.5.21 6.0.8 trunk
10.4.30 6.0.8 trunk
10.3.39 4.2.2 6.7.1
10.2.44 4.2.2 6.7.1
10.1.48 4.2.2 6.0.1
10.0.38 4.2.2 6.0.1
5.5.68 4.2.2 4.2.2
5.3.12 4.2.2 4.2.2
5.2.14 4.2.2 4.2.2
MySQL version Min WIKINDX Version Max WIKINDX Version
8.0.33 (LTS) 6.6.8 trunk
8.0.11 (LTS) 6.6.8 trunk
5.7.41 4.2.2 6.7.1
5.6.51 4.2.2 6.1.0
5.5.60 4.2.2 4.2.2

WIKINDX does not use advanced features of MariaDB / MySQL database engines which should allow to install it without problems on a more recent version. However, there is no guarantee that MySQL will change its default options to stricter uses as in the past. We are finding that, more and more, MariaDB and MySQL are diverging which may lead to the removal of MySQL support in the future. If you encounter a problem let us know please.

See here for end of support dates for MySQL and MariaDB.

MariaDB & MySQL Privileges

WIKINDX needs privileges for normal operation. There are small difference between MySQL 5.x, MySQL 8.x and MariaDB privileges.

  • Privileges marked Mandatory are the minimum required. For maximum security it is recommended not to give more.
  • Privileges marked Optional but recommended should be mandatory but for security reasons they can be restricted by the host. If these privileges are not granted, WIKINDX might malfunction because it will not be able to set the value of the max_allowed_packet option and send large queries. However it is preferable to configure max_allowed_packet directly on the server without forgetting that this option will affect all the requests received by the server whatever the application.
  • Privileges marked Optional are not used by WIKINDX but may become so in future versions.
  • Privileges marked Never are not used by WIKINDX and should not be granted for security reasons.

A privilege can be granted for one or more databases and for one or more request origin. We do not describe the syntax of the GRANT statement here. In short, be aware that when the Scope column indicates Database you must grant the privilege only for the WIKINDX database, otherwise for all databases.

To avoid any error modify these rights with an interface such as phpMyAdmin or Adminer.

Examples:

-- Grant to myaccount user the create privilege on tables of mywikindxdb database when queries come from localhost
GRANT CREATE ON `myaccount`.* TO 'mywikindxdb'@'localhost';

-- Grant to myaccount user the reload privilege on server when queries come from localhost
GRANT SUPER ON *.* TO 'myaccount'@'localhost';
Context Privilege Scope Requirement Engine
All privileges Database Never All
Grant option Database Never All
Server Create user Server Never All
Server Event Server Never All
Server Process Server Never All
Server Proxy Server Never All
Server Reload Server Never All
Server Replication client Server Never All
Server Replication slave Server Never All
Server Show databases Server Never All
Server Shutdown Server Never All
Server Super Server Optional but recommended MySQL 5.x and MariaDB 10.4.x and lower
Server SYSTEM_VARIABLES_ADMIN Server Optional but recommended MySQL 8.x adn mariaDB 10.5.x and higher
Server Create tablespace Server Never All
Server File Server Never All
Database Create routine Database Optional All
Database Create temporary tables Database Optional All
Database Lock tables Database Mandatory All
Table Alter Database Mandatory All
Table Create Database Mandatory All
Table Create view Database Optional All
Table Delete Database Mandatory All
Table Delete history Database Optional MariaDB only
Table Drop Database Mandatory All
Table Index Database Mandatory All
Table Insert Database Mandatory All
Table References Database Mandatory All
Table Select Database Mandatory All
Table Show view Database Optional All
Table Trigger Database Optional All
Table Update Database Mandatory All
Column Select Database Mandatory All
Column Insert Database Mandatory All
Column Update Database Mandatory All
Column References Database Mandatory All
Routine Alter routine Database Optional All
Routine Execute Database Optional All

MariaDB & MySQL Runtime settings

WIKINDX use the following options and sets them on db connection:

Option Name Value Scope Note
Engine Engine InnoDB table Used by all core tables for ACID transactions
Charset NAMES utf8mb4 Session Full UTF-8 encoding support
Collation COLLATE utf8mb4_unicode_520_ci Session Most advanced UTF-8 sort algo for multi language support available for MySQL
Mode sql_mode TRADITIONAL Session This stricter mode allows us to prevent errors
GROUP_CONCAT limit group_concat_max_len 4.294.967.295 Session Avoid CONCAT to truncate long fields during search operations
Max. size of one packet max_allowed_packet 1.073.741.824 Global Support for LONGTEXT types and long SQL strings.

PHP

PHP support is tested for the core, components, and third party software included. For security purposes, we recommend the use of an officially supported PHP version from the PHP Team. mod_php, CGI, and FastCGI are compliant with PHP and WIKINDX.

PHP versions

WIKINDX can support older PHP versions to facilitate the migration of an installation but does not support a large number of PHP versions in its trunk/head installation.

All current versions of PHP have a good support of UTF-8.

PHP version Min WIKINDX Version Max WIKINDX Version
8.4 Not supported Not supported
8.3 6.8.0 trunk
8.2 6.7.1 trunk
8.1 6.6.0 trunk
8.0 6.5.0 6.9.0
7.4 6.1.0 6.6.8
7.3 5.7.2 6.5.0
7.2 5.7.0 6.3.10
7.1 5.3.1 6.3.10
7.0 5.2.1 5.8.2
5.6 4.4.2 6.0.8
5.5 4.4.2 5.3.2
5.4 4.4.2 5.2.1
5.3 4.4.2 4.2.2

PHP 8.2 is not recommended at this time because it has not been tested extensively. However, the major features work, sometimes with a few warnings. If you try the experiment let us know the errors you encounter. The maximum version of PHP is not controlled by the code.

The minimum version of PHP is checked and you will be blocked if it is too low. In the case of a migration, if you really need to lower the minimum version, you can change the value of the constant WIKINDX_PHP_VERSION_MIN. But be prepared to hack code here and there to make it work …

PHP extensions

Core requirements

The version numbers in this section are those of WIKINDX, not those of a PHP extension or a library used by a PHP extension. When the version is not specified the extension/library is supported in all versions of WIKINDX.

Extensions and configuration

In summary, from version 5.2.0 all the extensions mentioned above are required for proper functioning, which should be the case for almost all installations.

Extensions Requirement WIKINDX version Notes
bz2 Optional Used by the release process (development only).
Core Mandatory
curl Mandatory >= 6.4.8 Was optional >= 5.2.0
date Mandatory
dom Mandatory >= 6.4.8
fileinfo Mandatory
filter Mandatory >= 5.2.0
gd Mandatory >= 4.0.0
gettext Optional Was mandatory for >= 4.2.1 and <= 6.5.0
hash Mandatory >= 5.2.0
iconv Optional Was mandatory for >= 4.0.3 and <= 6.7.0
intl Mandatory >= 6.3.9 Requires ICU 50.1 or higher
json Mandatory >= 4.0.3
ldap Optional >= 6.4.0 Needed only for LDAP authentification mode.
libxml Mandatory
mbstring Mandatory >= 5.2.0
mysqli Mandatory
openssl Optional >= 5.2.0 Needed if you intend to use dbAdminer plugin or send emails with secure protocols (starttls, tls, ssl) in SMTP mode and encryption (See PHPMailer).
pcre Mandatory
Phar Optional Used by the release process (development only).
Reflection Optional Was mandatory for >= 5.2.0 and <= 6.0.1
session Mandatory
SimpleXML Mandatory >= 4.2.0
sockets Optional >= 5.2.0 Needed if you intend to send emails with the SMTP protocol.
SPL Mandatory >= 6.0.1
xml Mandatory
xmlreader Mandatory >= 5.2.0
zip Mandatory >= 6.4.8 Was optional >= 5.9.1
zlib Optional Used by the release process (development only) and the dbAdminer plugin

Disk space

The code’s disk space consumption is modest (around 40 MB for the code). You should plan a minimum of 150MB for the code, downloading updates and one db backup. To this must be added the space to be allocated for attachments, images, attachment cache files … It depends greatly on your use case.

Database disk space can vary greatly. The initial size is around 10 MB (50 KB for its backup). For a large base of 23,000 resources, 12,000 authors and 10 years of statistics, we have observed a size of 460MB (110 MB for its backup).

Memory consumption

In normal use WIKINDX consumes less than 20 MB of RAM by process. It is recommended to limit to 128MB (default official value of PHP memory_limit) for the proper functioning of updating, searching, and extracting texts from PDF – processes that can greatly increase memory consumption.

Execution time

Generally a script responds in less than 1 s but searches can go up to 5 or 15s depending on the size of the database and the complexity of the request. This can be more during a database upgrade, extracting texts from PDF, or importing data. It is recommended to limit the execution time of scripts to 120s to allow the upgrade and imports.

Browser compatibility

The client accesses the database via a standard (graphical) web browser. Your browser should support HTML5 and CSS level 3 well, this means that almost all browsers are supported unless yours is exotic.

On the other hand, WIKINDX does not have a responsive design suitable for tablets and mobile phones (note added on 2024-04-23).

You must enable JavaScript execution. Without JavaScript WIKINDX will not work properly.