mirror of
https://github.com/J3vb/OwnCord.git
synced 2026-09-03 03:50:00 +03:00
Critical/High Rust (Tauri client): - BUG-140: replace .run() with .build() + RunEvent::Exit handler; native error dialog on startup failure - BUG-141: eliminate PTT thread TOCTOU race with Mutex critical section; add AtomicBool shutdown and catch_unwind - BUG-144: fix TOFU cert store corruption — read-before-write rollback restores previous fingerprint on save failure (all 3 write sites) - BUG-145: add VK code range guard (1..=254) in is_key_down; fix cast to (state as i16) < 0 - BUG-147: replace bare spawns with JoinSet; abort_all + drain on exit; unconditional closed event - BUG-150: add CRLF guard in handle_connection before header rewriting - BUG-151: wrap header read loop in tokio::time::timeout(10s) - BUG-158: extract CERTS_STORE/SETTINGS_STORE to constants.rs (eliminate 3 duplicates) - HIGH-2: PTT thread self-cleanup uses unwrap_or_else defensive pattern - HIGH-4: ws_send distinguishes Full vs Closed errors; warn log on backpressure Critical/High TypeScript (Tauri client): - BUG-142: join-generation counter prevents stale connectAndSetup completions - BUG-143: replace 8 mutable LiveKit session fields with discriminated union SessionState - BUG-146: 60s token refresh deadline; cleared on reply or voice leave - BUG-148: ResizeObserver hoisted to outer scope; disconnect() in destroy() before ac.abort() - BUG-152: dismissSignal.aborted guard already present (no change needed) - BUG-153: measureRendered split into two-pass read-then-write; eliminates per-message reflow - BUG-154: WS dedup cache batch-evicts to 80% on overflow (amortised O(1)) - BUG-157: pendingUpdates replaced with coalesced function-composition slot (O(1) queue depth) Go server: - BUG-149: safe two-value type assertion in getOutboundIP with localhost fallback - BUG-155: broadcast buffer 256→1024; broadcastDrops atomic counter exposed in /api/v1/metrics - BUG-156: LiveKitHealthCheck and implementations accept ctx context.Context; all call sites pass r.Context() (12 files) - BUG-159: MaxMessageBytes constant in config/constants.go; replaces 1<<20 literals in serve.go and updater.go - HIGH-1: cert store rollback reads old value before write; restores previous cert on save failure All validation passes: go build, go vet, cargo check, npm typecheck
49 lines
1.4 KiB
Markdown
49 lines
1.4 KiB
Markdown
# Port Forwarding Guide
|
|
|
|
How to make your OwnCord server reachable from outside your LAN.
|
|
|
|
## Before You Start
|
|
|
|
If you want a simpler remote-access path, use [Tailscale](tailscale.md) and skip manual forwarding.
|
|
|
|
## Required Ports
|
|
|
|
### Always required
|
|
|
|
| Port | Protocol | Purpose |
|
|
| ---- | -------- | ------- |
|
|
| `8443` | TCP | OwnCord HTTPS + WebSocket |
|
|
|
|
### Required only for voice/video
|
|
|
|
| Port | Protocol | Purpose |
|
|
| ---- | -------- | ------- |
|
|
| `7880` | TCP | LiveKit signaling |
|
|
| `7881` | TCP | LiveKit TCP fallback |
|
|
| `50000-60000` | UDP | LiveKit media |
|
|
|
|
## Router Steps
|
|
|
|
1. Open your router admin page (often `192.168.1.1` or `192.168.0.1`).
|
|
2. Find the port forwarding section (sometimes called NAT, virtual server, or firewall rules).
|
|
3. Set static/reserved LAN IP for your server machine.
|
|
4. Add forwarding rule for `8443/TCP` to that LAN IP.
|
|
5. If using voice/video, add `7880/TCP`, `7881/TCP`, and `50000-60000/UDP`.
|
|
6. Save and apply rules.
|
|
|
|
## Connect Address to Share
|
|
|
|
Share `https://<your-public-ip>:8443` (or your DNS name) with users.
|
|
|
|
## Troubleshooting Checklist
|
|
|
|
- Confirm the server is listening on `8443`.
|
|
- Confirm router rules point to the correct LAN IP.
|
|
- Confirm OS firewall allows forwarded ports.
|
|
- Confirm ISP is not blocking inbound ports.
|
|
- Test from a different network (mobile hotspot), not from the same LAN.
|
|
|
|
## Dynamic Public IP
|
|
|
|
If your public IP changes, use dynamic DNS so users connect with a stable hostname.
|