All apps · 0 apps
GameNight
Docker app from Cdybkr's Repository
Overview
Readme
View on GitHub🎮 GameNight
Self-hosted multiplayer party games for your living room. No internet. No accounts. Just fun.
██████╗ █████╗ ███╗ ███╗███████╗███╗ ██╗██╗ ██████╗ ██╗ ██╗████████╗
██╔════╝ ██╔══██╗████╗ ████║██╔════╝████╗ ██║██║██╔════╝ ██║ ██║╚══██╔══╝
██║ ███╗███████║██╔████╔██║█████╗ ██╔██╗ ██║██║██║ ███╗███████║ ██║
██║ ██║██╔══██║██║╚██╔╝██║██╔══╝ ██║╚██╗██║██║██║ ██║██╔══██║ ██║
╚██████╔╝██║ ██║██║ ╚═╝ ██║███████╗██║ ╚████║██║╚██████╔╝██║ ██║ ██║
╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═══╝╚═╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝
GameNight turns any device on your local network into a party game console.
Run one command → share the URL → play instantly.
🎲 Games
| Game | Players | Vibe | |
|---|---|---|---|
| 🔪 | Mongolpuri | 4–15 | Social deduction — lies, trust, and midnight murder |
| 🃏 | UNO | 2+ | Classic card game with skips, reverses, and wild cards |
| 🧠 | Quiz | 2+ | 15-question trivia from the internet — faster answers score more |
| ⭕ | Tic Tac Toe | 2+ | Classic 1v1 with score tracking and match formats |
| 🎨 | Scribble | 3+ | Draw a word while your friends race to guess it |
✨ Features
- 🌐 Fully local — runs on your LAN, no internet required after setup
- 📱 Works everywhere — phone, tablet, laptop — any browser
- 🏠 Room codes — create a room, share the 6-letter code or invite link, done
- 🔗 Smart invite links — link pre-fills the room code and shows only the game being joined
- 🎭 100 avatars — auto-assigned by name for known players, random for new ones; open a modal to browse and change
- 💾 Remembered preferences — name and avatar are saved and restored on your next visit
- ⚙️ Configurable — host adjusts timers, rounds, match format before game starts
- 📖 Built-in rules — tap "How to Play" to learn any game
- 🔄 Reconnect support — refresh the page and jump back in
- 👻 Spectator mode — eliminated players watch the action
- 🌙 Dark UI — polished animations, countdown timers, role cards
🚀 Quick Start
Prerequisites
Install
git clone <repo-url>
cd gamenight
npm install
Run
| Platform | Command |
|---|---|
| Windows | Double-click start.bat or run it in terminal |
| macOS / Linux | ./start.sh |
| Anywhere | npm start |
Open http://localhost:4000 in your browser.
🌐 Network Play
When the server starts it prints every URL your friends can use:
🎮 GameNight is live!
Local: http://localhost:4000
Network: http://192.168.1.42:4000 ← share this!
Network: http://10.0.0.5:4000
Anyone on the same WiFi or LAN can open the Network URL directly — no setup needed on their end.
The server also advertises itself via mDNS (Bonjour), so on most devices you can use the stable hostname instead:
http://gamenight.local:4000
Tip:
gamenight.localworks on macOS, iOS, Android, and most Linux desktops out of the box. Windows may need Bonjour for Windows. If it doesn't resolve, fall back to the IP shown in the terminal.
⚙️ Game Settings
The room creator can tune settings in the lobby before the game starts. Everyone else sees the current configuration.
| Game | Configurable |
|---|---|
| 🎨 Scribble | Draw time (40–120 s) · Rounds (2–5) · Word choices per turn (2–4) |
| 🔪 Mongolpuri | Discussion time · Voting time |
| ⭕ Tic Tac Toe | Free play · Best of 3 / 5 / 7 |
| 🃏 UNO | No configurable settings — standard rules apply |
| 🧠 Quiz | Questions (10 / 15 / 20 / 25) · Time per question (10 / 15 / 20 / 30 s) |
📖 How to Play
Rules are built into the app — click "How to Play" on any screen. Here's the quick version:
🔪 Mongolpuri
Players are secretly assigned Killer, Doctor, or Villager. Roles are hidden by default — tap your role card to reveal it. Each night, every player confirms they are awake (villagers tap "I'm awake"; killer and doctor choose their target). Once all players have acted, the server waits a random delay then resolves the night. At dawn the village debates during a timed discussion, then votes to eliminate a suspect. Villagers win by voting out the Killer. The Killer wins by reducing the living players to two.
In larger games there may be multiple Doctors — roughly one per five players — to keep the game balanced.
🃏 UNO
Standard UNO rules. Each player starts with 7 cards. On your turn, play a card that matches the top discard by color or value, or draw one from the deck. Special cards: Skip ends the next player's turn, Reverse flips direction, +2 forces the next player to draw two, Wild lets you choose the active color, Wild +4 does the same and forces a four-card draw. First player to empty their hand wins. Your name is displayed in the top-left of the game header.
🧠 Quiz
The server fetches questions from the Open Trivia Database at game start and sorts them easy → medium → hard. While questions are loading, players see a "Fetching questions…" screen; the first question appears automatically once the fetch completes (usually under a second, up to ~6 s if the API rate-limits). Each question shows 4 lettered options (A–D) with a countdown timer. Correct answers score 500–1000 points based on speed — the first player to answer correctly earns a +200 bonus (marked with ⚡). After each question the correct answer is revealed with animations alongside the updated leaderboard. The game-over ranking table shows each player's correct-answer count alongside their total score. Requires internet access when starting the game.
🎨 Scribble
One player draws a secret word on a shared canvas while everyone else types guesses in the chat. Faster correct guesses = more points. The drawer earns bonus points for each correct guesser. Hints appear as time runs low. Roles rotate every turn.
⭕ Tic Tac Toe
Classic 3×3 grid. Get three of your symbol in a row (horizontal, vertical, or diagonal) to win. X always goes first. Symbols swap each game. In match formats, first to reach the win target takes the match. Supports single-elimination tournaments for groups.
🛠️ Tech Stack
| Layer | Tech |
|---|---|
| Runtime | Node.js |
| HTTP server | Express |
| Realtime | Socket.io (WebSockets) |
| Drawing | HTML5 Canvas API |
| Frontend | Vanilla JS, pure CSS |
| Styles | CSS custom properties, no framework |
📁 Structure
gamenight/
├── server.js # All game logic + Socket.io events
├── public/
│ ├── index.html # Single-page app shell
│ ├── style.css # Dark theme, animations
│ └── js/
│ ├── app.js # Socket setup · lobby · views · avatars · settings
│ ├── killerdoctor.js # Mongolpuri client UI
│ ├── tictactoe.js # Tic Tac Toe client UI
│ ├── scribble.js # Scribble canvas + chat
│ ├── uno.js # UNO client UI
│ └── quiz.js # Quiz client UI
├── start.bat # Windows one-click launcher
├── start.sh # macOS / Linux launcher
└── package.json
📝 License
MIT — do whatever you want with it.
No cloud. No tracking. No nonsense. Just game night.
Install GameNight on Unraid in a few clicks.
Find GameNight in Community Apps on your Unraid server, review the template, and click Install. Unraid handles the Docker app or plugin setup from the published template.
Categories
Related apps
Explore more like this
Explore allDetails
ghcr.io/codyburker/gamenight:latestRuntime arguments
- Web UI
http://[IP]:[PORT:4000]/- Network
bridge- Shell
sh- Privileged
- false
Template configuration
Host port for the GameNight web UI. Everyone on the LAN opens this to create or join rooms.
- Target
- 4000
- Default
- 8013
- Value
- 8013
Container timezone.
- Default
- America/Indiana/Indianapolis
- Value
- America/Indiana/Indianapolis