Demo images / Build & push demo images (push) Successful in 3m31s
Bumps to botfights:1.2.3, which carries the JoinBoutPage.vue fix from the botfight repo (commit 603e09b): the poll/webhook mode picker on the bot setup step now visibly reacts when clicked — a colored banner in the guide viewer and a prepended line in the copied prompt point at "Option A: Polling Bot" or "Option B: Webhook Bot" within the single unified doc (BOT-02), instead of silently refetching the same file with no visible change. No manifest/env changes beyond the version/image bump — 1.2.2's ARCHY_EMBEDDED/ARENA_UPSTREAM_URL/generated JWT_SECRET are unchanged. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
100 lines
2.9 KiB
YAML
100 lines
2.9 KiB
YAML
app:
|
|
id: botfights
|
|
name: BotFights
|
|
version: 1.2.3
|
|
description: Bot competition arena with 2-player arcade fighting mode. AI bots battle in trivia challenges while humans duke it out with controllers. Built for Bitcoiners.
|
|
category: community
|
|
|
|
container:
|
|
image: 146.59.87.168:3000/lfg2025/botfights:1.2.3
|
|
pull_policy: always
|
|
# Auto-generated on first install (random hex, 0600, rootless-owned). The
|
|
# 1.2.x image's server/src/middleware/jwt.ts throws at module import when
|
|
# JWT_SECRET is unset and NODE_ENV=production, so a fresh install without
|
|
# this crash-loops immediately. hex32 (not base64, unlike netbird) because
|
|
# jwt.ts uses the value directly as an HMAC key with no decode step.
|
|
generated_secrets:
|
|
- name: botfights-jwt-secret
|
|
kind: hex32
|
|
secret_env:
|
|
- key: JWT_SECRET
|
|
secret_file: botfights-jwt-secret
|
|
|
|
dependencies:
|
|
- storage: 500Mi
|
|
|
|
resources:
|
|
cpu_limit: 2
|
|
memory_limit: 512Mi
|
|
disk_limit: 500Mi
|
|
|
|
security:
|
|
capabilities: []
|
|
readonly_root: true
|
|
no_new_privileges: true
|
|
user: 1001
|
|
seccomp_profile: default
|
|
network_policy: bridge
|
|
apparmor_profile: default
|
|
|
|
ports:
|
|
- host: 9100
|
|
container: 9100
|
|
protocol: tcp # Web UI + API
|
|
|
|
volumes:
|
|
- type: bind
|
|
source: botfights-data
|
|
target: /app/server/data
|
|
- type: tmpfs
|
|
target: /tmp
|
|
options: [rw,noexec,nosuid,size=64m]
|
|
|
|
environment:
|
|
- NODE_ENV=production
|
|
- PORT=9100
|
|
# Default-on shared public arena federation (BOT-03/D-03): this node's
|
|
# BotFights becomes a thin client of the Foundation's well-known arena —
|
|
# all nodes see all fighters, fights cross nodes. This is a rendezvous,
|
|
# not an authority: any node can host its own arena (same image, just
|
|
# without this var set), and an operator can remove this line entirely to
|
|
# run a fully standalone, node-local arena instead.
|
|
- ARENA_UPSTREAM_URL=https://botfights.archipelago-foundation.org
|
|
# Tells the app it is embedded (first-party) in the node dashboard's
|
|
# iframe, so it can safely disable X-Frame-Options: SAMEORIGIN — see
|
|
# server/src/app.ts in the botfight repo. Without this the 1.2.x image's
|
|
# default security headers block the dashboard iframe entirely.
|
|
- ARCHY_EMBEDDED=1
|
|
|
|
health_check:
|
|
type: http
|
|
endpoint: http://localhost:9100
|
|
path: /api/health
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
start_period: 30s
|
|
|
|
interfaces:
|
|
main:
|
|
name: Web UI
|
|
description: Bot arena and arcade fighter with controller support
|
|
type: ui
|
|
port: 9100
|
|
protocol: http
|
|
path: /
|
|
|
|
metadata:
|
|
author: Dorian
|
|
repo: https://botfights.net
|
|
icon: /assets/img/app-icons/botfights.svg
|
|
license: MIT
|
|
tags:
|
|
- bitcoin
|
|
- gaming
|
|
- arcade
|
|
- fighter
|
|
- bots
|
|
- competition
|
|
- controller
|