diff options
| author | Craig Jennings <c@cjennings.net> | 2026-08-25 06:30:04 -0600 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2026-08-25 06:30:04 -0600 |
| commit | 91fbac722e83cd108a295542a3c88de66d209fe8 (patch) | |
| tree | a444b4181cc07416f82930fb7486a1c54ccf1a75 /docs/design/2026-08-23-telega-docker-pin-tdlib-mismatch.org | |
| parent | 9b53d707f5e2dfe5237ae4db338aa65e83d9c6b2 (diff) | |
| download | dotemacs-91fbac722e83cd108a295542a3c88de66d209fe8.tar.gz dotemacs-91fbac722e83cd108a295542a3c88de66d209fe8.zip | |
fix(telega): build the server image locally to meet tdlib 1.8.66
MELPA's 2026-08-18 telega raised telega-tdlib-min-version to 1.8.66. The pinned upstream image ships 1.8.64, so telega killed its own server on every launch. Upstream's only 1.8.66 image won't start: it's missing libglycin (zevlg/telega.el#596).
docker/telega-server/Dockerfile derives from that upstream image, pinned by digest, and adds the one missing package. make telega-image builds it as cj/telega-server:1.8.66-glycin, cj/telega-docker-image defaults to that tag, and a test holds the two equal. cj/telega now refuses to launch with a make telega-image hint when the image isn't built, since docker would otherwise try to pull a local-only tag from the registry. setup-telega.sh points at the make target instead of M-x telega-server-build.
I chose the local build over pinning the telega package back to 20260706.2147. The derived image satisfies both machines' floors. package.el can't pin a version and MELPA serves only its latest build, so nothing would enforce the package pin. When #596 is fixed upstream the pin returns to a registry digest and the Dockerfile goes.
Diffstat (limited to 'docs/design/2026-08-23-telega-docker-pin-tdlib-mismatch.org')
| -rw-r--r-- | docs/design/2026-08-23-telega-docker-pin-tdlib-mismatch.org | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/docs/design/2026-08-23-telega-docker-pin-tdlib-mismatch.org b/docs/design/2026-08-23-telega-docker-pin-tdlib-mismatch.org index 919c84b8..6428e8c1 100644 --- a/docs/design/2026-08-23-telega-docker-pin-tdlib-mismatch.org +++ b/docs/design/2026-08-23-telega-docker-pin-tdlib-mismatch.org @@ -212,6 +212,35 @@ way it goes: - A controlled reproduction of the silent death with the daemon watched, to find out why the armed notification wasn't seen (previous section). +* Decision (2026-08-25): derived image, built from a Dockerfile in this repo + +I went with the derived image, in a form that keeps most of what the digest +pin gave. Three things settled it: + +- The derived image (tdlib 1.8.66) satisfies both machines' current packages: + velox's telega wants 1.8.66 and ratio's wants 1.8.64, and telega accepts + anything at or above its floor. The package pin would have worked only on + velox, and only after copying =elpa/telega-20260706.2147= over from ratio. +- package.el has no version pin and MELPA serves only its latest build, so + "pin the package back" is a copied directory plus the hope that nobody runs + =package-upgrade= again. Nothing enforces it. +- The pre-reinstall backup on the NAS holds velox's =~/.telega= (td.binlog + and db.sqlite from 2026-07-05), so a working image plus that directory may + restore the session without a phone re-auth. + +The shape: =docker/telega-server/Dockerfile= (FROM pinned to the upstream +digest, plus =apk add libglycin=), =make telega-image= builds it under +=cj/telega-server:1.8.66-glycin=, =cj/telega-docker-image= defaults to that +tag, and =cj/telega= refuses to launch with a "run make telega-image" message +when the image isn't built, so a fresh machine gets a pointer instead of a +confusing registry pull failure. The digest guarantee lives in the +Dockerfile's FROM line; a test holds the defcustom default equal to the +Makefile's tag. When #596 is fixed upstream, the pin goes back to a registry +digest and the Dockerfile goes. + +Not done here: the launch-time tdlib-version assertion, and the controlled +reproduction of the unseen death notification. Both are filed. + * Reproducing it #+begin_src sh |
