Skip to main content

System Requirements

Minimum Requirements

ComponentRequirement
Operating SystemWindows 10 (Build 17763+) or Windows Server 2019+
RAM256 MB (minimal overhead)
Disk Space50 MB for binaries
NetworkTCP connectivity (port 2022 by default)
ConPTY support requires Windows 10 Build 17763 (October 2018 Update) or later.
  • Windows 10 21H2 or later / Windows 11
  • Windows Terminal (for best terminal experience)
  • Dedicated network port for the server
  • Administrator access (for Windows Service installation)

Installation Methods

Initial Setup

1. Server Setup

1

Create Configuration Directory

# PowerShell (Run as Administrator)
$configDir = "$env:PROGRAMDATA\UndyingTerminal"
New-Item -ItemType Directory -Force -Path $configDir
2

Create Configuration File

Create ut.cfg in the config directory:
$configFile = "$env:PROGRAMDATA\UndyingTerminal\ut.cfg"

@"
# Undying Terminal Server Configuration

# Server listen port (default: 2022)
port=2022

# Bind IP (0.0.0.0 = all interfaces)
bind_ip=0.0.0.0

# Verbose logging (true/false)
verbose=false

# Optional: Shared encryption key (hex)
# shared_key_hex=<generate-this>
"@ | Out-File -FilePath $configFile -Encoding ASCII
3

Configure Firewall

Allow inbound connections on port 2022:
# Run server with --add-firewall once
./undying-terminal-server.exe --add-firewall
4

Start Server (Test)

./undying-terminal-server.exe
Expected output:
[INFO] Loading config from: C:\ProgramData\UndyingTerminal\ut.cfg
[INFO] Server listening on 0.0.0.0:2022
[INFO] Named pipe server started: \\.\pipe\undying-terminal

2. Windows Service Installation (Production)

For production environments, run the server as a Windows service:
# PowerShell (Run as Administrator)
sc.exe create UndyingTerminalServer `
  binPath= "C:\Program Files\UndyingTerminal\undying-terminal-server.exe --service" `
  start= auto `
  DisplayName= "Undying Terminal Server"

# Start the service
sc.exe start UndyingTerminalServer
Service mode automatically handles job object cleanup and runs with system privileges.

3. Client Setup

No special setup required for the client! Just run:
./undying-terminal.exe --help

Verification

Test Local Connection

1

Start Server

# Terminal 1
./undying-terminal-server.exe
2

Start Terminal

# Terminal 2
echo "test/ignored" | ./undying-terminal-terminal.exe
Note the client_id and passkey from output.
3

Connect Client

# Terminal 3
./undying-terminal.exe `
  --connect 127.0.0.1 2022 <CLIENT_ID> `
  --key <PASSKEY> `
  --noexit
4

Test Session

Type dir or ls and verify output appears.
If you see command output, installation is successful!

Network Configuration

Port Forwarding (Router/Firewall)

To access the server from outside your local network:
1

Find Server IP

# Internal IP
ipconfig | findstr IPv4

# External IP (public)
(Invoke-WebRequest -Uri "https://api.ipify.org").Content
2

Configure Port Forwarding

In your router:
  • Forward external port 2022 → internal IP:2022
  • Use TCP protocol
  • Enable the rule
3

Test External Access

# From external network
./undying-terminal.exe --connect <PUBLIC_IP> 2022 <CLIENT_ID> --key <PASSKEY>
Security Recommendation: Enable shared key encryption when exposing the server to the internet. See Configuration → Encryption.

Optional Enhancements

Generate Encryption Key

For production deployments with encryption:
# Generate random 32-byte hex key
$bytes = New-Object byte[] 32
[Security.Cryptography.RNGCryptoServiceProvider]::Create().GetBytes($bytes)
$hexKey = -join ($bytes | ForEach-Object { $_.ToString("x2") })
Write-Output "shared_key_hex=$hexKey"

# Add to ut.cfg

Install Dependencies (MSYS2)

If using MSYS2 builds:
# MSYS2 MINGW64 shell
pacman -S mingw-w64-x86_64-cmake \
          mingw-w64-x86_64-gcc \
          mingw-w64-x86_64-protobuf \
          mingw-w64-x86_64-libsodium \
          mingw-w64-x86_64-openssl

Troubleshooting Installation

If you see errors like:
The code execution cannot proceed because libsodium.dll was not found.
Solution:
  • Ensure all DLLs from the release package are in the same directory as the executables
  • Check PATH includes the installation directory
  • Reinstall Visual C++ Redistributable (2015-2022)
If CMake can’t find dependencies:
# Ensure vcpkg integration is active
cd \path\to\vcpkg
.\vcpkg integrate install

# Point CMake to vcpkg
cmake -DCMAKE_TOOLCHAIN_FILE=\path\to\vcpkg\scripts\buildsystems\vcpkg.cmake ..
Error: CreatePseudoConsole failedCause: Windows version < Build 17763Solution: Update Windows to October 2018 Update (Build 17763) or later
Check what’s using the port:
netstat -ano | findstr :2022
Options:
  • Kill the conflicting process
  • Change port in ut.cfg
  • Use --port flag: ./undying-terminal-server.exe --port 2023

Next Steps

System Integration Checklist

Before deploying to production:
  • Installed binaries to C:\Program Files\UndyingTerminal
  • Created config file at %PROGRAMDATA%\UndyingTerminal\ut.cfg
  • Configured firewall rule (auto or manual)
  • Tested local connection (server → terminal → client)
  • Generated encryption key (for external access)
  • Installed as Windows service (optional)
  • Configured port forwarding (if remote access needed)
  • Tested remote connection (if applicable)
  • Set up monitoring/logging (optional)