FAQ
Going to production
What should I do before going to production?
1. Ready your graph database for production
Consult with your vendor to make sure that your graph database is installed on appropriate hardware and configured for better performances:
- Cosmos DB: high-availability guide
- Neo4j: sizing and hardware guide, clustering guide
Make sure that your graph database is secure:
- Cosmos DB: security guide
- Neo4j: security checklist
2. Ready Elasticsearch for production
Keep in mind that Linkurious Enterprise can be used without Elasticsearch, see search options.
If you are using Linkurious Enterprise with Elasticsearch
- Make sure your have the right hardware for Elasticsearch
- See how to secure Elasticsearch
3. Ready your user-data store for production
By default, SQLite is used for the user-data store. SQLite is not recommended for production environment: switch to MySQL/MariaDB/MSSQL instead.
Schedule regular backups of the user-data store:
- MariaDB: backup and restore guide
- MySQL: backup and recovery guide
- MSSQL: create database backups
Make sure your user-data-store database is secure
- MariaDB: security guide
- MySQL: security guide
- MSSQL: security guide
If you need high-availability, set up replication
- MariaB: replication overview, setting up replication
- MySQL: replication guide,
- MSSQL: replication guide
4. Ready Linkurious Enterprise itself for production
- Make sure Linkurious Enterprise runs under a service account
- This service account should be the only user on the system to have read and write access to the
linkurious/data
directory - Enable authentication
- If needed, configure external authentication
- Enable HTTPS
- If needed, force users to use HTTPS (see
forceHttps: true
in Web Server configuration) - If needed, add your custom Certificate Authority (CA)
- If needed, force users to use HTTPS (see
How can Fault tolerance be achieved?
Linkurious Enterprise can be set up with a backup instance to allow for continuity of service when the main server crashes.
For this setup:
- both Linkurious Enterprise instances must have the same configuration
- both Linkurious Enterprise instances must be connected to the same graph databases
- both Linkurious Enterprise instances must be connected to the same search indexes
- both Linkurious Enterprise instances must be connected to the same user-data store
- if alerts are in use, they should be enabled only on the main instance (see how to disable alerts).
A reverse proxy is then configured to send requests to the backup server when the main server is down. If you are using nginx, this sample configuration can be used:
http {
# define the "backend" upstream
upstream backend {
# main server
server linkurious-main.example.com;
# backup server
server linkurious-backup.example.com backup;
}
# redirect all queries to the "backend" upsteam
server {
location / {
proxy_pass http://backend;
}
}
}
See nginx documentation for more details.
Security
Where is the user-data store located?
The user-data store database (containing visualizations, saved queries, user, groups, etc) is stored in a SQL database.
By default, this database is an SQLite database (located at linkurious/data/database.sqlite
).
In production, the use of a MySQL/MariaDB/MSSQL database is recommended.
These databases can be located on a remote server.
Is the user-data store encrypted?
The default user-data store (SQLite) is not encrypted.
Encryption is available with the following vendors:
- MariaDB: data-at-rest encryption guide
- MySQL: Transparent Data Encryption
- MSSQL: Transparent Data Encryption
Is it possible to delete the SQLite user-data store when using an external database?
Yes, when using an external user-data store (e.g. MariaDB, MySQL or MSSQL), the SQLite files can be deleted.
What kind of information is stored in the configuration file?
The configuration file contains all configurable options, as well as the configuration options of all configured data sources (e.g. User-Data Store host/port/username/encrypted password; Graph Database URL/username/encrypted password; Index Search URL/username/encrypted password, etc). All passwords/secrets in the configuration file are encrypted before storage.
The configuration file, like the rest of the data
folder, should be considered private and not be readable by anyone other than the Linkurious Enterprise service account.
How are application secrets stored?
All application secrets stored by Linkurious Enterprise (Graph Database credentials, User-Data Store credentials, Index Search credentials, SSL certificate passphrase, etc.) are encrypted using the AES-256-CTR algorithm.
How are user credentials stored?
User passwords are strongly hashed before being stored in the database. Passwords for LDAP and other external authentication solutions are not stored at all.
Where is the audit trail stored?
The audit trail files are generated in linkurious/data/audit-trail
by default.
This path can be set in the audit trail configuration.
Does enabling the audit-trail require additional security measures?
The audit trail contains sensitive information and should be secured. It should be owned and readable only by the Linkurious Enterprise service account.
How can the data directory be secured?
The data directory contains logs, configuration files, and, if enabled, audit trails. This information is sensitive, and the directory should be owned and readable only by the Linkurious Enterprise service account
What is a service account and why should I use one?
A service account is an operating system user account with restricted privileges that is used only to run a specific service and own it data related to this service. Service accounts are not intended to be used by people, except for performing administrative operations. Access to service accounts is usually tightly controlled using privileged access management solutions.
Service accounts prevent other users and services from reading or writing to sensitive files in the directories that they own, and are themselves prevented from reading and writing to other parts of the file system where they are not owners.
Can Kerberos be used for single sign-on?
We do not support Kerberos as of now (but we support many other third-party authentication services).
What do the log files contain?
Linkurious Enterprise creates three types of logs:
- Analytics (
data/logs/analytics.log
): Usage telemetry (GDPR safe, not sensitive information) - Technical logs (
data/logs/linkurious.log
andlinkurious.exceptions.log
): Server debugging logs (may contain graph queries). - Audit Trail (
data/audit-trail/audit-trail.log
): See audit trail log format details.
How can the communication with an LDAP server be secured?
If your LDAP server supports secure LDAP, use the "ldaps://" protocol in your LDAP configuration.
How can Elasticsearch be secured?
If you need authentication and transport layer security for Elasticsearch:
- Option A: Purchase this service from Elasticsearch
- Option B: Put Elasticsearch behind a reverse proxy to transport layer security and authentication
Can I customize the cryptographic ciphers used for TLS?
To customize supported TLS ciphers, in the general configuration, set tlsCipherList
in the server
section.
Here is an example, based on Mozilla's recommended cipher list:
{
"tlsCipherList": "TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:!eNULL:!aNULL"
}
What should I do before updating Linkurious Enterprise to a new release?
We are trying to keep the Linkurious Enterprise update process as simple as possible. However, sometimes configuration can require specific manual activities.
Before you upgrade to a new version of Linkurious Enterprise, consider browsing our public resources to verify whether there are specific instructions that applies to your configuration or activities you are planning.
Miscellaneous
How can I troubleshoot TLS connectivity issues?
If you have issues configuring a secure connection, temporarily tweaking the TLS settings may help troubleshooting the issue.
TLS certificate validation can be disabled by setting the environment variable NODE_TLS_REJECT_UNAUTHORIZED
to 0
.
Note this should only be done for troubleshooting purpose as it makes TLS inherently insecure.
Some useful Node options can also be set:
--trace-tls
: Prints TLS packet trace information in the manager logs.--openssl-legacy-provider
: Enable OpenSSL 3.0 legacy provider.--tls-cipher-list=list
: Specify an alternative default TLS cipher list (this can also be set in Linkurious Enterprise configuration file).
These settings can be set in the /data/manager/manager.json
configuration file, in the env
section of the Linkurious Server
service.
For instance, it may looks like this:
{
"env": {
"NODE_TLS_REJECT_UNAUTHORIZED": 0,
"NODE_OPTIONS": "--max-old-space-size=4096 --trace-tls --openssl-legacy-provider --tls-cipher-list=DEFAULT@SECLEVEL=0"
}
}
For Neo4j connections, certificate validation can be disabled by changing the URL scheme:
neo4j+s://
can be replaced byneo4j+ssc://
(wheressc
means "self signed certificate", it disables certificate validation).bolt+s://
can be replaced bybolt+ssc://
.
For Active Directory, TLS debug settings can be set directly in the Linkurious Enterprise configuration file, see Active Directory configuration.
What are PEM Certificates?
PEM (for Privacy-Enhanced Mail) is a file format for storing and sending cryptographic keys and certificates.
To verify if a certificate is PEM-encoded, open it with a text-editor, it should look something like this:
-----BEGIN CERTIFICATE-----
MIICLDCCAdKgAwIBAgIBADAKBggqhkjOPQQDAjB9MQswCQYDVQQGEwJCRTEPMA0G
A1UEChMGR251VExTMSUwIwYDVQQLExxHbnVUTFMgY2VydGlmaWNhdGUgYXV0aG9y
DwEB/wQFAwMHBgAwHQYDVR0OBBYEFPC0gf6YEr+1KLlkQAPLzB9mTigDMAoGCCqG
SM49BAMCA0gAMEUCIDGuwD1KPyG+hRf88MeyMQcqOFZD0TbVleF+UsAGQ4enAiEA
l4wOuDwKQa+upc8GftXE2C//4mKANBC6It01gUaTIpo=
-----END CERTIFICATE-----
If you have a DER-encoded certificate (binary), it can be converted to PEM:
- on Linux:
openssl x509 -inform der -in certificate.cer -out certificate.pem
- on Windows:
- double-click on the certificate to open it (if prompted to select a program, choose
Crypto Shell Extensions
) - go to the
details
tab - click
Copy to file...
- click
Next
- select
Base-64 encoded X.509 (.CER)
and clickNext
- choose a path to save the file, click
Next
- click
Finish
- the exported certificate file (with '.CER' extension) is now in PEM format.
- double-click on the certificate to open it (if prompted to select a program, choose
Can I use Linkurious Enterprise without Elasticsearch?
Most graph vendors support search strategies other than Elasticsearch. See details on our search options page.
Can I use a custom tile server in geo-spatial mode?
Yes. See the geospatial configuration options for further details.
Can I use ESRI ArcGIS for geo-spatial mode?
Yes, you can configure ArcGIS as the tile-server for geo-spatial mode. The ArcGIS documentation describes the API endpoints that is compatible with Linkurious Enterprise:
- endpoint URL:
http://<MapServer-url>/tile/{z}/{y}/{x}
- please refer to the geospatial configuration options for further details.
For example:
- MapServer URL: https://server.arcgisonline.com/ArcGIS/rest/services/World_Topo_Map/MapServer/
- URL template: https://server.arcgisonline.com/ArcGIS/rest/services/World_Topo_Map/MapServer/tile/{z}/{y}/{x}
What are the command lines utilities to administrate Linkurious Enterprise?
./linkurious/start.sh
: start the server./linkurious/stop.sh
: stop the server./linkurious/menu.sh
: open the management console./linkurious/menu.sh status
: print the current status of the server./linkurious/menu.sh install
: install as a system-wide service (requires root)./linkurious/menu.sh uninstall
: remove from system-wide services (requires root)./linkurious/menu.sh help
: show advanced options
Will enabling the audit trail impact performance?
Depending on the configuration options specified, enabling the audit trail can have an impact on performance. See the audit trail documentation for details.
Can I integrate Linkurious Enterprise with third party applications?
Linkurious Enterprise supports different options to integrate with third party tools. This is particularly helpful to add graph capabilities to other tools or to extend Linkurious Enterprise capabilities.
For example, clients have integrated Linkurious Enterprise with reporting and business intelligence tools such as Microsoft PowerBi, Tableau, Looker or NeoDash.
There are 4 main options to integrate Linkurious Enterprise with a third party application:
1. Custom Actions
The easiest integration is via Custom Action. It allows to add a menu entry in Linkurious Enterprise that opens a third party application. These menu entries open a parameterizable link.
For example, you can right-click on a "Person" node in a visualization and run a Custom Action to open a new tab with the details of that person displayed by an internal back-office tool.
In order for Custom Actions to function correctly, the target third party application should support deep links (i.e. the possibility to accept URL parameters). Most reporting tools offer the possibility to filter data based on variables and allow setting these variables via URL parameters.
This can allow users to open a pre-filtered report hosted by a third party tool.
2. Deep Links
It is also possible to access Linkurious Enterprise from a third party application, via deep links (note: please check if your license package includes Deep Links). From a third party application, it is possible to generate a URL to open an existing or new visualization in Linkurious Enterprise, with options to display the result of a graph query, or search query, etc.
For example, if you have a page in a back-office application displaying data about a specific company, you can add a link in this page to view the context of this company in Linkurious Enterprise.
In order to take advantage of deep links, the third party application should support user interactions (e.g. via links, clickable buttons, etc.) that open a URL, with the possibility to add parameters to the opened URL.
3. iFrames
It is possible to embed Linkurious Enterprise in another Web application using an iframe
HTML element.
Note that when performing this integration, you need to have enough seats in your license to
cover all the users of your third party application.
To create an iframe
integration, you will need:
- Basic Web development skills to add an
iframe
element to an existing Web applications. - The ability to configure Linkurious Enterprise to allow
iframes
and set the appropriate security parameters (see details).
4. Webhooks
It is possible for Linkurious Enterprise to notify third party applications about certain events, so that these applications can react to these events. This can be done by setting up a Webhook in Linkurious Enterprise.
For example, to use a third party case management tool to handle alert cases created by Linkurious Enterprise,
you need to set up a Webhook for the newCase
event, and set up the Webhook to call
the API of your case management system and create a new case there.