Skip to main content
IronRDP includes ironrdp-server for building custom RDP servers. This guide demonstrates how to create a basic server that accepts connections, handles authentication, and sends display updates.

Server Overview

The ironrdp-server crate provides a high-level async API built on Tokio. A minimal server requires:
  1. Input handler - Process keyboard and mouse events from clients
  2. Display handler - Provide desktop size and frame updates
  3. Security configuration - TLS, NLA, or no security
  4. Optional channel handlers - Clipboard, audio, etc.

Basic Server Example

Here’s a complete working server (based on examples/server.rs):

Security Modes

No Security (Testing Only)

Warning: Only use for local testing. Never expose to networks.

TLS Only

Hybrid (TLS + NLA/CredSSP)

Most secure, recommended for production:

Virtual Channel Support

Adding Clipboard Support

Adding Audio Output (RDPSND)

Advanced Display Updates

Efficient Frame Generation

For real-world servers, generate updates based on actual screen content:

Credentials and Authentication

Set allowed credentials before running:
For multiple users, implement custom authentication logic in the server’s connection handler.

Running in Production

Generate TLS Certificate

Environment Configuration

Logging

Run with logging:

Next Steps