Installing, updating, and removing Episode archive🔗

The Episode archive service provides the possibility to keep individual archive fragments for an unlimited time. Using the Episode archive service, you can be sure that important archive fragments will not be lost due to loop recording or corruption of the main archive.

Note

This feature is available only for Enterprise and ULTRA licenses.

The service can be installed on any computer without installing the Eocortex server on it.

Only one service instance can be configured for the entire system.

The service can be installed using the following two options:

  • Online, if the device has Internet access.

  • Offline, if the device does not have Internet access.

Supported versions:

  • Debian 10

Online installation
  1. Add Eocortex repository:

    wget -O - http://packages.eocortex.com/deb/install/eocortex-deps-debian.sh | bash
    
  2. Install the service.

    sudo apt-get install eocortex-archive-episodes-service
    
Offline installation

Warning

For this installation method, you will need a computer with Internet access and the same operating system as the one on which you want to install the Episode archive service.

  1. Clear local repository:

    sudo apt-get clean
    
  2. Add Eocortex repository:

    wget -O - http://packages.eocortex.com/deb/install/eocortex-deps-debian.sh | bash
    
  3. Install all required packages (dependencies):

    sudo apt-get install -d -y eocortex-archive-episodes-service
    
  4. Create the ArchiveEpisodesPackages directory and transfer all downloaded packages to it:

    mkdir ~/ArchiveEpisodesPackages/ && cp -R /var/cache/apt/archives/*.deb ~/ArchiveEpisodesPackages/
    
  5. After that, copy the entire ArchiveEpisodesPackages directory to a USB drive and transfer the data to the server. Install the Episode archive service and all dependencies using the following command:

    sudo dpkg -i /path_to_ArchiveEpisodesPackages/*.deb
    
Dependencies

The following dependency packages must be installed in the operating system for the service to work:

  • aspnetcore-runtime-6.0 (>= 6.0)

  • debconf (>= 0.5)

  • postgresql-12

During the online installation the dependency packages will be installed automatically, while during the offline installation they may require to be installed manually.

To check if a package is installed and its version, use the command dpkg -s %package_name%.

Update

To update the service, run the following commands:

sudo apt-get update

sudo apt-get install eocortex-archive-episodes-service

Or download a new version package from the repository and install it manually using the dpkg command.

Uninstallation

To uninstall the service, use the following command:

sudo apt-get remove eocortex-archive-episodes-service

Supported versions:

  • CentOS 7

Online installation
  1. Add Eocortex repository:

    wget -O - http://packages.eocortex.com/rpm/install/eocortex-deps-centos.sh | bash
    
  2. Install the service.

    sudo yum install eocortex-archive-episodes-service
    
Offline installation

Warning

For this installation method, you will need a computer with Internet access and the same operating system as the one on which you want to install the Episode archive service.

  1. Add Eocortex repository:

    wget -O - http://packages.eocortex.com/rpm/install/eocortex-deps-centos.sh | bash
    
  2. Install yum extensions:

    sudo yum install -y yum-utils
    
  3. Install all required packages (dependencies):

    sudo yumdownloader --downloadonly --downloaddir=~/ArchiveEpisodesPackages eocortex-archive-episodes-service --resolve
    
  4. After that, copy the entire ArchiveEpisodesPackages directory to a USB drive and transfer the data to the server. Install the Episode archive service and all dependencies using the following command:

    sudo rpm -ivh /path_to_ArchiveEpisodesPackages/*.rpm
    
Dependencies

The following dependency packages must be installed in the operating system for the service to work:

  • aspnetcore-runtime-6.0 >= 6.0

  • policycoreutils-python >= 2.5

  • postgresql12-server

During the online installation the dependency packages will be installed automatically, while during the offline installation they may require to be installed manually.

To check if a package is installed and its version, use the command sudo rpm -qa | grep %package_name%.

Update

To update the service, run the following command:

sudo yum update eocortex-archive-episodes-service

Or download a new version package from the repository and install it manually using the rpm command.

Uninstallation

To uninstall the service, use the following command:

sudo yum remove eocortex-archive-episodes-service
Specifics of work

When hosting the service on CentOS, specific problems may arise when the service is trying to work with its database. To avoid them, change the PostgreSQL settings.

Open the file pg_hba.conf in any text editor.

Default path:

/var/lib/pgsql/12/data/pg_hba.conf

Change the authentication method in the file from ident to md5 for all types of connections.

Before

# TYPE

DATABASE

USER

ADDRESS

METHOD

# "local" is for Unix domain socket connections only

local

all

all

ident

# IPv4 local connections:

host

all

all

127.0.0.1/32

ident

# IPv6 local connections:

host

all

all

::1/128

ident

After

# TYPE

DATABASE

USER

ADDRESS

METHOD

# "local" is for Unix domain socket connections only

local

all

all

md5

# IPv4 local connections:

host

all

all

127.0.0.1/32

md5

# IPv6 local connections:

host

all

all

::1/128

md5

Network settings of the service

Warning

These settings should be made on the device where the service is installed.

As part of the installation process, a configuration file appsettings.json containing network settings will be created in the root directory of the service.

Default path:

/opt/eocortexArchiveEpisodesService/appsettings.json

Below is an example of default settings:

{
    "ConnectionStrings": {
        "DatabaseConnectionTemplateWithoutDbName": "Host=localhost; Port=5432;Database={0};Username=eocortex;Password=masterkey"
    },
    "Serilog": {
        "MinimumLevel": {
            "Default": "Debug",
            "Override": {
                "Default": "Information",
                "Microsoft": "Warning",
                "Microsoft.Hosting.Lifetime": "Information"
            }
        },
        "WriteTo": [
            {
                "Name": "Logger",
                "Args": {
                    "configureLogger": {
                        "Filter": [
                            {
                                "Name": "ByIncludingOnly",
                                "Args": {
                                    "expression": "(@Level = 'Error' or @Level = 'Fatal' or @Level = 'Warning')"
                                }
                            }
                        ],
                        "WriteTo": [
                            {
                                "Name": "File",
                                "Args": {
                                    "path": "%LogsDir%/service.log",
                                    "rollOnFileSizeLimit": true,
                                    "fileSizeLimitBytes": "52428800",
                                    "retainedFileCountLimit": 10
                                }
                            }
                        ]
                    }
                }
            },
            {
                "Name": "Console",
                "Args": {
                    "outputTemplate": "===> {Timestamp:HH:mm:ss.fff zzz} [{Level}] {Message}{NewLine}{Exception}"
                }
            }
        ],
        "Enrich": [
            "FromLogContext",
            "WithMachineName",
            "WithThreadId"
        ],
        "Properties": {
            "Application": "LongTerArchiveService"
        }
    },
    "AllowedHosts": "*",
    "EpisodesDbRelativePath": "ArchiveServiceData/episodes-database",
    "AlwaysRedirectToHttps": "false",
    "Network": {
        "Endpoints": {
            "Http": {
                "Url": "http://*:8899"
            }
        }
    }
}

To change the HTTP port, find the following section in the configuration file:

"Network": {
    "Endpoints": {
        "Http": {
            "Url": "http://0.0.0.0:8899"
        }
    }
},

And set a custom port in the Url line instead of the default 8899.

To add an SSL certificate to the service configuration and enable HTTPS connection, change the Network section by one of the following ways:

"Network": {
    "Endpoints": {
        "Http": {
            "Url": "http://0.0.0.0:8899"
        },
        "Https": {
            "Url": "https://0.0.0.0:18899",
            "Certificate": {
                "Path": ".pfx file",
                "Password": "cert_password"
            }
        }
    }
}

Where:

  • Path: Location of the PFX file of the certificate.

  • Password: Password of the certificate.

"Network": {
    "Endpoints": {
        "Http": {
            "Url": "http://0.0.0.0:8899"
        },
        "HttpsInlineCertAndKeyFile": {
            "Url": "https://0.0.0.0:18899",
            "Certificate": {
                "Path": ".pem/.crt file",
                "KeyPath": ".key file",
                "Password": "cert_password"
            }
        }
    }
}

Where:

  • Path: Location of the .pem/.crt file of the certificate.

  • KeyPath: Location of the .key file of the certificate.

  • Password: Password of the certificate.

"Network": {
    "Endpoints": {
        "Http": {
            "Url": "http://0.0.0.0:8899"
        },
        "Https": {
            "Url": "https://0.0.0.0:18899",
            "Certificate": {
                "Subject": "Subject",
                "Store": "Store",
                "Location": "Location",
                "AllowInvalid": "true/false"
            }
        }
    }
}

Where:

  • Subject: Name of the certificate subject.

  • Store: Name of the certificate storage.

  • Location: Location of the certificate storage. By default, CurrentUser.

  • AllowInvalid: State of the policy of using invalid (e.g. self-signed) certificates. By default, it's false.

Note

Changing the HTTPS port can be done similarly to the HTTP port, but for the relevant section.

To enable forced redirection of all requests to the service to a secured connection, find and change the value from false to true for the following line:

"AlwaysRedirectToHttps": false,

Note

After saving the settings, the service must be restarted via the Services snap-in to take all changes into effect.

Warning

Changing other settings provided in the configuration file may cause the service to malfunction or fail. It is not recommended to change settings that are not described in the present documentation.

Related references