# Overlord
# [TELEGRAM SERVER JOIN NOW NO EXCUSES WE GIVE SUPPORT AND IT'S FUN](https://t.me/Onimai)
Hello, I made this project for fun.
The server is TypeScript on Node/Bun. The client is Go. Operators talk to the server through a web panel or the Electron desktop app, and agents connect over encrypted WebSockets.
On Linux, Docker is the easiest way to run it. On Windows, a native
bare-metal installation is strongly recommended instead of Docker Desktop.
> [!IMPORTANT]
> Use Overlord only on systems you own or are explicitly authorized to
> administer. Review the [Acceptable Use Policy](ACCEPTABLE_USE.md) before
> deployment. Report vulnerabilities privately according to the
> [Security Policy](SECURITY.md).
---
- [Platform Recommendation](#platform-recommendation)
- [Docker Quick Start (Recommended on Linux)](#docker-quick-start-recommended-on-linux)
- [Windows (not recommended)](#windows-not-recommended)
- [Linux](#linux)
- [macOS](#macos)
- [Native Bare-Metal Installation](#native-bare-metal-installation)
- [Rust Lite Agent](#rust-lite-agent)
- [Production Package Scripts](#production-package-scripts)
- [WebRTC Streaming](#webrtc-streaming)
- [OIDC / SSO Login](#oidc--sso-login)
- [Login Branding](#login-branding)
- [Docker Notes (TLS, reverse proxy, cache)](#docker-notes-tls-reverse-proxy-cache)
---
## Platform Recommendation
> [!WARNING]
> **Do not use Docker Desktop for a normal Windows deployment.** Linux
> containers on Windows run through a WSL2/Hyper-V virtual machine. This is
> substantially slower than running Overlord directly on Windows or on a
> Linux host, and the extra virtualization/networking layer provides fewer
> host-integration features.
For the best experience, choose one of these:
1. **Linux host:** run the provided Docker Compose deployment (recommended),
or use the native Linux scripts.
2. **Windows host:** run Overlord directly on Windows using the
[native/bare-metal scripts](#native-bare-metal-installation).
The Windows Docker Compose file remains available for compatibility and
testing, but it is not the recommended Windows installation method.
---
## Docker Quick Start (Recommended on Linux)
Docker is recommended on a Linux host. The macOS and Windows instructions are
provided for compatibility and local testing; Windows users should prefer a
native installation or move the server to Linux.
> Windows and macOS use `docker-compose.windows.yml`. Linux uses the default `docker-compose.yml` (host networking).
After the first start, open `https://localhost:5173`. Default login is `admin` / `admin` unless you set `OVERLORD_USER` / `OVERLORD_PASS`. First startup writes generated secrets to `data/save.json` (inside the container: `/app/data/save.json`) — keep that file private and back it up.
---
### Windows (not recommended)
> [!CAUTION]
> Docker Desktop on Windows is virtualized, noticeably slower, and exposes
> fewer Overlord features than a native Windows or Linux installation. Prefer
> [Windows bare metal](#windows-recommended), or deploy the server on Linux
> using the [Linux Docker instructions](#linux).
Compatibility/testing only: Windows Docker Desktop
**1. Install Docker Desktop**
Either from the website:
- https://docs.docker.com/desktop/setup/install/windows-install/
Or with winget:
```powershell
winget install -e --id Docker.DockerDesktop
```
Start Docker Desktop once, then verify:
```powershell
docker --version
docker compose version
```
**2. Get the project**
```powershell
git clone https://github.com/vxaboveground/Overlord.git
cd Overlord
```
**3. Start it**
```powershell
docker compose -f docker-compose.windows.yml up -d
```
**4. Open the panel**
```text
https://localhost:5173
```
**5. Update later**
```powershell
docker compose -f docker-compose.windows.yml down
docker compose -f docker-compose.windows.yml pull
docker compose -f docker-compose.windows.yml up -d
```
**6. Stop**
```powershell
docker compose -f docker-compose.windows.yml down
```
---
### Linux
Step-by-step: Linux (Debian / Ubuntu / Kali)
**1. Install Docker**
Official docs: https://docs.docker.com/engine/install/debian/
Set up Docker's apt repository:
```bash
# Add Docker's official GPG key:
sudo apt update
sudo apt install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# Add the repository to Apt sources:
sudo tee /etc/apt/sources.list.d/docker.sources <
---
### macOS
Step-by-step: macOS
**1. Install Docker Desktop**
Either from the website:
- https://docs.docker.com/desktop/setup/install/mac-install/
Or with Homebrew:
```bash
brew install --cask docker
```
Start Docker Desktop once, then verify:
```bash
docker --version
docker compose version
```
**2. Get the project**
```bash
git clone https://github.com/vxaboveground/Overlord.git
cd Overlord
```
**3. Start it**
macOS uses the same compose file as Windows:
```bash
docker compose -f docker-compose.windows.yml up -d
```
**4. Open the panel**
```text
https://localhost:5173
```
**5. Update later**
```bash
docker compose -f docker-compose.windows.yml down
docker compose -f docker-compose.windows.yml pull
docker compose -f docker-compose.windows.yml up -d
```
**6. Stop**
```bash
docker compose -f docker-compose.windows.yml down
```
---
## Native Bare-Metal Installation
Use the included scripts to run without Docker. This is the recommended
installation method on Windows.
Prerequisites:
- Bun in PATH
- Go 1.21+ in PATH
### Windows (recommended)
> [!TIP]
> This native Windows path avoids Docker Desktop's Linux VM and provides the
> best Windows performance and feature availability.
Development mode (starts server + client):
```bat
scripts\start-dev.bat
```
Production mode (build + run server executable):
```bat
scripts\start-prod.bat
```
Build client binaries (adds client builds to the build queue):
```bat
scripts\build-clients.bat
```
### Linux / macOS
Make scripts executable once:
```bash
chmod +x scripts/*.sh scripts/*.command
```
Development mode (server in background, client in foreground):
```bash
./scripts/start-dev.sh
```
Only server, or only client:
```bash
./scripts/start-dev.sh server
./scripts/start-dev.sh client
```
Production mode:
```bash
./scripts/start-prod.sh
```
---
## Rust Lite Agent
`Overlord-Lite` is an experimental Rust client focused on authenticated
connections, TLS identity pinning, and heartbeat/reconnect behavior. It
supports interactive TTY console sessions while omitting plugins plus the full
Go agent's desktop, webcam, audio, persistence, and OS-integration features.
See [Overlord-Lite/README.md](Overlord-Lite/README.md) for build instructions,
configuration, and Build-page integration.
## Production Package Scripts
Build a production-ready package where the server can still build client binaries at runtime.
Windows:
```bat
scripts\build-prod-package.bat
```
Output: `release/`
Linux / macOS:
```bash
./scripts/build-prod-package.sh
```
Output: `release/prod-package/`
---
## WebRTC Streaming
The remote desktop viewer has a **Transport** dropdown with three modes:
- **Canvas** (default): H.264 / JPEG / block frames over the existing WebSocket, decoded into a `