Skip to content
This repository was archived by the owner on Aug 19, 2026. It is now read-only.

Commit f49764a

Browse files
DeepDiver1975claude
andcommitted
docs(docker): use literal image tags so Dependabot maintains the example
Move the MariaDB, Redis, Collabora and Traefik image tags out of the .env indirection and into literal tags in docker-compose.yml, then restore the Dependabot `docker` ecosystem entry. Dependabot's compose parser reads image tags literally and cannot resolve `${VAR}` interpolation or read the .env file, so the previous env-var indirection meant Dependabot produced no update PRs. Literal tags make the four infrastructure images automatically maintained. ownCloud keeps `owncloud/server:${OWNCLOUD_IMAGE}`: its version is a single source of truth driven by the {latest-server-download-version} docs attribute and reused by the Quick Evaluation example, so it is bumped deliberately rather than by Dependabot. Drop the now-unused MARIADB_IMAGE/REDIS_IMAGE/COLLABORA_IMAGE/TRAEFIK_IMAGE variables from dot.env and their rows from the settings table, and reword the "Pin image versions" note to match. The smoke-test harness pinned Traefik to v3.6 (v3.3 fails against Docker Engine >= 29) via ${TRAEFIK_IMAGE} in test.env; since the base file now hard- codes v3.3, relocate that pin to an `image:` override in docker-compose.override.yml so CI keeps booting. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Signed-off-by: Thomas Müller <1005065+DeepDiver1975@users.noreply.github.com>
1 parent eb631cc commit f49764a

6 files changed

Lines changed: 39 additions & 36 deletions

File tree

.github/dependabot.yml

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,3 +27,20 @@ updates:
2727
update-types:
2828
- minor
2929
- patch
30+
31+
# Docker images in the admin-manual compose example. Only literal image tags
32+
# are updated here (owncloud/server uses ${OWNCLOUD_IMAGE} interpolation, which
33+
# Dependabot cannot resolve, so it is intentionally left for manual bumps).
34+
- package-ecosystem: docker
35+
directory: "/modules/admin_manual/examples/installation/docker"
36+
schedule:
37+
interval: weekly
38+
day: sunday
39+
time: '22:00'
40+
timezone: Etc/UTC
41+
open-pull-requests-limit: 5
42+
groups:
43+
minor-and-patch:
44+
update-types:
45+
- minor
46+
- patch

modules/admin_manual/examples/installation/docker/docker-compose.yml

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,10 @@ services:
6868
# Collabora Online Development Edition (CODE): the self-hosted office server
6969
# that ownCloud connects to as a WOPI client. See the "Enabling Collabora
7070
# Online (CODE)" section of the documentation for the required occ wiring.
71-
image: collabora/code:${COLLABORA_IMAGE}
71+
# Image tag pinned here (not in .env) so Dependabot keeps it current — see
72+
# .github/dependabot.yml. Do not re-parameterize it: Dependabot cannot read
73+
# ${VAR} interpolation.
74+
image: collabora/code:24.04.13.2.1
7275
container_name: owncloud_collabora
7376
restart: always
7477
environment:
@@ -107,7 +110,8 @@ services:
107110
# ownCloud and Collabora containers. Routing/TLS is driven by the labels on
108111
# each service above; WebSocket upgrades (needed by CODE) are handled
109112
# transparently by Traefik.
110-
image: traefik:${TRAEFIK_IMAGE}
113+
# Pinned tag maintained by Dependabot (see .github/dependabot.yml).
114+
image: traefik:v3.3
111115
container_name: owncloud_proxy
112116
restart: always
113117
command:
@@ -136,7 +140,8 @@ services:
136140
- frontend
137141

138142
mariadb:
139-
image: mariadb:${MARIADB_IMAGE}
143+
# Pinned tag maintained by Dependabot (see .github/dependabot.yml).
144+
image: mariadb:10.11
140145
container_name: owncloud_mariadb
141146
restart: always
142147
# No host ports are published. MariaDB is reached only by ownCloud over the
@@ -160,7 +165,8 @@ services:
160165
- backend
161166

162167
redis:
163-
image: redis:${REDIS_IMAGE}
168+
# Pinned tag maintained by Dependabot (see .github/dependabot.yml).
169+
image: redis:7
164170
container_name: owncloud_redis
165171
restart: always
166172
# No host ports are published. Redis is reached only by ownCloud over the

modules/admin_manual/examples/installation/docker/dot.env

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@ OWNCLOUD_IMAGE={latest-server-download-version}
66
OWNCLOUD_DOMAIN=owncloud.example.com
77
OWNCLOUD_TRUSTED_DOMAINS=owncloud.example.com
88
OWNCLOUD_OVERWRITE_CLI_URL=https://owncloud.example.com
9-
MARIADB_IMAGE=10.11
10-
REDIS_IMAGE=7
119

1210
# Initial ownCloud web UI admin account (used for first setup only).
1311
ADMIN_USERNAME=admin
@@ -22,12 +20,8 @@ COLLABORA_DOMAIN=collabora.example.com
2220
# Regex of the ownCloud host CODE accepts as WOPI host. Escape every dot with a
2321
# backslash so it is not treated as a regex wildcard.
2422
OWNCLOUD_DOMAIN_REGEX=owncloud\.example\.com
25-
# Pin CODE to a specific version for reproducible, auditable upgrades rather than
26-
# tracking the floating "latest" tag. Bump this deliberately when upgrading.
27-
COLLABORA_IMAGE=24.04.13.2.1
2823
COLLABORA_ADMIN_USERNAME=admin
2924
COLLABORA_ADMIN_PASSWORD=CHANGE_ME_COLLABORA
3025

3126
# Reverse proxy (Traefik) and Let's Encrypt
32-
TRAEFIK_IMAGE=v3.3
3327
LETSENCRYPT_EMAIL=admin@example.com

modules/admin_manual/pages/installation/installing_with_docker.adoc

Lines changed: 1 addition & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ This example is a *starting point*, not a hardened deployment. Before you expose
149149
* *Keep the data tier private.* MariaDB and Redis are intentionally *not* published to the host and live on an internal `backend` network. Do not add `ports:` entries for them — an exposed, weakly-authenticated database or an unauthenticated Redis on a public host is trivially exploitable.
150150
* *Do not expose the Collabora admin console.* The example restricts the CODE admin console (`/browser/dist/admincontrol`, `/cool/adminws`) to private source ranges via a Traefik `ipallowlist` middleware. Adjust the ranges to match your network; never open these paths to the internet.
151151
* *Docker socket exposure.* The Traefik proxy mounts the Docker socket so it can read container labels. This grants control of the Docker daemon — effectively root on the host — and the `:ro` flag does *not* restrict the Docker API. For a hardened setup, place a scoped https://github.com/Tecnativa/docker-socket-proxy[docker-socket-proxy] in front of it.
152-
* *Pin image versions.* `COLLABORA_IMAGE` ships pinned to a specific version; keep it (and `OWNCLOUD_IMAGE`) pinned rather than tracking a floating `latest` tag, so upgrades are deliberate, reproducible, and auditable (see xref:#upgrading-owncloud[Upgrading ownCloud]).
152+
* *Pin image versions.* The MariaDB, Redis, Collabora and Traefik images are pinned to specific tags directly in the `docker-compose.yml` file (kept current automatically via Dependabot in the docs repository); the ownCloud version is set with `OWNCLOUD_IMAGE` in the `.env` file. Keep them pinned rather than tracking a floating `latest` tag, so upgrades are deliberate, reproducible, and auditable (see xref:#upgrading-owncloud[Upgrading ownCloud]).
153153
====
154154

155155
. Create an `.env` configuration file in the same directory, which contains the required configuration settings.
@@ -211,14 +211,6 @@ a| xref:{config-sample}#override-cli-url[OWNCLOUD_OVERWRITE_CLI_URL]
211211
| The MariaDB `owncloud` user password (also used by ownCloud to connect)
212212
| `CHANGE_ME_DB_APP`
213213

214-
| `MARIADB_IMAGE`
215-
| The mariadb version
216-
| `10.11`
217-
218-
| `REDIS_IMAGE`
219-
| The redis version
220-
| `7`
221-
222214
| `COLLABORA_DOMAIN`
223215
| The public hostname Collabora Online (CODE) is served at
224216
| `collabora.example.com`
@@ -228,10 +220,6 @@ a| The ownCloud host that CODE accepts as WOPI host, as a regular expression. +
228220
Escape every dot with a backslash.
229221
| `owncloud\.example\.com`
230222

231-
| `COLLABORA_IMAGE`
232-
| The Collabora Online (CODE) version
233-
| `latest`
234-
235223
| `COLLABORA_ADMIN_USERNAME`
236224
| The Collabora admin console username
237225
| `admin`
@@ -240,10 +228,6 @@ Escape every dot with a backslash.
240228
| The Collabora admin console password
241229
| `CHANGE_ME_COLLABORA`
242230

243-
| `TRAEFIK_IMAGE`
244-
| The Traefik reverse proxy version
245-
| `v3.3`
246-
247231
| `LETSENCRYPT_EMAIL`
248232
| The email address used for Let's Encrypt certificate registration
249233
| `admin@example.com`

tests/docker-compose/docker-compose.override.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,12 @@ services:
3535
- traefik.http.routers.collabora-admin.tls.certresolver=
3636

3737
proxy:
38+
# Pinned to v3.6 for the test harness (the shipped example uses v3.3): the
39+
# Docker provider in Traefik < 3.6 probes the daemon with API version 1.24
40+
# before negotiating, which Docker Engine >= 29 refuses. v3.6 negotiates
41+
# first, so the harness boots on modern local daemons and on CI alike. The
42+
# routing/TLS behaviour under test is identical across these 3.x releases.
43+
image: traefik:v3.6
3844
command:
3945
- --providers.docker=true
4046
- --providers.docker.exposedbydefault=false

tests/docker-compose/test.env

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,12 @@
77
# - test credentials (never reused anywhere real).
88

99
# Pinned so a run is reproducible and CI is not surprised by a new release.
10+
# Only OWNCLOUD_IMAGE is set here: the base compose file uses
11+
# owncloud/server:${OWNCLOUD_IMAGE} (its version tracks the docs release), while
12+
# the MariaDB, Redis, Collabora and Traefik tags are literal in the base file.
13+
# The harness pins Traefik to v3.6 via image: in docker-compose.override.yml
14+
# (the shipped v3.3 fails against Docker Engine >= 29 — see the note there).
1015
OWNCLOUD_IMAGE=10.15.0
11-
MARIADB_IMAGE=10.11
12-
REDIS_IMAGE=7
13-
COLLABORA_IMAGE=24.04.13.2.1
14-
# Pinned to v3.6 for the test harness (not v3.3 like the shipped example): the
15-
# Docker provider in Traefik < 3.6 probes the daemon with API version 1.24
16-
# before negotiating, which Docker Engine >= 29 refuses. v3.6 negotiates first,
17-
# so the harness boots on modern local daemons and on CI alike. The routing/TLS
18-
# behaviour under test is identical across these 3.x releases.
19-
TRAEFIK_IMAGE=v3.6
2016

2117
# *.localhost always resolves to 127.0.0.1; the smoke test uses curl --resolve.
2218
OWNCLOUD_DOMAIN=owncloud.localhost

0 commit comments

Comments
 (0)