Deployment

Fresh Installation

Common Installation Steps

Both fxrecorder and fxrunner instances require running the following steps:

  1. Install PowerShell 7+

    PowerShell can be downloaded from GitHub. The default options are sufficient.

  2. Install and configure OpenSSH server.

    SSH is used for remote management of fxrecorder and fxrunner. To install on Windows, open an elevated PowerShell window and run:

    $cap = Get-WindowsCapability -Online | ? Name -Like "OpenSSH.Server*"
    Add-WindowsCapability -Online -Name $cap.Name
    

    Windows will download and install OpenSSH server.

  3. Configure OpenSSH

    The default configuration of OpenSSH does not allow PowerShell remoting.

    First, start and stop the OpenSSH server to have it generate the default configuration:

    Set-Service -Name sshd -Status Running
    Set-Service -Name sshd -Status Stopped
    

    Then, open the configuration file at C:\ProgramData\ssh\sshd_config and add the following

    Subsystem powershell      pwsh.exe -sshs -NoLogo
    

    Finally, enable and start the sshd service:

    Set-Service -Name sshd -StartupType Automatic -Status Running
    
  4. Do platform-specific configuration (fxrecorder or fxrunner).

fxrecorder

  1. Install ImageMagick and FFmpeg.

    fxrecoder additionally requires an installation of ImageMagick 6.9 and ffmpeg 4.2. Download the latest Windows binary release and run the installer. Make sure to also check “Install FFmpeg”.

  2. Run the deployment script.

    This script will copy all management modules and scripts to the host, as well as build and deploy fxrecorder with its configuration.

    .\contrib\Deploy.ps1 -HostName $hostname -UserName fxrecorder -MachineType recorder
    
  3. Run the installation script.

    The installation script is run on the remote host over SSH. Run the following to authenticate to the machine and run the script:

    Enter-PSSession -UserName fxrecorder $hostname
    Install-FxRecorder.ps1
    Exit-PSSession
    

    The installation script will handle download and installation of all other dependencies. It will prompt you for the Taskcluster access token, client ID, and worker ID.

fxrunner

  1. Run the deployment script.

    This script will copy all management modules and scripts to the host, as well as build and deploy fxrecorder with its configuration.

    .\contrib\Deploy.ps1 -HostName $hostname -UserName fxrecorder -MachineType runner
    
  1. Run the installation script

    The installation script is run on the remote host over SSH. Run the following to authenticate to the machine and run the script:

    Enter-PSSession -UserName fxrunner $hostname
    .\PowerShell\Scripts\Install-FxRunner.ps1
    Exit-PSSession
    

Updating Existing Deployments

fxrecorder

To update an existing deployment of fxrecorder, run the following PowerShell code:

$session = New-PSSession -UserName fxrecorder $hostname
Invoke-Command -Session $session -ScriptBlock { Disable-FxRecorder.ps1 }
.\Contrib\Deploy -HostName $hostname -UserName fxrecorder -MachineType recorder
Invoke-Command -Session $session -ScriptBlock { Enable-FxRecorder.ps1 }
Remove-PSSession $session

fxrunner

To update an existing deployment of fxrunner, run the following PowerShell code:

$session = New-PSSession -UserName fxrunner HOSTNAME
Invoke-Command -Session $session -ScriptBlock { Disable-FxRunner.ps1 }
.\contrib\Deploy -HostName HOSTNAME -UserName fxrunner -MachineType runner
Invoke-Command -Session $session -ScriptBlock { Enable-FxRunner.ps1 }
Remove-PSSession $session