No description
Find a file
Dave 33c156a7dd Fix Coolify 502 Bad Gateway: serve on port 3000 as well as 80
Coolify routes to port 3000 when 'Ports exposes' is left blank, but nginx
only listened on 80 - so Traefik found nothing and returned 502 while the
container itself was healthy and passing its healthcheck.

nginx now listens on both 80 and 3000, so the game is served whichever port
the proxy routes to. README documents setting Ports exposes = 80.
2026-10-23 19:24:53 +02:00
.dockerignore Mineflappy: Minecraft Flappy Bird with 6 birds, abilities, biomes and Docker deployment 2026-10-23 19:14:43 +02:00
.gitignore Mineflappy: Minecraft Flappy Bird with 6 birds, abilities, biomes and Docker deployment 2026-10-23 19:14:43 +02:00
docker-compose.yml Mineflappy: Minecraft Flappy Bird with 6 birds, abilities, biomes and Docker deployment 2026-10-23 19:14:43 +02:00
Dockerfile Mineflappy: Minecraft Flappy Bird with 6 birds, abilities, biomes and Docker deployment 2026-10-23 19:14:43 +02:00
index.html Mobile: enlarge touch targets for fingers 2026-10-23 19:21:00 +02:00
nginx.conf Fix Coolify 502 Bad Gateway: serve on port 3000 as well as 80 2026-10-23 19:24:53 +02:00
README.md Fix Coolify 502 Bad Gateway: serve on port 3000 as well as 80 2026-10-23 19:24:53 +02:00

Mineflappy

Minecraft Flappy Bird — a single-file HTML5 canvas game. No build step, no dependencies, no assets. Everything (sprites, font, music, sound) is generated in code.

open index.html          # that's it - it runs straight from the filesystem

Deploy to Coolify

The repo ships a Dockerfile that serves the game with nginx.

  1. In Coolify: New Resource → Application → Public/Private Repository
  2. Repository URL: http://forgejo-b82b4lpyyzyg40thdsjdd38i.163.245.214.68.sslip.io/David/MINEFLAPPY-GAME.git
    • Branch: main
    • Build Pack: Dockerfile
  3. Dockerfile Location: /Dockerfile (default is fine)
  4. Port: 80 — set this under Networking → Ports exposes
  5. Health Check Path: /healthz
  6. Hit Deploy.
  7. Add a domain: Settings → Domains → Add Domain - e.g. game.yourdomain.com
    • Tick Force HTTPS and let Coolify/Traefik issue the Let's Encrypt cert.
    • Coolify routes the domain to the container's port 80 automatically.

Push a new commit and Coolify rebuilds and redeploys it.

If you get "502 Bad Gateway": the container is healthy, but the proxy can't reach it. The usual cause is an empty Ports exposes field — when it's blank Coolify routes to port 3000 instead of 80. Put 80 in that field and redeploy. The bundled nginx.conf listens on both 80 and 3000, so the game is served either way, but setting the port correctly is still the right fix.

Option B - Static Site (no Dockerfile)

If you'd rather not run a container:

  1. New Resource → Static Site with the same repo
  2. Build Command: echo "static" (there is nothing to build)
  3. Root Directory: /
  4. Deploy, then attach a domain as above.

Option C - docker compose

A docker-compose.yml is included if you deploy by compose instead:

docker compose up -d --build
# game is on http://localhost:8080

Run it locally with Docker

docker build -t mineflappy .
docker run --rm -p 8080:80 mineflappy
# open http://localhost:8080

Layout

File What it is
index.html The entire game - markup, CSS and JS in one file
Dockerfile nginx:alpine image that serves index.html
nginx.conf Server config: no-cache on the game, gzip, /healthz
docker-compose.yml Optional compose deployment

The game

Six birds, each with one ability:

Bird Ability Effect
Chicken Double Flap Every 4th flap is 34% stronger
Enderman Teleport Blink 70px forward (refused if a pipe is in the way)
Allay Allay Magnet Nearby gems fly to you
Blaze Melt Burns away the next pipe, widening its gap
Phantom Phase Fly through anything for 1.2s
Wolf Howl Slows the whole game to 55% for 2s

Also in: five biomes that change with your score (Plains → Desert → Mineshaft → Nether → Ice Peaks), a day/night cycle, weather, gold/bubble/wings/lucky-cube pickups, difficulty settings, bird unlocks, per-bird best scores, a daily challenge with a shareable code, a ghost of your best run, and 2-player on one screen.

Controls - Space / W / ↑ / tap to flap, F to use your ability, P to pause, C on the game-over screen to change bird. In 2-player mode Space is player 1 and ↑ is player 2.

Progress is stored in localStorage under mineflappy_v2.