Skip to content

Latest commit

 

History

9 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

⚡ lanroom

Play LAN games with your friends over the internet. A tiny, open, self-hosted alternative to Radmin VPN / Hamachi.

One friend hosts a room, everyone else joins with a password. Every player gets a virtual IP (10.99.0.x) — your games see each other as if you were all on the same local network.

⚡ lanroom
Room open — friends join with:  lanroom join 203.0.113.5:51820 --password ...

╭──────────────────────────────────────────────╮
│ PLAYER                 IP              PING  │
│ turbo-gecko-42 (you)   10.99.0.1             │
│ salty-shark-7          10.99.0.2       23 ms │
│ brave-panda-19         10.99.0.3       61 ms │
╰──────────────────────────────────────────────╯
3 player(s) connected · press q to leave

Features

  • 🔒 Traffic encrypted end-to-end with WireGuard (built in — nothing else to install)
  • 🖥️ Works on Linux, Windows and macOS, single small binary
  • 🏠 No central server, no accounts — one friend hosts, that's it
  • 📡 Live ping to every player, measured through the actual tunnel
  • 🎲 Random player names (turbo-gecko-42) or pick your own with --name
  • 🔨 Host can ban players and limit room size

Quick start

1. The host (one friend creates the room)

Forward one port on your router — default 51820, both TCP and UDP — to your PC. (Search "port forwarding" + your router model; it's one rule.)

# Linux
sudo ./lanroom host --password mysecret

# Windows (open the terminal "as Administrator")
.\lanroom.exe host --password mysecret

# macOS
sudo ./lanroom-mac-arm64 host --password mysecret

First time running a downloaded binary? See Installing for the one-time setup on your OS (execute permission, wintun.dll, Gatekeeper).

The screen shows the exact command your friends need, including your public IP.

2. Everyone else joins

sudo ./lanroom join 203.0.113.5:51820 --password mysecret

That's it. Everyone appears in the table with their IP and ping.

3. Play

In your game, connect to the 10.99.0.x IP of whoever is hosting the game — exactly like a LAN party. Press q to leave the room.

Installing

Grab a binary from the releases page, or build from source (needs Go 1.24+):

Linux: after downloading, make it executable and run it with ./:

cd ~/Downloads
chmod +x lanroom
sudo ./lanroom host --password mysecret

Building from source instead:

go build -o lanroom .                   # Linux
GOOS=windows go build -o lanroom.exe .  # Windows (cross-compiles from Linux too)

Windows only: download wintun.dll (amd64) from https://www.wintun.net and put it in the same folder as lanroom.exe. It's the official WireGuard driver.

macOS: download lanroom-mac-arm64 (Apple Silicon) or lanroom-mac-intel, then:

cd ~/Downloads
chmod +x lanroom-mac-arm64
xattr -d com.apple.quarantine lanroom-mac-arm64   # clear Gatekeeper block on downloaded files
sudo ./lanroom-mac-arm64 join <host-ip>:51820 --password mysecret

How it works

                      ┌──────────┐
   friend A ──────────►          ◄────────── friend B
   10.99.0.2          │   HOST   │           10.99.0.3
                      │ 10.99.0.1│
                      └──────────┘
        WireGuard tunnels, hub-and-spoke through the host
  • The host runs a WireGuard hub; every joiner connects a tunnel to it.
  • Joining is password-protected (challenge–response — the password never travels in plaintext).
  • Player-to-player traffic routes through the host, so the host's connection quality affects everyone. Pick the friend with the best internet.

Troubleshooting

Problem Fix
cannot reach host Host: check the port-forward rule covers both TCP and UDP, and any OS firewall allows the port.
must run as root / adapter error Use sudo (Linux) or run the terminal as Administrator (Windows).
Windows: create TUN adapter error wintun.dll missing — put it next to lanroom.exe.
Players visible but game doesn't see them Allow the game through the OS firewall, and make sure you're connecting to the 10.99.0.x IP shown in the table.
High ping between two joiners Traffic goes through the host — the host should be the player with the best connection.

Hosting a room

Extra options when creating a room:

  • --max-players <n> — room size limit, including you (default 254). Example: lanroom host --password mysecret --max-players 4 for a 4-player room. Anyone joining a full room gets a clear room full error.
  • Banning a player: use / to select them in the table and press b. They are kicked immediately (they see "you were banned by the host") and their IP address is refused if they try to rejoin. Bans last until you close the room.

Options

lanroom host --password <pw> [--port 51820] [--name <user>] [--max-players <n>]
lanroom join <host-ip[:port]> --password <pw> [--name <user>]

Security

  • All game traffic is encrypted end-to-end by WireGuard.
  • Joining requires the password on both sides (mutual challenge–response); it is never sent in plaintext, and a man-in-the-middle can't substitute the host's key.
  • Use a strong password. Someone who records a join handshake can try to guess the password offline — hunter2 won't hold, a passphrase will.
  • A room is a real LAN: everyone in it can reach your machine like a local device. Only invite people you trust, and keep your OS firewall on.

lan-room

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages