Metadata-Version: 2.4
Name: windows-remote-desktop-dashboard
Version: 0.1.9
Summary: Python web dashboard for reserving and launching Windows Remote Desktop machines.
Author: Remote Desktop Dashboard Contributors
Project-URL: Homepage, https://pypi.org/project/windows-remote-desktop-dashboard/
Classifier: Development Status :: 3 - Alpha
Classifier: Environment :: Web Environment
Classifier: Framework :: FastAPI
Classifier: Intended Audience :: System Administrators
Classifier: Operating System :: Microsoft :: Windows
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: System :: Systems Administration
Requires-Python: >=3.10
Description-Content-Type: text/markdown
Requires-Dist: fastapi
Requires-Dist: uvicorn[standard]
Requires-Dist: jinja2
Requires-Dist: python-multipart

# Windows Remote Desktop Dashboard

Python-based browser dashboard for reserving shared RDP machines.

## Install From Source

```powershell
python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install .
$env:ADMIN_PIN = "change-me"
$env:RDP_DOMAIN = "FU"
windows-remote-desktop-dashboard
```

Open http://127.0.0.1:8000.

## Development

```powershell
pip install -r requirements.txt
uvicorn app.main:app --reload --host 127.0.0.1 --port 8000
```

## Features

- Screenshot-style dark dashboard with machine list, details panel, admin modal, and audit log.
- SQLite persistence under `%LOCALAPPDATA%\WindowsRemoteDesktopDashboard\data` by default on Windows.
- One active reservation per machine.
- Auto-release of expired reservations on refresh.
- Direct local `mstsc.exe` launch plus downloadable `.rdp` fallback.
- Open RDP automatically reserves the machine for the current dashboard user.
- Optional Windows Firewall enforcement can restrict direct RDP to the reserver's client IP.
- Automatic remote session refresh with `quser /server:<host>` when Windows permissions allow it.
- Admin PIN gate for adding machines.
- Admin unlock once per browser session, with single and bulk delete/release/session refresh controls.

The default admin PIN is `admin` if `ADMIN_PIN` is not set.

Set `RDD_DATA_DIR` to choose where the SQLite database is stored. Set `RDD_HOST=0.0.0.0` if one shared dashboard machine should serve multiple laptops on the network. Browser launch is controlled separately by `RDD_BROWSER_HOST` and defaults to `127.0.0.1`, so the app opens `http://127.0.0.1:8000` even when it is bound to `0.0.0.0`. The RDP Login button launches `C:\Windows\System32\mstsc.exe` on the Windows computer running this app.

Remote session checks run after the dashboard loads so slow or unreachable machines do not block the page. Set `RDD_AUTO_REFRESH_SESSIONS=0` to disable background session checks.

Dashboard reservations prevent other dashboard users from opening the same machine. To also block direct native RDP outside this app, enable Windows Firewall enforcement from Admin with the `RDP lock OFF/ON` button. You can also default it on before startup:

```powershell
$env:RDD_HOST = "0.0.0.0"
$env:RDD_ENFORCE_WINDOWS_FIREWALL = "1"
windows-remote-desktop-dashboard
```

Requirements for firewall enforcement:

- Run the dashboard on Windows with admin rights that can manage the target PCs.
- Enable PowerShell remoting/WinRM to the target machine hostnames.
- Users must open the dashboard using the server LAN hostname/IP, not `localhost`, so the app can see their real client IP.

When a machine is reserved, the target PC's Remote Desktop inbound firewall rules are restricted to that reserver IP. Revoke/release/delete restores the Remote Desktop firewall rules to `Any`.
