Cette page existe aussi en français. Voir en français →

Self-hosted · Free · EN/FR

LAN PARTY
MANAGER

A self-hosted app that runs the whole LAN weekend — invites, brackets, shared costs, photos — from a Raspberry Pi in the corner of the room. Your server, your data, your crew.

00Spec sheet
What it is
A free, self-hosted web app that organizes a LAN party from the first RSVP to the post-event recap.
Price
Free. No subscription, no paid tier, no account to create with anyone.
Hosting
Your own machine, with Docker Compose or a Portainer stack.
Hardware
Any amd64 or arm64 box — a Raspberry Pi 4 or 5 is enough.
Data
A SQLite file and an uploads folder, on your server. No telemetry; one-click backup and restore.
Clients
Any browser on the network — plus an optional desktop app for Windows 10/11.
Languages
English and French, chosen by each player.
Integrations
Discord, Twitch, Steam, email (SMTP), League of Legends stats — all optional, all off by default.
Current version
1.3.5 — Docker images for amd64/arm64, Windows installer (.msi).
Made by
CrossWax, with a crew of LAN regulars — built for our own weekends first.
01Features

Everything a weekend needs. Nothing it doesn't.

Every module can be switched off from the admin settings, so the app stays exactly as big as your LAN.

Twenty-nine features ship in total — packing checklists, a hype chat, mini-games, sponsors and prizes among them. The README lists them all.

02Tournaments

The bracket lives where the scores are.

Build a single-elimination bracket or a round-robin in a minute, team or solo. Report a score from any phone; the next round and the standings follow on their own.

  • Any game — CS, Rocket League, Smash, chess if you must
  • Champions land in the Hall of Fame and the recap
  • The projector celebrates the winner, confetti included
03Treasury

Whoever stayed three nights pays three nights.

Log the rent, the food runs, the pizza order. LPM splits the total by person-nights, straight from everyone's RSVP dates — no spreadsheet, no "we'll sort it out later".

  • The split updates live when someone's dates change
  • Every expense has a payer and a label, and every change is logged
  • Dates lock when the LAN starts — the treasurer adjusts the rest
04Big screen

The projector runs the room.

One URL on the projector, authorized by a revocable token — no personal login on a shared screen. It rotates through live matches, standings, arrivals and the photo wall, and interrupts itself for what matters: a champion, a trophy, a fresh photo.

  • Post a photo from your phone, see it land on the wall
  • Trophy ceremonies play on the big screen, one reveal at a time
  • Guest WiFi and join links as scannable QR codes
05Setup in 3 steps

From zero to first RSVP in ten minutes.

01

Create docker-compose.yml

Copy the file below — it pulls both images from Docker Hub.

02

Secret key, optional

Skip it and LPM generates one on first start — or put your own random 32+ character string in a .env file next to it.

03

Launch

Run docker compose up -d. The first account created becomes admin; everyone else joins with an invite code.

services:
  backend:
    image: crosswax/lanpartymanager-backend:latest
    # No ports: — the frontend's Nginx reaches it over the Docker network.
    volumes:
      - ./data:/app/data        # SQLite database (persisted)
      - ./uploads:/app/uploads  # Avatars, media, video thumbnails (persisted)
    environment:
      SECRET_KEY: ${SECRET_KEY:-}   # optional, from .env (step 2)
      DATABASE_URL: sqlite:///./data/lanparty.db
      UPLOAD_DIR: /app/uploads
    restart: unless-stopped

  frontend:
    image: crosswax/lanpartymanager-frontend:latest
    ports:
      - "3001:80"
    environment:
      # Where your reverse proxy (Nginx Proxy Manager, Caddy…) connects from.
      # The default covers a proxy running in Docker on the same host.
      LPM_TRUSTED_PROXIES: "172.16.0.0/12"
    volumes:
      - ./uploads:/app/uploads  # Nginx serves uploads directly
    depends_on:
      - backend
    restart: unless-stopped

Then docker compose up -d — the app answers on port 3001.

06Desktop app

In the tray, not in a tab.

An optional Windows client that wraps your instance: native notifications when a match is called or an announcement drops, and automatic League of Legends stats captured during the LAN. Same app, same server, zero extra setup for the crew.

  • Point it at your server's URL once — done
  • Native toasts for matches, announcements and trophies
  • Updates itself between editions
Download for Windows Windows 10/11 · x64 · v1.3.4 · .msi
07FAQ

Fair questions.

What is LAN Party Manager?

LAN Party Manager (LPM) is a free, self-hosted web app for organizing LAN parties. It gathers everything a crew needs in one place — invites and RSVPs, tournament brackets, pro-rata cost splitting, Twitch streams, a shared photo vault and a big-screen kiosk — and runs on your own machine or a Raspberry Pi with Docker. It's available in English and French, with an optional Windows desktop app.

Is it really free?

Yes. No subscription, no paid tier, no account to create with anyone. You run it on your own machine — the only bill is your electricity.

What do I need to run it?

Any machine with Docker: a laptop, a spare PC or a Raspberry Pi 4/5. Images are published for amd64 and arm64, and SQLite means there is no database server to set up.

Where does our data live?

On your box: a SQLite file and an uploads folder. Nothing is sent anywhere — there is no telemetry. Download a full backup (database + uploads) from the Settings page whenever you like, and restore it in one click.

Does the crew need to install anything?

No — it's a web app, so any phone or laptop browser will do. Windows players can also grab the optional desktop app for native notifications and League of Legends stats.

Does it need an internet connection?

The app itself runs on your own network. The optional integrations — Discord, Twitch, email, Steam — reach their services over the internet when you turn them on.

Who can join my instance?

Only people you invite. The first account becomes admin; every sign-up after that needs a per-event invite code, which you can share as a QR code and revoke at any time.

Can I switch features off?

Yes. Most modules — chat, planning, gear, prizes, sponsors, mini-games, kiosk, recap and more — are switched on or off from the admin settings, so the app stays as simple as your LAN.

How is it different from a spreadsheet or a Discord server?

A spreadsheet and a Discord server each cover one piece of a LAN; LPM connects them. RSVP dates feed the pro-rata split, tournament results feed the Hall of Fame and the recap, and the kiosk shows it all on the big screen — nothing is copied by hand. Discord stays useful: LPM can post your announcements there and lets players sign in with it.

Which games does it work with?

Any game. Tournaments, planning and the game library don't depend on a particular title — run a bracket for CS, Rocket League, Smash Bros or anything else. League of Legends also gets automatic stats through the desktop app, and the built-in arcade ships with Neon Survivor.

Why SQLite?

Please ask the same question to the Home Assistant, Uptime Kuma or Jellyfin folks. LPM was designed around our crew of ten friends, not a 250-seat giant-whale LAN. At that scale SQLite is the serious choice: nothing to administer, and a backup is a file copy.

Smells vibecoded?

We've been throwing LAN parties since 2015, and LPM's origins go back to 2019, when I was learning Ruby on Rails and our weekends were turning into Spreadsheet Simulator. So yes — Claude Code sped things up immensely since I got my account in July, and brought that vision to life in no time for an MVP at our October LAN. Hint: this landing page is vibecoded too. I use VS Code every day for work and I don't give a damn about visiting its website. Sorry, but I couldn't afford 200 hours aligning divs and tuning paddings — I'd rather put them into LPM's ~90 commits, QA and features. 😉

What license is LAN Party Manager under?

AGPL-3.0. The full source is on GitHub since 1.3.3 — versions up to 1.3.2 stayed in private testing while I cleaned up the ancient backend spaghetti. Run it, fork it, improve it: if you serve a modified version to your crew, share the changes. That's the deal.

Does the backend run as root?

Not anymore. It did at first — easier for dev and testing. Since 1.3.3, the backend runs as an unprivileged lpm user: the container starts as root just long enough to hand data/ and uploads/ over, then drops privileges for good. Existing installs switch over on their own at first start, no command to run.

A 250 MB backend image? What's in there?

Mostly ffmpeg. The Python app itself is a few megabytes; the rest is the Python 3.11 base image, Pillow's imaging libraries and a full ffmpeg build — the thing that turns your crew's clips into gallery thumbnails on your own box, no external service involved. Your weekend's pizza photos will outweigh it by Saturday night anyway.

// Your server is already good enough

Host the next one.

Two Docker images, one compose file, ten minutes. The first RSVP can land tonight.

The reveal clip, obviously.