Skip to content

chore: switch the image to Python 3.14 on Debian 13 (trixie) - #44

Merged
oleksandr-nc merged 3 commits into
mainfrom
chore/python-3.14-debian-trixie
Sep 18, 2026
Merged

oleksandr-nc merged 3 commits into
mainfrom
chore/python-3.14-debian-trixie

Conversation

@oleksandr-nc

@oleksandr-nc oleksandr-nc commented Sep 18, 2026 •

Copy link
Copy Markdown
Contributor

Problem

The published release image was last built in April 2026 and its system CA store (ca-certificates 20230311+deb12u1) predates several public roots. nc_py_api verifies TLS against the system store, not certifi, so the init status report to Nextcloud fails with CERTIFICATE_VERIFY_FAILED when the instance certificate chains to one of those newer roots. Test Deploy then fails at the init step although the setup itself is fine.

The CI workflow was also red, for an unrelated reason: it enabled app_api from the app store, which resolves to the old 3.2.3 release. That version calls DIContainer::query(), which is protected on server master now, so the init status request ended in a PHP fatal.

Changes

  • Base image: python:3.12-slim-bookworm -> python:3.14-slim-trixie (Debian 13, ca-certificates 20250419), for both build stages.
  • torch: 2.8.0 -> 2.9.1. 2.8.0 has no Python 3.14 wheels. 2.9.1 has them for CPU, CUDA, ROCm and arm64, and it still uses CUDA 12.8 and the rocm6.4 index, so host GPU driver requirements stay the same. Later torch releases move to ROCm 7.x and newer CUDA packaging.
  • CI: check out AppAPI main instead of enabling the app store release.
  • CI: build the CPU image from the checkout and deploy that one (registry mapping ghcr.io -> local on the daemon), so Dockerfile changes are exercised before a release. Until now the workflow deployed the published image. The log check now names the assertion that failed.

Testing

  • CI deploys the image built from this branch: the container log shows pytorch package version: 2.9.1+cpu and all log assertions pass.
  • Locally, CPU variant: Python 3.14.7, Debian 13, torch 2.9.1+cpu, torchvision 0.24.1+cpu, nc_py_api 0.30.3; frpc, curl, nc, ping, ps present.
  • An HTTPS request with niquests to a site whose chain ends in a root missing from the old image fails on the current release image and succeeds on the new one.
  • Full deploy through a HaRP Docker daemon (FRP tunnel): all CI log assertions pass, plus frpc start proxy success.
  • Full deploy through a HaRP Kubernetes daemon (kind, ClusterIP): deploy, init and enable pass.

The CUDA and ROCm variants were not built; the torch 2.9.1 and torchvision 0.24.1 cp314 wheels exist on PyPI and on the rocm6.4 index.

After merge the three publish workflows need a manual run to refresh release, release-cuda and release-rocm.

The published image carried an outdated CA store and rejected certificates chaining to newer public roots. torch goes to 2.9.1, the release with Python 3.14 wheels that still uses CUDA 12.8 and ROCm 6.4, so host driver requirements stay the same.

Signed-off-by: Oleksandr Piskun <oleksandr2088@icloud.com>
The workflow enabled app_api from the app store, which resolves to the old 3.2.3 release. That version calls DIContainer::query(), now protected on server master, so the init status request ended in a PHP fatal and the log check failed.

Signed-off-by: Oleksandr Piskun <oleksandr2088@icloud.com>
The workflow deployed the published image, so Dockerfile changes were never exercised before a release. It now builds the CPU image and maps ghcr.io to local for the daemon, and the log check names the assertion that failed.

Signed-off-by: Oleksandr Piskun <oleksandr2088@icloud.com>
@oleksandr-nc
oleksandr-nc merged commit 281c199 into main Sep 18, 2026
4 checks passed
@oleksandr-nc
oleksandr-nc deleted the chore/python-3.14-debian-trixie branch September 18, 2026 09:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant