28773e7cf1
The frozen baseline image predates two hot-patches made in the running container after build: * utas_server.py: FUT_MODES-gated offlineSeason block in GetHubData's club response (keeps the offline-season summary valid) * test_hub_offline_season_contract.py added to /app/tools Sync fifa17-python/tools to the running container (verified byte-identical, 237 files incl. the redir cert pair) and snapshot the live FS as openfut-fut-backend:python-running-2026-08-10 (docker commit). A fresh build from the committed sources now reproduces the running backend exactly (baked SHA256SUMS.txt diffed against the container manifest: identical).
122 lines
5.0 KiB
Markdown
122 lines
5.0 KiB
Markdown
# 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; the only expected deltas are pycache files (not committed) and the redir cert pair (regenerated per build).
|
|
|
|
## Restore
|
|
|
|
```sh
|
|
# 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-backend` container 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/state` was **not** moved during restructure (bind path must not change
|
|
while the container is live); the new compose mounts `../state` from the same
|
|
location.
|
|
- TURN/relay re-addressing (multiplayer) and long-tail endpoints (weather,
|
|
matchday, kit assets) are deferred feature gaps — tracked separately.
|
|
|
|
## Running state vs image — what the frozen image does NOT contain
|
|
|
|
The baseline image (`python-baseline-2026-08-10` / `dev`) was built at 02:14Z,
|
|
but the container's `/app` was hot-patched afterwards:
|
|
|
|
* `tools/utas_server.py` — gained the `FUT_MODES`-gated `offlineSeason` block in
|
|
GetHubData's club response (keeps the hub's offline-season summary valid).
|
|
* `tools/test_hub_offline_season_contract.py` — added to `/app/tools`.
|
|
|
|
`docker save` captures the image, not the container's writable layer, so the
|
|
baseline tar.gz lacks those two changes. Two paths cover the exact runtime:
|
|
|
|
* `openfut-fut-backend:python-running-2026-08-10` — `docker commit` of the
|
|
running container (sha256:093a98fa0496...), the exact runtime FS.
|
|
* The committed `fifa17-python/tools` + `data` — synced to match the running
|
|
container byte-for-byte (237 files verified, incl. the redir cert pair), so a
|
|
fresh build reproduces the actual running backend. Proven by rebuilding from
|
|
the committed sources and diffing the baked `/app/SHA256SUMS.txt` against the
|
|
container manifest: identical.
|
|
|
|
Archive: `docker-backups/openfut-fut-backend-python-running-2026-08-10.tar.gz`.
|