What is File Storage?

File Storage is a new component of the Kickidler software suite, designed to store binary data (video and audio) collected by agents, outside the central database. It runs on the local disk and significantly improves system stability and performance.

File Storage provides:

  • storage of all video and audio files recorded by the Kickidler agent,
  • offloading PostgreSQL from large binary data,
  • improved scalability when working with a large number of agents.

Types of stored data:

  • screen/ — screen video recordings,
  • audio/ — microphone audio recordings.

Storage structure

Data is stored according to the following structure:

year/month/day/type/

This approach provides flexibility and simplifies administration.

Data Deletion

The system automatically deletes outdated data:

  • checks are conducted every 10 minutes,
  • deletion is performed daily (by folders),
  • retention period is configurable via the central node interface.

What happens during installation and update

On fresh install:

  • the user specifies the storage path,

On update:

  • existing data in the database remains,
  • new video and audio are saved to external storage,
  • backward compatibility is ensured: the system continues to read old data from the database.

Features and limitations

  • supports more than 1000 agents simultaneously,
  • no limit on .blob size (up to 9 GB),
  • retransmission of data in case of connection loss,
  • unique keys prevent duplication,
  • security is provided by OS access rights (files are not encrypted).

Default storage location

Windows:

C:\ProgramData\ki-data

Linux:

/var/opt/ki

Important: Directories are created automatically after server installation.

Changing the storage path

The storage path can be changed via the configuration file node.ini.

Instructions for changing the path

  1. Stop the KickidlerNode service (nns):

    Via Windows "Services" (services.msc) or command line/terminal:

    net stop nns
    On Linux:
    systemctl stop kickidlernode
  2. Open the configuration file:

    Navigate to C:\Program Files\KickidlerNode\config\ (Windows) or /opt/KickidlerNode/ (Linux)

    Open node.ini in a text editor (Notepad, Notepad++, Vim, Nano, etc.).

  3. Set the new path:

    Find the line

    fileStoragePath=

    If the line exists: Change the value after = to the absolute path of the new desired storage directory.

    If the line does not exist: Add a new line at the end of the file:

    fileStoragePath=<New_Path>

    Path format:

    Use forward slashes (`/`) (Unix-style), even on Windows.

    Example for Windows: fileStoragePath=D:/KickidlerData/ or fileStoragePath=E:/Monitoring/Records/

    Example for Linux: fileStoragePath=/mnt/storage/kickidler_data/

    Ensure the path ends with /.

  4. Save the `node.ini`.

  5. Start the KickidlerNode service (nns):

    Windows
    net start nns
    Linux
    systemctl start kickidlernode
  6. Migrating existing data:

    If you need recordings that are already in the old folder (C:\ProgramData\ki-data or /var/opt/ki), manually copy or move all contents from the old folder to the new folder specified in fileStoragePath= after starting the service with the new settings.

    Make sure that the structure inside the new folder matches the old one (Year/Month/Day/screen/, Year/Month/Day/audio/).

    Key warnings when changing the path:

    Access rights: Ensure that the account under which the nns service (KickidlerNode) runs has full permissions (read/write/modify) on the new target directory and all its subdirectories.

    Sufficient disk space: The new disk must have enough free space to store the recordings.

    Service stop required: Changing the config requires stopping the service. On-the-fly changes are not supported and may cause errors.

Data storage structure inside the storage

Data is organized hierarchically by date:

   Год (YYYY)/

       Месяц (MM)/

           День (DD)/

               screen/ (Папка с видеофайлами)

               audio/ (Папка с аудиофайлами)

File formats (Inside screen/ and audio/):

  • <Number>.lock
  • <Number>.blob
  • <Number>.key

Important: These files are not standard video/audio files (.mp4, .wav, etc.). They cannot be opened directly by third‑party players. They are used exclusively by the player inside Kickidler Viewer. Deleting these files will make the corresponding recordings unavailable in the Viewer.

Retention management and data deletion

Automatic deletion: Since May 2025, a feature has been added to automatically remove video (and related audio) data after the retention period expires.

Configuring the retention period:

  1. Open the Kickidler Administrator web interface.
  2. Go to Configuration → Components & Coordination → Server
  3. Find the parameter Video Retention Period.
  4. Set the desired number of days for which recordings should be stored on the Node (e.g., 7, 14, 30).
  5. Save the server configuration changes.

How it works:

Once the set "Video Retention Period" expires (counted from the recording date):

  1. Recordings are deleted from the central server database
  2. Corresponding files (.lock, .blob, .key) in the local storage on the Node are automatically deleted.

Manual deletion of files from storage folders is no longer required or recommended, as files deleted manually before the retention period expires will make recordings unavailable in the Viewer, and files left after expiry will be deleted automatically.

Manual data deletion

Not recommended for routine management, since automatic deletion now covers this task.

Use only if:

  • You need to immediately free up disk space right now.
  • You need to delete data for a specific period that has not yet expired according to the "Video Retention Period" setting.

How to delete manually:

  1. Stop the KickidlerNode service (nns) (see section 3.1).
  2. Navigate to the local storage folder (default or changed).
  3. Delete the corresponding subfolders (Year/Month/Day) whose data you want to erase.
  4. Start the KickidlerNode service (nns).

Manually deleting folders/files directly will make the corresponding recordings unavailable in Kickidler Viewer. Data in the server database is not deleted automatically and may become broken (referencing missing files).

Administrator Summary:

  1. Storage path:

    Configured in node.ini → fileStoragePath (Unix-style) after stopping the service. Check permissions!

  2. Structure:

    Year/Month/Day/screen|audio/ with .lock, .blob, .key files. Do not modify manually unless necessary.

  3. Cleanup:

    Set the Video Retention Period in the web interface (Configuration → Components & Coordination → Server). Automatic deletion of files and DB records is active. Manual cleanup is a last resort.