Configuration¶
Four configuration surfaces: the server's appsettings.json and environment, the agent's appsettings.json plus the files enrollment generates, the console's local settings, and one shared language setting per machine.
Server¶
Settings are read from appsettings.json and environment variables; the deployment writes the sensitive values into /etc/remoteserver/*.env, which the systemd unit loads. Environment variables use ASP.NET Core's double-underscore form:
Server__PublicUrl=https://remote.example.com
Server__Bastion__Host=remote.example.com
ConnectionStrings__MariaDb="Server=localhost;Port=3306;Database=remoteserver;User Id=remoteserver;Password=..."
| Setting | Default | Required | Description |
|---|---|---|---|
ConnectionStrings:MariaDb |
sample | Yes | The MariaDB connection string; 02-mariadb writes it to /etc/remoteserver/db.env. |
Server:CommandSigningKeyPath |
/etc/remoteserver/cmd_signing.key |
Yes | ECDSA P-256 private key that signs agent commands; the public key goes to the agents at enrollment. |
Server:CaCertPath |
/etc/remoteserver/ca.crt |
Yes | The client-certificate CA's certificate; nginx uses it for mTLS too. |
Server:CaKeyPath |
/etc/remoteserver/ca.key |
Yes | The CA's private key, readable by the service user only. |
Server:ClientCertValidityDays |
825 |
No | Validity of issued device certificates; they renew within 180 days of their end. |
Server:SecretKeyPath |
/etc/remoteserver/secret.key |
Yes | 32-byte AES-GCM key for secrets in the database. |
Server:PackagesDir |
/var/lib/remoteserver/packages |
Yes | The package store: uploaded executables and MSIs, generated installers. |
Server:PublicUrl |
empty | For blobs and MSIs | The public base URL embedded into bootstrap blobs, e.g. https://remote.example.com. |
Server:MinClientVersion |
1.5.0.0 |
No | The oldest console allowed to sign in; an older one is made to update first. Empty disables the gate. |
Server:MsiSigning:CertPath |
empty | No | Authenticode certificate for generated MSIs; empty means unsigned. |
Server:MsiSigning:Password |
empty | If signing | The PFX password; prefer the environment file. |
Server:MsiSigning:TimestampUrl |
http://timestamp.digicert.com |
No | Timestamp server for osslsigncode. |
Server:Bastion:Host |
empty | Yes | The SSH bastion the agents are told at enrollment. |
Server:Bastion:Port |
22 |
No | Its SSH port; the agents try 443 first (the multiplexer) and fall back to this. |
Server:Bastion:User |
agent |
No | The restricted SSH user. |
Server:Bastion:HostKey |
empty | Yes | The bastion's host key in known_hosts form, e.g. ssh-ed25519 AAAA.... |
Server:Bastion:SshCaKeyPath |
/etc/remoteserver/agent_ca |
Yes | The SSH CA that signs device and operator SSH certificates. |
Server:Bastion:SshCertValidityDays |
825 |
No | Validity of device SSH certificates. |
Server:Bastion:AgentSshCertValidityDays |
3 |
No | Validity of the short SSH certificates the agents renew on their own. |
Server:Bastion:TunnelPortMin / TunnelPortMax |
50000 / 60000 |
No | The per-device reverse-tunnel port range; file ports follow above it. |
Stored in the database and edited in the console: the owner's name, support phone and e-mail; the e-mail provider (none, SMTP or Microsoft Graph) and its secret; users, roles and grants; devices and groups; packages and channels; tokens; the audit log; sessions.
Agent¶
The agent reads Agent options from appsettings.json and the environment, then takes most runtime values from C:\ProgramData\RemoteAgent\enrollment.json after enrollment. In an MSI or bootstrap install nothing here needs editing.
| Setting | Default | Usually set by | Description |
|---|---|---|---|
Agent:AgentId |
empty | enrollment | The device id the server assigned. |
Agent:EnrollmentDir |
C:\ProgramData\RemoteAgent |
appsettings, MSI | Enrollment output and runtime state. |
Agent:ClientCertPfxPath |
empty | enrollment | The client certificate for mTLS. |
Agent:CommandChannel:Url |
sample | enrollment | The WebSocket endpoint, e.g. wss://remote.example.com/agent. |
Agent:CommandChannel:ServerCertPinSha256 |
empty | enrollment | SHA-256 pin of the server's TLS certificate. |
Agent:CommandChannel:CommandSigningPublicKey |
empty | enrollment | The server's command-signing public key (SPKI, Base64). |
Agent:CommandChannel:MaxCommandAgeSeconds |
60 |
appsettings | The replay window for signed commands. |
Agent:CommandChannel:ReconnectBaseDelaySeconds / ReconnectMaxDelaySeconds |
2 / 120 |
appsettings | Reconnect backoff after the channel drops; reset on a change of address. |
Agent:CommandChannel:KeepAliveIntervalSeconds / KeepAliveTimeoutSeconds |
15 / 10 |
appsettings | WebSocket keepalive and the pong timeout. |
Agent:Tunnel:BastionHost / BastionPort / BastionUser |
sample / 22 / agent |
enrollment | The bastion. |
Agent:Tunnel:BastionTransport |
auto |
the console, per device | auto (443 raw SSH, then WebSocket), ssl443, ssh22 or wss443. |
Agent:Tunnel:PrivateKeyPath / CertificatePath |
enrollment dir | enrollment | The tunnel key (a TPM key is served by the built-in ssh-agent instead) and its certificate. |
Agent:Tunnel:BastionHostKey |
empty | enrollment | The pinned host key. |
Agent:Tunnel:LocalForwardPort |
5900 |
appsettings | The local port the reverse tunnel exposes: TightVNC. |
Agent:Tunnel:IdleTimeoutSeconds |
1800 |
appsettings | Closes an idle tunnel. |
Agent:Tunnel:SshExecutablePath |
C:\Windows\System32\OpenSSH\ssh.exe |
appsettings | ssh.exe; when it is not there, Program Files\OpenSSH and the PATH are tried. |
Agent:Telemetry:IngestUrl |
sample | enrollment | The telemetry endpoint, e.g. https://remote.example.com/api/telemetry. |
Agent:Telemetry:ServerCertPinSha256 |
empty | enrollment | The TLS pin for the API calls. |
Agent:Telemetry:IntervalSeconds |
60 |
appsettings | The telemetry interval. |
C:\ProgramData\RemoteAgent\diag.json, written by the verbose logging command, raises the file log's level for the time it names; the service reads it without a restart.
Console¶
The Windows console keeps its settings in %APPDATA%\RemoteClient\config.json (the Lite console in %APPDATA%\RemoteClient.Lite):
| Setting | Default | Description |
|---|---|---|
AdminApiPort |
5000 |
The bastion loopback port of the admin API, which the local agent's broker forwards. |
ViewerExe |
C:\Program Files\TightVNC\tvnviewer.exe |
The TightVNC viewer. |
ThemeMode |
dark |
light, dark or auto. |
Channel |
rtm |
The console's own update channel. |
HelloCredentialId, HelloUsername |
- | The Windows Hello credential registered on this machine. |
The viewer's scale and colour depth roam with the account; the language is the shared setting below.
Shared language setting¶
Every local executable - agent, updater, console, Lite - reads one file:
| Value | Meaning |
|---|---|
auto |
The system UI culture. |
en |
English. |
hu |
Hungarian. |
The console's settings page writes it; running services and open windows pick the change up at their next start.