Skip to content

Repository files navigation

docker-nextcloud-eurooffice

Thin layer on top of the official nextcloud image (*-apache) that only bakes in the entrypoint hooks, so the Euro-Office integration is automatically installed, enabled and configured on first container start.

Nothing in the Nextcloud image itself is changed – only a script under /docker-entrypoint-hooks.d/post-installation/ is added (hook mechanism).

Automated builds

The workflow .github/workflows/build.yml builds the image and publishes it to GHCR:

  • schedule (every 12 h): checks via lucacome/docker-image-update-checker whether the base image behind nextcloud:stable-apache changed, and only builds then – so new Nextcloud releases are picked up automatically without unnecessary builds.
  • push to main and workflow_dispatch (manual): always build.

Tags: ghcr.io/mittwald/nextcloud-eurooffice:stable-apache, :latest and the concrete major (e.g. :34-apache) for pinning/rollback.

Tags built from this workflow are multi-platform manifests for linux/amd64 and linux/arm64, so the image also runs on Apple Silicon and arm64 servers. Tags published before this change stay amd64-only until they are rebuilt. Since the Dockerfile only copies files onto the multi-arch base image, no emulation is involved in the build.

The built Nextcloud major is pinned via NEXTCLOUD_VERSION in the workflow (currently 34). Since Nextcloud only migrates one major at a time, bump it one major at a time so none is skipped.

Usage

Quick try with the bundled demo stack (docker-compose.yaml):

docker compose up -d   # -> http://localhost:8080

Or use the image directly:

services:
  nextcloud-app:
    image: ghcr.io/mittwald/nextcloud-eurooffice:stable-apache
    # ... rest of the Nextcloud configuration

Production

docker-compose.prod.yaml for running behind a TLS-terminating reverse proxy (e.g. Mittwald container hosting). Secrets/domains come from a .env (see the file header):

docker compose -f docker-compose.prod.yaml up -d

Since the proxy speaks plain HTTP internally, the prod compose sets OVERWRITEPROTOCOL, OVERWRITECLIURL and TRUSTED_PROXIES (otherwise URLs are generated as http:// → mixed content). These are applied directly by the nextcloud image into config.php.

Environment variables

The hook evaluates these variables (each only applied when set):

Variable Effect (occ config:app:set eurooffice …)
EUROOFFICE_DOMAIN DocumentServerUrl (browser → Office); https:// is prepended unless a scheme is already given
EUROOFFICE_JWT_SECRET jwt_secret (min. 32 characters)
EUROOFFICE_INTERNAL_URL DocumentServerInternalUrl (Nextcloud → Office, internal)
NEXTCLOUD_INTERNAL_URL StorageUrl (Office → Nextcloud, internal)

Config keys per https://github.com/Euro-Office/eurooffice-nextcloud.

The Euro-Office app is only in the app store from Nextcloud 34 on. On 33 the hook tolerates the missing package (|| true), so the start does not abort.

Build locally

docker build -t nextcloud-eurooffice:34-apache .
# or pin another version:
docker build --build-arg NEXTCLOUD_VERSION=33 -t nextcloud-eurooffice:33 .

For both platforms at once (result stays in the build cache unless you add --push or --load):

docker buildx build --platform linux/amd64,linux/arm64 -t nextcloud-eurooffice:34-apache .

About

Nextcloud (stable-apache) image with the Euro-Office integration auto-enabled and configured on first start.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages