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.
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
localhost for a two-server connection.Register and copy the application
- Register for the download. Use the Free On-Premise download page and retain the access details sent to your registered email address.
- Download the supplied package. Keep its included application libraries and schema unchanged.
- 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. - 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
OnlyofficePathto the ONLYOFFICE browser API location. - Set
onlyofficesecretto the secret copied fromlocal.json. - Set
OnlyofficeConversionApito the Document Server conversion API. - Set
WkHtmlToPdfPathandPDFTkPathto the installed executable paths. - Update the wkhtmltopdf path in
app/Controller/AppController.phpandapp/Plugin/CakePdf/Pdf/Engine/WkHtmlToPdfEngine.phpwhen your server uses a different executable path. - Replace the timezone in
date_default_timezone_set(...)with the server’s required timezone. - Replace
Security.saltwith a unique value of the same length before registering the instance. - Replace
Security.cipherSeedwith a unique numeric value of the same length before registering the instance. - Set
dateFormatto the format required in exported PDFs.
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
- Create an empty MySQL database named
flinkiso, or use the database name entered indatabase.php. - Create a dedicated database user and grant it the required privileges on that database.
- Locate
app/webroot/schema/flinkiso-on-premise.sqlin the downloaded package. - Import the SQL file with phpMyAdmin or the MySQL command-line client.
- 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
);
}
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:
| Path | Requirement |
|---|---|
app/tmp | Recursive write access, including logs, sessions, tests and cache. |
app/tmp/cache/views | Write access for generated view cache. |
app/tmp/cache/models | Write access for model cache. |
app/tmp/cache/persistent | Write access for persistent cache. |
app/Controller, app/Model, app/View | Write access where the Form Creation API generates module code. |
app/webroot | Write access for generated assets, uploads and application files as required. |
lib/Cake/Cache | Recursive 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
- Open
https://your-server/flinkiso/users/register, adjusted for your actual host and application directory. - Enter the same registered email address used to obtain the download and proceed with instance registration.
- Sign in with the credentials supplied for the registered installation and change any temporary password immediately.
- Add a location, department and employee record to verify database writes.
- Open an office document to verify the ONLYOFFICE URL and JWT secret.
- Generate a PDF to verify wkhtmltopdf and PDFtk paths.
- Send a password reset or test approval notification to verify SMTP.
- Build or rebuild a test form and confirm generated code, cache and webroot permissions.