System Requirements

The system requirements are checked when you run the installer. You'll need:

  • Nginx or Apache web server capable of running PHP scripts. mod_rewrite needs to be enabled under Apache.
  • HTTP methods (POST, GET, PUT, DELETE) have to be allowed and enabled.
  • PHP 7.1 or newer, with the following extensions: MySQLi, PCRE, tokenizer, CType, session, JSON, XML, DOM, phar, OpenSSL, GD, mbstring, cURL, zlib, and fileinfo.
  • MySQL 5.7.8 or newer, or MariaDB 10.2.7 or newer, with InnoDB and UTF8MB4 support. One empty database is required.
  • ElasticSearch 6.0 or newer and Java are required for search - but ActiveCollab can still work without them.

We recommend using the latest stable PHP and MySQL. To speed things up, use opcode and memory caching.

Opcode Cache Compatibility

ActiveCollab doesn't work under eAccelerator or XCache. Disable them before installing ActiveCollab and use OPcache instead.

ActiveCollab is a PHP application and can run on any OS/server which meets the requirements, but is easier to install on Debian or Ubuntu as the OS. CentOS is also good choice, if you are comfortable working with SELinux (which is installed by default on CentOS).

Folder Permissions #

Make sure the following folders are writable by the web server:

  • cache/
  • compile/
  • config/
  • logs/
  • thumbnails/
  • upload/
  • work/
  • activecollab/
  • public/assets/

Please note that you should use the -R option when setting the permissions to set them recursively.

PHP #

You will need CLI PHP if you want to send emails or use search. You can check this on your server with the php -v command, and the output should be something like this:

PHP 7.1.10-1+0~20170929170818.9+stretch~1.gbp501135 (cli) (built: Sep 29 2017 17:08:20) ( NTS )

Also, make sure it says “cli”, instead of “cgi”.

MySQL #

You can check the MySQL version with the following command:

mysql --version

The MySQL user needs permissions for creating TRIGGERs.

The thread_stack will have to be set to 256K. On many servers it is set to 192K by default. This is usually set in the my.cnf file.

Rewriting #

URL Rewriting is required by ActiveCollab. You can check if it's enabled by opening http://example.com/verify-existence in your browser. You should see:

{"ok":false}

On Apache servers this should work out of the box if mod_rewrite is enabled and .htaccess files are allowed. For other servers, see the instructions below.

nginx #

This is a template for the nginx configuration file:

server {
  listen *:80;
  server_name projects.example.org;
  access_log /var/log/nginx/ac.access.log;
  error_log /var/log/nginx/ac.error.log;

  set $root_path /var/www/html/ac;
  root $root_path;

  index index.html index.htm index.php router.php;
  charset utf-8;
  if (!-e $request_filename) {
    rewrite ^/assets/(.*)$ /assets/$1 last;
    rewrite ^/avatars/(.*)$ /avatars/$1 last;
    rewrite ^/wallpapers/(.*)$ /wallpapers/$1 last;
    rewrite ^/verify-existence$ /verify.php last;
    rewrite ^/proxy.php$ /proxy.php last;
    rewrite ^/api/v([0-9]*)/(.*)$ /api.php?path_info=$2&api_version=$1 last;
    rewrite ^$ /router.php last;
    rewrite ^(.*) /router.php?path_info=$1 last;
  }

location / {
    rewrite ^/verify-existence$ /verify.php last;
    rewrite ^/proxy.php$ /proxy.php last;
    rewrite ^/api/v([0-9]*)/(.*)$ /api.php?path_info=$2&api_version=$1 last;
    rewrite ^/$ /router.php last;

    try_files $uri $uri/ /router.php?path_info=$uri&$args;
}

location ~ ^/(assets|avatars|wallpapers)/ {
        root $root_path;
}

location ~* \.php$ {
  fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
  fastcgi_index index.php;
  fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  include fastcgi_params;
}

}

After editing this file, reload the configuration by running nginx -s reload.