Skip to content
FlinkISO

Use manual installation when you already manage the web stack, need separate FlinkISO and ONLYOFFICE hosts, or cannot use the single-server installer. This chapter keeps the complete configuration reference for the Free On-Premise edition.

Application libraries: FlinkISO uses a CakePHP 2 application foundation with compatibility updates for current PHP releases. Keep the lib and lib-older directories supplied with your download. Do not replace them directly from another CakePHP compatibility repository. The supplied lib directory is intended for PHP 8+, while lib-older is retained for older PHP environments.

Server and software prerequisites

FlinkISO runs on a Linux/Apache/MySQL/PHP stack and can also be configured on a Windows server with Apache or IIS. Prepare the following before copying the application:

  • Linux or Windows server
  • Apache or IIS with URL rewriting enabled
  • MySQL
  • A supported PHP version with cURL, mbstring, MySQL and XML extensions
  • mcrypt where required by the selected legacy PHP environment
  • wkhtmltopdf and PDFtk for PDF generation and signatures
  • ONLYOFFICE Community Document Server
  • A static IP address or qualified domain for a separate ONLYOFFICE host
  • HTTPS for production use

If you need a packaged local Apache environment, MAMP or XAMPP can be used for testing. Production deployments should use a properly secured and maintained web-server configuration.

Install PDF tools on Ubuntu

sudo apt install pdftk
cd ~
wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-2/wkhtmltox_0.12.6.1-2.jammy_amd64.deb
sudo apt install ./wkhtmltox_0.12.6.1-2.jammy_amd64.deb
ONLYOFFICE network address: When FlinkISO and ONLYOFFICE use different servers, the Document Server must be reachable from FlinkISO and from users’ browsers through a static IP address or qualified domain. Do not use localhost for a two-server connection.

Register and copy the application

  1. Register for the download. Use the Free On-Premise download page and retain the access details sent to your registered email address.
  2. Download the supplied package. Keep its included application libraries and schema unchanged.
  3. Copy FlinkISO to the web root. Use /var/www/html/flinkiso, your virtual host’s document directory, or the site directory configured in Apache or IIS.
  4. Install ONLYOFFICE. Note its browser API URL, conversion API URL and JWT secret before editing FlinkISO configuration.

Configure ONLYOFFICE

Open /etc/onlyoffice/documentserver/local.json. Keep JWT enabled and use one consistent secret for browser, inbox, outbox and session. Put the same secret in FlinkISO’s app/Config/core.php.

When the Document Server must access FlinkISO on a private network, add the request-filtering agent inside services.CoAuthoring, before the sql section:

"request-filtering-agent": {
  "allowPrivateIPAddress": true,
  "allowMetaIPAddress": true
}

Restart ONLYOFFICE services after changing local.json. A mismatch between the ONLYOFFICE and FlinkISO secrets causes the “document security token is not correctly formed” error.

Update Core.php and Database.php

Application configuration

Open your_directory/flinkiso/app/Config/core.php and review each environment-specific value:

  • Do not change ApiPath.
  • Set OnlyofficePath to the ONLYOFFICE browser API location.
  • Set onlyofficesecret to the secret copied from local.json.
  • Set OnlyofficeConversionApi to the Document Server conversion API.
  • Set WkHtmlToPdfPath and PDFTkPath to the installed executable paths.
  • Update the wkhtmltopdf path in app/Controller/AppController.php and app/Plugin/CakePdf/Pdf/Engine/WkHtmlToPdfEngine.php when your server uses a different executable path.
  • Replace the timezone in date_default_timezone_set(...) with the server’s required timezone.
  • Replace Security.salt with a unique value of the same length before registering the instance.
  • Replace Security.cipherSeed with a unique numeric value of the same length before registering the instance.
  • Set dateFormat to the format required in exported PDFs.
Set the salt and cipher seed before registration. Changing encryption configuration after production data exists can prevent stored encrypted values from being read.

Database configuration

Open your_directory/flinkiso/app/Config/database.php and enter the MySQL connection details:

public $default = array(
    "datasource" => "Database/Mysql",
    "persistent" => false,
    "host"       => "localhost",
    "login"      => "your_database_user",
    "password"   => "your_database_password",
    "database"   => "flinkiso",
    "prefix"     => "",
    "encoding"   => "utf8",
);

Create and import the database

  1. Create an empty MySQL database named flinkiso, or use the database name entered in database.php.
  2. Create a dedicated database user and grant it the required privileges on that database.
  3. Locate app/webroot/schema/flinkiso-on-premise.sql in the downloaded package.
  4. Import the SQL file with phpMyAdmin or the MySQL command-line client.
  5. Open the application URL and check the CakePHP logs if a database connection or missing-table error appears.

Example command-line import:

mysql -u your_database_user -p flinkiso < app/webroot/schema/flinkiso-on-premise.sql

Configure outgoing email

Open your_directory/flinkiso/app/Config/Email.php. Configure the $default, $smtp and $fast profiles with your organisation’s sender and SMTP credentials. These profiles support password resets, approval messages, notifications and other application email.

class EmailConfig {
    public $default = array(
        "transport" => "Mail",
        "from" => array("[email protected]" => "FlinkISO")
    );

    public $smtp = array(
        "transport" => "Smtp",
        "from" => array("[email protected]" => "FlinkISO"),
        "host" => "your_smtp_host",
        "port" => 465,
        "timeout" => 30,
        "username" => "your_smtp_username",
        "password" => "your_smtp_password",
        "client" => null,
        "log" => false
    );

    public $fast = array(
        "from" => "[email protected]",
        "sender" => null,
        "to" => null,
        "cc" => null,
        "bcc" => null,
        "replyTo" => null,
        "readReceipt" => null,
        "returnPath" => null,
        "messageId" => true,
        "subject" => null,
        "message" => null,
        "headers" => null,
        "viewRender" => null,
        "template" => false,
        "layout" => false,
        "viewVars" => null,
        "attachments" => null,
        "emailFormat" => null,
        "transport" => "Smtp",
        "host" => "your_smtp_host",
        "port" => 465,
        "timeout" => 30,
        "username" => "your_smtp_username",
        "password" => "your_smtp_password",
        "client" => null,
        "log" => true
    );
}
SMTP ports vary. Use the encryption mode and port required by your mail provider. Test password reset and an approval notification after registration.

Set directory permissions

The web-server account must be able to write to the application’s runtime, generated-code and uploaded-file locations. The published package identifies these paths:

PathRequirement
app/tmpRecursive write access, including logs, sessions, tests and cache.
app/tmp/cache/viewsWrite access for generated view cache.
app/tmp/cache/modelsWrite access for model cache.
app/tmp/cache/persistentWrite access for persistent cache.
app/Controller, app/Model, app/ViewWrite access where the Form Creation API generates module code.
app/webrootWrite access for generated assets, uploads and application files as required.
lib/Cake/CacheRecursive write access where required by the supplied package.

Set ownership to the web-server user and grant only the permissions required by your deployment. Avoid unrestricted world-writable permissions on a production server.

Apache, MySQL and PHP settings

Enable required Apache modules

sudo a2enmod rewrite
sudo a2enmod headers
sudo service apache2 restart

Allow application rewrite rules

In /etc/apache2/apache2.conf, httpd.conf or the site’s virtual-host configuration, allow overrides for the FlinkISO web root. For Apache 2.4 and later:

<Directory /var/www/>
    Options FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

If phpMyAdmin also requires overrides, add the appropriate directory rule for /usr/share/phpmyadmin:

<Directory /usr/share/phpmyadmin>
    Options SymLinksIfOwnerMatch
    DirectoryIndex index.php
    AllowOverride All
</Directory>

Install PHP extensions

sudo apt-get install php<your-php-version>-mbstring
sudo apt-get install php<your-php-version>-mysql
sudo apt-get install php<your-php-version>-xml
sudo apt-get install mcrypt
sudo service apache2 restart

Review MySQL SQL mode

If the supplied schema or application behavior requires the compatibility mode used by the published installation guide, review /etc/mysql/mysql.conf.d/mysqld.cnf and set:

sql_mode = "STRICT_TRANS_TABLES, NO_ZERO_IN_DATE, NO_ZERO_DATE,
ERROR_FOR_DIVISION_BY_ZERO, NO_AUTO_CREATE_USER, NO_ENGINE_SUBSTITUTION"

Available SQL modes vary between MySQL releases. Remove a mode only when the server reports that it is unsupported, then restart MySQL and retest the application.

Review PHP limits

Open /etc/php/<your-php-version>/apache2/php.ini and set limits suitable for controlled documents and generated forms:

max_execution_time = 300
max_input_time = 600
post_max_size = 80M
upload_max_filesize = 200M

Adjust these values to your organisation’s restrictions and restart Apache after changing PHP configuration.

Register and verify the instance

  1. Open https://your-server/flinkiso/users/register, adjusted for your actual host and application directory.
  2. Enter the same registered email address used to obtain the download and proceed with instance registration.
  3. Sign in with the credentials supplied for the registered installation and change any temporary password immediately.
  4. Add a location, department and employee record to verify database writes.
  5. Open an office document to verify the ONLYOFFICE URL and JWT secret.
  6. Generate a PDF to verify wkhtmltopdf and PDFtk paths.
  7. Send a password reset or test approval notification to verify SMTP.
  8. Build or rebuild a test form and confirm generated code, cache and webroot permissions.
Installation is complete when all four paths work: database records save, ONLYOFFICE loads a document, PDF output is generated and application email is delivered.
  • On Cloud

    Start your 15 days On-Cloud QMS trial. No payment required. One free training session included. Live chat & email support.

    Register
  • On Premise

    Download Free Quality Management Software On-Premise Edition. Installation, Training, Support Services on-demand.

    Free Download