mirror of
https://github.com/Shik3i/KoalaSync.git
synced 2026-07-26 12:08:15 +00:00
1fba2fb69c
- Add monotonically increasing seq per peer (localSeq + lastSeqBySender) - Server relays seq field for stale command detection (backward compatible) - Replace expectedEvents (1500ms timeout) with _suppressTimers (per-type, 300ms) - Fix FORCE_SYNC_ACK missing seq (stale-ACK could trigger premature exec) - Fix episode lobby readyPeers asymmetry (initiator never broadcasted readiness) - Add extractEpisodeId() parsing S01E01/Season 1 Episode 1/Folge 5 patterns - Add isDifferentEpisode() guard blocking sync commands across different episodes - add sameEpisode() for format-tolerant lobby title matching - Guard controlled by autoSyncNextEpisode setting with disable hint in warning - Reduce reactive lock from 1000ms to 300ms (seq numbers handle ordering)
KoalaSync Relay Server
A Node.js relay server for synchronized video playback.
Key Features
- Zero-Persistence: No database. All state is held in RAM.
- Privacy First: No tracking, no persistent logging of user data.
- WebSocket Only: Minimal overhead with efficient transport.
Setup
Environment
Copy .env.example to .env and configure your settings.
PORT=3000
MAX_ROOMS=1000
MAX_PEERS_PER_ROOM=50
MIN_VERSION=1.0.0
Docker (Recommended)
The server is available as a pre-built image on GHCR.
# Pull from GHCR
docker pull ghcr.io/shik3i/koalasync:latest
# Or build from the repository root
docker build -t koala-sync-server -f server/Dockerfile .
See docker-compose.example.yml in the root directory for a ready-to-use configuration.
Manual Setup
cd server
npm install
npm start
Security
- Rate Limiting: IP-based connection limits and socket-based event limits.
- Token Handshake: Requires a valid token defined in the root
shared/constants.js. - Single Source of Truth: The server imports constants directly from the root
shared/directory. - In-Memory: Rooms are automatically pruned after 2 hours of inactivity.