Skip to content

Port ownCloud appliance to TurnKey 19 - #27

Open
lirazsiri wants to merge 12 commits into
masterfrom
pr/v19-trixie
Open

Port ownCloud appliance to TurnKey 19#27
lirazsiri wants to merge 12 commits into
masterfrom
pr/v19-trixie

Conversation

@lirazsiri

Copy link
Copy Markdown
Member

Summary

  • migrate the ownCloud appliance to Debian 13 Trixie;
  • update the application and integration to the supported source described below;
  • preserve normal firstboot credentials and the appliance identity-defining behavior;
  • document and verify the supported update path;
  • add focused v19 appliance acceptance coverage.

Source and update path

  • Installed version: ownCloud 11.0.0; apache2 2.4.68-1~deb13u1; mariadb-server 1:11.8.6-0+deb13u1; Redis 8.0.2; Docker 26.1.5; fuse-overlayfs 1.14; Skopeo 1.18.0
  • Source: Debian 13 Trixie packages and the official ownCloud Server image from Docker Hub
  • Updater channel: reviewed official ownCloud Server version tags on Docker Hub; signed Debian and TurnKey Trixie repositories
  • Updater evidence: official amd64 ownCloud image candidate and digest resolved without changing the running image; signed Trixie metadata refreshed with installed versions unchanged
  • Updater procedure: owncloud-update --check 11.0.0; apt-get update and apt-cache policy
  • Integrity evidence: pinned ownCloud amd64 manifest sha256:dbebc24fe77a35c5de621d38a3f7264ffb43e3ee321928cde9a563a72b8ff366; Skopeo verifies registry manifests and blobs; APT accepted signed metadata

Validation

  • Exact run: 20260826t051749z-4089-14788
  • Report SHA-256: 5f3f3c7e0b02071ee2e0b2551cadd2f9379f6591f65ac78abc3d9de9395a11ab
  • Runtime checks: normal init; Docker fuse-overlayfs storage; private network; persistent ownCloud data; Apache HTTPS; administrator authentication; WebDAV lifecycle with MariaDB readback; turnkey-occ user lifecycle; cron; authenticated Redis; Adminer login
  • Verdict: PASS

The exact behavioral build used source commit 15e205df0a866da126ce1c9a54fdb1ce8422da51. The accepted PR tip adds the reviewed evidence and testing-documentation delta recorded in the commit history.

Known limitation: Docker runtime does not exercise installer, kernel, or hardware behavior. The Docker kernel rejects the appliance hostname firstboot call and systemd-sysctl unit; application services are checked explicitly.

The Docker acceptance exercises the normal systemd and firstboot path, primary authentication, identity-defining behavior, persistence, required services, package provenance, and updater evidence. It deliberately does not repeat ISO or installer testing because the Core/TKLDev v19 format path was exercised separately.

ownCloud 11 no longer supports the manual PHP deployment used by the v18 appliance, and Trixie's PHP 8.4 exposes runtime incompatibilities in that path. Use the official amd64 image pinned by manifest digest while retaining Debian Apache, MariaDB, Redis, Adminer, Docker, and Skopeo around it.

Expose the application only through Apache HTTPS, isolate database and cache traffic on a dedicated bridge, rotate backend credentials before first startup, and provide supervised digest-verified image updates. Add focused acceptance for administrator authentication, WebDAV file CRUD, occ user management, database persistence, Redis authentication, Adminer, package sources, and updater no-op behavior.

Verified with disposable Trixie manual-install and bridge-gateway probes, shell and Python syntax checks, and git diff --check. Exact FAB/runtime acceptance follows from this clean commit.
Debian Trixie splits the Docker daemon and command-line client. FAB omits recommended packages, so docker.io alone left the daemon active but every appliance management command unavailable. Install docker-cli explicitly.

Create the custom service enablement links directly because FAB's build-time systemctl shim did not enable the native ownCloud units. This lets firstboot create the private bridge before MariaDB and Redis, then start the ownCloud container automatically.

Verified in failed exact run 20260824t130813z-2903-21758: after installing docker-cli in the disposable runtime, the bridge, MariaDB, Redis, credential rotation, Adminer configuration and ownCloud image load all started successfully. Shell syntax and git diff checks pass.
Firstboot raced MariaDB's four-second startup and attempted credential rotation before its local socket existed. Wait up to 60 seconds for a successful MariaDB ping before changing the application account.

The exact overlay-backed runtime rejected overlay2 and lacked fuse-overlayfs, so Docker fell back to vfs. Loading the 2.21 GB ownCloud image remained incomplete through the 240-second health deadline. Install Debian's fuse-overlayfs package and require an overlay-based driver in focused acceptance.

Verified against failed exact run 20260824t135841z-4194-13598 and its disposable continuation: the private network, enabled units, MariaDB, Redis and Adminer all started, while the measured vfs image load exceeded the runtime deadline. Shell syntax, documentation character and git diff checks pass.
ownCloud's occ status command exits successfully before the database installation completes, which let firstboot race into an unavailable user command and left Apache returning 502 responses.

Require the installed status, wait for the internal HTTP endpoint, and record a configuration marker that acceptance now checks. This keeps normal firstboot completion aligned with application readiness.

Verified with the retained exact-run failure log, Python and shell syntax checks, and git diff whitespace validation.
The ready ownCloud root endpoint redirects to its login route and returns no identifying body at the initial URL. The functional test therefore failed after firstboot and status checks had passed.

Follow the normal browser redirect before asserting the login page content. Verified with the retained exact-run failure location, shell syntax, and git diff whitespace checks.
The host-side authenticated redis-cli assertion failed even though ownCloud had already completed Redis-backed WebDAV operations, while a disposable Trixie probe confirmed the CLI syntax and output.

Check that the server and application password sources agree, authenticate and ping through the pinned image's PHP Redis extension, and require an explicit unauthenticated rejection. This exercises the actual appliance trust path without weakening the credential boundary.

Verified with shell syntax and whitespace checks plus disposable Trixie redis-cli and pinned-image PHP extension probes.
Redis 8 authentication denial text and redis-cli exit status are not stable appliance contracts. Reject an exact unauthenticated PONG and emit a fixed denial classification while retaining the authenticated PHP Redis PONG check.

Verified with Bash syntax checking and Debian Trixie Redis 8.0.2 authenticated and unauthenticated PING probes.
The retained acceptance run reached the unauthenticated Redis check after ownCloud login, WebDAV, user, database, and authenticated Redis behavior passed, but redis-cli did not expose denial through the assumed text and exit contract.

Send a raw RESP PING instead and require Redis's NOAUTH error code. This preserves both reachability and authentication-denial criteria without depending on redis-cli presentation. Bash syntax, embedded Python compilation, retained evidence digests, and positive and negative response fixtures pass.
The v19 acceptance flow covered the primary application behavior but did not explicitly exercise the shipped cron command or verify the persistent data mount described by the README. Add focused service, schedule, background-job, command, and mount assertions, and map the cron contract in the testing guide.

This changes acceptance evidence only; appliance runtime behavior remains unchanged. Bash syntax, Python syntax, Docker template parsing, the installed cron line, and diff hygiene were verified before committing.
Replace the pending testing placeholder with the sealed exact-run evidence for the accepted Trixie candidate. Record the tested source and harness identities, installed versions, runtime coverage, updater behavior, report location, and PASS verdict so the migration claims remain auditable.

The accepted runtime source remains e14b3dd; this commit changes documentation only. The retained report checksum bundle, criterion evidence, shell and Python syntax, documentation contract, and diff hygiene were verified.
The appliance configuration script enabled shell tracing while generating and interpolating MariaDB and Redis passwords, which exposed those values in retained acceptance logs. Run the script with error-exit behavior but without xtrace, and classify the README's contacts, calendar, and gallery examples as deferred from focused v19 coverage.

Verified with Bash syntax checking, diff hygiene, and credential-pattern checks that do not emit secret values.
Replace the superseded evidence reference with the exact passing run for the credential-safe candidate. Record the tested source, report checksum, verified artifact count, and zero-match disclosure scan so review can bind the correction to retained evidence.

Verified all eight entries in the retained SHA256SUMS bundle and confirmed the sealed corpus contains no generated database or Redis credential disclosures.
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