Technical details

<< Click to Display Table of Contents >>

  Server and client installation >

Technical details



This chapter contains general information about servers, data encryption and other technical details related to data transfer and storage.


System Requirements


RAM: 32 MB for installation + 1 МБ additionally for each Virola user

Disk space: 2 MB for each Virola user + the total volume of all attachments


Client-server data encryption


All data is protected during the transfer by public-key cryptography and SSL. The security certificate for self hosted Virola can be defined by a user. If it is not defined, it is generated automatically on a server when it is launched.


For voice chats symmetric-key encryption AES is used. The keys are generated on the server when it is running and are renewed within specific time period. The keys are stored in RAM only while the server is running.


How to check APK file for viruses


File of the Android app is uploaded to Google Play as Android Application Bundle, then it is converted to APK file by Google. An example of checking APK file for viruses:


Working with push notifications


1.Firebase platform from Google is used to send push notifications in Android Virola client app

2.APNs (Apple Push Notification service) platform is used to send push notifications in iOS Virola client app


Below is the detailed scheme of using push notifications in Virola:


Push notifications in Virola

Push notifications in Virola


The following scheme shows how Virola works without push notifications enabled:


Virola without push notifications enabled

Virola without push notifications enabled


What to do if push notifications do not work on mobile devices


To send notifications your server should have access through HTTPs protocol to the following resources: for Android for iOS push token


You need to allow them in your Firewall


Virola Server command line options help


run Virola Server with --help or -? or -h parameter to get help on Virola Server command line usage.



./virola_server_app.exe --help


Commands for changing SSL certificate


You can run Virola Server with your own SSL certificate / Private key pair.



virola_server_app.exe --listen-host --listen-port 7777 --database-dir ./storage --use-ssl --ssl-certificate ./cert.pem --ssl-private-key ./key.pem --ssl-private-key-password QWERTY


For detailed information please use Virola Server command line options help.


Ports used for audio


Audio in Virola uses UDP protocol. You need to open UDP for the port on which Virola server is running.


How to transfer data to a new server


All data is stored on your server, thus you can do whatever you need with the folder where the data is stored. You can just set the path to it or copy it to a new machine.


If I upgrade my server, will the data get lost?


There should not be any data losses if you upgrade your server. However, before you do anything on your server, we recommend making a back up of your data.




How to start Virola server automatically on Linux Ubuntu and Debian


To run Virola as a daemon on Ubuntu and Debian server you need to do the following:


1.Create user virola

2.Create file virola-server.service in /etc/systemd/system directory

3.Add the following to the file:

                       Description=Virola chat server
                       ExecStart=/usr/bin/virola-server --listen HOST:PORT --storage-dir ./
                       ExecStartPost=/bin/sh -c 'umask 022; pgrep -f virola-server > /home/virola/'


HOST is the IP you've chosen for the Virola server

PORT is the port you've chosen for the Virola server

4.Execute the following commands

                     sudo systemctl daemon-reload
                       sudo systemctl start virola-server
                       sudo systemctl enable virola-server


The storage of messages logs


At present messages logs are stored on the server in the database the path to which a user provides as an argument in --storage-d. They are also stored locally in the database of Virola client in C:\Users\USERNAME\AppData\Roaming\Virola\. In this database are stored only logs of the messages from those chat-rooms the user has access to.


Cannot open database: "C:/Program Files (x86)/Virola/Server/virola_server_database_v8.db"


The database should be stored in a different folder. The directory C:\Program Files (x86)\Virola\Server is read only and data cannot be stored there.


Does Virola support end-to-end encryption?


Messages are stored unencrypted on a server. However, you can store the database on an encrypted server to keep messages encrypted.


We plan to have end-to-end encryption in the near future, however, many enterprise features such as issue tracking will not work with end-to-end encryption. On the other hand, self-hosted server is a pretty secure solution compared to a third-party cloud, even if they promise end-to-end encryption.


Will conversation history be removed if the user is removed from the group chat-room?


For the removed user. The group chat-room with its conversation history disappears immediately if the user is logged into Virola client. If the user is offline, the room will disappear as soon as the user logs into the Virola client. However, if the user is added to the group chat-room again, all the chat history will be restored for him/her.

For other room participants. Nothing will change. Regardless whether the user was removed from the room or deactivated at all, all his/her messages and transferred files will be kept intact.