Skip to content

feat(pleroma): update to v2.10.2 - #97

Merged
indigo423 merged 1 commit into
mainfrom
feat/update-pleroma-2.10.2
Jul 7, 2026
Merged

feat(pleroma): update to v2.10.2#97
indigo423 merged 1 commit into
mainfrom
feat/update-pleroma-2.10.2

Conversation

@indigo423

Copy link
Copy Markdown
Contributor

Why

Move the pleroma image from v2.9.1 to v2.10.2. 2.10.2's mix.exs
requires elixir "~> 1.15", so the old Elixir 1.14.5 toolchain can no longer
compile it — this is a toolchain upgrade plus config-syntax fixes, not a plain
version bump.

What changed

  • Version + tagPLEROMA_VERSION=v2.10.2, release.tag=pleroma:2.10.2.
  • ToolchainLANG_ELIXIRhexpm/elixir:1.17.3-erlang-26.2.5.21-alpine-3.20.9
    (Pleroma's tested Elixir 1.17.3). Runtime base → alpine:3.20.9, aligned with
    the build base so the Vix/libvips NIF stays ABI-compatible under
    VIX_COMPILATION_MODE=PLATFORM_PROVIDED_LIBVIPS.
  • Dockerfile.tplimport Mix.Configimport Config (required on Elixir
    ≥ 1.15); clone the pinned tag directly (git clone -b $VER --depth 1); add
    --chmod=640 to the config.exs COPY.

Two non-obvious fixes caught by building + smoke-testing locally

  1. Erlang patch 26.2.5.21, not upstream's 26.2.5.6. OTP 26.2.5.6's TLS
    validator rejects builds.hex.pm's current Let's Encrypt chain
    (key_usage_mismatch on the technically-constrained intermediate), which
    aborts mix local.hex during the build. Deterministic — would fail CI too.
    26.2.5.21 carries the OTP fix (httpc→200, mix local.hex→OK, multi-arch).
  2. --chmod=640 on the config COPY. Pleroma 2.10.2 added a
    ReleaseRuntimeProvider check that refuses to boot with a world-permissioned
    /etc/pleroma/config.exs; without this the image builds but crashes at
    startup. Matches upstream's 2.10.2 Dockerfile.

Verification

  • make shellcheck / make hadolint (root CI gates): exit 0.
  • Native arm64 image built (full Elixir compile + Vix/vips NIF).
  • Smoke (arm64): release boots through the 2.10.2 config provider (no
    world-perm crash), and the Vix NIF loads runtime alpine 3.20.9 libvips 8.15.2
    — clearing the newer-libvips ABI risk.
  • amd64 leg left to CI's native x86 runner — local linux/amd64 segfaults
    the emulated BEAM under QEMU on this Apple Silicon host (an emulation artifact,
    not an image defect).

🤖 Generated with Claude Code

Pleroma 2.10.2 requires Elixir ~> 1.15, so this is a toolchain upgrade, not a
plain version bump. Changes:

- version-lock.sh: PLEROMA_VERSION v2.9.1 -> v2.10.2; runtime BASE_IMAGE
  alpine:3.21.3 -> alpine:3.20.9 (aligned with the build base's alpine so the
  Vix/libvips NIF stays ABI-compatible under PLATFORM_PROVIDED_LIBVIPS).
- release.tag: pleroma:2.9.1 -> pleroma:2.10.2.
- base_images.sh: LANG_ELIXIR -> hexpm/elixir:1.17.3-erlang-26.2.5.21-alpine-3.20.9.
  Keeps Pleroma's tested Elixir 1.17.3, but pins Erlang 26.2.5.21 rather than
  upstream's 26.2.5.6: 26.2.5.6's TLS validator rejects builds.hex.pm's current
  Let's Encrypt chain (key_usage_mismatch on the technically-constrained
  intermediate), which aborts `mix local.hex` during the build; 26.2.5.21 carries
  the OTP fix.
- Dockerfile.tpl: `import Mix.Config` -> `import Config` (required on Elixir
  >= 1.15); clone the pinned tag directly (`git clone -b $VER --depth 1`); add
  `--chmod=640` to the config.exs COPY, because 2.10.2's ReleaseRuntimeProvider
  refuses to boot with a world-permissioned config (matches upstream 2.10.2).

Verified: native arm64 image builds, boots through the 2.10.2 config provider,
and the Vix NIF loads runtime alpine 3.20.9 libvips 8.15.2. The amd64 leg is
left to CI's native x86 runner (local linux/amd64 segfaults the emulated BEAM
under QEMU on this Apple Silicon host).

Assisted-by: ClaudeCode:claude-opus-4-8
Signed-off-by: Ronny Trommer <ronny@no42.org>
@indigo423
indigo423 merged commit 4d21eb0 into main Jul 7, 2026
26 checks passed
@indigo423
indigo423 deleted the feat/update-pleroma-2.10.2 branch July 7, 2026 15:03
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