Unattended Installation
This document contains useful information when automating/scripting the installation and configuration of a Seq server on Windows, or when installing Seq in a headless Server Core environment.
Downloading the MSI
Seq MSIs are hosted at datalust.co
using a simple URI structure like datalust.co/download/begin?version={semver}
. As an example, you can download an installer for 5.1.3364
like:
Invoke-WebRequest "https://datalust.co/download/begin?version=5.1.3364" -outfile "Seq.msi"
Silent installs using the Seq MSI
Seq can be installed using the msiexec.exe
command-line utility, which is included as a part of Windows. This requires the Seq .msi
installer.
msiexec.exe
has several command-line options; the basic installation command looks like:
Start-Process -Wait -FilePath msiexec -ArgumentList '/quiet /i Seq.msi WIXUI_EXITDIALOGOPTIONALCHECKBOX=0 INSTALLFOLDER="C:\Program Files\Seq"'
Passing WIXUI_EXITDIALOGOPTIONALCHECKBOX=0
prevents the Seq Administration app from being launched.
Installing and configuring the Seq Windows Service
After the MSI has completed, the Seq executables will reside in C:\Program Files\Seq
, but no running Seq instance will be configured. You may need to add the install directory to your path.
To set up the Seq Windows Service, Seq.exe
needs to be invoked, passing the storage location and listen URI.
seq service install --storage="C:\ProgramData\Seq" --listen="http://localhost:5341"
seq service start
See Server Command Line and Server Configuration for details of how the seq install
and related seq config
commands work.
If an SSL endpoint is required, seq bind-ssl
must be invoked before seq start
. See Windows HTTPS (TLS/SSL) for instructions.
Enabling authentication
Once the Seq service has started, the HTTP API can be used to install a license certificate and enable authentication.
Ensure this step is completed before opening firewall ports or routing traffic to the Seq instance.
API automation is easiest in C# using the Seq.Api NuGet package. Alternatively, some tasks can be completed using the Command-line Client.
The required code will resemble:
var connection = new SeqConnection("http://localhost:5341");
// Assuming the existence of a Seq license certificate in license.txt
var current = await connection.Licenses.FindCurrentAsync();
using (var reader = File.OpenText("license.txt"))
{
current.LicenseText = await reader.ReadToEndAsync();
}
await connection.Licenses.UpdateAsync(current);
var admin = await connection.Users.FindCurrentAsync();
admin.NewPassword = "hellotest123!";
await connection.Users.UpdateAsync(admin);
var iae = await connection.Settings.FindNamedAsync(SettingName.IsAuthenticationEnabled);
iae.Value = true;
await connection.Settings.UpdateAsync(iae);
await connection.Users.LoginAsync(admin.Username, "hellotest123!");
// More setup here now that the connection is authenticated...
Retention policies, user accounts, etc.
These tasks can also be completed using the HTTP API. For example, a seven-day retention policy can be enabled with:
var policy = await connection.RetentionPolicies.TemplateAsync();
policy.RetentionTime = TimeSpan.FromDays(7);
policy = await connection.RetentionPolicies.AddAsync(policy);
Seq will automatically record encrypted configuration backups each day, and retain these for seven days. Restoring those backups will require the master key, which must be explicitly retrieved and kept in a safe place. See the Backup and Restore documentation for details.
Configure Windows Firewall
Before Seq will be available to the outside world, it first needs to be exposed by the virtual machine.
At an administrative command prompt:
netsh advfirewall firewall add rule name="Open Seq Port 5341" dir=in action=allow protocol=TCP localport=5341
Updated over 4 years ago