Compare commits

...

51 Commits

Author SHA1 Message Date
Alexander Ackermann
6be2c824ea chore: add update server to csp.yaml (cors) 2025-10-13 13:20:40 +02:00
Thomas Schweiger
3d82f1b60b Merge pull request #110 from opencloud-eu/fix/do-not-expose-ldap-service
enhane: do not expose ldap service
2025-10-07 11:39:06 +02:00
Thomas Schweiger
c55b36b559 enhane: do not expose ldap service 2025-10-07 11:08:35 +02:00
Michael Barz
ce65001eba Merge pull request #107 from mwllgr/main
Change image for OpenLDAP in external-idp to bitnamilegacy
2025-10-04 16:36:45 +02:00
mwllgr
b88b80539b Change image for OpenLDAP in external-idp to bitnamilegacy 2025-10-04 16:23:37 +02:00
Thomas Schweiger
6502f1fee7 Merge pull request #103 from opencloud-eu/fix/enable-password-hashing-for-ldap
fix: fix passwords, changed via Keycloak, are not hashed in LDAP #102
2025-09-30 19:23:21 +02:00
Thomas Schweiger
ef64eb6b92 fix: fix passwords changed via Keycloak are not hashed in LDAP #102 2025-09-30 14:21:11 +02:00
Thomas Schweiger
07183c14fc Merge pull request #101 from opencloud-eu/traefik-enable-local-certs
fix: fix syntax of certs.yml configuration file example
2025-09-29 17:18:09 +02:00
Thomas Schweiger
409d775471 fix: fix typo 2025-09-29 14:42:45 +02:00
Thomas Schweiger
ad89914a81 fix: fix syntax of certs.yml configuration file example 2025-09-29 14:12:37 +02:00
Michael Flemming
5c26c75080 Merge pull request #100 from opencloud-eu/pin_postgres_version
quick fix for breaking changes in postgres 18 by pinning to 17
2025-09-26 17:53:21 +02:00
Michael 'Flimmy' Flemming
27aa8f40f1 quick fix for breaking changes in postgres 18 by pinning to 17 2025-09-26 17:51:38 +02:00
Michael Barz
b7078d309b Merge pull request #91 from opencloud-eu/collabora-healthcheck
enhancement: improve collabora health check
2025-09-15 16:33:42 +02:00
Michael Barz
c2cd669fc1 Merge pull request #94 from opencloud-eu/fix-external-idp
fix: add script-src to csp
2025-09-15 16:32:55 +02:00
Michael Barz
9a3a217c78 fix: add script-src to csp 2025-09-15 16:04:05 +02:00
Michael Barz
7cd7e19d6f Merge pull request #92 from opencloud-eu/fix-sender
fix: smtp sender cannot use nested env var
2025-09-12 09:47:46 +02:00
Michael Barz
311670fc14 Merge pull request #90 from opencloud-eu/clarify-dns
style: clarify DNS setup
2025-09-12 09:47:24 +02:00
Michael Barz
97fbdbe85f fix: smtp sender cannot use nested env var 2025-09-11 22:26:59 +02:00
Michael Barz
fe3497ec51 enhancement: improve collabora health check 2025-09-11 22:06:03 +02:00
Michael Barz
c8557c3455 style: clarify DNS setup 2025-09-11 21:27:54 +02:00
Michael Barz
779c4e1daf fix: remove unused minio config 2025-09-08 22:23:52 +02:00
Michael Barz
bfc2a64a79 Merge pull request #84 from lxusrbin/traefik-version
Update traefik image tag
2025-09-04 13:03:25 +02:00
Michael Barz
f6d384b411 Merge pull request #85 from opencloud-eu/setDefaultAdminPass
set default admin password
2025-09-04 13:02:56 +02:00
Viktor Scharf
1c1ccef59c change sequence of steps in readmi 2025-09-04 12:38:17 +02:00
Viktor Scharf
487b73f0b3 set default admin password 2025-09-04 11:37:06 +02:00
Michael Barz
d94ac7a036 Merge pull request #72 from opencloud-eu/disable-dcr
Disable Client Registration
2025-09-03 16:14:35 +02:00
Christian Frost
81904c946a Update traefik image tag 2025-08-29 12:35:56 +02:00
Michael Barz
55021b319a Merge pull request #82 from protronic/main
update external-keycloak
2025-08-26 17:55:48 +02:00
root
817244159c update external-keycloak 2025-08-26 16:20:36 +02:00
Michael Barz
4978313c41 Merge pull request #80 from opencloud-eu/keycloak-26
chore: update keycloak
2025-08-25 12:55:11 +02:00
Michael Barz
29b44b0c78 chore: update keycloak 2025-08-24 19:46:19 +02:00
Alex
5d5b9d56bf Merge pull request #79 from opencloud-eu/bump-collabora-to-25.04.4.2.1
chore: bump collabora to collabora/code:25.04.4.2.1
2025-08-20 11:39:28 +02:00
Alexander Ackermann
eba7ee156e chore: bump collabora to collabora/code:25.04.4.2.1 2025-08-20 11:23:53 +02:00
Michael Flemming
3e25f30a59 Merge pull request #78 from opencloud-eu/fix_ldap_keycloak_password
add ENV:LDAP_ADMIN_PASSWORD to keycloak container
2025-08-20 09:04:36 +02:00
Michael 'Flimmy' Flemming
95780abbb1 add ENV:LDAP_ADMIN_PASSWORD to keycloak container 2025-08-19 16:53:38 +02:00
Michael Barz
516632bc7c Fix tika.yml folder name 2025-08-07 18:11:41 +02:00
Michael Barz
c5f7c6bb24 Disable Client Registration 2025-08-07 13:07:03 +02:00
Michael Barz
ecfb9248ef Merge pull request #71 from dschmidt/feat/idp-external-authelia
feat: add external authelia idp config
2025-08-04 20:38:56 +02:00
Dominik Schmidt
8283fcdaed fix: update wording 2025-08-04 20:34:16 +02:00
Michael Barz
408915d4b8 Merge pull request #70 from dschmidt/refactor/monitoring-without-collaboration
refactor: split monitoring configuration
2025-08-04 20:30:45 +02:00
Dominik Schmidt
0499302058 docs: explain how to bootstrap an admin user with authelia (currently) 2025-08-01 08:57:56 +02:00
Dominik Schmidt
bd8188c9df feat: add external-authelia idp config 2025-07-31 18:06:32 +02:00
Dominik Schmidt
3a39f8a26b fix: remove keycloak volumes from generic external idp configuration 2025-07-31 18:04:57 +02:00
Dominik Schmidt
66816a3189 feat: make ldap-server volumes configurable 2025-07-31 18:04:57 +02:00
Dominik Schmidt
ead601d1f5 refactor: split monitoring configuration 2025-07-31 17:53:03 +02:00
Michael Barz
c01f0f7efb Merge pull request #69 from dschmidt/patch-1
Fix typo in .env.example
2025-07-30 17:38:08 +02:00
Dominik Schmidt
35a47c394e Fix typo in .env.example 2025-07-30 17:08:55 +02:00
Michael Barz
0007b3b191 Merge pull request #67 from opencloud-eu/traefik-logs
feat: make traefik log level configurable
2025-07-15 11:42:57 +02:00
Michael Barz
506309f3e2 feat: make traefik log level configurable 2025-07-15 11:30:21 +02:00
Michael Barz
42d0981b9e fix: default compose files path 2025-07-14 16:14:33 +02:00
Michael Barz
f32aada40f Merge pull request #62 from opencloud-eu/admin-password
change: increase importance of setting a custom admin password
2025-07-04 11:43:15 +02:00
16 changed files with 142 additions and 62 deletions

View File

@@ -10,7 +10,7 @@ INSECURE=true
## Features ##
# The following variable is a convenience variable to enable or disable features of this compose project.
# Example: if you want to use traefik and letsencrypt, you can set the variable to
# COMPOSE_FILE=docker-compose.yml:docker-compose.traefik.yml
#COMPOSE_FILE=docker-compose.yml:traefik/opencloud.yml
# This enables you to just run `docker compose up -d` and the compose files will be added to the stack.
# As alternative approach you can run `docker compose -f docker-compose.yml -f docker-compose.traefik.yml up -d`
# Default: OpenCloud and Collabora with traefik and letsencypt
@@ -59,8 +59,13 @@ TRAEFIK_SERVICES_TLS_CONFIG="tls.certresolver=letsencrypt"
# stores:
# - default
#
# The certificates need to copied into ./certs/, the absolute path inside the container is /certs/.
# The certificates need to be copied into ./certs/, the absolute path inside the container is /certs/.
# You can also use TRAEFIK_CERTS_DIR=/path/on/host to set the path to the certificates directory.
# Enable the access log for Traefik by setting the following variable to true.
TRAEFIK_ACCESS_LOG=
# Configure the log level for Traefik.
# Possible values are "TRACE", "DEBUG", "INFO", "WARN", "ERROR", "FATAL" and "PANIC". Default is "ERROR".
TRAEFIK_LOG_LEVEL=
## OpenCloud Settings ##
@@ -109,6 +114,9 @@ LOG_LEVEL=
# NOTE: you need to restart the openCloud container to load the new extensions.
# OC_APPS_DIR=/your/local/opencloud/apps
# Define the ldap-server storage location. Set the paths for config and data to a local path.
# LDAP_CERTS_DIR=
# LDAP_DATA_DIR=
# S3 Storage configuration - optional
# OpenCloud supports S3 storage as primary storage.
@@ -126,12 +134,6 @@ DECOMPOSEDS3_ACCESS_KEY=
DECOMPOSEDS3_SECRET_KEY=
# S3 bucket. Defaults to "opencloud"
DECOMPOSEDS3_BUCKET=
#
# For testing purposes, add local minio S3 storage to the docker-compose file.
# The leading colon is required to enable the service.
#DECOMPOSEDS3_MINIO=:minio.yml
# Minio domain. Defaults to "minio.opencloud.test".
MINIO_DOMAIN=
# Define SMTP settings if you would like to send OpenCloud email notifications.
@@ -169,8 +171,8 @@ START_ADDITIONAL_SERVICES="notifications"
# Tika (search) is disabled by default due to performance reasons.
# Tika is used to extract metadata and text from various file formats.
# Enable it by adding the following to the COMPOSE_FILE variable:
# tika/tika.yml or by using the following command:
# docker compose -f docker-compose.yml -f tika/tika.yml up -d
# search/tika.yml or by using the following command:
# docker compose -f docker-compose.yml -f search/tika.yml up -d
# Set the desired docker image tag or digest.
# Defaults to "apache/tika:latest-full"
TIKA_IMAGE=
@@ -274,7 +276,7 @@ IDP_DOMAIN=
# We need the complete URL, including the protocol (http or https) and the realm.
# Example: "https://keycloak.opencloud.test/realms/openCloud"
IDP_ISSUER_URL=
# Url of the account endit page from your Identity Provider.
# Url of the account edit page from your Identity Provider.
IDP_ACCOUNT_URL=
## Shared User Directory Mode ##

View File

@@ -40,7 +40,10 @@ OpenCloud Compose offers a modular approach to deploying OpenCloud with several
> **Note**: The repository includes `.env.example` as a template with default settings and documentation. Your actual `.env` file is excluded from version control (via `.gitignore`) to prevent accidentally committing sensitive information like passwords and domain-specific settings.
3. **Configure deployment options**:
3. **Set admin password**:
set `INITIAL_ADMIN_PASSWORD=your_secure_password` environment variable in your `.env` file
4. **Configure deployment options**:
You can deploy using explicit `-f` flags:
```bash
@@ -57,22 +60,24 @@ OpenCloud Compose offers a modular approach to deploying OpenCloud with several
docker compose up -d
```
4. **Add local domains to `/etc/hosts`**:
5. **Add local domains to `/etc/hosts`** (for local development only):
```
127.0.0.1 cloud.opencloud.test
127.0.0.1 traefik.opencloud.test
127.0.0.1 keycloak.opencloud.test
```
5. **Access OpenCloud**:
6. **Access OpenCloud**:
- URL: https://cloud.opencloud.test
- Username: `admin`
- Password: Set via `INITIAL_ADMIN_PASSWORD` environment variable in your `.env` file
- Password: value of your `INITIAL_ADMIN_PASSWORD`
### Production Deployment
> **DNS Requirements**: For production deployments, you need real DNS entries pointing to your server for all required subdomains. You can either create individual DNS A/AAAA records for each subdomain (e.g., `cloud.example.com`, `collabora.example.com`, `keycloak.example.com`) or use a wildcard DNS entry (`*.example.com`) that covers all subdomains.
1. **Edit the `.env` file** and configure:
- Domain names
- Domain names (replace `.opencloud.test` domains with your real domains)
- Admin password
- SSL certificate email
- Storage paths
@@ -93,6 +98,8 @@ OpenCloud Compose offers a modular approach to deploying OpenCloud with several
OpenCloud can be deployed with Keycloak for identity management and LDAP for the shared user directory:
> **DNS Requirements**: This setup requires DNS entries for both the main OpenCloud domain and the Keycloak subdomain. Configure DNS A/AAAA records for your domains (e.g., `cloud.example.com`, `keycloak.example.com`) or use a wildcard DNS entry (`*.example.com`).
Using `-f` flags:
```bash
docker compose -f docker-compose.yml -f idm/ldap-keycloak.yml -f traefik/opencloud.yml -f traefik/ldap-keycloak.yml up -d
@@ -103,10 +110,10 @@ Or by setting in `.env`:
COMPOSE_FILE=docker-compose.yml:idm/ldap-keycloak.yml:traefik/opencloud.yml:traefik/ldap-keycloak.yml
```
Add to `/etc/hosts` for local development:
```
127.0.0.1 keycloak.opencloud.test
```
> **For local development only**: Add to `/etc/hosts`:
> ```
> 127.0.0.1 keycloak.opencloud.test
> ```
This setup includes:
- Keycloak for authentication and identity management
@@ -117,6 +124,8 @@ This setup includes:
Include Collabora for document editing using either method:
> **DNS Requirements**: This setup requires DNS entries for the main OpenCloud domain, Collabora subdomain, and WOPI server subdomain. Configure DNS A/AAAA records for your domains (e.g., `cloud.example.com`, `collabora.example.com`, `wopiserver.example.com`) or use a wildcard DNS entry (`*.example.com`).
Using `-f` flags:
```bash
docker compose -f docker-compose.yml -f weboffice/collabora.yml -f traefik/opencloud.yml -f traefik/collabora.yml up -d
@@ -127,16 +136,18 @@ Or by setting in `.env`:
COMPOSE_FILE=docker-compose.yml:weboffice/collabora.yml:traefik/opencloud.yml:traefik/collabora.yml
```
Add to `/etc/hosts` for local development:
```
127.0.0.1 collabora.opencloud.test
127.0.0.1 wopiserver.opencloud.test
```
> **For local development only**: Add to `/etc/hosts`:
> ```
> 127.0.0.1 collabora.opencloud.test
> 127.0.0.1 wopiserver.opencloud.test
> ```
### With Full Text Search
Enable full text search capabilities with Apache Tika using either method:
> **DNS Requirements**: This setup requires DNS entries for the main OpenCloud domain. Configure a DNS A/AAAA record for your domain (e.g., `cloud.example.com`) or use a wildcard DNS entry (`*.example.com`).
Using `-f` flags:
```bash
docker compose -f docker-compose.yml -f search/tika.yml -f traefik/opencloud.yml up -d
@@ -156,6 +167,8 @@ This setup includes:
Enable CalDAV (calendars, to-do lists) and CardDAV (contacts) server.
> **DNS Requirements**: This setup requires DNS entries for the main OpenCloud domain. Configure a DNS A/AAAA record for your domain (e.g., `cloud.example.com`) or use a wildcard DNS entry (`*.example.com`).
Using `-f` flags:
```bash
docker compose -f docker-compose.yml -f radicale/radicale.yml -f traefik/opencloud.yml up -d
@@ -174,6 +187,8 @@ This setup includes:
Enable monitoring capabilities with metrics endpoints using either method:
> **DNS Requirements**: This setup requires DNS entries for the main OpenCloud domain. Configure a DNS A/AAAA record for your domain (e.g., `cloud.example.com`) or use a wildcard DNS entry (`*.example.com`).
Using `-f` flags:
```bash
docker compose -f docker-compose.yml -f monitoring/monitoring.yml -f traefik/opencloud.yml up -d
@@ -203,6 +218,8 @@ Access metrics endpoints:
If you already have a reverse proxy (Nginx, Caddy, etc.), use either method:
> **DNS Requirements**: When using an external proxy, you need to configure your external proxy to handle DNS and SSL termination. Ensure your DNS entries point to your external proxy server, and configure your proxy to forward requests to the exposed OpenCloud ports.
Using `-f` flags:
```bash
docker compose -f docker-compose.yml -f weboffice/collabora.yml -f external-proxy/opencloud.yml -f external-proxy/collabora.yml up -d
@@ -218,7 +235,6 @@ This exposes the necessary ports:
- Collabora: 9980
- WOPI server: 9300
**Please note:**
If you're using **Nginx Proxy Manager (NPM)**, you **should NOT** activate **"Block Common Exploits"** for the Proxy Host.
Otherwise, the desktop app authentication will return **error 403 Forbidden**.

View File

@@ -2,7 +2,7 @@
printenv
# replace openCloud domain and LDAP password in keycloak realm import
mkdir /opt/keycloak/data/import
sed -e "s/cloud.opencloud.test/${OC_DOMAIN}/g" -e "s/ldap-admin-password/${LDAP_ADMIN_PASSWORD:-admin}/g" /opt/keycloak/data/import-dist/opencloud-realm.json > /opt/keycloak/data/import/opencloud-realm.json
sed -e "s/cloud.opencloud.test/${OC_DOMAIN}/g" -e "s/ldap-admin-password/${LDAP_ADMIN_PASSWORD:-admin}/g" /opt/keycloak/data/import-dist/openCloud-realm.json > /opt/keycloak/data/import/openCloud-realm.json
# run original docker-entrypoint
/opt/keycloak/bin/kc.sh "$@"

View File

@@ -1952,6 +1952,21 @@
]
}
},
{
"id": "c016f2b3-cf74-410e-a852-f6c7b49e0f5a",
"name": "Block Client Registration",
"providerId": "trusted-hosts",
"subType": "anonymous",
"subComponents": {},
"config": {
"host-sending-registration-request-must-match": [
"true"
],
"client-uris-must-match": [
"true"
]
}
},
{
"id": "5a9aef85-98a6-4e90-b30f-8aa715e1f5e6",
"name": "Allowed Protocol Mapper Types",
@@ -2321,7 +2336,7 @@
"always"
],
"usePasswordModifyExtendedOp": [
"false"
"true"
],
"trustEmail": [
"false"

View File

@@ -8,6 +8,7 @@ directives:
- 'wss://${COMPANION_DOMAIN|companion.opencloud.test}/'
- 'https://raw.githubusercontent.com/opencloud-eu/awesome-apps/'
- 'https://${IDP_DOMAIN|keycloak.opencloud.test}/'
- 'https://update.opencloud.eu/'
default-src:
- '''none'''
font-src:
@@ -39,6 +40,7 @@ directives:
script-src:
- '''self'''
- '''unsafe-inline'''
- 'https://${IDP_DOMAIN|keycloak.opencloud.test}/'
style-src:
- '''self'''
- '''unsafe-inline'''

View File

@@ -27,7 +27,7 @@ add_arg "--entryPoints.https.transport.respondingTimeouts.idleTimeout=3m"
add_arg "--providers.docker.endpoint=unix:///var/run/docker.sock"
add_arg "--providers.docker.exposedByDefault=false"
# access log
add_arg "--accessLog=true"
add_arg "--accessLog=${TRAEFIK_ACCESS_LOG:-false}"
add_arg "--accessLog.format=json"
add_arg "--accessLog.fields.headers.names.X-Request-Id=keep"

View File

@@ -32,7 +32,7 @@ services:
# email server (if configured)
NOTIFICATIONS_SMTP_HOST: "${SMTP_HOST}"
NOTIFICATIONS_SMTP_PORT: "${SMTP_PORT}"
NOTIFICATIONS_SMTP_SENDER: "${SMTP_SENDER:-OpenCloud notifications <notifications@${OC_DOMAIN:-cloud.opencloud.test}>}"
NOTIFICATIONS_SMTP_SENDER: "${SMTP_SENDER:-OpenCloud Notifications <notifications@cloud.opencloud.test>}"
NOTIFICATIONS_SMTP_USERNAME: "${SMTP_USERNAME}"
NOTIFICATIONS_SMTP_PASSWORD: "${SMTP_PASSWORD}"
NOTIFICATIONS_SMTP_INSECURE: "${SMTP_INSECURE}"

View File

@@ -0,0 +1,6 @@
services:
keycloak:
ports:
- "9000:9000"
- "8080:8080"

36
idm/external-authelia.yml Normal file
View File

@@ -0,0 +1,36 @@
---
services:
opencloud:
environment:
# enable opaque access tokens
PROXY_OIDC_ACCESS_TOKEN_VERIFY_METHOD: "none"
PROXY_OIDC_SKIP_VERIFICATION: "false"
# Enable authelia usernames as username in OpenCloud (instead of an id)
# PROXY_USER_OIDC_CLAIM: "preferred_username"
# PROXY_AUTOPROVISION_CLAIM_USERNAME: "preferred_username"
PROXY_ROLE_ASSIGNMENT_OIDC_CLAIM: "groups"
WEB_OIDC_SCOPE: "openid profile email groups"
# The desktop client currently doesn't work when oidc assignment driver is used : https://github.com/opencloud-eu/desktop/issues/217
# That's why you only can use it to bootstrap your admin user currently (if you want to use the desktop client).
#
# 1. *Before* first startup: Switch to `PROXY_ROLE_ASSIGNMENT_DRIVER: "oidc"`
# 2. Start opencloud container to generate initial config: `docker compose up -d`
# 3. Map the `opencloud-admin` group from authelia to the `admin` role from OpenCloud in opencloud-config/opencloud.yaml :
#
# proxy:
# role_assignment:
# oidc_role_mapper:
# role_claim: groups
# role_mapping:
# - role_name: admin
# claim_value: opencloud-admin
#
# 4. Restart opencloud container: `docker compose restart opencloud`
# 5. Login with your admin user (the one with the `opencloud-admin` group)
# 6. Switch back to `PROXY_ROLE_ASSIGNMENT_DRIVER: "default"``
# 7. Recreate opencloud container: `docker compose up -d opencloud`
PROXY_ROLE_ASSIGNMENT_DRIVER: "default"
GRAPH_ASSIGN_DEFAULT_USER_ROLE: "true"

View File

@@ -44,7 +44,7 @@ services:
# The openCloud users need to be able to edit their account in the externa IdP
WEB_OPTION_ACCOUNT_EDIT_LINK_HREF: ${IDP_ACCOUNT_URL}
ldap-server:
image: bitnami/openldap:2.6
image: bitnamilegacy/openldap:2.6
networks:
opencloud-net:
entrypoint: [ "/bin/sh", "/opt/bitnami/scripts/openldap/docker-entrypoint-override.sh", "/opt/bitnami/scripts/openldap/run.sh" ]
@@ -57,21 +57,15 @@ services:
LDAP_TLS_KEY_FILE: /opt/bitnami/openldap/share/openldap.key
LDAP_ROOT: "dc=opencloud,dc=eu"
LDAP_ADMIN_PASSWORD: ${LDAP_BIND_PASSWORD:-admin}
ports:
- "127.0.0.1:389:1389"
- "127.0.0.1:636:1636"
volumes:
# Only use the base ldif file to create the base structure
- ./config/ldap/ldif/10_base.ldif:/ldifs/10_base.ldif
# Use the custom schema from opencloud because we are in full control of the ldap server
- ./config/ldap/schemas/10_opencloud_schema.ldif:/schemas/10_opencloud_schema.ldif
- ./config/ldap/docker-entrypoint-override.sh:/opt/bitnami/scripts/openldap/docker-entrypoint-override.sh
- ldap-certs:/opt/bitnami/openldap/share
- ldap-data:/bitnami/openldap
keycloak:
volumes:
- "./config/keycloak/docker-entrypoint-override.sh:/opt/keycloak/bin/docker-entrypoint-override.sh"
- "./config/keycloak/opencloud-realm-autoprovisioning.dist.json:/opt/keycloak/data/import-dist/opencloud-realm.json"
- ${LDAP_CERTS_DIR:-ldap-certs}:/opt/bitnami/openldap/share
- ${LDAP_DATA_DIR:-ldap-data}:/bitnami/openldap
volumes:
ldap-certs:
ldap-data:

View File

@@ -38,7 +38,7 @@ services:
IDP_DOMAIN: ${KEYCLOAK_DOMAIN:-keycloak.opencloud.test}
ldap-server:
image: bitnami/openldap:2.6
image: bitnamilegacy/openldap:2.6
networks:
opencloud-net:
entrypoint: [ "/bin/sh", "/opt/bitnami/scripts/openldap/docker-entrypoint-override.sh", "/opt/bitnami/scripts/openldap/run.sh" ]
@@ -51,9 +51,6 @@ services:
LDAP_TLS_KEY_FILE: /opt/bitnami/openldap/share/openldap.key
LDAP_ROOT: "dc=opencloud,dc=eu"
LDAP_ADMIN_PASSWORD: ${LDAP_BIND_PASSWORD:-admin}
ports:
- "127.0.0.1:389:1389"
- "127.0.0.1:636:1636"
volumes:
- ./config/ldap/ldif/10_base.ldif:/ldifs/10_base.ldif
- ./config/ldap/ldif/20_admin.ldif:/ldifs/20_admin.ldif
@@ -65,7 +62,7 @@ services:
restart: always
postgres:
image: postgres:alpine
image: postgres:17-alpine
networks:
opencloud-net:
volumes:
@@ -79,16 +76,17 @@ services:
restart: always
keycloak:
image: quay.io/keycloak/keycloak:25.0.0
image: quay.io/keycloak/keycloak:26.3.3
networks:
opencloud-net:
command: [ "start", "--proxy=edge", "--spi-connections-http-client-default-disable-trust-manager=${INSECURE:-false}", "--import-realm" ]
command: [ "start", "--spi-connections-http-client-default-disable-trust-manager=${INSECURE:-false}", "--import-realm" ]
entrypoint: [ "/bin/sh", "/opt/keycloak/bin/docker-entrypoint-override.sh" ]
volumes:
- "./config/keycloak/docker-entrypoint-override.sh:/opt/keycloak/bin/docker-entrypoint-override.sh"
- "./config/keycloak/opencloud-realm.dist.json:/opt/keycloak/data/import-dist/opencloud-realm.json"
- "./config/keycloak/opencloud-realm.dist.json:/opt/keycloak/data/import-dist/openCloud-realm.json"
- "./config/keycloak/themes/opencloud:/opt/keycloak/themes/opencloud"
environment:
LDAP_ADMIN_PASSWORD: ${LDAP_BIND_PASSWORD:-admin}
OC_DOMAIN: ${OC_DOMAIN:-cloud.opencloud.test}
KC_HOSTNAME: ${KEYCLOAK_DOMAIN:-keycloak.opencloud.test}
KC_DB: postgres
@@ -96,6 +94,8 @@ services:
KC_DB_USERNAME: ${KC_DB_USERNAME:-keycloak}
KC_DB_PASSWORD: ${KC_DB_PASSWORD:-keycloak}
KC_FEATURES: impersonation
KC_PROXY_HEADERS: xforwarded
KC_HTTP_ENABLED: true
KEYCLOAK_ADMIN: ${KEYCLOAK_ADMIN:-kcadmin}
KEYCLOAK_ADMIN_PASSWORD: ${KEYCLOAK_ADMIN_PASSWORD:-admin}
depends_on:

View File

@@ -0,0 +1,7 @@
---
services:
collaboration:
environment:
# metrics
COLLABORATION_DEBUG_ADDR: 0.0.0.0:9304

View File

@@ -8,11 +8,6 @@ services:
# will expose the same metrics, so it's sufficient to query one endpoint
PROXY_DEBUG_ADDR: 0.0.0.0:9205
collaboration:
environment:
# metrics
COLLABORATION_DEBUG_ADDR: 0.0.0.0:9304
networks:
opencloud-net:
external: true

View File

@@ -1,7 +1,7 @@
---
services:
postgres:
image: postgres:alpine
image: postgres:17-alpine
networks:
opencloud-net:
volumes:
@@ -15,14 +15,14 @@ services:
restart: always
keycloak:
image: quay.io/keycloak/keycloak:25.0.0
image: quay.io/keycloak/keycloak:26.3.3
networks:
opencloud-net:
command: [ "start", "--proxy=edge", "--spi-connections-http-client-default-disable-trust-manager=${INSECURE:-false}", "--import-realm" ]
command: [ "start", "--spi-connections-http-client-default-disable-trust-manager=${INSECURE:-false}", "--import-realm" ]
entrypoint: [ "/bin/sh", "/opt/keycloak/bin/docker-entrypoint-override.sh" ]
volumes:
- "./config/keycloak/docker-entrypoint-override.sh:/opt/keycloak/bin/docker-entrypoint-override.sh"
- "./config/keycloak/opencloud-realm-autoprovisioning.dist.json:/opt/keycloak/data/import-dist/opencloud-realm.json"
- "./config/keycloak/opencloud-realm-autoprovisioning.dist.json:/opt/keycloak/data/import-dist/openCloud-realm.json"
- "./config/keycloak/themes/opencloud:/opt/keycloak/themes/opencloud"
environment:
OC_DOMAIN: ${OC_DOMAIN:-cloud.opencloud.test}
@@ -32,6 +32,8 @@ services:
KC_DB_USERNAME: ${KC_DB_USERNAME:-keycloak}
KC_DB_PASSWORD: ${KC_DB_PASSWORD:-keycloak}
KC_FEATURES: impersonation
KC_PROXY_HEADERS: xforwarded
KC_HTTP_ENABLED: true
KEYCLOAK_ADMIN: ${KEYCLOAK_ADMIN:-kcadmin}
KEYCLOAK_ADMIN_PASSWORD: ${KEYCLOAK_ADMIN_PASSWORD:-admin}
depends_on:

View File

@@ -9,7 +9,7 @@ services:
- "traefik.http.services.opencloud.loadbalancer.server.port=9200"
- "traefik.http.routers.opencloud.${TRAEFIK_SERVICES_TLS_CONFIG}"
traefik:
image: traefik:v3.3.1
image: traefik:v3
# release notes: https://github.com/traefik/traefik/releases
networks:
opencloud-net:
@@ -20,6 +20,8 @@ services:
- "TRAEFIK_SERVICES_TLS_CONFIG=${TRAEFIK_SERVICES_TLS_CONFIG:-tls.certresolver=letsencrypt}"
- "TRAEFIK_ACME_MAIL=${TRAEFIK_ACME_MAIL:-example@example.org}"
- "TRAEFIK_ACME_CASERVER=${TRAEFIK_ACME_CASERVER:-https://acme-v02.api.letsencrypt.org/directory}"
- "TRAEFIK_LOG_LEVEL=${TRAEFIK_LOG_LEVEL:-ERROR}"
- "TRAEFIK_ACCESS_LOG=${TRAEFIK_ACCESS_LOG:-false}"
ports:
- "80:80"
- "443:443"

View File

@@ -46,7 +46,7 @@ services:
restart: always
collabora:
image: collabora/code:25.04.1.1.1
image: collabora/code:25.04.4.2.1
# release notes: https://www.collaboraonline.com/release-notes/
networks:
opencloud-net:
@@ -69,4 +69,7 @@ services:
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 && echo -e 'GET /hosting/discovery HTTP/1.1\r\nHost: localhost:9980\r\n\r\n' >&3 && head -n 1 <&3 | grep '200 OK'"]
test: [ "CMD", "curl", "-f", "http://localhost:9980/hosting/discovery" ]
interval: 15s
timeout: 10s
retries: 5