Compare commits

..

25 Commits

Author SHA1 Message Date
Michael Barz
8efca76bdb Merge pull request #356 from opencloud-eu/renovate/stable-7.2-opencloudeu-opencloud-7.x
chore(deps): update opencloudeu/opencloud docker tag to v7.2.3 (stable-7.2)
2026-08-06 19:12:29 +02:00
renovate[bot]
b5baab2b00 chore(deps): update opencloudeu/opencloud docker tag to v7.2.3 2026-08-06 16:59:01 +00:00
Michael Barz
21467e4f1a Merge pull request #345 from opencloud-eu/renovate/stable-7.2-collabora-code-26.x
chore(deps): update collabora/code docker tag to v26.04.2.4.1 (stable-7.2)
2026-07-29 15:52:23 +02:00
micbar
a930989ec7 feat: add proof key side car 2026-07-29 13:54:38 +02:00
kellergoech
6ff4fb4417 Adjust collavora to new distroless container 2026-07-29 13:54:18 +02:00
renovate[bot]
68a2f53ef2 chore(deps): update collabora/code docker tag to v26.04.2.4.1 2026-07-24 03:04:08 +00:00
Michael Barz
fffb04bac2 Merge pull request #342 from opencloud-eu/renovate/stable-7.2-collabora-code-26.x
chore(deps): update collabora/code docker tag to v26.04.2.2.1 (stable-7.2)
2026-07-19 18:29:22 +02:00
renovate[bot]
c72832dc8a chore(deps): update collabora/code docker tag to v26.04.2.2.1 2026-07-18 21:09:05 +00:00
Viktor Scharf
32d9e5fb50 Merge pull request #337 from opencloud-eu/renovate/stable-7.2-opencloudeu-opencloud-7.x
chore(deps): update opencloudeu/opencloud docker tag to v7.2.2 (stable-7.2)
2026-07-14 13:26:57 +02:00
renovate[bot]
e6256ebadb chore(deps): update opencloudeu/opencloud docker tag to v7.2.2 2026-07-14 11:25:15 +00:00
Viktor Scharf
8b271811a6 Merge pull request #336 from opencloud-eu/add-revovate-dependancy-to-stable
Add Renovate comment for opencloud dependency
2026-07-14 13:24:31 +02:00
Viktor Scharf
40882d6f8f Add Renovate comment for opencloud dependency 2026-07-14 11:27:13 +02:00
Viktor Scharf
2ec04b4466 Merge pull request #334 from opencloud-eu/fix/renovate-stable-7.2-use-production-image
fix: use docker image to production release on stable-7.2
2026-07-10 14:48:19 +02:00
Viktor Scharf
2c72369d24 Update docker-compose.yml 2026-07-10 10:03:01 +02:00
v.scharf
6d3a1f8c49 remove renovate from stable-7.2 2026-07-10 09:49:34 +02:00
v.scharf
cc1471e467 fix: use docker image to production release on stable-7.2 2026-07-10 09:43:07 +02:00
v.scharf
300fc4779b fix: use docker image to production release on stable-7.2 2026-07-10 09:39:48 +02:00
Michael Barz
12efcc9e91 Merge pull request #330 from opencloud-eu/renovate/stable-7.2-quay.io-keycloak-keycloak-26.x
chore(deps): update quay.io/keycloak/keycloak docker tag to v26.6.4 (stable-7.2)
2026-07-01 13:11:04 +02:00
renovate[bot]
cd22ba6f6e chore(deps): update quay.io/keycloak/keycloak docker tag to v26.6.4 2026-07-01 11:09:33 +00:00
Michael Barz
23f4b6eefe Merge pull request #329 from opencloud-eu/renovate/stable-7.2-collabora-code-26.x
chore(deps): update collabora/code docker tag to v26.04.2.1.1 (stable-7.2)
2026-07-01 13:08:42 +02:00
renovate[bot]
225740f7d4 chore(deps): update collabora/code docker tag to v26.04.2.1.1 2026-07-01 10:59:22 +00:00
Anja Barz
f74c434267 Merge pull request #316 from opencloud-eu/backport/313
Backport/313
2026-06-24 10:26:48 +02:00
Anja Barz
e2c680ea6b change the scopes for the clients 2026-06-24 10:23:27 +02:00
Anja Barz
b0fdcec0a3 add the default ids and scopes for the clients 2026-06-24 10:23:27 +02:00
Viktor Scharf
a0f9ffbc6f Merge pull request #315 from opencloud-eu/sync-main-to-stable
Sync main to stable
2026-06-23 13:04:46 +02:00
17 changed files with 84 additions and 188 deletions

View File

@@ -25,9 +25,9 @@ INSECURE=true
# External IDP
#COMPOSE_FILE=docker-compose.yml:weboffice/collabora.yml:traefik/opencloud.yml:traefik/collabora.yml:idm/external-idp.yml
# Euro Office with traefik and letsencrypt
#COMPOSE_FILE=docker-compose.yml:weboffice/euro-office.yml:traefik/opencloud.yml:traefik/euro-office.yml
#COMPOSE_FILE=docker-compose.yml:weboffice/euroffice.yml:traefik/opencloud.yml:traefik/euroffice.yml
# Euro Office with external proxy (Nginx, Caddy, etc.)
#COMPOSE_FILE=docker-compose.yml:weboffice/euro-office.yml:external-proxy/opencloud.yml:external-proxy/euro-office.yml
#COMPOSE_FILE=docker-compose.yml:weboffice/euroffice.yml:external-proxy/opencloud.yml:external-proxy/euroffice.yml
## Traefik Settings ##
# Note: Traefik is always enabled and can't be disabled.
@@ -87,7 +87,7 @@ TRAEFIK_LOG_LEVEL=
# For production releases: "opencloudeu/opencloud"
# For rolling releases: "opencloudeu/opencloud-rolling"
# Defaults to production if not set otherwise
OC_DOCKER_IMAGE=opencloudeu/opencloud-rolling
OC_DOCKER_IMAGE=opencloudeu/opencloud
# The openCloud container version.
# Defaults to the latest version-tag. Use git pull to update.
OC_DOCKER_TAG=

View File

@@ -147,12 +147,12 @@ Include Euro Office for document editing using either method:
Using `-f` flags:
```bash
docker compose -f docker-compose.yml -f weboffice/euro-office.yml -f traefik/opencloud.yml -f traefik/euro-office.yml up -d
docker compose -f docker-compose.yml -f weboffice/euroffice.yml -f traefik/opencloud.yml -f traefik/euroffice.yml up -d
```
Or by setting in `.env`:
```
COMPOSE_FILE=docker-compose.yml:weboffice/euro-office.yml:traefik/opencloud.yml:traefik/euro-office.yml
COMPOSE_FILE=docker-compose.yml:weboffice/euroffice.yml:traefik/opencloud.yml:traefik/euroffice.yml
```
> **For local development only**: Add to `/etc/hosts`:
@@ -271,12 +271,12 @@ The WOPI server runs inside the OpenCloud process and is served on the OpenCloud
To use Euro Office instead of Collabora behind an external proxy, swap the web office compose files:
```bash
docker compose -f docker-compose.yml -f weboffice/euro-office.yml -f external-proxy/opencloud.yml -f external-proxy/euro-office.yml up -d
docker compose -f docker-compose.yml -f weboffice/euroffice.yml -f external-proxy/opencloud.yml -f external-proxy/euroffice.yml up -d
```
Or by setting in `.env`:
```
COMPOSE_FILE=docker-compose.yml:weboffice/euro-office.yml:external-proxy/opencloud.yml:external-proxy/euro-office.yml
COMPOSE_FILE=docker-compose.yml:weboffice/euroffice.yml:external-proxy/opencloud.yml:external-proxy/euroffice.yml
```
This exposes the necessary ports:
@@ -286,7 +286,7 @@ This exposes the necessary ports:
As with Collabora, the WOPI server is served on the OpenCloud port (9200) under the `/wopi` and `/collaboration` paths and needs no separate port.
> [!WARNING]
> `external-proxy/euro-office.yml` binds the exposed ports to `127.0.0.1` only. If your external proxy runs on a different host, use `external-proxy/euro-office-exposed.yml`, which binds to all interfaces (`0.0.0.0`). Only expose these ports when you know what you are doing.
> `external-proxy/euroffice.yml` binds the exposed ports to `127.0.0.1` only. If your external proxy runs on a different host, use `external-proxy/euroffice-exposed.yml`, which binds to all interfaces (`0.0.0.0`). Only expose these ports when you know what you are doing.
**Please note:**
If you're using **Nginx Proxy Manager (NPM)**, you **should NOT** activate **"Block Common Exploits"** for the Proxy Host.
@@ -319,12 +319,12 @@ OpenCloud Compose supports adding SSL certificates for public domains and develo
### Use Let's Encrypt with ACME Challenge
1. **Enable Let's Encrypt**:
- Set `TRAEFIK_ACME_MAIL` to your email address for the ACME challenge
- Set `TRAEFIK_LETSENCRYPT_EMAIL` to your email address for the ACME challenge
- Set `TRAEFIK_SERVICES_TLS_CONFIG="tls.certresolver=letsencrypt"` to use Let's Encrypt (default value)
```bash
# In your .env file
TRAEFIK_ACME_MAIL=devops@your-domain.tld
TRAEFIK_LETSENCRYPT_EMAIL=devops@your-domain.tld
TRAEFIK_SERVICES_TLS_CONFIG="tls.certresolver=letsencrypt"
```
@@ -412,7 +412,7 @@ Key variables:
| `LDAP_BIND_PASSWORD` | LDAP password for the bind user | admin |
| `KC_DB_USERNAME` | Database user for keycloak | keycloak |
| `KC_DB_PASSWORD` | Database password for keycloak | keycloak |
| `TRAEFIK_ACME_MAIL` | Email Address for the Let's Encrypt ACME challenge | example@example.org |
| `TRAEFIK_LETSENCRYPT_EMAIL` | Email Address for the Let's Encrypt ACME challenge | example@example.org |
| `TRAEFIK_SERVICES_TLS_CONFIG` | Tell traefik and the services which TLS config to use | tls.certresolver=letsencrypt |
| `TRAEFIK_CERTS_DIR` | Directory for custom certificates. | ./certs |

View File

@@ -1,9 +1,8 @@
:root {
--pf-v5-global--primary-color--100: #e2baff;
--pf-v5-global--primary-color--200: #e2baff;
--pf-v5-global--primary-color--dark-100: #e2baff;
--pf-v5-c-button--m-secondary--Color: #e2baff;
--pf-v5-global--Color--light-100: #20434f;
--pf-global--primary-color--100: #e2baff;
--pf-global--primary-color--200: #e2baff;
--pf-global--primary-color--dark-100: #e2baff;
--pf-global--Color--light-100: #20434f;
}
@font-face {
@@ -22,36 +21,18 @@
body {
font-family: "OpenCloud", "Open Sans", Helvetica, Arial, sans-serif;
background: url(../img/background.png) no-repeat center fixed !important;
background: url(../img/background.png) no-repeat center !important;
background-size: cover !important;
}
.kc-logo-text {
display: block;
width: 300px;
height: 63px;
background: url('../img/logo.svg') no-repeat center;
background-image: url(../img/logo.svg) !important;
background-size: contain;
width: 400px;
margin: 0 !important;
}
.kc-logo-text span {
display: none;
}
#kc-header-wrapper {
#kc-header-wrapper{
display: flex;
justify-content: center;
}
.pf-v5-c-login__main-header {
border-top: 4px solid var(--pf-v5-global--primary-color--100);
}
@media (min-width: 1200px) {
.pf-v5-c-login__container {
grid-template-columns: 34rem;
grid-template-areas:
"header"
"main";
}
}
}

View File

@@ -16,4 +16,4 @@ document.addEventListener("DOMContentLoaded", function () {
}
setLogoUrl('https://opencloud.eu')
});
});

View File

@@ -1,5 +1,5 @@
parent=keycloak.v2
parent=keycloak
import=common/keycloak
styles=css/login.css css/theme.css
scripts=js/script.js
scripts=js/script.js

View File

@@ -25,7 +25,6 @@ directives:
- 'https://${EURO_OFFICE_DOMAIN|euro-office.opencloud.test}${TRAEFIK_PORT_HTTPS}/'
# This is needed for the external-sites web extension when embedding sites
- 'https://docs.opencloud.eu'
- 'https://${IDP_DOMAIN|keycloak.opencloud.test}${TRAEFIK_PORT_HTTPS}/'
img-src:
- '''self'''
- 'data:'

View File

@@ -1,8 +1,8 @@
---
services:
opencloud:
# renovate: depName=opencloudeu/opencloud-rolling
image: ${OC_DOCKER_IMAGE:-opencloudeu/opencloud-rolling}:${OC_DOCKER_TAG:-7.2.0}
# renovate: depName=opencloudeu/opencloud
image: ${OC_DOCKER_IMAGE:-opencloudeu/opencloud}:${OC_DOCKER_TAG:-7.2.3}
# changelog: https://github.com/opencloud-eu/opencloud/tree/main/changelog
# release notes: https://docs.opencloud.eu/opencloud_release_notes.html
user: ${OC_CONTAINER_UID_GID:-1000:1000}

View File

@@ -1,9 +1,9 @@
---
services:
opencloud:
environment:
# bind to all interfaces
PROXY_HTTP_ADDR: "0.0.0.0:9200"
ports:
# expose the opencloud server on localhost
- "127.0.0.1:9200:9200"
environment:
# bind to all interfaces
PROXY_HTTP_ADDR: "0.0.0.0:9200"
ports:
# expose the opencloud server on localhost
- "127.0.0.1:9200:9200"

View File

@@ -1,43 +0,0 @@
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"platformAutomerge": true,
"enabledManagers": ["docker-compose", "custom.regex"],
"baseBranchPatterns": ["main", "stable-4.0", "stable-7.2"],
"packageRules": [
{
"matchManagers": ["docker-compose", "custom.regex"],
"labels": ["Type:Dependencies", "Bot:Renovate"]
},
{
"matchManagers": ["docker-compose"],
"matchUpdateTypes": ["patch"],
"automerge": true
},
{
"matchBaseBranches": ["stable-4.0", "stable-7.2"],
"matchUpdateTypes": ["major", "minor"],
"enabled": false
},
{
"matchPackageNames": ["postgres"],
"matchManagers": ["docker-compose"],
"allowedVersions": "/^17\\.\\d+-alpine$/"
}
],
"docker-compose": {
"managerFilePatterns": ["/.+\\.ya?ml$/"]
},
"customManagers": [
{
"customType": "regex",
"managerFilePatterns": [
"/^docker-compose\\.yml$/",
"/^weboffice\\/collabora\\.yml$/"
],
"matchStrings": [
"# renovate: depName=(?<depName>[^\\s]+)\\n\\s+image: \\$\\{[^}]+\\}:\\$\\{[^}]+-(?<currentValue>[0-9]+\\.[0-9]+\\.[0-9]+)\\}"
],
"datasourceTemplate": "docker"
}
]
}

View File

@@ -1,59 +0,0 @@
---
services:
opencloud:
environment:
# Point the search service at OpenSearch instead of the embedded bleve index.
SEARCH_ENGINE_TYPE: open-search
SEARCH_ENGINE_OPEN_SEARCH_CLIENT_ADDRESSES: http://opensearch:9200
SEARCH_ENGINE_OPEN_SEARCH_CLIENT_INSECURE: "true"
SEARCH_ENGINE_OPEN_SEARCH_RESOURCE_INDEX_NAME: ${OPENSEARCH_RESOURCE_INDEX:-opencloud-resources}
depends_on:
opensearch:
condition: service_healthy
opensearch:
image: ${OPENSEARCH_DOCKER_IMAGE:-opensearchproject/opensearch}:${OPENSEARCH_DOCKER_TAG:-2.19.5}
environment:
discovery.type: single-node
bootstrap.memory_lock: "true"
OPENSEARCH_JAVA_OPTS: ${OPENSEARCH_JAVA_OPTS:--Xms512m -Xmx512m}
# Security plugin is disabled: OpenSearch is only reachable on the
# internal opencloud-net bridge and no port is published to the host.
# Do NOT enable a published port or expose this via the reverse proxy
# without first enabling and configuring the security plugin.
DISABLE_SECURITY_PLUGIN: "true"
DISABLE_INSTALL_DEMO_CONFIG: "true"
# Disable the disk-based shard allocation watermarks. By default OpenSearch
# marks indices read-only when the host disk is <5% free, which silently
# turns bulk upserts into no-ops. Fine to disable on a single-node dev box.
cluster.routing.allocation.disk.threshold_enabled: "false"
ulimits:
memlock:
soft: -1
hard: -1
nofile:
soft: 65536
hard: 65536
networks:
opencloud-net:
volumes:
- ${OPENSEARCH_DATA_DIR:-opensearch-data}:/usr/share/opensearch/data
healthcheck:
# Single-node clusters can't go green (replicas have nowhere to land), so
# yellow is the healthy state. Still gates opencloud until opensearch accepts
# requests.
test:
[
"CMD-SHELL",
"curl -sf 'http://localhost:9200/_cluster/health?wait_for_status=yellow&timeout=5s' > /dev/null || exit 1"
]
interval: 5s
timeout: 10s
retries: 24
start_period: 60s
logging:
driver: ${LOG_DRIVER:-local}
restart: always
volumes:
opensearch-data:

View File

@@ -11,18 +11,6 @@ services:
restart: always
logging:
driver: ${LOG_DRIVER:-local}
healthcheck:
test:
[
"CMD",
"bash",
"-c",
"exec 3<>/dev/tcp/127.0.0.1/9998 && printf 'GET /tika HTTP/1.1\r\nHost: localhost\r\nConnection: close\r\n\r\n' >&3 && grep '200 OK' <&3",
]
interval: 5s
timeout: 5s
retries: 10
start_period: 5s
opencloud:
environment:
@@ -30,6 +18,3 @@ services:
SEARCH_EXTRACTOR_TYPE: tika
SEARCH_EXTRACTOR_TIKA_TIKA_URL: http://tika:9998
FRONTEND_FULL_TEXT_SEARCH_ENABLED: "true"
depends_on:
tika:
condition: service_healthy

View File

@@ -16,7 +16,7 @@ services:
- "traefik.http.services.opencloud.loadbalancer.server.port=9200"
- "traefik.http.routers.opencloud.${TRAEFIK_SERVICES_TLS_CONFIG}"
traefik:
image: traefik:v3.7.7
image: traefik:v3.6.14
# release notes: https://github.com/traefik/traefik/releases
user: ${TRAEFIK_CONTAINER_UID_GID:-0:0}
networks:

View File

@@ -23,22 +23,50 @@ services:
COLLABORATION_APP_INSECURE: "${INSECURE:-true}"
COLLABORATION_CS3API_DATAGATEWAY_INSECURE: "${INSECURE:-true}"
# One-shot service that generates the WOPI proof key on first start and
# keeps it in a named volume, like the proofKeyGeneration feature of the
# collabora-online helm chart.
# To rotate the key, remove the volume and start again:
# docker compose down collabora && docker volume rm <project>_collabora-proof-key
collabora-proof-key:
image: alpine/openssl:3.5.7
entrypoint: ["/bin/sh"]
command:
- -ec
- |
if [ ! -s /proof/proof_key ]; then
openssl genrsa -traditional -out /proof/proof_key.tmp 4096
chown 1001:1001 /proof/proof_key.tmp
chmod 400 /proof/proof_key.tmp
mv /proof/proof_key.tmp /proof/proof_key
echo "WOPI proof key generated"
else
echo "WOPI proof key already exists"
fi
volumes:
- collabora-proof-key:/proof
logging:
driver: ${LOG_DRIVER:-local}
restart: "no"
collabora:
image: collabora/code:26.04.2.1.1
image: collabora/code:26.04.2.4.1
# release notes: https://www.collaboraonline.com/release-notes/
networks:
opencloud-net:
depends_on:
collabora-proof-key:
condition: service_completed_successfully
environment:
# WOPI host allowlist; the WOPI endpoint is served by the opencloud proxy on the opencloud domain
aliasgroup1: https://${OC_DOMAIN:-cloud.opencloud.test}${TRAEFIK_PORT_HTTPS:+:}${TRAEFIK_PORT_HTTPS:-}
DONT_GEN_SSL_CERT: "YES"
extra_params: |
--o:ssl.enable=${COLLABORA_SSL_ENABLE:-true} \
--o:ssl.ssl_verification=${COLLABORA_SSL_VERIFICATION:-true} \
--o:ssl.termination=true \
--o:welcome.enable=false \
--o:net.frame_ancestors=${OC_DOMAIN:-cloud.opencloud.test}${TRAEFIK_PORT_HTTPS:+:}${TRAEFIK_PORT_HTTPS:-} \
--o:net.lok_allow.host[14]=${OC_DOMAIN:-cloud.opencloud.test}${TRAEFIK_PORT_HTTPS:+:}${TRAEFIK_PORT_HTTPS:-} \
extra_params: >
--o:ssl.enable=${COLLABORA_SSL_ENABLE:-true}
--o:ssl.ssl_verification=${COLLABORA_SSL_VERIFICATION:-true}
--o:ssl.termination=true
--o:welcome.enable=false
--o:net.frame_ancestors=${OC_DOMAIN:-cloud.opencloud.test}${TRAEFIK_PORT_HTTPS:+:}${TRAEFIK_PORT_HTTPS:-}
--o:net.lok_allow.host[14]=${OC_DOMAIN:-cloud.opencloud.test}${TRAEFIK_PORT_HTTPS:+:}${TRAEFIK_PORT_HTTPS:-}
--o:home_mode.enable=${COLLABORA_HOME_MODE:-false}
username: ${COLLABORA_ADMIN_USER:-admin}
password: ${COLLABORA_ADMIN_PASSWORD:-admin}
@@ -52,19 +80,24 @@ services:
# (e.g. Microsoft fonts like Arial, Calibri, Cambria by installing the `ttf-mscorefonts-installer` package).
- /usr/share/fonts/truetype:/usr/share/fonts/truetype/more:ro
- /usr/share/fonts/truetype:/opt/cool/systemplate/usr/share/fonts/truetype/more:ro
# WOPI proof key generated by the collabora-proof-key service.
- type: volume
source: collabora-proof-key
target: /etc/coolwsd/proof_key
read_only: true
volume:
subpath: proof_key
logging:
driver: ${LOG_DRIVER:-local}
restart: always
entrypoint: [ '/bin/bash', '-c' ]
command: [ 'coolconfig generate-proof-key && /start-collabora-online.sh' ]
healthcheck:
test:
[
"CMD",
"bash",
"-c",
"exec 3<>/dev/tcp/127.0.0.1/9980 && printf 'GET /hosting/discovery HTTP/1.1\r\nHost: localhost\r\nConnection: close\r\n\r\n' >&3 && cat <&3 | head -1 | grep -q '200 OK'"
]
# --use-env-vars makes the probe read extra_params, so it probes with
# the same http/https scheme the server actually runs with; without it
# the probe falls back to coolwsd.xml where ssl.enable defaults to true
test: ["CMD", "/usr/bin/coolwsd", "--probe", "--use-env-vars"]
interval: 15s
timeout: 10s
retries: 5
volumes:
collabora-proof-key: