Files
branderson 2d1d8cce46 feat: mirror main to GitHub and publish images to GHCR
mirror/github-mirror.sh publishes main and its tags to a read-only
GitHub mirror, adding a notice under the README title, with a systemd
timer to run it hourly. A GitHub Actions workflow builds the images on
the mirror and pushes them to ghcr.io. The docs point prebuilt images
there, and CONTRIBUTING no longer invites issues and pull requests.

upstream-status.sh now fetches without tags, so upstream's version tags
stay out of local clones.
2026-10-15 16:48:04 -07:00

124 lines
5.2 KiB
Bash

# Dotcom Arcade - Environment Template
# Copy to .env and fill in required values, then: docker compose up -d --build
# ---------------------------------------------------------------------------
# Required
# ---------------------------------------------------------------------------
FLASHPOINT_HOST_PATH=/path/to/Flashpoint
JWT_SECRET=replace-with-a-secure-random-string
# ---------------------------------------------------------------------------
# Container Images
# ---------------------------------------------------------------------------
# Built from source by default. To pull published images instead, set the
# registry path they live under (ending in /), then:
# docker compose pull && docker compose up -d
# IMAGE_PREFIX=ghcr.io/branderson/
# IMAGE_TAG=latest
# "Latest release" API URL to check for updates (GitHub or Gitea); off when unset
# APP_UPDATE_URL=https://git.example.com/api/v1/repos/owner/dotcom-arcade/releases/latest
# ---------------------------------------------------------------------------
# Port (host mapping)
# ---------------------------------------------------------------------------
# Maps a host port to the container, which serves both the UI and the API
# on port 3100
WEB_PORT=80
# ---------------------------------------------------------------------------
# Data Storage
# ---------------------------------------------------------------------------
# Host path for persistent data (user.db, local flashpoint.sqlite copy, installed Ruffle)
DATA_PATH=./data
# ---------------------------------------------------------------------------
# Logging
# ---------------------------------------------------------------------------
# Host path for logs (backend.log, client-errors.log)
LOGS_PATH=./logs
LOG_LEVEL=info
# ---------------------------------------------------------------------------
# OpenTelemetry (optional)
# ---------------------------------------------------------------------------
# Enable OTEL for distributed tracing and metrics
OTEL_ENABLED=false
OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4318
# OTEL_API_KEY=your-api-key-here
OTEL_SERVICE_NAME=dotcom-arcade
OTEL_TRACES_ENABLED=true
OTEL_METRICS_ENABLED=true
# OTEL_METRICS_EXPORT_INTERVAL=60000
# OTEL_LOG_LEVEL=info
# ---------------------------------------------------------------------------
# Container User Permissions
# ---------------------------------------------------------------------------
# Match your host user to avoid bind-mount permission issues
# Run 'id -u' and 'id -g' on your host to find your values
# PUID=1000
# PGID=1000
# ---------------------------------------------------------------------------
# Application settings
# ---------------------------------------------------------------------------
NODE_ENV=production
TZ=UTC
# Allowed CORS origin(s), comma-separated. Same-origin requests are always
# allowed, so this only matters when the UI is served from a different origin or
# behind a proxy that rewrites Host. Default ports are normalized, so
# http://host:80 and http://host are equivalent; write out non-default ports.
# Example with a LAN address and a public domain:
# DOMAIN=http://192.168.0.118,https://flashpoint.example.com
DOMAIN=http://localhost:80
# Secure flag on auth cookies: auto (default), true, or false. `auto` marks them
# Secure only on requests that arrived over TLS, so plain-HTTP LAN access and
# HTTPS through a proxy both work. Force `true` if your proxy terminates TLS
# without sending X-Forwarded-Proto.
# COOKIE_SECURE=auto
# ---------------------------------------------------------------------------
# Database Performance Optimization (for network storage)
# ---------------------------------------------------------------------------
# Enable if FLASHPOINT_HOST_PATH is on a network share (SMB/NFS)
# Copies flashpoint.sqlite to local Docker volume for faster access
ENABLE_LOCAL_DB_COPY=false
# SQLite performance tuning
# SQLITE_CACHE_SIZE: Negative value = KB, -64000 = 64MB cache
SQLITE_CACHE_SIZE=-64000
# SQLITE_MMAP_SIZE: Memory-mapped I/O size in bytes (256MB default)
SQLITE_MMAP_SIZE=268435456
# Cache pre-warming (loads common queries on startup)
ENABLE_CACHE_PREWARM=true
# ---------------------------------------------------------------------------
# Auth & Rate Limiting
# ---------------------------------------------------------------------------
# JWT_EXPIRES_IN=1h
# BCRYPT_SALT_ROUNDS=10
# RATE_LIMIT_WINDOW_MS=60000
# RATE_LIMIT_MAX_REQUESTS=100
# ---------------------------------------------------------------------------
# Application
# ---------------------------------------------------------------------------
# ENABLE_CGI=false
# Streamed play for games that can't run in a browser (Java, Shockwave, the
# original Flash Player, Windows games). Set a token (e.g. `openssl rand -hex 32`)
# and enable the profile. See docs/10-features/13-streaming.md.
# COMPOSE_PROFILES=streaming
# STREAMING_API_TOKEN=
# MAX_SESSIONS=4
# Sign in users an authenticating reverse proxy (e.g. Authentik forward auth)
# names in a header. Off unless TRUSTED_HEADER_USERNAME and TRUSTED_PROXIES are
# both set. See docs/10-features/14-proxy-sign-in.md.
# TRUSTED_HEADER_USERNAME=X-authentik-username
# TRUSTED_HEADER_EMAIL=X-authentik-email
# TRUSTED_PROXIES=192.0.2.10
# Serve the built frontend from the backend (on by default in production)
# SERVE_FRONTEND=true