# StifleR Server Installation

## *Prerequisites* <a href="#pre-requisites" id="pre-requisites"></a>

* Microsoft .NET 4.8
* Installation account must have Administrator rights
* Create and populate the [StifleR Administrative Security Groups](https://documentation.2pintsoftware.com/stifler/2.10/planning/permissions#user-access-control)
* Open the required [firewall ports](https://documentation.2pintsoftware.com/stifler/2.10/planning/firewall-ports)
* License.cab or license key (optional at this point)
* Review [StifleR Server Considerations](https://documentation.2pintsoftware.com/stifler/2.10/planning/stifler-server-considerations) page for server specs, etc.
* Decide on whether the StifleR Service will be using SSL (optional at this point, but recommended). For more information on using SSL, see [this page](https://documentation.2pintsoftware.com/stifler/2.10/configuration/securing-stifler-operations-with-ssl).&#x20;

### Optional Components

**Internet Information Services (IIS):**

The StifleR Server API runs its own web service, so IIS is **NOT** required unless:

* You will also be installing the StifleR Dashboard on the same server.
* You will be hosting the [StiflerRulez](#configure-the-stifler-rules-xml) site on the same server.&#x20;

## *Installation* <a href="#installation" id="installation"></a>

### *Manual Installation*

From an Elevated Command prompt launch **StifleR.Installer64.msi**.

At the "Welcome" screen, feel welcomed, and then click **Next**.

{% embed url="<https://2492782234-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYUaU4nvWOjjzrdVpKtdy%2Fuploads%2Fo0mFB2Efg0WgbRjnByBq%2F01-StifleR-10.2-Welcome.jpg?alt=media&token=e8b92180-05e1-4783-9faf-f2b41bab92c7>" %}

***

At the "End-User License Agreement" screen, once you have reviewed the EULA, check the box: \
**I accept the terms in the License Agreement**, and then click **Next**.

{% embed url="<https://2492782234-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYUaU4nvWOjjzrdVpKtdy%2Fuploads%2FNwi5QYEzzhCXOObWF94f%2F02-StifleR-10.2-EULA.jpg?alt=media&token=a6d8379a-bf79-4c5a-bf6b-358cb9fe75d8>" %}

***

At the "Select License Type" screen, choose the license type, and then click **Next**.

{% hint style="info" %}
NOTE: The installer does not check whether the license information is valid. If you select an incorrect license file or enter an invalid key, the installer will continue but the StifleR service may stop soon after starting.
{% endhint %}

{% embed url="<https://2492782234-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYUaU4nvWOjjzrdVpKtdy%2Fuploads%2FXkJojiiFn9f3rVZlULTP%2F03-StifleR-10.2-License.jpg?alt=media&token=20eb68fb-212c-40b1-b0c4-afdf15f91d5e>" %}

***

At the "Service Logon Credentials" screen, choose the Logon Type, and then click **Next**.

{% embed url="<https://2492782234-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYUaU4nvWOjjzrdVpKtdy%2Fuploads%2FJRrRdDG4lqyDVIPEUzmS%2F04-StifleR-10.2-SvcCreds.jpg?alt=media&token=ad4b2d83-b1f2-4551-ae35-4694e1dc61e3>" %}

{% hint style="info" %}
Note: If using a local or domain account, the account must have "Logon as a Service" rights.
{% endhint %}

***

At the "Port Selection" screen, enter a **Port Number**, or accept the default port **1414**, and then click the **Test Port** button. If the port is open, a green check mark will appear. If the port is not open, validate that the port is available. Once complete, click **Next**.

{% embed url="<https://2492782234-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYUaU4nvWOjjzrdVpKtdy%2Fuploads%2FlCVxod3fS1Fgtf9qHI3r%2F05-StifleR-10.2-Port.jpg?alt=media&token=674bb26f-433b-4ef5-8f46-d3f8ed3984fe>" %}

***

At the "Select Certificate" screen, you can choose whether you want to use **Http** or **Https** for StifleR Client to Server communications. If you choose Https, also enter the **certificate thumbprint** for the self-signed certificate which is installed when StifleR is installed or from another installed certificate. If this is a fresh installation of StifleR, choose **Http** and switch to Https (recommended) at a later time. Once complete, click **Next**.&#x20;

{% embed url="<https://2492782234-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYUaU4nvWOjjzrdVpKtdy%2Fuploads%2FLg4xTB59YiOohqLbyT5m%2F06-StifleR-10.2-Cert.jpg?alt=media&token=21e379e4-5d57-43b9-af58-b6dd9aa057df>" %}

***

At the "Destination Folder" screen, enter the path in which the StifleR server program files should be installed and then click **Next**.

{% embed url="<https://2492782234-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYUaU4nvWOjjzrdVpKtdy%2Fuploads%2Fg1OJ2RZsUgzm8SmetmIT%2F07-StifleR-10.2-DestFldr.jpg?alt=media&token=7f876a14-2d36-40e1-a4cf-ea5c4381574b>" %}

***

At the "Select Firewall Configuration" screen, choose whether you would like the installer to create firewall exceptions for the SignalR port and the Web Service API ports. Click **Next** to continue.

{% hint style="info" %}
Note: If a port number other than the default (port 1414) was defined earlier in this wizard, that port will be opened and not the default.
{% endhint %}

{% embed url="<https://2492782234-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYUaU4nvWOjjzrdVpKtdy%2Fuploads%2FEm9bbdiAvLkvmBQPO18E%2F08-StifleR-10.2-FireWall.jpg?alt=media&token=1b25261f-e201-4ef9-938e-5d7ab4385e24>" %}

***

At the "Select Administrators Group" screen, continue with the default groups, or enter custom groups and then click **Next**.

{% hint style="info" %}
Note: The administrators groups are not created automatically. They must be created in advance. Please refer to the [StifleR Administrative Security Groups](https://documentation.2pintsoftware.com/stifler/2.10/planning/permissions#user-access-control) section.
{% endhint %}

{% embed url="<https://2492782234-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYUaU4nvWOjjzrdVpKtdy%2Fuploads%2Fq19fKCsbmZLUKbDddX2F%2F09-StifleR-10.2-AdminGrps.jpg?alt=media&token=424078c9-2a41-41e1-b511-57d18cb1e657>" %}

***

At the "Ready to install..." screen, click **Install** to begin the installation.

{% embed url="<https://2492782234-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYUaU4nvWOjjzrdVpKtdy%2Fuploads%2FsSWBLF34s2mJGBP4iyTz%2F10-StifleR-10.2-ReadyInstall.jpg?alt=media&token=dd123521-5c4c-4acf-906f-ae7abf0c4237>" %}

***

At the "Completed" screen, the installation wizard is complete. Click **Finish** and enjoy a nice cup of tea, you’ve earned it.

{% embed url="<https://2492782234-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYUaU4nvWOjjzrdVpKtdy%2Fuploads%2FrgXrSEdhq1woI1oY8IH5%2F11-StifleR-10.2-CompletedSetup.jpg?alt=media&token=dbe9506b-08fa-44cf-91c7-c8f899ef133d>" %}

### *Configuring the StifleR Rules XML Site* <a href="#configure-the-stifler-rules-xml" id="configure-the-stifler-rules-xml"></a>

The StifleR client will check through its queue of active downloads (both BITS and DO) and will prioritize them according to a locally held XML configuration file referred to as the StifleR Rules XML file. The Stifler Rules XML contains a list of content download jobs types and priorities which can centrally managed by an administrator from any web server. When deploying the StifleR Client, one of the installation options is to include the URL hosting the rules file. Clients will download the rules definition XML at a configurable interval. In order to use the StifleR Rules XML file, a website must be created and the StifleRulez.xml file should be copied to the root directory of the website.&#x20;

The latest version of the StifleRulez.xml file can always be found here:\
<https://github.com/2pintsoftware/StifleRRules/blob/master/StifleRulez.xml>

{% hint style="info" %}
For detailed information regarding the StifleRulez.xml file, see the following page:\
[StifleRulez.xml Configuration Guide](https://documentation.2pintsoftware.com/stifler/2.10/configuration/stiflerulez.xml-2.x-definitions)
{% endhint %}

#### IIS Installation Requirement

The minimum IIS role and features required can be installed by using the following PowerShell command:

```
Install-WindowsFeature -Name Web-Server, Web-Windows-Auth -IncludeManagementTools
```

#### **File location**

Place the StifleRulez.xml in the following folder on the StifleR server:

```
C:\ProgramData\2Pint Software\StifleR\Rules
```

#### **Create a Virtual folder in IIS**

From an elevated PowerShell prompt, execute the following command:

```
New-WebVirtualDirectory -Site "Default Web Site" -Name StiflerRules -PhysicalPath "C:\ProgramData\2Pint Software\StifleR\Rules"
```

The above command will create a website which you will reference during the StifleR client installation.

​Ex: <http://yourserverfqdn/StiflerRules/stiflerulez.xml>

{% hint style="info" %}
*Note: If you do not configure your own internal rules definition URL, the clients will use a default version of the XML which is included within each client build.*
{% endhint %}

## Post Installation Checks

### Checking the StifleR Service State

Open services.msc to validate that the **2Pint Software Stifler Server** service is installed and running, or run the following PowerShell command and validate that the service is present and running:

```
Get-Service -Name StifleRServer | Select Status
```

### Checking the StifleR Installation Directory

* If using a licensing file for licensing, check for the **License.nfo** files. If this is missing the service may not be licensed properly.
* Open up the configuration file, [**StifleR.Service.exe.config**](https://documentation.2pintsoftware.com/stifler/2.10/configuration/configuration-files/stifler-server-configuration-file), and check that the expected values

  are present.&#x20;

### Checking the Event Logs

To validate that the StifleR Server Event Logging structure has been created, execute the following PowerShell command:

```
Get-WinEvent -ListLog TwoPintSoftware-StifleR.Service-* | Where-Object { $_.RecordCount }
```

Validate the following output:

<figure><img src="https://109907496-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYUaU4nvWOjjzrdVpKtdy%2Fuploads%2F0D07OnxOd7xOfAsL9OKK%2FStifleRServer_EventLogging.jpg?alt=media&#x26;token=60a59bb5-7d80-4130-8591-92d5af4e0dea" alt=""><figcaption></figcaption></figure>

### Checking WMI Configuration

Execute the following PowerShell command to verify that the WMI Class Root\StifleR and methods were created successfully:

```
Get-CimClass -Namespace Root\StifleR -ClassName StifleREngine | where {$_.CimClassMethods} | Select CimClassName, CimClassMethods
```

Validate the following output:

<figure><img src="https://109907496-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYUaU4nvWOjjzrdVpKtdy%2Fuploads%2FVd8DfxjekrTXlAEtE42S%2FStifleRServer_WMIClasses.jpg?alt=media&#x26;token=51b62808-ba85-4426-9a78-204fa7ab590a" alt=""><figcaption></figcaption></figure>

Execute the following PowerShell command to get the StifleR License information:

```
Get-CimInstance -NameSpace Root\StifleR -ClassName StifleREngine
```

Validate the following output:

<figure><img src="https://109907496-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYUaU4nvWOjjzrdVpKtdy%2Fuploads%2FAXk4MXm2fdUILokxBkKv%2FStifleRServer_WMIInstance.jpg?alt=media&#x26;token=6f0255da-34a1-4a05-a7e0-cc039b60bb09" alt=""><figcaption></figcaption></figure>

### Checking API Permissions

To test access to the StifleR Server API, open a web browser, and enter the StifleR Server URL such as:

***http(s)://servername:9000/api/test***

The page should display the results of your permissions such as the example below:

<figure><img src="https://109907496-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYUaU4nvWOjjzrdVpKtdy%2Fuploads%2F6jQ5I17m6E0Vph5nUxGY%2FStifleRAPITest.png?alt=media&#x26;token=1130fa25-3069-4deb-84ec-cfb55fe62f2f" alt=""><figcaption></figcaption></figure>

### Checking StiflerRules Web Site Availability

To test access to the StifleR Rules Web Site, open a web browser, and enter the StiflerRules URL such as:

***<http://yourserverfqdn/StiflerRules/stiflerulez.xml>***

The page should display the contents of the XML file such as the example below:

<figure><img src="https://109907496-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYUaU4nvWOjjzrdVpKtdy%2Fuploads%2F658jAhOyENAMJBaal71J%2FStifleRulez-Page.jpg?alt=media&#x26;token=aca76346-cf89-43ac-aaaf-e88d51c18f92" alt=""><figcaption></figcaption></figure>
