Skip to content

Repository files navigation

Flashpoint Web

A modern web interface for the Flashpoint Archive

Browse and play 200,000+ preserved Flash games and animations directly in your browser.

Node.js TypeScript React Express Vite Tailwind CSS SQLite Docker

License Node.js 20+ PRs Welcome


Important

Already running 1.0.31 or earlier? Updating is a breaking change. The separate flashpoint-backend and flashpoint-frontend containers were replaced in 1.0.32 by a single darkraise/flashpoint-web image, and the old images are no longer published. Your compose file and .env both need changes — see Upgrading before you pull.

What is Flashpoint Web?

Flashpoint Web is a self-hosted web application for accessing your local Flashpoint Archive collection. It provides a modern, browser-based alternative to the Flashpoint Launcher with multi-user support, play tracking, and an intuitive interface.

Key Features

  • Browse & Search - Fast search across 200,000+ games with advanced filtering by platform, developer, tags, and more
  • Downloaded View - A dedicated page and filter for games whose data is already on disk, so a curated collection is one click away
  • Play in Browser - Flash games via Ruffle emulator, HTML5 games natively
  • Multi-User Support - Individual accounts with role-based permissions (admin, moderator, user, guest)
  • Play Tracking - Track playtime, completion status, and view play statistics
  • Playlists & Favorites - Organize your game collection with custom playlists
  • 22 Theme Palettes - Customizable dark/light modes with multiple color schemes
  • Responsive Design - Works on desktop and mobile devices
  • Database Hot-Reload - Automatically syncs when Flashpoint Launcher updates metadata

Register new account and try your favorite flash games

Upgrading

Routine updates need nothing beyond docker compose pull && docker compose up -d.

Warning

Coming from 1.0.31 or earlier, that is not enough. 1.0.32 replaced the two-container deployment with a single image, so an existing setup needs:

  • a new docker-compose.yml with one flashpoint-web service, mapping WEB_PORT to container port 3100
  • API_PORT, BACKEND_HOST, and BACKEND_PORT removed from .env — they no longer do anything
  • a reverse proxy pointing at one upstream instead of two; any rule sending /api to port 3100 will break
  • the Flashpoint mount switched to read-write, or the Downloaded page stays empty

Accounts, playlists, and play history are preserved.

Full migration steps, every environment variable added, removed, or changed, and per-version release notes are in the Upgrade Guide.

Getting Started

Prerequisites

1. Create a project directory

mkdir flashpoint-web && cd flashpoint-web

2. Create docker-compose.yml

services:
  flashpoint-web:
    image: darkraise/flashpoint-web:${IMAGE_TAG:-latest}
    container_name: flashpoint-web
    restart: unless-stopped
    ports:
      - "${WEB_PORT:-80}:3100"
    volumes:
      - ${FLASHPOINT_HOST_PATH:?FLASHPOINT_HOST_PATH is required}:/data/flashpoint
      - ${DATA_PATH:-./data}:/app/data
      - ${LOGS_PATH:-./logs}:/app/logs
    environment:
      - PUID=${PUID:-1000}
      - PGID=${PGID:-1000}
      - NODE_ENV=production
      - TZ=${TZ:-UTC}
      - DOMAIN=${DOMAIN:-http://localhost:${WEB_PORT:-80}}
      - LOG_LEVEL=${LOG_LEVEL:-info}
      - JWT_SECRET=${JWT_SECRET:?JWT_SECRET is required}
      - ENABLE_LOCAL_DB_COPY=${ENABLE_LOCAL_DB_COPY:-false}
      - SQLITE_CACHE_SIZE=${SQLITE_CACHE_SIZE:--64000}
      - SQLITE_MMAP_SIZE=${SQLITE_MMAP_SIZE:-268435456}
      - ENABLE_CACHE_PREWARM=${ENABLE_CACHE_PREWARM:-true}
    healthcheck:
      test: ["CMD", "curl", "--fail", "http://localhost:3100/health"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 40s

The Flashpoint directory is mounted read-write: the app records which games are downloaded in flashpoint.sqlite and saves downloaded game data under Data/Games. Mount it read-only and browsing still works, but downloads and the Downloaded page do not.

3. Create .env

Two values are required. This is a complete, working .env:

FLASHPOINT_HOST_PATH=/srv/Flashpoint
JWT_SECRET=paste-the-output-of-openssl-rand-hex-32-here

Generate the secret with openssl rand -hex 32. Everything else has a working default; add only what you need:

# WEB_PORT=8080            # Host port for the app (UI + API) (default: 80)
# PUID=1000                # Host user ID (Linux — run 'id -u')
# PGID=1000                # Host group ID (Linux — run 'id -g')
# LOG_LEVEL=info           # debug, info, warn, error
# TZ=UTC                   # Timezone
# DATA_PATH=./data         # Persistent app data
# LOGS_PATH=./logs         # Log files

# Extra allowed origins, comma-separated. Not needed for a normal install:
# same-origin requests are always allowed. Set this only when the UI is served
# from a different origin, or behind a proxy that rewrites the Host header.
# DOMAIN=http://192.168.0.10,https://flashpoint.example.com

# Database performance (network storage / large collections)
# ENABLE_LOCAL_DB_COPY=false       # Copy flashpoint.sqlite to local storage
# SQLITE_CACHE_SIZE=-64000         # SQLite cache in KB (64MB default)
# SQLITE_MMAP_SIZE=268435456       # Memory-mapped I/O in bytes (256MB default)
# ENABLE_CACHE_PREWARM=true        # Pre-warm common queries on startup

4. Start it

docker compose up -d

Open http://localhost in your browser. The first user to register automatically becomes the admin.

A single container serves both the UI and the API on one port — WEB_PORT on the host, 3100 inside the container.

Common Commands

docker compose up -d                         # Start
docker compose down                          # Stop
docker compose logs -f                       # Follow logs
docker compose restart                       # Restart
docker compose pull && docker compose up -d  # Update to the latest image

Documentation

For architecture details, API reference, development setup, contributing guidelines, and more, visit the Wiki.

Related Projects

License

This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.

Acknowledgments

  • Flashpoint Team - For preserving web gaming history
  • Ruffle Contributors - For making Flash playable in modern browsers
  • Community - For testing, feedback, and contributions

About

Selfhosted flashpoint archive for playing flash and HTML5 game in browser without any additional app

Topics

Resources

Contributing

Stars

9 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages