Freeze the running offline FUT backend into version control as fifa17-recon/docker/fifa17-python/ - declarative and rebuildable from a fresh checkout: * OPENFUT_BIND / OPENFUT_ADVERTISE client/server split in the responders (lsx, blaze, roster, utas, pow) + entrypoint.sh; OPENFUT_ADVERTISE is required for remote mode (compose and entrypoint fail without it) * docker-compose.yml reproducing the frozen baseline container exactly (env, ports incl. the 8085->8080 POW-content remap, /state bind, restart) * .env.example / .env for site config - the LAN IP is never hardcoded in source * tools/ + data/ staged from openfut-fut-backend:python-baseline-2026-08-10, verified byte-identical to the running container at freeze time * client_arm.sh (the 105 client-side arming counterpart) * Dockerfile bakes /app/SHA256SUMS.txt so any image is self-identifying * docs/BASELINE-python-2026-08-10.md: frozen image/container/hash record, restore instructions and rebuild-equivalence procedure Secrets (redir key/cert, .env) and runtime state (docker/state) stay gitignored. The live container is untouched pending the .105 launcher audit.
3.8 KiB
Python backend baseline — 2026-08-10
Frozen rollback target for the working offline FUT backend (Python migration) as
it ran on 10.10.0.120. Everything here was recorded from the live system before
any cleanup/restructure; the image and state are archived in
/home/alex/OpenFUT/docker-backups/.
Frozen image
| field | value |
|---|---|
| tag | openfut-fut-backend:python-baseline-2026-08-10 |
| image id | e1f93ad647ab |
| digest | sha256:e1f93ad647abbec32e2751f3e88fed75d3e574d4500395b21c31d0f0b96abac6 |
| created | 2026-08-10T02:14:56Z (built as openfut-fut-backend:dev) |
| size | 278 MB |
| archive | docker-backups/openfut-fut-backend-python-baseline-2026-08-10.tar.gz (53 MB, docker save | gzip -1) |
Frozen container
| field | value |
|---|---|
| id | f16d3204cbf48151be232ff8f4194b429e311042f8f6f95644760d4b8eba2938 |
| created | 2026-08-10T02:14:56.194470252Z |
| image | openfut-fut-backend:dev (= baseline image id) |
| restart | unless-stopped |
| network | docker_default, IP 172.19.0.2, aliases openfut-fut-backend, fut-backend |
| log | json-file |
| inspect | docker-backups/openfut-fut-backend-container-inspect-2026-08-10.json |
Environment (Config.Env)
FUT_SETTINGS=off
FUT_MODES=1
OPENFUT_BIND=0.0.0.0
OPENFUT_ADVERTISE=10.10.0.120
POW_CONTENT_ADDR=0.0.0.0:8080
POW_CONTENT_HOST=10.10.0.120:8085
FUT_ACCOUNT_PATH=/state/active_account.json
FUT_PROFILE_ROOT=/state/accounts
PYTHON_VERSION=3.12.13 (python:3.12-slim base)
Volumes / mounts
Bind mount docker/state (host) -> /state (container, rw). Runtime state:
active_account.json (active persona) + accounts/ (FUT saves by persona).
Snapshot: docker-backups/state-2026-08-10/.
Ports (host -> container)
| host | container | service |
|---|---|---|
| 4216 | 4216 | LSX (Origin bootstrap) |
| 42127 | 42127 | Blaze redirector (TLS) |
| 42130 | 42130 | Blaze main |
| 42131 | 42131 | Nucleus OAuth stub |
| 8081 | 8081 | FUT roster XML (HTTPS) |
| 8099 | 8099 | UTAS / RS4 FUT REST API |
| 8094 | 8094 | POW / EASFC API |
| 8085 | 8080 | POW content (remapped to avoid openfut-core:8080) |
All listeners verified bound on 0.0.0.0 in the container (LSX/Blaze/nucleus,
roster, UTAS, POW, POW content).
Dataset manifest
docker-backups/SHA256SUMS-container-baseline-2026-08-10.txt — sha256 of all
323 files under /app/tools + /app/data inside the running container.
fifa17-python/tools/ and fifa17-python/data/ are the staged sources that
built this image (verified byte-identical to the container copies at freeze
time). Images rebuilt from git now bake their own /app/SHA256SUMS.txt; the
rebuild-equivalence check is diff between that and this manifest.
Restore
# From the archived image (works offline, exact layers):
docker load -i /home/alex/OpenFUT/docker-backups/openfut-fut-backend-python-baseline-2026-08-10.tar.gz
docker tag openfut-fut-backend:python-baseline-2026-08-10 openfut-fut-backend:dev
# Or rebuild from git:
cd /home/alex/OpenFUT/fifa17-recon/docker/fifa17-python
cp .env.example .env # set OPENFUT_ADVERTISE
docker compose up -d --build
Status at freeze time
- The 2026-08-10
openfut-fut-backendcontainer was left running untouched (the .105 launcher audit uses it). No rebuild/replacement happens until that audit finishes; the frozen image is the rollback target if cleanup breaks it. docker/statewas not moved during restructure (bind path must not change while the container is live); the new compose mounts../statefrom the same location.- TURN/relay re-addressing (multiplayer) and long-tail endpoints (weather, matchday, kit assets) are deferred feature gaps — tracked separately.