149 lines
4.3 KiB
Markdown
149 lines
4.3 KiB
Markdown
# LAN Share
|
|
|
|
A peer-to-peer screen sharing application for local networks. No accounts, no cloud services — just open a browser and share.
|
|
|
|
## Features
|
|
|
|
- **WebRTC P2P**: Direct peer-to-peer connections, video never touches the server
|
|
- **Audio support**: Optionally share system audio with your screen
|
|
- **Multiple streams**: View multiple shared screens, select which one to focus on
|
|
- **Zero config**: Just run the server and open the URL in any browser
|
|
- **Keyboard shortcuts**: `F` for fullscreen, `M` for mute, `Escape` to expand sidebar
|
|
|
|
## Building
|
|
|
|
```bash
|
|
cargo build --release
|
|
```
|
|
|
|
The binary will be at `target/release/lanshare`.
|
|
|
|
## Running
|
|
|
|
```bash
|
|
./target/release/lanshare
|
|
```
|
|
|
|
Or with cargo:
|
|
|
|
```bash
|
|
cargo run --release
|
|
```
|
|
|
|
The server starts on `http://0.0.0.0:8080` by default.
|
|
|
|
### CLI Options
|
|
|
|
```
|
|
Usage: lanshare [OPTIONS]
|
|
|
|
Options:
|
|
-H, --host <IP> IP address to bind to [default: 0.0.0.0]
|
|
-p, --port <PORT> Port to listen on [default: 8080]
|
|
-v, --verbose Enable verbose/debug logging
|
|
-q, --quiet Quiet mode - only show errors
|
|
-h, --help Print help
|
|
-V, --version Print version
|
|
```
|
|
|
|
Examples:
|
|
|
|
```bash
|
|
# Listen on a specific interface
|
|
lanshare --host 192.168.1.100 --port 3000
|
|
|
|
# Localhost only (for testing)
|
|
lanshare -H 127.0.0.1
|
|
|
|
# Quiet mode
|
|
lanshare -q
|
|
```
|
|
|
|
### CLI Options
|
|
|
|
```
|
|
LAN Share - Peer-to-peer screen sharing for local networks
|
|
|
|
Usage: lanshare [OPTIONS]
|
|
|
|
Options:
|
|
-H, --host <HOST> Host address to bind to [default: 0.0.0.0]
|
|
-p, --port <PORT> Port to listen on [default: 8080]
|
|
-v, --verbose Enable verbose logging
|
|
-h, --help Print help
|
|
-V, --version Print version
|
|
```
|
|
|
|
### Examples
|
|
|
|
```bash
|
|
# Run on default settings (0.0.0.0:8080)
|
|
lanshare
|
|
|
|
# Run on a specific port
|
|
lanshare -p 3000
|
|
|
|
# Bind to localhost only
|
|
lanshare -H 127.0.0.1 -p 8080
|
|
|
|
# Run with verbose logging
|
|
lanshare -v
|
|
```
|
|
|
|
## Usage
|
|
|
|
1. Start the server on any machine in your LAN
|
|
2. Open `http://<server-ip>:8080` in a browser on each device
|
|
3. Enter your name when prompted
|
|
4. Click "Start Sharing" to share your screen
|
|
5. Select shared screens from the sidebar to view them
|
|
|
|
## Architecture
|
|
|
|
```
|
|
┌─────────────────────────────────────────────────────────────┐
|
|
│ Signaling Server │
|
|
│ (Rust/Axum/WebSocket) │
|
|
│ - Peer discovery │
|
|
│ - Relays SDP offers/answers │
|
|
│ - Relays ICE candidates │
|
|
└─────────────────────────────────────────────────────────────┘
|
|
│ │
|
|
│ WebSocket │ WebSocket
|
|
│ (signaling only) │ (signaling only)
|
|
▼ ▼
|
|
┌─────────────┐ ┌─────────────┐
|
|
│ Peer A │◄────────────────────►│ Peer B │
|
|
│ (Browser) │ WebRTC P2P │ (Browser) │
|
|
└─────────────┘ (video/audio) └─────────────┘
|
|
```
|
|
|
|
The server only handles signaling — the actual video/audio streams flow directly between browsers via WebRTC.
|
|
|
|
## Browser Support
|
|
|
|
Tested on:
|
|
- Chrome/Chromium
|
|
- Firefox
|
|
- Edge
|
|
- Safari (macOS)
|
|
|
|
Note: Screen sharing with audio requires Chrome/Edge on Windows/macOS. Firefox and Linux may have limited audio capture support depending on the system.
|
|
|
|
## Configuration
|
|
|
|
Command-line options take precedence over defaults. See `lanshare --help` for all options.
|
|
|
|
Environment variables:
|
|
- `RUST_LOG`: Override log level (e.g., `RUST_LOG=lanshare=debug`)
|
|
|
|
## Security Notes
|
|
|
|
- This is designed for **trusted local networks only**
|
|
- No authentication — anyone with the URL can join
|
|
- No encryption beyond what WebRTC provides by default (DTLS-SRTP)
|
|
- Don't expose to the internet without additional security measures
|
|
|
|
## License
|
|
|
|
MIT
|