Compare commits

..

20 Commits

Author SHA1 Message Date
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
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
10 changed files with 69 additions and 21 deletions

View File

@@ -10,7 +10,7 @@ INSECURE=true
## Features ## ## Features ##
# The following variable is a convenience variable to enable or disable features of this compose project. # 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 # 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. # 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` # 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 # Default: OpenCloud and Collabora with traefik and letsencypt
@@ -61,6 +61,11 @@ TRAEFIK_SERVICES_TLS_CONFIG="tls.certresolver=letsencrypt"
# #
# The certificates need to copied into ./certs/, the absolute path inside the container is /certs/. # The certificates need to 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. # 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 ## ## OpenCloud Settings ##
@@ -109,6 +114,9 @@ LOG_LEVEL=
# NOTE: you need to restart the openCloud container to load the new extensions. # NOTE: you need to restart the openCloud container to load the new extensions.
# OC_APPS_DIR=/your/local/opencloud/apps # 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 # S3 Storage configuration - optional
# OpenCloud supports S3 storage as primary storage. # OpenCloud supports S3 storage as primary storage.
@@ -169,8 +177,8 @@ START_ADDITIONAL_SERVICES="notifications"
# Tika (search) is disabled by default due to performance reasons. # Tika (search) is disabled by default due to performance reasons.
# Tika is used to extract metadata and text from various file formats. # Tika is used to extract metadata and text from various file formats.
# Enable it by adding the following to the COMPOSE_FILE variable: # Enable it by adding the following to the COMPOSE_FILE variable:
# tika/tika.yml or by using the following command: # search/tika.yml or by using the following command:
# docker compose -f docker-compose.yml -f tika/tika.yml up -d # docker compose -f docker-compose.yml -f search/tika.yml up -d
# Set the desired docker image tag or digest. # Set the desired docker image tag or digest.
# Defaults to "apache/tika:latest-full" # Defaults to "apache/tika:latest-full"
TIKA_IMAGE= TIKA_IMAGE=
@@ -274,7 +282,7 @@ IDP_DOMAIN=
# We need the complete URL, including the protocol (http or https) and the realm. # We need the complete URL, including the protocol (http or https) and the realm.
# Example: "https://keycloak.opencloud.test/realms/openCloud" # Example: "https://keycloak.opencloud.test/realms/openCloud"
IDP_ISSUER_URL= 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= IDP_ACCOUNT_URL=
## Shared User Directory Mode ## ## Shared User Directory Mode ##

View File

@@ -2,7 +2,7 @@
printenv printenv
# replace openCloud domain and LDAP password in keycloak realm import # replace openCloud domain and LDAP password in keycloak realm import
mkdir /opt/keycloak/data/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 # run original docker-entrypoint
/opt/keycloak/bin/kc.sh "$@" /opt/keycloak/bin/kc.sh "$@"

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.endpoint=unix:///var/run/docker.sock"
add_arg "--providers.docker.exposedByDefault=false" add_arg "--providers.docker.exposedByDefault=false"
# access log # access log
add_arg "--accessLog=true" add_arg "--accessLog=${TRAEFIK_ACCESS_LOG:-false}"
add_arg "--accessLog.format=json" add_arg "--accessLog.format=json"
add_arg "--accessLog.fields.headers.names.X-Request-Id=keep" add_arg "--accessLog.fields.headers.names.X-Request-Id=keep"

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

@@ -66,12 +66,9 @@ services:
# Use the custom schema from opencloud because we are in full control of the ldap server # 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/schemas/10_opencloud_schema.ldif:/schemas/10_opencloud_schema.ldif
- ./config/ldap/docker-entrypoint-override.sh:/opt/bitnami/scripts/openldap/docker-entrypoint-override.sh - ./config/ldap/docker-entrypoint-override.sh:/opt/bitnami/scripts/openldap/docker-entrypoint-override.sh
- ldap-certs:/opt/bitnami/openldap/share - ${LDAP_CERTS_DIR:-ldap-certs}:/opt/bitnami/openldap/share
- ldap-data:/bitnami/openldap - ${LDAP_DATA_DIR:-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"
volumes: volumes:
ldap-certs: ldap-certs:
ldap-data: ldap-data:

View File

@@ -79,16 +79,17 @@ services:
restart: always restart: always
keycloak: keycloak:
image: quay.io/keycloak/keycloak:25.0.0 image: quay.io/keycloak/keycloak:26.3.3
networks: networks:
opencloud-net: 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" ] entrypoint: [ "/bin/sh", "/opt/keycloak/bin/docker-entrypoint-override.sh" ]
volumes: volumes:
- "./config/keycloak/docker-entrypoint-override.sh:/opt/keycloak/bin/docker-entrypoint-override.sh" - "./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" - "./config/keycloak/themes/opencloud:/opt/keycloak/themes/opencloud"
environment: environment:
LDAP_ADMIN_PASSWORD: ${LDAP_BIND_PASSWORD:-admin}
OC_DOMAIN: ${OC_DOMAIN:-cloud.opencloud.test} OC_DOMAIN: ${OC_DOMAIN:-cloud.opencloud.test}
KC_HOSTNAME: ${KEYCLOAK_DOMAIN:-keycloak.opencloud.test} KC_HOSTNAME: ${KEYCLOAK_DOMAIN:-keycloak.opencloud.test}
KC_DB: postgres KC_DB: postgres
@@ -96,6 +97,8 @@ services:
KC_DB_USERNAME: ${KC_DB_USERNAME:-keycloak} KC_DB_USERNAME: ${KC_DB_USERNAME:-keycloak}
KC_DB_PASSWORD: ${KC_DB_PASSWORD:-keycloak} KC_DB_PASSWORD: ${KC_DB_PASSWORD:-keycloak}
KC_FEATURES: impersonation KC_FEATURES: impersonation
KC_PROXY_HEADERS: xforwarded
KC_HTTP_ENABLED: true
KEYCLOAK_ADMIN: ${KEYCLOAK_ADMIN:-kcadmin} KEYCLOAK_ADMIN: ${KEYCLOAK_ADMIN:-kcadmin}
KEYCLOAK_ADMIN_PASSWORD: ${KEYCLOAK_ADMIN_PASSWORD:-admin} KEYCLOAK_ADMIN_PASSWORD: ${KEYCLOAK_ADMIN_PASSWORD:-admin}
depends_on: 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 # will expose the same metrics, so it's sufficient to query one endpoint
PROXY_DEBUG_ADDR: 0.0.0.0:9205 PROXY_DEBUG_ADDR: 0.0.0.0:9205
collaboration:
environment:
# metrics
COLLABORATION_DEBUG_ADDR: 0.0.0.0:9304
networks: networks:
opencloud-net: opencloud-net:
external: true external: true

View File

@@ -20,6 +20,8 @@ services:
- "TRAEFIK_SERVICES_TLS_CONFIG=${TRAEFIK_SERVICES_TLS_CONFIG:-tls.certresolver=letsencrypt}" - "TRAEFIK_SERVICES_TLS_CONFIG=${TRAEFIK_SERVICES_TLS_CONFIG:-tls.certresolver=letsencrypt}"
- "TRAEFIK_ACME_MAIL=${TRAEFIK_ACME_MAIL:-example@example.org}" - "TRAEFIK_ACME_MAIL=${TRAEFIK_ACME_MAIL:-example@example.org}"
- "TRAEFIK_ACME_CASERVER=${TRAEFIK_ACME_CASERVER:-https://acme-v02.api.letsencrypt.org/directory}" - "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: ports:
- "80:80" - "80:80"
- "443:443" - "443:443"

View File

@@ -46,7 +46,7 @@ services:
restart: always restart: always
collabora: 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/ # release notes: https://www.collaboraonline.com/release-notes/
networks: networks:
opencloud-net: opencloud-net: