This section is a step-by-step guide to installing the Navixy On-premise solution.
This guide describes the installation process on Windows. We recommend using Windows Server 2016 or later.
If you want to install the solution on any other version of Windows, this guide can also be applied, as the basic principles are the same.
In general, the platform works the same on Linux and Windows because the platform uses the same software. The main difference is how the services work on Windows. Additionally, Nginx configs have no preview blocks as Nginx does not support it.
You need an account with administrator privileges to perform the installation. It does not matter if it is a local or domain account, because the platform is in no way related to the domain infrastructure. You just need an elevation of rights to install it.
Install pre-requisites
Download and install the pre-requisites:
- MySQL 8.0 - only Server is required, other components are optional;
- Java SE Development Kit of the required version (17 for now);
- Nginx - any recent version (it does not need installation, just extract it);
- Any archiver capable of working with tar.gz files (7zip, for example).
Java and MySQL need to be added to the PATH environmental variable.
Upload and unpack the platform package
You should have received a distribution package from Navixy, typically in a .tar.gz file.
Extract the package. It has a plenty of nested folders, so be careful not to exceed Windows limit of 255 symbols in file path. Place "navixy-package" folder from the archive to some directory like: C:\Users\Administrator\Downloads\navixy-package
Hereinafter this will be the main folder of the distribution. You can see in this manual paths like "...navixy-package/db", which means that operations must be performed from this folder.
MySQL tuning
Change or add the following parameters under [mysqld] section.
On database level, Navixy always works with data in UTC timezone, so it is needed to make this a default timezone for MySQL:
default-time-zone = '+00:00'
Set sql-mode to the following:
sql-mode="NO_ENGINE_SUBSTITUTION"
You need to tune MySQL according to your hardware specifications for the most efficient usage. If your server will be used only for Navixy platform, set the following paremeter to 70% of total RAM. For example, if you have 32 Gb RAM, set is as follows:
innodb_buffer_pool_size=22G
Restart the service form the "Services" menu in Windows to apply changes.
Preparing databases
Next, you need to prepare the databases.
Log into MySQL from command line, with root login, and execute the following (Substitute $PASSWORD variable for a new password for user "Navixy", remember it, you will need it later):
CREATE USER [email protected]'%' IDENTIFIED BY '$PASSWORD' WITH MAX_QUERIES_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_USER_CONNECTIONS 0;
CREATE DATABASE google CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE DATABASE tracking CHARACTER SET utf8 COLLATE utf8_general_ci;
GRANT USAGE ON *.* to [email protected]'%';
GRANT ALL PRIVILEGES ON google.* TO [email protected]'%';
GRANT ALL PRIVILEGES ON tracking.* TO [email protected]'%';
Exit from MySQL back to cmd.
Switch to ...navixy-package\db folder. Likely:
C:\Users\Administrator\Downloads\navixy-package\db
Execute the following (of course change $ROOTPASSWORD to the password of your MySQL root user) to fill DB google with default tables:
mysql -uroot -p$ROOTPASSWORD google < google.sql
Delete updates.sql file (not needed here, only used for server updates) and google.sql (already used above)
del updates.sql
del google.sql
Check that these files are deleted and upload all the other dictionaries from DB folder to database:
type *.sql | mysql -uroot -p$ROOTPASSWORD google
Execute the following to switch on web branding:
INSERT INTO google.features_to_dealers (dealer_id, feature_code) values (1,1);
Add the following line to the database so that you can transfer files through the mobile app to your server. Of course change api.domain.com to your domain for API, do not forget to change https to http if you do not use SSL.
INSERT INTO google.file_storages (id, engine, config) values (1, 'local_fs', '{"base_path":"./files/","base_upload_url":"https://api.domain.com/file/upload","base_download_url":"https://api.domain.com/file/dl","secret":"ervg4ver","upload_credentials_ttl":"10m","is_dynamic_preview_enabled": true,"dynamic_preview_pattern":"(.+)/file/dl/(.+)","dynamic_preview_replace":"$1/file/preview/$2","security_module":{"type":"hashid","salt":"vd8sgh8w3t4w","ttl":"7d","min_length":8}}');
Finally, apply the license key (fingerprint), which should be provided by Navixy. It will be just a string of symbols.
Insert fingerprint into the database (change $FINGERPRINT to the received value):
UPDATE google.variables SET value='$FINGERPRINT' WHERE var='fingerprint';
Adding folders for further configuration
Create and fill the following folders:
C:\java
Copy api-server, sms-server and tcp-server folders from navixy-package into it.
C:\nginx
Unpack the contents of Nginx distribution into it, as shown in this screenshot.
In C:\nginx create a folder named www. It will store frontend static files.
Copy folders panel-v2 and pro-ui from navixy-package into it.
In C:\nginx\conf create a folder named sites-enabled. It will contain the configuration for platform websites.
Add the following line to the file C:\nginx\conf\nginx.conf, anywhere in http block:
include sites-enabled/*.conf;
Configuring the platform: frontend
Pro-UI folder
Find the file Config.example.js in C:\nginx\www\pro-ui.
Edit the following line. Change api.domain.com to your actual API domain.
apiRoot: '//api.domain.com',
If you do not have a separate domain for API and use one domain for all the platform, you need to add /api to this line, so the value should look like this:
apiRoot: '//domain.com/api',
Find the file app_config.example.sa.js in C:\nginx\www\pro-ui\static.
Again, specify your API domain in the line (of course, pay attention to http/https):
apiUrl: 'https://api.domain.com/api/',
Save edited file as app_config.js
Panel-v2 folder
Find the file PConfig.example.sa.js in C:\nginx\www\panel-v2 and edit the followng.
Switch api.domain.com to your actual API domain. Warning: do not delete '/panel', just edit the domain name. Pay attention to http/https.
apiRoot: 'http://api.domain.com/panel',
Change saas.navixy.com to your UI domain (without http/https):
paasCompanyUrl: 'saas.navixy.com',
Change api.domain.com to your actual API domain:
terminalHost: 'ws://api.domain.com:8383/',
Setting up Nginx web service configuration
Open the directory C:\nginx\conf\sites-enabled.
Copy the file map.conf from ...navixy-package\templates to this folder.
Create a file named navixy.conf and fill it with the required Nginx configuration from this page:
Choose configuration based on HTTP/HTTPS and a number of domains to be used.
Note that if you use SSL, the certificate must be valid
It should match the private key, otherwise Nginx will fail to start.
Also, the certificate must be full-chain, which means it must contain in one file the main certificate, intermediate certificate (or several) and the root certificate, as shown in the example below.
-----BEGIN CERTIFICATE-----
*contents of main cert*
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
*contents of intermediate cert*
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
*contents of root cert*
-----END CERTIFICATE-----
After the configuration is complete, run nginx.exe.
To auto-start Nginx on system startup, create a script for this.
Create a batch file start-nginx.bat with the following contents:
@echo off
cd c:\nginx
start nginx.exe
Place this batch file into Windows Task Scheduler and schedule it for server startup.
Configuring the platform: backend
Switch to C:\java directory.
Earlier you have copied three service folders here:
- api-server
- sms-server
- tcp-server
Inside each of them is a subdirectory named conf, and you will find a file db.properties in it.
This is the file for configuring the platform to connect to the database.
You need to change the database connection credentials for each of the services.
To do this, edit the following lines ($PASSWORD is apassword for user navixy you created before)
db.username=navixy
db.password=$PASSWORD
If your database is hosted on another server, you also need to change the db.connectionString line in the same files. Specify the actual address of your database server instead of localhost, but do not change anything else in this string.
API-server
Switch to C:\java\api-server\conf and edit a file named config.properties.
Specify full link to your API domain (with http:// or https:// in the beginning) in the following string:
api.externalBaseUrl=
Specify the email settings that will be used for feedback/help section:
[email protected]
[email protected]
feedback.substituteFromEmail=false
feedback.toEmail - should contain the target address to which help emails will be sent.
feedback.defaultFromEmail - default sender of help emails (e.g. [email protected])
feedback.substituteFromEmail - toggles between sending a help email from the default sender (false) or from the user's own address (true).
TCP-server
Switch to C:\java\tcp-server\conf and again edit a file named config.properties.
Specify IP and domain name that are used for UI. These settings will be used for auto-activation commands for trackers.
externalIP=127.0.0.1
externalHostname=myhost.ru
Add the following string to the end of config for file storage operations:
api.command.baseUrl=http://127.0.0.1:8084/internal/command/
SMS-server
This service is responsible for sending and receiving the messages. It uses the default settings and requires no further configuration.
Adding Windows services for the platform.
First, make sure that Java installation folder path is added to Windows JAVA_HOME environmental variable.
If not, you need to add this value manually or from command prompt.
If you run JDK 17.0.3, you can use this example for cmd:
setx -m JAVA_HOME "C:\Program Files\Java\jdk-17.0.3"
Next, open navixy-package and find wrapper folder.
Copy this entire folder to C:\java.
Find a file named modules-cmd.conf inside wrapper folder. Copy this file and place it to the java service folders, near the jar files:
- C:\java\api-server
- C:\java\sms-server
- C:\java\tcp-server
After this, you need to run the command line with administrator privileges (cmd - Run as administrator).
Change cmd directory to this:
cd C:\java\wrapper\bat
Run setenv.bat from this directory in the command line.
Then, without closing the command line, execute the following commands, one by one:
wrapper.bat -i ../conf/wrapper.api-server.conf
wrapper.bat -i ../conf/wrapper.sms-server.conf
wrapper.bat -i ../conf/wrapper.tcp-server.conf
It will install the services as regular Windows services.
Check "Services" menu and find the following:
- Navixy api-server
- Navixy sms-server
- Navixy tcp-server
Launch the services.
Once everything is installed and launched, check availability of your Admin panel domain. It should direct you to admin login page.
The credentials are default, so consider changing your password as soon as you log into the system.
- username: admin
- password: admin
If something goes wrong, check Troubleshooting pages.
User interface is not available at this stage, because its domain should first be specified in Admin panel, "Service Preferences" tab.