RoomDeck is a self-hosted party room service where guests join by QR code to share photos, vote, cast screens, and play games, with host-controlled display and auto cleanup.
- nas-deploy-20260913
- Published at
- Sep 13, 2026
- 3
- Stars
- 9
- Download
- Synced at
- 1d ago
Latest release
nas-deploy-20260913Sep 13, 2026, 09:44 AMDownloads slow? Switch the source anytime above
README
Project Overview
Getting everyone's photos and votes onto one big screen at an in-person party usually means herding a group chat. RoomDeck takes another route: it gives the physical room a self-hosted digital room. Participants scan a QR code or type a six-character room code to join without accounts, share photos, files, notes, and links, while the host picks what goes on screen and drives the TV or projector from a phone or laptop, exporting a ZIP and auto-cleaning when the event ends.
One NAS or server gives every gathering a shareable digital room.
| Item | Value |
|---|---|
| Form | Self-hosted web service (Docker deployment) |
| Stack | Go + WebSocket + LiveKit |
| Image | ghcr.io/panda-995/roomdeck:latest (amd64/arm64) |
| Defaults | 2 GB and 50 guests per room, 100 rooms and 2,000 items max |
| License | AGPL-3.0 |
Key Features
- Account-free joining: six-character room codes with QR codes, rotating invites, nickname sessions, and host powers to remove or mute uploads
- Content sharing: photo uploads (JPEG/PNG/WebP with orientation fix and metadata strip), file attachments, notes, and links
- Voting: anonymous single/multi-choice polls with hidden results and vote changes
- Display control: a separate read-only big-screen page with carousel, pause, blackout, and pinned content or polls
- Turn-based screen share: members take turns casting via LiveKit for many viewers at once, hosts can stop anytime
- Party games: built-in Undercover and dice guessing with private info, round scoring, points, and reconnect recovery
- Shared whiteboard: a collaborative canvas plus timed draw-and-guess, with role-based co-host permissions
- Data handling: ZIP export with checksum list, expiry deletion, restart cleanup, and single-instance data lock
Deployment & Setup
- Download the repo's compose.yaml on your NAS or server, then run docker compose pull and docker compose up -d
- Open http://serverIP:8080 and finish first-run setup with the First-run setup token from the logs, admin password is set in the web UI
- For fresh NAS installs use compose.nas.yaml, filling in just the LAN IP with no .env needed
- For screen sharing configure HTTPS and media ports, either with the bundled auto-HTTPS config or your existing reverse proxy
Usage Flow
- The host creates a room and throws the QR code onto the big screen or into the group chat
- Guests scan to join, uploading photos, posting notes, and voting
- The host curates content on the control page, the TV or projector shows the read-only display
- Export a ZIP when the event ends, expired data deletes itself
Target Audience
- Organizers of class reunions, annual parties, and weddings
- NAS enthusiasts looking for big-screen interaction
- Clubs needing a temporary shared space
Notes
- Photo formats: previews cover JPEG/PNG/WebP only, HEIC and video share as plain files with no transcoding
- Anonymity limits: anonymous votes dedupe by browser session without identity checks
- Screen share prerequisites: multi-user casting needs correct media IP, ports, and HTTPS, plain HTTP LANs may not let browsers capture the screen
- Capacity caps: 100 rooms and 2,000 items per room at most, with 2 GB and 50 guests per room by default, adjustable in settings
- Sample assets: bundled demo photos come from Unsplash, replace them with your own before real events
Release history
Sort