hextris
Self-hosted block-stacking puzzle game in the browser
Hextris is an open-source, addictive puzzle game inspired by Tetris, played in a web browser. It is a static web game that can be self-hosted on any web server for offline or LAN play.
Key features
- Browser puzzle game
- Static site hosting
- No backend needed
- Mobile friendly
Pros & cons
Strengths
- Trivial to host
- Fun and polished
Trade-offs
- Single-player only
- Simple game
hextris replaces
Last reviewed Sep 13, 2026 · 851 words
Hosting Hextris is git clone plus one line of web-server config, and the whole thing weighs less than a single photo from your phone. There is no backend, no database, no build step and nothing to update, which makes it the cleanest possible test of a new reverse proxy or the fastest way to put a game on a family dashboard. It has been on GitHub since 2014, sits at 2,435 stars under GPL-3.0, and plays as well on a phone as on a desktop.
What Hextris actually is
It is a falling-block puzzle on a hexagon. Blocks slide in from six directions toward a rotating central hex; you spin the hex with the arrow keys or by tapping the sides of the screen, and matching three or more blocks of a colour along an edge clears them. Games last 2 to 5 minutes, the difficulty curve is steep, and the high score lives in the browser's local storage, so it survives page reloads but not a cleared cache. Single-player only, no accounts, no leaderboard. The catalogue's "simple game" note is fair: this is a polished time-waster, not a platform.
That simplicity is the reason it shows up in self-hosting lists. The public copy at hextris.io works fine. The self-hosted copy works when your internet is down, on a plane, on a LAN with no outbound access, or on a kiosk that must not phone home. It also makes a good first tenant for a fresh web server, because when it loads you know your TLS, DNS and routing are all correct, and when it does not there is no application layer to blame.
Serving it takes one line
Clone the repository and point any static server at the directory. With Caddy, that is the entire site block:
hextris.home.example.com {
root * /srv/hextris
file_server
}
Caddy fetches a certificate on its own if the name resolves publicly, or you use its internal CA for a LAN-only name. If you would rather keep everything in containers, the nginx image does the same job:
services:
hextris:
image: nginx:alpine
volumes:
- ./hextris:/usr/share/nginx/html:ro
ports:
- "8085:80"
restart: unless-stopped
That container idles at about 5 MB of RAM, well under the 64 MB the catalogue lists, and the game is a few hundred kilobytes of JavaScript, CSS and images. On a Raspberry Pi Zero it loads in under a second on the LAN. There is nothing to configure inside the game itself; if you want it at a subpath rather than a subdomain, serve it from /hextris/ and it works because every asset is referenced relatively.
Where it sits on a homelab
Three uses come up in practice. First, dashboards: a tile on a Homepage or Heimdall board that opens a game is a small quality-of-life feature for a household, and Hextris is the one that works on the kitchen tablet. Second, guest networks and captive LANs: a static game needs no outbound access, so it is safe on a VLAN that is otherwise cut off. Third, as a canary. I keep a static site on every reverse proxy I run because a 200 from a folder of files is the fastest way to prove the proxy is healthy before debugging a real application behind it.
It also pairs naturally with the other static games in the games category, 2048 being the obvious sibling. Serve them from one nginx container with one subdirectory each and you have a LAN arcade for zero maintenance.
What it is not, and what to run instead
Hextris has no multiplayer, no accounts, no server-side scores. If you want a game night for a group, look at the browser party games and Minecraft servers elsewhere in the category; they are real services with real resource needs. If you want a project you can tinker with, the codebase is vanilla JavaScript from 2014 with no framework, which is either charming or dated depending on your mood, but it is small enough to read in an afternoon and the GPL-3.0 licence lets you fork it for a custom colour scheme or a family leaderboard.
Updates are a non-issue. The repository sees occasional commits, but the game has been feature-complete for years and there is no attack surface in a static file server beyond the server itself. Update nginx or Caddy on your usual schedule and leave the game alone.
What I'd do
Clone it into /srv/hextris, serve it with Caddy on a LAN-only name, and put a tile for it on the household dashboard. Total time about 4 minutes, ongoing cost zero. If you have never run a reverse proxy before, this is the thing to deploy first, before Jellyfin or Nextcloud, because it lets you get certificates and DNS right without an application in the way. When the game loads over HTTPS on your phone, the proxy is done and the real services can follow.
Similar game servers apps
Mindustry
Game ServersTower-defense and factory game with servers
Replaces Factorio
Lichess
Game ServersOpen-source chess server and platform
Replaces Chess.com
OpenRCT2
Game ServersOpen-source remake of RollerCoaster Tycoon 2
Replaces RollerCoaster Tycoon
papermc-docker
Game ServersContainerized Minecraft Java server image
Replaces Minecraft Realms
ArchiSteamFarm
Game ServersTool for farming Steam cards from multiple accounts
Replaces Idle Master
2048
Game ServersSelf-hostable browser version of the 2048 sliding puzzle
Replaces Mobile puzzle games