Compare commits

..

178 Commits

Author SHA1 Message Date
renovate[bot]
a538378907 chore(deps): update traefik docker tag to v3.7.3 2026-06-04 21:34:08 +00:00
Michael Barz
9eeaee4743 Merge pull request #296 from opencloud-eu/renovate/main-collabora-code-25.x
chore(deps): update collabora/code docker tag to v25.04.10.3.1 (main)
2026-06-01 17:11:27 +02:00
renovate[bot]
882953cdcc chore(deps): update collabora/code docker tag to v25.04.10.3.1 2026-06-01 14:49:21 +00:00
Michael Barz
cc3de9830b Merge pull request #290 from opencloud-eu/renovate/main-quay.io-keycloak-keycloak-26.x
chore(deps): update quay.io/keycloak/keycloak docker tag to v26.6.2 (main)
2026-06-01 16:38:00 +02:00
renovate[bot]
521e600b86 chore(deps): update quay.io/keycloak/keycloak docker tag to v26.6.2 2026-05-19 13:35:28 +00:00
Thomas Schweiger
2bb11ee1a5 Merge pull request #288 from opencloud-eu/renovate/main-postgres-17.x
chore(deps): update postgres docker tag to v17.10 (main)
2026-05-18 15:17:31 +02:00
Michael Barz
40081db318 Merge pull request #287 from opencloud-eu/renovate/main-opencloudeu-opencloud-rolling-6.x
chore(deps): update opencloudeu/opencloud-rolling docker tag to v6.2.0 (main)
2026-05-18 14:49:34 +02:00
renovate[bot]
ddfef44b34 chore(deps): update postgres docker tag to v17.10 2026-05-18 12:37:13 +00:00
renovate[bot]
3838584876 chore(deps): update opencloudeu/opencloud-rolling docker tag to v6.2.0 2026-05-18 12:37:07 +00:00
Thomas Schweiger
8cafd254bb Merge pull request #264 from ralfbergs/patch-1
Update clamav.yml: make OpenCloud container depend on ClamAV container.
2026-05-13 08:23:13 +02:00
Jannik Stehle
fd966a5527 Merge pull request #281 from opencloud-eu/chore/update-maps-v3
chore: bump maps app to v3
2026-05-07 07:19:46 +02:00
Michael Barz
270374d9e1 Merge pull request #270 from MannixTT/external-idp
External idp | new variables for various clients
2026-05-06 16:31:42 +02:00
Artur Neumann
459b5ba9ff Merge pull request #283 from opencloud-eu/traefikport
use TRAEFIK_PORT_HTTPS for keycloak config
2026-05-06 20:12:33 +05:45
Artur Neumann
17012ada58 Merge pull request #284 from opencloud-eu/fixIndent
fix indent in cert example
2026-05-06 20:12:16 +05:45
Artur Neumann
0ddef8a7f1 fix indent in cert example 2026-05-06 17:06:14 +05:45
Artur Neumann
12f855c9ce use TRAEFIK_PORT_HTTPS for keycloak config 2026-05-06 13:17:58 +05:45
Jannik Stehle
1e760a19d6 fix: add missing csp rules for maps app 2026-05-05 10:46:06 +02:00
Jannik Stehle
d2663a1113 chore: bump maps app to v3
The upcoming version `7.0.0` of OpenCloud Web removes support for apps
using the old AMD format. Hence we need to bump the maps app to
`v3.0.0` to ensure it runs with the new version of Web.
2026-05-05 10:33:31 +02:00
MannixTT
c3caf7e65b Update .env.example
Changes made based on the comments in the pull request following the reviews
2026-04-26 20:53:30 +02:00
MannixTT
5998ffbc96 Update external-idp.yml
Changes made based on the comments in the pull request following the reviews
2026-04-26 20:52:38 +02:00
Michael Barz
29749588de Merge pull request #276 from opencloud-eu/renovate/main-traefik-3.x
chore(deps): update traefik docker tag to v3.6.14 (main)
2026-04-23 10:11:44 +02:00
renovate[bot]
781ae4c8b4 chore(deps): update traefik docker tag to v3.6.14 2026-04-22 20:46:22 +00:00
Michael Barz
f62678fc9b Merge pull request #274 from opencloud-eu/renovate/main-opencloudeu-opencloud-rolling-6.x
chore(deps): update opencloudeu/opencloud-rolling docker tag to v6.1.0 (main)
2026-04-22 17:15:02 +02:00
renovate[bot]
372bc44e63 chore(deps): update opencloudeu/opencloud-rolling docker tag to v6.1.0 2026-04-20 19:55:03 +00:00
Michael Barz
f0b1565edb Merge pull request #273 from opencloud-eu/renovate/main-quay.io-keycloak-keycloak-26.x
chore(deps): update quay.io/keycloak/keycloak docker tag to v26.6.1 (main)
2026-04-16 18:01:27 +02:00
renovate[bot]
892839eace chore(deps): update quay.io/keycloak/keycloak docker tag to v26.6.1 2026-04-16 10:53:05 +00:00
MannixTT
86f1d6fb7e Update external-idp.yml
adapt defaults - otherwise it will not behave as expected
2026-04-09 00:20:46 +02:00
MannixTT
212f87a89c Update .env.example
Update environment variables for new variables regarding external idp settings
2026-04-08 23:49:37 +02:00
MannixTT
68ddb4eb79 Update external-idp.yml
adapt docker compose for new variables regarding external idp
2026-04-08 23:46:15 +02:00
Michael Barz
6da37f5ba5 Merge pull request #265 from opencloud-eu/renovate/main-traefik-3.x
chore(deps): update traefik docker tag to v3.6.13 (main)
2026-04-08 15:49:34 +02:00
renovate[bot]
b6bde225d4 chore(deps): update traefik docker tag to v3.6.13 2026-04-08 13:45:08 +00:00
Michael Barz
4f1ff44446 Merge pull request #268 from opencloud-eu/renovate/main-quay.io-keycloak-keycloak-26.x
chore(deps): update quay.io/keycloak/keycloak docker tag to v26.6.0 (main)
2026-04-08 15:44:41 +02:00
renovate[bot]
8ac4a770a6 chore(deps): update quay.io/keycloak/keycloak docker tag to v26.6.0 2026-04-08 13:37:20 +00:00
Ralf G. R. Bergs
4121da5547 Update clamav.yml: make OpenCloud container depend on ClamAV container.
Prevent race condition between the two containers: If OpenCloud container is up quicker than clamd.sock exists, it doesn't work.
2026-04-07 18:22:23 +02:00
Michael Barz
6008e82a84 Merge pull request #255 from opencloud-eu/renovate/main-traefik-3.x
chore(deps): update traefik docker tag to v3.6.12 (main)
2026-04-07 11:16:51 +02:00
renovate[bot]
c600ac4988 chore(deps): update traefik docker tag to v3.6.12 2026-04-07 08:58:16 +00:00
Michael Barz
1f5991578b Merge pull request #261 from opencloud-eu/renovate/main-quay.io-keycloak-keycloak-26.x
chore(deps): update quay.io/keycloak/keycloak docker tag to v26.5.7 (main)
2026-04-07 10:57:02 +02:00
renovate[bot]
376f06c4e3 chore(deps): update quay.io/keycloak/keycloak docker tag to v26.5.7 2026-04-02 17:08:08 +00:00
Thomas Schweiger
6ab45a8594 Merge pull request #259 from opencloud-eu/renovate/main-opencloudeu-opencloud-rolling-6.x
chore(deps): update opencloudeu/opencloud-rolling docker tag to v6 (main)
2026-04-02 10:03:00 +02:00
renovate[bot]
938faf9a53 chore(deps): update opencloudeu/opencloud-rolling docker tag to v6 2026-03-31 14:17:33 +00:00
Michael Barz
1e23a63910 Merge pull request #252 from opencloud-eu/renovate/main-collabora-code-25.x
chore(deps): update collabora/code docker tag to v25.04.9.4.1 (main)
2026-03-25 09:29:41 +01:00
renovate[bot]
39a3bcd45d chore(deps): update collabora/code docker tag to v25.04.9.4.1 2026-03-25 08:29:24 +00:00
Michael Barz
932e794fd2 Merge pull request #249 from opencloud-eu/renovate/main-quay.io-keycloak-keycloak-26.x
chore(deps): update quay.io/keycloak/keycloak docker tag to v26.5.6 (main)
2026-03-25 09:29:08 +01:00
renovate[bot]
279b2cde68 chore(deps): update quay.io/keycloak/keycloak docker tag to v26.5.6 2026-03-25 08:28:42 +00:00
Michael Barz
4cbeb8ea38 Merge pull request #250 from opencloud-eu/renovate/main-traefik-3.x
chore(deps): update traefik docker tag to v3.6.11 (main)
2026-03-25 09:28:02 +01:00
renovate[bot]
1c94d436e4 chore(deps): update traefik docker tag to v3.6.11 2026-03-19 21:51:02 +00:00
Michael Barz
2b1476950b Merge pull request #247 from opencloud-eu/renovate/main-collabora-code-25.x
chore(deps): update collabora/code docker tag to v25.04.9.3.1 (main)
2026-03-17 08:48:36 +01:00
renovate[bot]
8a30076bc0 chore(deps): update collabora/code docker tag to v25.04.9.3.1 2026-03-16 17:30:11 +00:00
Viktor Scharf
bfd87b4bc0 Merge pull request #245 from opencloud-eu/demo-users-for-keycloak-ldap-setup
add optional demo users for ldap-keycloak setup
2026-03-12 08:15:50 +01:00
Viktor Scharf
060f8d09ca add optional demo users for ldap-keycloak setup 2026-03-11 14:16:34 +01:00
Michael Flemming
ec431ee2f8 Merge pull request #244 from opencloud-eu/flimmy-patch-2
Update OC_DOCKER_TAG comment in .env.example
2026-03-10 11:19:10 +01:00
Michael Flemming
2075573ac5 Update OC_DOCKER_TAG comment in .env.example
Updated comment for OC_DOCKER_TAG as it does not default to "latest".
2026-03-10 11:17:07 +01:00
Michael Flemming
c5f235a54e Merge pull request #242 from opencloud-eu/renovate/main-opencloudeu-opencloud-rolling-5.x
chore(deps): update opencloudeu/opencloud-rolling docker tag to v5.2.0 (main)
2026-03-10 11:12:50 +01:00
renovate[bot]
daabcb9515 chore(deps): update opencloudeu/opencloud-rolling docker tag to v5.2.0 2026-03-09 17:12:28 +00:00
Michael Barz
b3c2b06b5f Merge pull request #240 from opencloud-eu/renovate/main-traefik-3.x
chore(deps): update traefik docker tag to v3.6.10 (main)
2026-03-07 08:01:49 +01:00
renovate[bot]
a5c06c10cc chore(deps): update traefik docker tag to v3.6.10 2026-03-06 21:45:32 +00:00
Michael Barz
61e128d975 Merge pull request #239 from opencloud-eu/renovate/main-quay.io-keycloak-keycloak-26.x
chore(deps): update quay.io/keycloak/keycloak docker tag to v26.5.5 (main)
2026-03-05 19:44:04 +01:00
renovate[bot]
958b21d80a chore(deps): update quay.io/keycloak/keycloak docker tag to v26.5.5 2026-03-05 18:32:46 +00:00
Michael Barz
93fa72b3a8 Merge pull request #228 from opencloud-eu/add-hsts
feat: add hsts
2026-03-04 11:31:39 +01:00
Michael Barz
94db919f1d Merge pull request #236 from opencloud-eu/renovate/main-opencloudeu-opencloud-rolling-5.x
chore(deps): update opencloudeu/opencloud-rolling docker tag to v5.1.0 (main)
2026-03-04 11:30:16 +01:00
renovate[bot]
33c3861012 chore(deps): update opencloudeu/opencloud-rolling docker tag to v5.1.0 2026-03-04 10:28:57 +00:00
Michael Barz
bc2b6b4a90 fix: regex match string
fix: regex match string

fix: regex match string

fix: plaform merge

fix: labels

fix: labels 2
2026-03-04 11:28:31 +01:00
Michael Barz
d146f60855 feat: pin version, add renovate 2026-03-04 11:28:29 +01:00
Michael 'Flimmy' Flemming
85e2c4aa35 fix middleware race condition with disabled dashboard 2026-03-04 10:56:57 +01:00
Michael Barz
70fa25573f Merge pull request #230 from opencloud-eu/renovate/main-traefik-3.x
chore(deps): update traefik docker tag to v3.6.9 (main)
2026-03-03 21:59:30 +01:00
renovate[bot]
55035e0a81 chore(deps): update traefik docker tag to v3.6.9 2026-03-03 20:58:46 +00:00
Michael Barz
8f09fd66fd fix: automerge config 2026-03-03 21:56:16 +01:00
Michael Barz
1dbce867e1 fix: pin postgres version 2026-03-03 21:48:32 +01:00
Michael Barz
d0a9e71a89 Merge pull request #229 from opencloud-eu/renovate/main-collabora-code-25.x
chore(deps): update collabora/code docker tag to v25.04.9.2.1 (main)
2026-03-03 17:18:37 +01:00
renovate[bot]
634c95d5ed chore(deps): update collabora/code docker tag to v25.04.9.2.1 2026-03-03 16:15:38 +00:00
Michael Barz
820ce2747f chore: add renovate config 2026-03-03 17:12:08 +01:00
Michael Barz
1eeabd5bcb feat: add hsts 2026-03-03 16:14:36 +01:00
Viktor Scharf
69b1555af9 Merge pull request #227 from opencloud-eu/update-keycloak
chore: update keycloak to 26.5.4
2026-03-02 11:40:35 +01:00
Michael Barz
f480b7d6ed chore: update keycloak to 26.5.4 2026-03-02 11:34:25 +01:00
Ralf Haferkamp
25af2c9f6f Merge pull request #223 from opencloud-eu/fix-slow-jailkit
fix: slow kit jail error server audit in collabora (next try)
2026-02-17 16:50:18 +01:00
Ralf Haferkamp
41b721b42b chore: Bump collabora to 25.04.9.1.1 2026-02-17 16:47:15 +01:00
Ralf Haferkamp
5ededbd4c9 collabora: Drop unneeded capabitlity
'MKNOD' is not longer required
2026-02-17 11:36:17 +01:00
Ralf Haferkamp
98294c2dee Reapply "fix: slow kit jail error server audit in collabora"
This reverts commit 6ecf59f078.
2026-02-17 11:35:26 +01:00
Alex
1a4f302855 chore: bump traefik to 3.6.7 (#212) 2026-02-03 10:53:31 +01:00
Alex
de88ca037b fix add back slash to traefik allowed encoded characters (#211) 2026-02-02 09:13:14 +01:00
Michael Barz
1b4cfb5759 Merge pull request #206 from aleksa-radojicic/add-kc-log-level
Add support for KC_LOG_LEVEL env variable & fix KC credentials leaking in logs
2026-01-25 17:58:49 +01:00
aleksa.radojicic
1a231fa807 fix(keycloak): prevent env vars from being printed in logs
The problem is credentials are displayed in the console, which poses a security risk in production. Printing the environment variables for log levels 'trace/debug' would help when debugging.
2026-01-25 11:46:52 +01:00
aleksa.radojicic
a79de3c5ee feat(keycloak): add support for KC_LOG_LEVEL env variable
KC_LOG_LEVEL is defined in the [official docs](https://www.keycloak.org/server/all-config?q=log-level).
2026-01-25 11:43:02 +01:00
Viktor Scharf
4e8f66ac5f Merge pull request #201 from opencloud-eu/fix#31
update certs.yml example
2026-01-13 12:21:31 +01:00
Viktor Scharf
8ce6895188 update certs.yml example 2026-01-13 12:07:40 +01:00
Viktor Scharf
a0d5196dfa Merge pull request #198 from opencloud-eu/add-default-language-to-docker-compose.yaml
add the default language variable to the docker-compose.yaml
2026-01-08 20:07:30 +01:00
Anja Barz
e19f6ba593 add info about language format and add it to the .env 2026-01-08 12:10:49 +01:00
Anja Barz
d9300db50e add the default language variable to the docker-compose.yaml 2026-01-08 07:37:06 +01:00
Michael Barz
634cd89b0f Merge pull request #178 from opencloud-eu/update_inline_docs
Update inline docs
2026-01-05 21:11:25 +01:00
Artur Neumann
59f5f1702d Merge pull request #190 from opencloud-eu/individual-it-patch-1
fix: example command to load apps
2025-12-29 18:32:11 +05:45
Artur Neumann
81888ebe66 fix: example command to load apps 2025-12-29 17:45:08 +05:45
Viktor Scharf
c3471649f8 Merge pull request #181 from opencloud-eu/setWritableShareFalse
set OC_SHARING_PUBLIC_WRITEABLE_SHARE_MUST_HAVE_PASSWORD=false by default
2025-12-17 10:16:00 +01:00
Viktor Scharf
5fa7ab2d40 set OC_SHARING_PUBLIC_WRITEABLE_SHARE_MUST_HAVE_PASSWORD=false by default 2025-12-17 09:47:31 +01:00
streaminganger
a738092592 fix: traefik rejects supported file characters (#179) 2025-12-16 10:49:45 +01:00
Michael Barz
3bddb65c8b Merge pull request #180 from opencloud-eu/revert-175-fix-collabora-server-audit-slow-kit
Revert "fix: slow kit jail error server audit in collabora"
2025-12-12 17:25:37 +01:00
Michael Barz
6ecf59f078 Revert "fix: slow kit jail error server audit in collabora" 2025-12-12 15:42:09 +01:00
Michael Barz
adf5c3a388 Merge pull request #175 from opencloud-eu/fix-collabora-server-audit-slow-kit
fix: slow kit jail error server audit in collabora
2025-12-12 09:08:26 +01:00
Michael 'Flimmy' Flemming
4bfa819979 uncomment important env-vars but leave at default 2025-12-11 12:16:52 +01:00
Michael 'Flimmy' Flemming
0ee8acafe3 remove leading space from commented vars 2025-12-11 12:07:52 +01:00
Michael 'Flimmy' Flemming
a2f8a01119 explicitly list commented certs env_var and its default 2025-12-11 12:04:24 +01:00
Michael 'Flimmy' Flemming
d3c0c80250 add External-IDP example 2025-12-11 11:59:49 +01:00
Ralf Haferkamp
a2411f8cec Merge pull request #170 from opencloud-eu/issue/165
Fix bash default substitution
2025-12-10 17:29:00 +01:00
Alexander Ackermann
e897106b58 remove privileged 2025-12-09 18:58:56 +01:00
Alexander Ackermann
7386b21d7c make work on debian based systems 2025-12-09 18:49:31 +01:00
Alexander Ackermann
f3ea0ee978 fix: slow kit jail error server audit in collabora 2025-12-09 15:34:46 +01:00
Alex
2f1f0d3149 fix: WOPI/Collabora incompatibility with traefik v3.6.4 (#174) 2025-12-09 12:47:40 +01:00
Ralf Haferkamp
537de1a843 Fix bash default substitution
Closes: #165
2025-12-02 11:04:15 +01:00
Michael Barz
497f09669c Merge pull request #166 from Diekos/smtp_insecure-default-to-false
Added SMTP_INSECURE defaults to false
2025-11-27 23:23:46 +01:00
Michael Barz
a650026624 Merge pull request #155 from chillymattster/oc_port_configurable
feat: port configuration
2025-11-27 15:26:29 +01:00
Diekos
171235f0b8 Added SMTP_INSECURE defaults to false
The SMTP_INSECURE did not yet have a default to false.
2025-11-27 11:32:23 +01:00
chillymattster
50254df2ab align variable names in docker compose yml and environment 2025-11-26 19:11:37 +01:00
chillymattster
95c03733d7 Merge branch 'main' into oc_port_configurable 2025-11-26 19:06:49 +01:00
Michael Barz
79782cdd5f Merge pull request #157 from chillymattster/configure_uid_gid
feat: improve security - configure container uid and gid
2025-11-25 10:28:03 +01:00
Michael Barz
afe6399374 Merge pull request #163 from kellergoech/kellergoech-add-exposed-ports
Added the exposed ports yml files for external proxies
2025-11-24 09:42:22 +01:00
kellergoech
8d8b8dfc73 Update collabora-exposed.yml 2025-11-22 07:14:32 +01:00
kellergoech
eca5b1117e Update keycloak-exposed.yml 2025-11-22 07:14:10 +01:00
kellergoech
cfd356a155 Update description opencloud-exposed.yml 2025-11-22 07:13:49 +01:00
kellergoech
4e4fe65a97 Update description keycloak-exposed.yml 2025-11-22 07:13:15 +01:00
kellergoech
dede740c0e Update description collabora-exposed.yml 2025-11-22 07:12:47 +01:00
kellergoech
0d389800b5 Create opencloud-exposed.yml for service exposure
Add configuration to expose OpenCloud service on port 9200
2025-11-21 17:29:55 +01:00
kellergoech
df7dfc0a02 Create keycloak-exposed.yml for service ports
Add Keycloak service configuration with exposed ports
2025-11-21 17:29:01 +01:00
kellergoech
0e35e4d6b9 add collabora exposed 2025-11-21 17:27:18 +01:00
Viktor Scharf
c1a9d82702 Merge pull request #159 from opencloud-eu/fix-cert.yml-example
fix cert.yml-example
2025-11-21 11:28:03 +01:00
Michael Barz
7b2bd36f30 Merge pull request #162 from opencloud-eu/support-check-for-updates
feat: enable check for updates flag
2025-11-20 13:51:53 +01:00
Alexander Ackermann
13e076b305 feat: enable check for updates flag 2025-11-20 13:45:08 +01:00
Michael Barz
cfe3f0f612 Merge pull request #161 from opencloud-eu/fix-external-proxy
fix: bind ports on localhost for external proxy
2025-11-20 11:05:45 +01:00
Michael Barz
6a5950da36 fix: bind ports on localhost for external proxy 2025-11-20 10:35:37 +01:00
Viktor Scharf
8c96301523 fix 2025-11-19 16:21:42 +01:00
Viktor Scharf
39412c7297 fix cert.yml-example 2025-11-19 15:19:33 +01:00
Michael Barz
5873484022 Merge pull request #158 from opencloud-eu/fix-tika-image
fix: tika image name
2025-11-18 11:23:09 +01:00
Anja Barz
6b3a1e36e1 Update README.md with latest and not small 2025-11-18 10:42:53 +01:00
Michael Barz
fc67954f76 fix: tika image name 2025-11-18 08:48:41 +01:00
Michael Barz
c392985614 Merge pull request #149 from opencloud-eu/fix-tika-image
fix: use apache/tika:slim by default
2025-11-17 09:54:50 +01:00
chillymattster
900a05c2c0 avoid enforcing visible default port at the end of urls 2025-11-14 15:38:21 +01:00
chillymattster
ba14b78f58 feat: port configuration 2025-11-14 10:26:09 +01:00
chillymattster
4d2ad78f6d feat: configure container uid and gid 2025-11-13 21:26:55 +01:00
Michael Barz
df985a5304 Merge pull request #150 from opencloud-eu/bump-collabora-25.04.7.1.1
chore: bump collabora to 25.04.7.1.1
2025-11-10 14:15:39 +01:00
Michael Barz
fddd76a560 Merge pull request #133 from dkarv/antivirus
Add ClamAV
2025-11-10 14:09:23 +01:00
Alexander Ackermann
74d359b85c chore: bump collabora to 25.04.7.1.1 2025-11-10 14:08:39 +01:00
Michael Barz
73fdc8a96a fix: use apache/tika:slim by default 2025-11-10 13:58:55 +01:00
Alex
6e40d2d96e Merge pull request #148 from opencloud-eu/bump-maps-1.0.2
chore: bump web app maps to v1.0.2
2025-11-10 13:43:36 +01:00
Alex
f24923f95e Merge pull request #146 from opencloud-eu/mount-local-fonts-to-collabora-followup
feat: mount local system font dir to collabora followup
2025-11-07 11:23:09 +01:00
Alexander Ackermann
4f79e9ab7b feat: mount local system font dir to collabora followup 2025-11-07 11:19:22 +01:00
Alex
cd5d97cda9 Merge pull request #144 from opencloud-eu/mount-local-fonts-to-collabora 2025-11-07 11:07:13 +01:00
Alex
b501311d0f Apply suggestion from @kulmann
Co-authored-by: Benedikt Kulmann <benedikt@kulmann.biz>
2025-11-06 13:55:10 +01:00
Alex
85deada0d2 Update weboffice/collabora.yml 2025-11-06 13:48:52 +01:00
Michael Barz
522ced8c96 Merge pull request #99 from opencloud-eu/move_production_to_docs
Move production deployment infos to docs
2025-11-06 12:12:35 +01:00
Alexander Ackermann
0622cf6e60 fix typo 2025-11-06 10:53:37 +01:00
Alexander Ackermann
69b40132c0 feat: mount local system font dir to collabora 2025-11-06 10:51:07 +01:00
Alex
f466650a97 Merge pull request #142 from opencloud-eu/add-app-maps 2025-11-06 08:40:03 +01:00
Alexander Ackermann
a27c40c4dc feat: add app maps 2025-11-05 23:08:30 +01:00
Viktor Scharf
94c8075b36 Merge pull request #140 from opencloud-eu/fix-secure-view
fix: fix app addr for secure view
2025-11-05 15:20:42 +01:00
Michael Barz
7543aa2eec fix: fix app addr for secure view 2025-11-05 15:15:52 +01:00
Viktor Scharf
d51d43825a Merge pull request #139 from a-schuetz/add_collabora_home_mode
feat: add home mode option to Collabora
2025-11-05 15:15:13 +01:00
a-schuetz
723fb73fb4 feat: add home mode option to Collabora 2025-11-05 09:01:01 +00:00
Ralf Haferkamp
16dd321bf2 Merge pull request #130 from opencloud-eu/web/704
feat: Allow collabora to download images from the cloud instance
2025-11-04 16:01:42 +01:00
dkarv
6d0454d7a2 document the clamav max stream setting 2025-11-01 12:34:29 +01:00
David
6f71feff30 Remove blank lines in clamav.yml 2025-10-31 14:37:50 +01:00
dkarv
f5df55fedc add compose file and documentation how to use it 2025-10-30 22:46:25 +01:00
Michael Barz
df98c14b80 Merge pull request #132 from bilogic/patch-1
document the mandatory OC_DOMAIN
2025-10-30 10:14:45 +01:00
bilogic
53ec7140da document the mandatory OC_DOMAIN 2025-10-30 16:16:03 +08:00
Ralf Haferkamp
d3f0044fe3 feat: Allow collabora to download images from the cloud instance
Related: https://github.com/opencloud-eu/web/issues/704
2025-10-29 12:14:30 +01:00
Thomas Schweiger
9cb8196122 Merge pull request #124 from mwllgr/patch-1
Make external IDP LDAP server start automatically
2025-10-27 15:23:11 +01:00
Ralf Haferkamp
bdd2638f3f Merge pull request #123 from opencloud-eu/fix/android-login-fails
Allow Android logins with OC docker compose stack using Keycloak in shared directory mode
2025-10-27 09:40:41 +01:00
Thomas Schweiger
3558f9c2e1 fix: fix #122 - OIDC login fails with "malformed server configuration" 2025-10-27 09:11:04 +01:00
mwllgr
bc338d7ff4 Make external IDP LDAP server start automatically 2025-10-25 22:14:08 +02:00
Thomas Schweiger
4fc30f0330 Merge pull request #121 from Tronde/fix/remove-misleading-comment
Fix: Remove confusing comment - notifications is not mandatory
2025-10-23 18:29:45 +02:00
Thomas Schweiger
93b8186eb6 fix: rephrase and fix additional typo 2025-10-23 18:09:23 +02:00
Thomas Schweiger
85e3098e1c fix: fix typo 2025-10-23 18:02:04 +02:00
Thomas Schweiger
fed9c09ae5 Merge pull request #116 from opencloud-eu/fix/initialise-ldap-acls
fix: fix #104 - LDAP userPassword attribute can be read without auth
2025-10-23 17:39:24 +02:00
Thomas Schweiger
c689b26275 fix: change acls and how to apply them 2025-10-23 16:09:27 +02:00
Joerg Kastning
c1dcf1d1d9 Fix: Remove confusing comment - notifications is not mandatory
- Solves #118

Signed-off-by: Joerg Kastning <jkastning@my-it-brain.de>
2025-10-22 19:52:19 +02:00
Michael Barz
25b0de4525 Merge pull request #119 from opencloud-eu/flimmy-patch-1
fix typo in .env.example
2025-10-21 20:47:39 +02:00
Michael Flemming
67743a8e19 fix typo in .env.example
a wild character found its way into a comment.
2025-10-21 20:46:09 +02:00
Thomas Schweiger
f253158ae7 fix: fix #104 - LDAP userPassword attribute can be read without auth 2025-10-18 11:21:54 +02:00
Alex
219899adfc Merge pull request #115 from opencloud-eu/add-update-server-to-csp.yaml
chore: add update server to csp.yaml (cors)
2025-10-13 13:22:09 +02:00
Michael 'Flimmy' Flemming
f3c5f8f591 add link to docs for production deployment 2025-09-26 15:09:52 +02:00
Michael 'Flimmy' Flemming
fc560119f4 remove production deployment section 2025-09-26 15:09:12 +02:00
42 changed files with 1189 additions and 91 deletions

View File

@@ -22,6 +22,8 @@ INSECURE=true
#COMPOSE_FILE=docker-compose.yml:weboffice/collabora.yml:external-proxy/opencloud.yml:external-proxy/collabora.yml #COMPOSE_FILE=docker-compose.yml:weboffice/collabora.yml:external-proxy/opencloud.yml:external-proxy/collabora.yml
# Keycloak Shared User Directory # Keycloak Shared User Directory
#COMPOSE_FILE=docker-compose.yml:weboffice/collabora.yml:traefik/opencloud.yml:traefik/collabora.yml:idm/ldap-keycloak.yml:traefik/ldap-keycloak.yml #COMPOSE_FILE=docker-compose.yml:weboffice/collabora.yml:traefik/opencloud.yml:traefik/collabora.yml:idm/ldap-keycloak.yml:traefik/ldap-keycloak.yml
# External IDP
#COMPOSE_FILE=docker-compose.yml:weboffice/collabora.yml:traefik/opencloud.yml:traefik/collabora.yml:idm/external-idp.yml
## Traefik Settings ## ## Traefik Settings ##
# Note: Traefik is always enabled and can't be disabled. # Note: Traefik is always enabled and can't be disabled.
@@ -61,12 +63,20 @@ TRAEFIK_SERVICES_TLS_CONFIG="tls.certresolver=letsencrypt"
# #
# The certificates need to be 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. # You can also use TRAEFIK_CERTS_DIR=/path/on/host to set the path to the certificates directory.
#TRAEFIK_CERTS_DIR=./certs
# Enable the access log for Traefik by setting the following variable to true. # Enable the access log for Traefik by setting the following variable to true.
TRAEFIK_ACCESS_LOG= TRAEFIK_ACCESS_LOG=
# Configure the log level for Traefik. # Configure the log level for Traefik.
# Possible values are "TRACE", "DEBUG", "INFO", "WARN", "ERROR", "FATAL" and "PANIC". Default is "ERROR". # Possible values are "TRACE", "DEBUG", "INFO", "WARN", "ERROR", "FATAL" and "PANIC". Default is "ERROR".
TRAEFIK_LOG_LEVEL= TRAEFIK_LOG_LEVEL=
# The default for traefik is to run in privileged mode.
# If you want to run traefik non-privileged, use the following variable and the format [UID]:[GID] to set user and group of your choice.
# Ensure that the user has access to docker.sock and traefik volumes defined in traefik/opencloud.yml
#TRAEFIK_CONTAINER_UID_GID="1000:1000"
# Configure ports for HTTP and HTTPS when necessary, defaults are 80 and 443
# Don't use ports in the range of 8000-9999 and 5232 as those ports are used internally and therefore might create conflicts.
#TRAEFIK_PORT_HTTP=4080
#TRAEFIK_PORT_HTTPS=4443
## OpenCloud Settings ## ## OpenCloud Settings ##
# The opencloud container image. # The opencloud container image.
@@ -75,8 +85,13 @@ TRAEFIK_LOG_LEVEL=
# Defaults to production if not set otherwise # Defaults to production if not set otherwise
OC_DOCKER_IMAGE=opencloudeu/opencloud-rolling OC_DOCKER_IMAGE=opencloudeu/opencloud-rolling
# The openCloud container version. # The openCloud container version.
# Defaults to "latest" and points to the latest stable tag. # Defaults to the latest version-tag. Use git pull to update.
OC_DOCKER_TAG= OC_DOCKER_TAG=
# The default id used in opencloud containers is 1000 for user and group.
# If you want to change the default, use the following variable and the format [UID]:[GID].
# The change affects all containers with access to data volumes.
# Ensure that the user has access to all volumes defined in docker-compose.yml
#OC_CONTAINER_UID_GID="1000:1000"
# Domain of openCloud, where you can find the frontend. # Domain of openCloud, where you can find the frontend.
# Defaults to "cloud.opencloud.test" # Defaults to "cloud.opencloud.test"
OC_DOMAIN= OC_DOMAIN=
@@ -93,6 +108,9 @@ DEMO_USERS=
# After the first initialization, the admin password can only be changed via the OpenCloud User Settings UI or by using the OpenCloud CLI. # After the first initialization, the admin password can only be changed via the OpenCloud User Settings UI or by using the OpenCloud CLI.
# Documentation: https://docs.opencloud.eu/docs/admin/resources/common-issues#-change-admin-password-set-in-env # Documentation: https://docs.opencloud.eu/docs/admin/resources/common-issues#-change-admin-password-set-in-env
INITIAL_ADMIN_PASSWORD= INITIAL_ADMIN_PASSWORD=
# Whether clients should check for updates.
# Defaults to "true".
CHECK_FOR_UPDATES=
# Define the openCloud loglevel used. # Define the openCloud loglevel used.
# #
LOG_LEVEL= LOG_LEVEL=
@@ -106,17 +124,23 @@ LOG_LEVEL=
# This matches the default user inside the container and avoids permission issues when accessing files. # This matches the default user inside the container and avoids permission issues when accessing files.
# Note that especially the data directory can grow big. # Note that especially the data directory can grow big.
# Leaving it default stores data in docker internal volumes. # Leaving it default stores data in docker internal volumes.
# OC_CONFIG_DIR=/your/local/opencloud/config OC_CONFIG_DIR=
# OC_DATA_DIR=/your/local/opencloud/data OC_DATA_DIR=
# OpenCloud Web can load extensions from a local directory. # OpenCloud Web can load extensions from a local directory.
# The default uses the bind mount to the config/opencloud/apps directory. # The default uses the bind mount to the config/opencloud/apps directory.
# Example: curl -L https://github.com/opencloud-eu/web-extensions/releases/download/unzip-v1.0.2/unzip-1.0.2.zip | tar -xz -C config/opencloud/apps # Example: curl -L https://github.com/opencloud-eu/web-extensions/releases/download/unzip-v1.0.2/unzip-1.0.2.zip -o config/opencloud/apps/unzip-1.0.2.zip && unzip config/opencloud/apps/unzip-1.0.2.zip -d config/opencloud/apps && rm config/opencloud/apps/unzip-1.0.2.zip
# 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
#
# The default language used by services and the WebUI.
# Uses ISO 639-1 language codes (e.g. "en", "de", "fr").
# Defaults to English if not set.
DEFAULT_LANGUAGE=
# Define the ldap-server storage location. Set the paths for config and data to a local path. # Define the ldap-server storage location. Set the paths for config and data to a local path.
# LDAP_CERTS_DIR= # Leaving it default stores data in docker internal volumes.
# LDAP_DATA_DIR= 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.
@@ -137,6 +161,8 @@ DECOMPOSEDS3_BUCKET=
# Define SMTP settings if you would like to send OpenCloud email notifications. # Define SMTP settings if you would like to send OpenCloud email notifications.
# To actually send notifications, you also need to enable the 'notifications' service
# by adding it to the START_ADDITIONAL_SERVICES variable below.
# #
# NOTE: when configuring Inbucket, these settings have no effect, see inbucket.yml for details. # NOTE: when configuring Inbucket, these settings have no effect, see inbucket.yml for details.
# SMTP host to connect to. # SMTP host to connect to.
@@ -157,12 +183,11 @@ SMTP_TRANSPORT_ENCRYPTION=
# Allow insecure connections to the SMTP server. Defaults to false. # Allow insecure connections to the SMTP server. Defaults to false.
SMTP_INSECURE= SMTP_INSECURE=
# Addititional services to be started on opencloud startup # Additional services to be started on opencloud startup
# The following list of services is not startet automatically and must be # The following list of services is not started automatically and must be
# manually defined for startup: # manually defined for startup:
# IMPORTANT: The notification service is MANDATORY, do not delete!
# IMPORTANT: Add any services to the startup list comma separated like "notifications,antivirus" etc. # IMPORTANT: Add any services to the startup list comma separated like "notifications,antivirus" etc.
START_ADDITIONAL_SERVICES="notifications" START_ADDITIONAL_SERVICES=""
## Default Enabled Services ## ## Default Enabled Services ##
@@ -174,7 +199,11 @@ START_ADDITIONAL_SERVICES="notifications"
# search/tika.yml or by using the following command: # search/tika.yml or by using the following command:
# docker compose -f docker-compose.yml -f search/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"
# The slim variant is recommended for most use cases as it provides core text extraction
# functionality with a smaller image size and faster startup time.
# Only use the full variant (apache/tika:latest-full) if you need specialized features
# like advanced OCR or specific image processing capabilities.
TIKA_IMAGE= TIKA_IMAGE=
### IMPORTANT Note for Online Office Apps ### ### IMPORTANT Note for Online Office Apps ###
@@ -203,12 +232,18 @@ COLLABORA_SSL_ENABLE=false
# If you're on an internet-facing server, enable SSL verification for Collabora Online. # If you're on an internet-facing server, enable SSL verification for Collabora Online.
# Please comment out the following line: # Please comment out the following line:
COLLABORA_SSL_VERIFICATION=false COLLABORA_SSL_VERIFICATION=false
# Enable home mode in Collabore Online.
# Home users can enable this setting, which in turn disables welcome screen and user feedback popups,
# but also limits concurrent open connections to 20 and concurrent open documents to 10.
# Default is false if not specified.
COLLABORA_HOME_MODE=
### Virusscanner Settings ### ### Virusscanner Settings ###
# IMPORTANT: If you enable antivirus, you also MUST configure the START_ADDITIONAL_SERVICES # IMPORTANT: If you enable antivirus, you also MUST configure the START_ADDITIONAL_SERVICES
# envvar in the OpenCloud Settings above by adding 'antivirus' to the list. # envvar in the OpenCloud Settings above by adding 'antivirus' to the list.
# The maximum scan size the virus scanner can handle, needs adjustment in the scanner config as well. # The maximum scan size the virus scanner can handle, needs adjustment in the scanner config as well:
# For ClamAV, set CLAMD_CONF_StreamMaxLength in antivirus/clamav.yml to the same or a higher value.
# Usable common abbreviations: [KB, KiB, MB, MiB, GB, GiB, TB, TiB, PB, PiB, EB, EiB], example: 2GB. # Usable common abbreviations: [KB, KiB, MB, MiB, GB, GiB, TB, TiB, PB, PiB, EB, EiB], example: 2GB.
# Defaults to "100MB" # Defaults to "100MB"
#ANTIVIRUS_MAX_SCAN_SIZE= #ANTIVIRUS_MAX_SCAN_SIZE=
@@ -216,7 +251,7 @@ COLLABORA_SSL_VERIFICATION=false
# Defaults to "partial" # Defaults to "partial"
#ANTIVIRUS_MAX_SCAN_SIZE_MODE= #ANTIVIRUS_MAX_SCAN_SIZE_MODE=
# Image version of the ClamAV container. # Image version of the ClamAV container.
# Defaults to "latest"y # Defaults to "latest"
CLAMAV_DOCKER_TAG= CLAMAV_DOCKER_TAG=
@@ -278,6 +313,23 @@ IDP_DOMAIN=
IDP_ISSUER_URL= IDP_ISSUER_URL=
# Url of the account edit page from your Identity Provider. # Url of the account edit page from your Identity Provider.
IDP_ACCOUNT_URL= IDP_ACCOUNT_URL=
# Global Client ID: You can override this by specifying a custom client ID, or leave it blank to use the OC defaults, as described in the documentation
#OC_OIDC_CLIENT_ID=
# Declares which property should be used for the oidc claim
# Example: "roles"
PROXY_ROLE_ASSIGNMENT_OIDC_CLAIM=
# Defines the OIDC client scope
# Example: "openid profile email roles"
OC_OIDC_CLIENT_SCOPES=
# Client specific environment vars
#WEBFINGER_WEB_OIDC_CLIENT_ID=
#WEBFINGER_WEB_OIDC_CLIENT_SCOPES=
#WEBFINGER_IOS_OIDC_CLIENT_ID=
#WEBFINGER_IOS_OIDC_CLIENT_SCOPES=
#WEBFINGER_ANDROID_OIDC_CLIENT_ID=
#WEBFINGER_ANDROID_OIDC_CLIENT_SCOPES=
#WEBFINGER_DESKTOP_OIDC_CLIENT_ID=
#WEBFINGER_DESKTOP_OIDC_CLIENT_SCOPES=
## Shared User Directory Mode ## ## Shared User Directory Mode ##
# Use together with idm/ldap-keycloak.yml and traefik/ldap-keycloak.yml # Use together with idm/ldap-keycloak.yml and traefik/ldap-keycloak.yml
@@ -287,11 +339,26 @@ KEYCLOAK_DOMAIN=
KEYCLOAK_ADMIN= KEYCLOAK_ADMIN=
# Admin user login password. Defaults to "admin". # Admin user login password. Defaults to "admin".
KEYCLOAK_ADMIN_PASSWORD= KEYCLOAK_ADMIN_PASSWORD=
# Configure the log level for Keycloak.
# Possible values are "TRACE", "DEBUG", "INFO", "WARN", "ERROR", "FATAL" and "OFF". Default is "INFO".
KC_LOG_LEVEL=
# Keycloak Database username. Defaults to "keycloak". # Keycloak Database username. Defaults to "keycloak".
KC_DB_USERNAME= KC_DB_USERNAME=
# Keycloak Database password. Defaults to "keycloak". # Keycloak Database password. Defaults to "keycloak".
KC_DB_PASSWORD= KC_DB_PASSWORD=
## Demo Users ##
# Enable demo users and groups in the shared LDAP directory.
# To enable, create custom/ldap-keycloak-demo-users.yml with:
# services:
# ldap-server:
# volumes:
# - ./config/ldap/ldif/30_demo_users.ldif:/ldifs/30_demo_users.ldif
# - ./config/ldap/ldif/40_demo_groups.ldif:/ldifs/40_demo_groups.ldif
#
# Then add it to: COMPOSE_FILE=docker-compose.yml:weboffice/collabora.yml:traefik/opencloud.yml:traefik/collabora.yml:idm/ldap-keycloak.yml:traefik/ldap-keycloak.yml:custom/ldap-keycloak-demo-users.yml
# WARNING: Do not use in production.
### Radicale Setting ### ### Radicale Setting ###
# Radicale is a small open-source CalDAV (calendars, to-do lists) and CardDAV (contacts) server. # Radicale is a small open-source CalDAV (calendars, to-do lists) and CardDAV (contacts) server.
# When enabled OpenCloud is configured as a reverse proxy for Radicale, providing all authenticated # When enabled OpenCloud is configured as a reverse proxy for Radicale, providing all authenticated

1
.gitignore vendored
View File

@@ -5,6 +5,7 @@
# exclude the apps folder # exclude the apps folder
/config/opencloud/apps/* /config/opencloud/apps/*
!/config/opencloud/apps/.gitkeep !/config/opencloud/apps/.gitkeep
!/config/opencloud/apps/maps
# exclude custom compose files # exclude custom compose files
/custom /custom

View File

@@ -2,6 +2,9 @@
This repository provides Docker Compose configurations for deploying OpenCloud in various environments. This repository provides Docker Compose configurations for deploying OpenCloud in various environments.
> [!IMPORTANT]
> Please use the [official docs](https://docs.opencloud.eu/docs/admin/getting-started/container/docker-compose/docker-compose-base) for a **Production Deployment**.
## Overview ## Overview
OpenCloud Compose offers a modular approach to deploying OpenCloud with several configuration options: OpenCloud Compose offers a modular approach to deploying OpenCloud with several configuration options:
@@ -13,6 +16,7 @@ OpenCloud Compose offers a modular approach to deploying OpenCloud with several
- **Full text search** with Apache Tika for content extraction and metadata analysis - **Full text search** with Apache Tika for content extraction and metadata analysis
- **Monitoring** with metrics endpoints for observability and performance monitoring - **Monitoring** with metrics endpoints for observability and performance monitoring
- **Radicale** integration for Calendar and Contacts - **Radicale** integration for Calendar and Contacts
- **ClamAV** antivirus scanning with ClamAV
## Quick Start Guide ## Quick Start Guide
@@ -42,8 +46,9 @@ OpenCloud Compose offers a modular approach to deploying OpenCloud with several
3. **Set admin password**: 3. **Set admin password**:
set `INITIAL_ADMIN_PASSWORD=your_secure_password` environment variable in your `.env` file set `INITIAL_ADMIN_PASSWORD=your_secure_password` environment variable in your `.env` file
4. **Domain**:
4. **Configure deployment options**: optionally, set `OC_DOMAIN=your-domain.com` to overwrite the default `cloud.opencloud.test`
5. **Configure deployment options**:
You can deploy using explicit `-f` flags: You can deploy using explicit `-f` flags:
```bash ```bash
@@ -60,38 +65,18 @@ OpenCloud Compose offers a modular approach to deploying OpenCloud with several
docker compose up -d docker compose up -d
``` ```
5. **Add local domains to `/etc/hosts`** (for local development only): 6. **Add local domains to `/etc/hosts`** (for local development only):
``` ```
127.0.0.1 cloud.opencloud.test 127.0.0.1 cloud.opencloud.test
127.0.0.1 traefik.opencloud.test 127.0.0.1 traefik.opencloud.test
127.0.0.1 keycloak.opencloud.test 127.0.0.1 keycloak.opencloud.test
``` ```
6. **Access OpenCloud**: 7. **Access OpenCloud**:
- URL: https://cloud.opencloud.test - URL: https://cloud.opencloud.test
- Username: `admin` - Username: `admin`
- Password: value of your `INITIAL_ADMIN_PASSWORD` - 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 (replace `.opencloud.test` domains with your real domains)
- Admin password
- SSL certificate email
- Storage paths
2. **Configure deployment options** in `.env`:
```
COMPOSE_FILE=docker-compose.yml:weboffice/collabora.yml:traefik/opencloud.yml:traefik/collabora.yml
```
3. **Start OpenCloud**:
```bash
docker compose up -d
```
## Deployment Options ## Deployment Options
### With Keycloak and LDAP using a Shared User Directory ### With Keycloak and LDAP using a Shared User Directory
@@ -163,6 +148,14 @@ This setup includes:
- Full text search functionality in the OpenCloud interface - Full text search functionality in the OpenCloud interface
- Support for documents, PDFs, images, and other file types - Support for documents, PDFs, images, and other file types
**Tika Image Variant:**
By default, OpenCloud Compose uses `apache/tika:latest` which provides:
- Smaller image size (~300MB vs ~1.2GB for the full variant)
- Faster container startup and deployment
- Core text extraction functionality for common document formats (PDF, Office docs, text files, etc.)
The base variant is recommended for most use cases. If you need advanced features like specialized OCR processing or specific image format support, you can override the image by setting `TIKA_IMAGE=apache/tika:latest-full` in your `.env` file.
### With Radicale ### With Radicale
Enable CalDAV (calendars, to-do lists) and CardDAV (contacts) server. Enable CalDAV (calendars, to-do lists) and CardDAV (contacts) server.
@@ -239,6 +232,25 @@ This exposes the necessary ports:
If you're using **Nginx Proxy Manager (NPM)**, you **should NOT** activate **"Block Common Exploits"** for the Proxy Host. 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**. Otherwise, the desktop app authentication will return **error 403 Forbidden**.
### ClamAV anti-virus
Enable anti-virus scans for uploaded files.
Using `-f` flags:
```bash
docker compose -f docker-compose.yml -f antivirus/clamav.yml -f traefik/opencloud.yml up -d
```
Or by setting in `.env`:
```
COMPOSE_FILE=docker-compose.yml:antivirus/clamav.yml:traefik/opencloud.yml
```
**Important:** adjust the variable in `.env` to start the antivirus service. Add additional services separated by comma, e.g. `notifications,antivirus`:
```
START_ADDITIONAL_SERVICES="antivirus"
```
## SSL Certificate Support ## SSL Certificate Support
@@ -273,10 +285,6 @@ OpenCloud Compose supports adding SSL certificates for public domains and develo
keyFile: /certs/opencloud.test.key keyFile: /certs/opencloud.test.key
stores: stores:
- default - default
- certFile: /certs/wildcard.example.com.crt
keyFile: /certs/wildcard.example.com.key
stores:
- default
``` ```
3. **Configure environment variables**: 3. **Configure environment variables**:
@@ -334,7 +342,7 @@ Key variables:
| `INSECURE` | Skip certificate validation | true | | `INSECURE` | Skip certificate validation | true |
| `COLLABORA_DOMAIN` | Collabora domain | collabora.opencloud.test | | `COLLABORA_DOMAIN` | Collabora domain | collabora.opencloud.test |
| `WOPISERVER_DOMAIN` | WOPI server domain | wopiserver.opencloud.test | | `WOPISERVER_DOMAIN` | WOPI server domain | wopiserver.opencloud.test |
| `TIKA_IMAGE` | Apache Tika image tag | apache/tika:latest-full | | `TIKA_IMAGE` | Apache Tika image tag | apache/tika:slim |
| `KEYCLOAK_DOMAIN` | Keycloak domain | keycloak.opencloud.test | | `KEYCLOAK_DOMAIN` | Keycloak domain | keycloak.opencloud.test |
| `KEYCLOAK_ADMIN` | Keycloak admin username | kcadmin | | `KEYCLOAK_ADMIN` | Keycloak admin username | kcadmin |
| `KEYCLOAK_ADMIN_PASSWORD` | Keycloak admin password | admin | | `KEYCLOAK_ADMIN_PASSWORD` | Keycloak admin password | admin |

38
antivirus/clamav.yml Normal file
View File

@@ -0,0 +1,38 @@
---
services:
opencloud:
environment:
POSTPROCESSING_STEPS: "virusscan"
STORAGE_USERS_DATA_GATEWAY_URL: "http://opencloud:9200/data"
ANTIVIRUS_MAX_SCAN_SIZE: ${ANTIVIRUS_MAX_SCAN_SIZE:-100MB}
ANTIVIRUS_INFECTED_FILE_HANDLING: abort
ANTIVIRUS_MAX_SCAN_SIZE_MODE: ${ANTIVIRUS_MAX_SCAN_SIZE_MODE:-partial}
ANTIVIRUS_WORKERS: 1
ANTIVIRUS_CLAMAV_SOCKET: /var/run/clamav/clamd.sock
ANTIVIRUS_SCANNER_TYPE: clamav
volumes:
- clamav-socket:/var/run/clamav
depends_on:
clamav:
condition: service_healthy
clamav:
image: clamav/clamav:${CLAMAV_DOCKER_TAG:-latest}
environment:
# Accepts a number with optional K, M or G suffix. Must be greater or equal to ANTIVIRUS_MAX_SCAN_SIZE above.
# K = KiB (1024), M = MiB (1024 * 1024), G = GiB (1024 * 1024 * 1024)
CLAMD_CONF_StreamMaxLength: 100M
networks:
opencloud-net:
volumes:
- clamav-socket:/tmp
- clamav-db:/var/lib/clamav
logging:
driver: ${LOG_DRIVER:-local}
restart: always
healthcheck:
test: sh -c "[ -S /tmp/clamd.sock ]"
timeout: 1s
retries: 20
volumes:
clamav-db:
clamav-socket:

View File

@@ -1,5 +1,8 @@
#!/bin/bash #!/bin/bash
printenv # print env variables for trace/debug log levels
log_level=$(printf '%s' "$KC_LOG_LEVEL" | tr '[:upper:]' '[:lower:]')
case "$log_level" in trace|debug) printenv ;; *) ;; esac
# 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

View File

@@ -676,6 +676,7 @@
"profile", "profile",
"roles", "roles",
"groups", "groups",
"OpenCloudUnique_ID",
"basic", "basic",
"email" "email"
], ],

11
config/ldap/init-ldap-acls.sh Executable file
View File

@@ -0,0 +1,11 @@
#!/usr/bin/env bash
set -eu
# apply acls
echo -n "Applying acls... "
slapmodify -F /opt/bitnami/openldap/etc/slapd.d -b cn=config -l /opt/bitnami/openldap/etc/schema/50_acls.ldif
if [ $? -eq 0 ]; then
echo "done."
else
echo "failed."
fi

View File

@@ -0,0 +1,9 @@
# OpenCloud ldap acl file which gets applied during the first db initialisation
dn: olcDatabase={2}mdb,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to dn.subtree="dc=opencloud,dc=eu" attrs=entry,uid,objectClass,entryUUID
by * read
olcAccess: {1}to attrs=userPassword
by self write
by * auth

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
import{t as e}from"./preload-helper-DafEc2pQ.mjs";await(await e(()=>import(`./remoteEntry-lxWu31Tr.mjs`),[],import.meta.url)).init();

View File

@@ -0,0 +1 @@
import"./dist-r7AkbZvS.mjs";var e={"@opencloud-eu/web-client":{name:`@opencloud-eu/web-client`,version:void 0,scope:[`default`],loaded:!1,from:`maps`,async get(){throw Error(`[Module Federation] Shared module '@opencloud-eu/web-client' must be provided by host`)},shareConfig:{singleton:!0,requiredVersion:`*`,import:!1}},"@opencloud-eu/web-client/graph":{name:`@opencloud-eu/web-client/graph`,version:void 0,scope:[`default`],loaded:!1,from:`maps`,async get(){throw Error(`[Module Federation] Shared module '@opencloud-eu/web-client/graph' must be provided by host`)},shareConfig:{singleton:!0,requiredVersion:`*`,import:!1}},"@opencloud-eu/web-client/graph/generated":{name:`@opencloud-eu/web-client/graph/generated`,version:void 0,scope:[`default`],loaded:!1,from:`maps`,async get(){throw Error(`[Module Federation] Shared module '@opencloud-eu/web-client/graph/generated' must be provided by host`)},shareConfig:{singleton:!0,requiredVersion:`*`,import:!1}},"@opencloud-eu/web-client/ocs":{name:`@opencloud-eu/web-client/ocs`,version:void 0,scope:[`default`],loaded:!1,from:`maps`,async get(){throw Error(`[Module Federation] Shared module '@opencloud-eu/web-client/ocs' must be provided by host`)},shareConfig:{singleton:!0,requiredVersion:`*`,import:!1}},"@opencloud-eu/web-client/sse":{name:`@opencloud-eu/web-client/sse`,version:void 0,scope:[`default`],loaded:!1,from:`maps`,async get(){throw Error(`[Module Federation] Shared module '@opencloud-eu/web-client/sse' must be provided by host`)},shareConfig:{singleton:!0,requiredVersion:`*`,import:!1}},"@opencloud-eu/web-client/webdav":{name:`@opencloud-eu/web-client/webdav`,version:void 0,scope:[`default`],loaded:!1,from:`maps`,async get(){throw Error(`[Module Federation] Shared module '@opencloud-eu/web-client/webdav' must be provided by host`)},shareConfig:{singleton:!0,requiredVersion:`*`,import:!1}},"@opencloud-eu/web-pkg":{name:`@opencloud-eu/web-pkg`,version:void 0,scope:[`default`],loaded:!1,from:`maps`,async get(){throw Error(`[Module Federation] Shared module '@opencloud-eu/web-pkg' must be provided by host`)},shareConfig:{singleton:!0,requiredVersion:`*`,import:!1}},luxon:{name:`luxon`,version:void 0,scope:[`default`],loaded:!1,from:`maps`,async get(){throw Error(`[Module Federation] Shared module 'luxon' must be provided by host`)},shareConfig:{singleton:!0,requiredVersion:`*`,import:!1}},pinia:{name:`pinia`,version:void 0,scope:[`default`],loaded:!1,from:`maps`,async get(){throw Error(`[Module Federation] Shared module 'pinia' must be provided by host`)},shareConfig:{singleton:!0,requiredVersion:`*`,import:!1}},vue:{name:`vue`,version:void 0,scope:[`default`],loaded:!1,from:`maps`,async get(){throw Error(`[Module Federation] Shared module 'vue' must be provided by host`)},shareConfig:{singleton:!0,requiredVersion:`*`,import:!1}},"vue3-gettext":{name:`vue3-gettext`,version:void 0,scope:[`default`],loaded:!1,from:`maps`,async get(){throw Error(`[Module Federation] Shared module 'vue3-gettext' must be provided by host`)},shareConfig:{singleton:!0,requiredVersion:`*`,import:!1}}},t=[];export{t as usedRemotes,e as usedShared};

View File

@@ -0,0 +1 @@
import{t as e}from"./src-CIfRBuLG.mjs";export{e as default};

View File

@@ -0,0 +1 @@
var e=`__mf_init____mf__virtual/maps__mf_v__runtimeInit__mf_v__.js__`,t=globalThis[e];if(!t){let n,r,i=new Promise((e,t)=>{n=e,r=t});t=globalThis[e]={initPromise:i,initResolve:n,initReject:r},typeof window>`u`&&n({loadRemote:function(){return Promise.resolve(void 0)},loadShare:function(){return Promise.resolve(void 0)}})}var n=await t.initPromise.then(e=>e.loadShare(`vue3-gettext`,{customShareInfo:{shareConfig:{singleton:!0,strictVersion:!1,requiredVersion:`*`}}})).then(e=>typeof e==`function`?e():e);n.__esModule,n.default;var{createGettext:r,defineGettextConfig:i,makePO:a,parseSrc:o,tokenize:s,useGettext:c}=n;export{c as t};

View File

@@ -0,0 +1 @@
var e=`__mf_init____mf__virtual/maps__mf_v__runtimeInit__mf_v__.js__`,t=globalThis[e];if(!t){let n,r,i=new Promise((e,t)=>{n=e,r=t});t=globalThis[e]={initPromise:i,initResolve:n,initReject:r},typeof window>`u`&&n({loadRemote:function(){return Promise.resolve(void 0)},loadShare:function(){return Promise.resolve(void 0)}})}var n=await t.initPromise.then(e=>e.loadShare(`vue`,{customShareInfo:{shareConfig:{singleton:!0,strictVersion:!1,requiredVersion:`*`}}})).then(e=>typeof e==`function`?e():e);n.__esModule,n.default;var{compile:r,Transition:i,TransitionGroup:a,VueElement:ee,createApp:te,createSSRApp:ne,defineCustomElement:re,defineSSRCustomElement:ie,hydrate:ae,initDirectivesForSSR:oe,nodeOps:se,patchProp:ce,render:le,useCssModule:ue,useCssVars:de,useHost:fe,useShadowRoot:pe,vModelCheckbox:me,vModelDynamic:he,vModelRadio:ge,vModelSelect:_e,vModelText:o,vShow:s,withKeys:c,withModifiers:l,EffectScope:u,ReactiveEffect:d,TrackOpTypes:f,TriggerOpTypes:p,customRef:m,effect:h,effectScope:g,getCurrentScope:_,getCurrentWatcher:v,isProxy:y,isReactive:b,isReadonly:x,isRef:S,isShallow:C,markRaw:w,onScopeDispose:T,onWatcherCleanup:E,proxyRefs:D,reactive:O,readonly:k,ref:A,shallowReactive:j,shallowReadonly:M,shallowRef:N,stop:P,toRaw:F,toRef:I,toRefs:ve,toValue:ye,triggerRef:be,unref:L,camelize:xe,capitalize:Se,normalizeClass:R,normalizeProps:Ce,normalizeStyle:we,toDisplayString:z,toHandlerKey:Te,BaseTransition:Ee,BaseTransitionPropsValidators:De,Comment:Oe,DeprecationTypes:ke,ErrorCodes:Ae,ErrorTypeStrings:je,Fragment:Me,KeepAlive:Ne,Static:Pe,Suspense:Fe,Teleport:Ie,Text:Le,assertNumber:Re,callWithAsyncErrorHandling:ze,callWithErrorHandling:Be,cloneVNode:Ve,compatUtils:He,computed:B,createBlock:V,createCommentVNode:H,createElementBlock:U,createElementVNode:W,createHydrationRenderer:Ue,createPropsRestProxy:We,createRenderer:Ge,createSlots:Ke,createStaticVNode:qe,createTextVNode:Je,createVNode:Ye,defineAsyncComponent:Xe,defineComponent:G,defineEmits:Ze,defineExpose:K,defineModel:Qe,defineOptions:$e,defineProps:et,defineSlots:tt,devtools:nt,getCurrentInstance:rt,getTransitionRawChildren:it,guardReactiveProps:at,h:ot,handleError:st,hasInjectionContext:ct,hydrateOnIdle:lt,hydrateOnInteraction:ut,hydrateOnMediaQuery:dt,hydrateOnVisible:ft,initCustomFormatter:pt,inject:mt,isMemoSame:ht,isRuntimeOnly:gt,isVNode:_t,mergeDefaults:vt,mergeModels:yt,mergeProps:bt,nextTick:xt,onActivated:St,onBeforeMount:Ct,onBeforeUnmount:q,onBeforeUpdate:wt,onDeactivated:Tt,onErrorCaptured:Et,onMounted:J,onRenderTracked:Dt,onRenderTriggered:Ot,onServerPrefetch:kt,onUnmounted:Y,onUpdated:At,openBlock:X,popScopeId:jt,provide:Mt,pushScopeId:Nt,queuePostFlushCb:Pt,registerRuntimeCompiler:Ft,renderList:It,renderSlot:Lt,resolveComponent:Rt,resolveDirective:zt,resolveDynamicComponent:Bt,resolveFilter:Vt,resolveTransitionHooks:Ht,setBlockTracking:Ut,setDevtoolsHook:Wt,setTransitionHooks:Gt,ssrContextKey:Kt,ssrUtils:qt,toHandlers:Jt,transformVNodeArgs:Yt,useAttrs:Xt,useId:Zt,useModel:Qt,useSSRContext:$t,useSlots:en,useTemplateRef:Z,useTransitionState:tn,version:nn,warn:rn,watch:Q,watchEffect:an,watchPostEffect:on,watchSyncEffect:sn,withAsyncContext:cn,withCtx:$,withDefaults:ln,withDirectives:un,withMemo:dn,withScopeId:fn}=n;export{G as _,Z as a,A as c,z as d,B as f,W as g,U as h,X as i,L as l,H as m,J as n,Q as o,V as p,Y as r,$ as s,q as t,R as u};

View File

@@ -0,0 +1 @@
var e=`modulepreload`,t=function(e,t){return new URL(e,t).href},n={},r=function(r,i,a){let o=Promise.resolve();if(i&&i.length>0){let r=document.getElementsByTagName(`link`),s=document.querySelector(`meta[property=csp-nonce]`),c=s?.nonce||s?.getAttribute(`nonce`);function l(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}o=l(i.map(i=>{if(i=t(i,a),i in n)return;n[i]=!0;let o=i.endsWith(`.css`),s=o?`[rel="stylesheet"]`:``;if(a)for(let e=r.length-1;e>=0;e--){let t=r[e];if(t.href===i&&(!o||t.rel===`stylesheet`))return}else if(document.querySelector(`link[href="${i}"]${s}`))return;let l=document.createElement(`link`);if(l.rel=o?`stylesheet`:e,o||(l.as=`script`),l.crossOrigin=``,l.href=i,c&&l.setAttribute(`nonce`,c),document.head.appendChild(l),o)return new Promise((e,t)=>{l.addEventListener(`load`,e),l.addEventListener(`error`,()=>t(Error(`Unable to preload CSS for ${i}`)))})}))}function s(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return o.then(e=>{for(let t of e||[])t.status===`rejected`&&s(t.reason);return r().catch(s)})};export{r as t};

View File

@@ -0,0 +1,2 @@
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./localSharedImportMap-CALnqYrs.mjs","./dist-r7AkbZvS.mjs","./preload-helper-DafEc2pQ.mjs","./virtualExposes-CZMUMkHF.mjs"])))=>i.map(i=>d[i]);
import{t as e}from"./dist-r7AkbZvS.mjs";import{t}from"./preload-helper-DafEc2pQ.mjs";typeof __VUE_HMR_RUNTIME__>`u`&&(globalThis.__VUE_HMR_RUNTIME__={createRecord(){},rerender(){},reload(){}});var n=`__mf_init____mf__virtual/maps__mf_v__runtimeInit__mf_v__.js__`,r=globalThis[n];if(!r){let e,t,i=new Promise((n,r)=>{e=n,t=r});r=globalThis[n]={initPromise:i,initResolve:e,initReject:t},typeof window>`u`&&e({loadRemote:function(){return Promise.resolve(void 0)},loadShare:function(){return Promise.resolve(void 0)}})}var i=r.initResolve,a={},o=`default`,s=`maps`,c,l;async function u(){return c??=t(()=>import(`./localSharedImportMap-CALnqYrs.mjs`),__vite__mapDeps([0,1,2]),import.meta.url),c}async function d(){return l??=t(()=>import(`./virtualExposes-CZMUMkHF.mjs`).then(e=>e.default??e),__vite__mapDeps([3,2]),import.meta.url),l}async function f(t={},n=[]){let{usedShared:r,usedRemotes:c}=await u(),l=e({name:s,remotes:c,shared:r,plugins:[],shareStrategy:`version-first`});var d=a[o];if(d||=a[o]={from:s},!(n.indexOf(d)>=0)){n.push(d),l.initShareScopeMap(`default`,t),i(l);try{await Promise.all(await l.initializeSharing(`default`,{strategy:`version-first`,from:`build`,initScope:n}))}catch(e){console.error(`[Module Federation]`,e)}return l}}async function p(e){let t=await d();if(!(e in t))throw Error(`[Module Federation] Module ${e} does not exist in container.`);return t[e]().then(e=>()=>e)}export{p as get,f as init};

View File

@@ -0,0 +1 @@
var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),s=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},c=(n,r,a)=>(a=n==null?{}:e(i(n)),s(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));export{c as n,o as t};

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
import{t as e}from"./src-CIfRBuLG.mjs";export{e as default};

View File

@@ -0,0 +1,2 @@
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["../assets/src-D755RU42.css"])))=>i.map(i=>d[i]);
import{t as e}from"./preload-helper-DafEc2pQ.mjs";var t={},n=new Set;async function r(e){if(typeof document>`u`)return;let r=t[e]||[];await Promise.all(r.map(e=>{let t=new URL(e,import.meta.url).href;return n.has(t)||(n.add(t),document.querySelector(`link[rel="stylesheet"][data-mf-href="${t}"]`))?Promise.resolve():new Promise((e,n)=>{let r=document.createElement(`link`);r.rel=`stylesheet`,r.href=t,r.setAttribute(`data-mf-href`,t),r.onload=()=>e(),r.onerror=()=>n(Error(`[Module Federation] Failed to load CSS asset: ${t}`)),document.head.appendChild(r)})}))}var i={".":async()=>{await r(`.`);let t=await e(()=>import(`./maps-BAf8IhJ5.mjs`),__vite__mapDeps([0]),import.meta.url),n={};return Object.assign(n,t),Object.defineProperty(n,`__esModule`,{value:!0,enumerable:!1}),n}};export{i as default};

View File

@@ -0,0 +1,3 @@
{
"entrypoint": "js/remoteEntry-lxWu31Tr.mjs"
}

View File

@@ -4,11 +4,12 @@ directives:
connect-src: connect-src:
- '''self''' - '''self'''
- 'blob:' - 'blob:'
- 'https://${COMPANION_DOMAIN|companion.opencloud.test}/' - 'https://${COMPANION_DOMAIN|companion.opencloud.test}${TRAEFIK_PORT_HTTPS}/'
- 'wss://${COMPANION_DOMAIN|companion.opencloud.test}/' - 'wss://${COMPANION_DOMAIN|companion.opencloud.test}${TRAEFIK_PORT_HTTPS}/'
- 'https://raw.githubusercontent.com/opencloud-eu/awesome-apps/' - 'https://raw.githubusercontent.com/opencloud-eu/awesome-apps/'
- 'https://${IDP_DOMAIN|keycloak.opencloud.test}/' - 'https://${IDP_DOMAIN|keycloak.opencloud.test}${TRAEFIK_PORT_HTTPS}/'
- 'https://update.opencloud.eu/' - 'https://update.opencloud.eu/'
- 'https://tile.openstreetmap.org/'
default-src: default-src:
- '''none''' - '''none'''
font-src: font-src:
@@ -20,7 +21,7 @@ directives:
- 'blob:' - 'blob:'
- 'https://embed.diagrams.net/' - 'https://embed.diagrams.net/'
# In contrary to bash and docker the default is given after the | character # In contrary to bash and docker the default is given after the | character
- 'https://${COLLABORA_DOMAIN|collabora.opencloud.test}/' - 'https://${COLLABORA_DOMAIN|collabora.opencloud.test}${TRAEFIK_PORT_HTTPS}/'
# This is needed for the external-sites web extension when embedding sites # This is needed for the external-sites web extension when embedding sites
- 'https://docs.opencloud.eu' - 'https://docs.opencloud.eu'
img-src: img-src:
@@ -28,8 +29,10 @@ directives:
- 'data:' - 'data:'
- 'blob:' - 'blob:'
- 'https://raw.githubusercontent.com/opencloud-eu/awesome-apps/' - 'https://raw.githubusercontent.com/opencloud-eu/awesome-apps/'
- 'https://tile.openstreetmap.org/'
# In contrary to bash and docker the default is given after the | character # In contrary to bash and docker the default is given after the | character
- 'https://${COLLABORA_DOMAIN|collabora.opencloud.test}/' - 'https://${COLLABORA_DOMAIN|collabora.opencloud.test}${TRAEFIK_PORT_HTTPS}/'
- 'https://tile.openstreetmap.org/'
manifest-src: manifest-src:
- '''self''' - '''self'''
media-src: media-src:
@@ -40,7 +43,10 @@ directives:
script-src: script-src:
- '''self''' - '''self'''
- '''unsafe-inline''' - '''unsafe-inline'''
- 'https://${IDP_DOMAIN|keycloak.opencloud.test}/' - 'https://${IDP_DOMAIN|keycloak.opencloud.test}${TRAEFIK_PORT_HTTPS}/'
style-src: style-src:
- '''self''' - '''self'''
- '''unsafe-inline''' - '''unsafe-inline'''
worker-src:
- "'self'"
- 'blob:'

View File

@@ -14,10 +14,10 @@ add_arg "--log.level=${TRAEFIK_LOG_LEVEL:-ERROR}"
# enable dashboard # enable dashboard
add_arg "--api.dashboard=true" add_arg "--api.dashboard=true"
# define entrypoints # define entrypoints
add_arg "--entryPoints.http.address=:80" add_arg "--entryPoints.http.address=:${TRAEFIK_PORT_HTTP:-80}"
add_arg "--entryPoints.http.http.redirections.entryPoint.to=https" add_arg "--entryPoints.http.http.redirections.entryPoint.to=https"
add_arg "--entryPoints.http.http.redirections.entryPoint.scheme=https" add_arg "--entryPoints.http.http.redirections.entryPoint.scheme=https"
add_arg "--entryPoints.https.address=:443" add_arg "--entryPoints.https.address=:${TRAEFIK_PORT_HTTPS:-443}"
# change default timeouts for long-running requests # change default timeouts for long-running requests
# this is needed for webdav clients that do not support the TUS protocol # this is needed for webdav clients that do not support the TUS protocol
add_arg "--entryPoints.https.transport.respondingTimeouts.readTimeout=12h" add_arg "--entryPoints.https.transport.respondingTimeouts.readTimeout=12h"

View File

@@ -1,9 +1,11 @@
--- ---
services: services:
opencloud: opencloud:
image: ${OC_DOCKER_IMAGE:-opencloudeu/opencloud-rolling}:${OC_DOCKER_TAG:-latest} # renovate: depName=opencloudeu/opencloud-rolling
image: ${OC_DOCKER_IMAGE:-opencloudeu/opencloud-rolling}:${OC_DOCKER_TAG:-6.2.0}
# changelog: https://github.com/opencloud-eu/opencloud/tree/main/changelog # changelog: https://github.com/opencloud-eu/opencloud/tree/main/changelog
# release notes: https://docs.opencloud.eu/opencloud_release_notes.html # release notes: https://docs.opencloud.eu/opencloud_release_notes.html
user: ${OC_CONTAINER_UID_GID:-1000:1000}
networks: networks:
opencloud-net: opencloud-net:
entrypoint: entrypoint:
@@ -15,7 +17,7 @@ services:
environment: environment:
# enable services that are not started automatically # enable services that are not started automatically
OC_ADD_RUN_SERVICES: ${START_ADDITIONAL_SERVICES} OC_ADD_RUN_SERVICES: ${START_ADDITIONAL_SERVICES}
OC_URL: https://${OC_DOMAIN:-cloud.opencloud.test} OC_URL: https://${OC_DOMAIN:-cloud.opencloud.test}${TRAEFIK_PORT_HTTPS:+:}${TRAEFIK_PORT_HTTPS:-}
OC_LOG_LEVEL: ${LOG_LEVEL:-info} OC_LOG_LEVEL: ${LOG_LEVEL:-info}
OC_LOG_COLOR: "${LOG_PRETTY:-false}" OC_LOG_COLOR: "${LOG_PRETTY:-false}"
OC_LOG_PRETTY: "${LOG_PRETTY:-false}" OC_LOG_PRETTY: "${LOG_PRETTY:-false}"
@@ -35,22 +37,25 @@ services:
NOTIFICATIONS_SMTP_SENDER: "${SMTP_SENDER:-OpenCloud Notifications <notifications@cloud.opencloud.test>}" NOTIFICATIONS_SMTP_SENDER: "${SMTP_SENDER:-OpenCloud Notifications <notifications@cloud.opencloud.test>}"
NOTIFICATIONS_SMTP_USERNAME: "${SMTP_USERNAME}" NOTIFICATIONS_SMTP_USERNAME: "${SMTP_USERNAME}"
NOTIFICATIONS_SMTP_PASSWORD: "${SMTP_PASSWORD}" NOTIFICATIONS_SMTP_PASSWORD: "${SMTP_PASSWORD}"
NOTIFICATIONS_SMTP_INSECURE: "${SMTP_INSECURE}" NOTIFICATIONS_SMTP_INSECURE: "${SMTP_INSECURE:-false}"
NOTIFICATIONS_SMTP_AUTHENTICATION: "${SMTP_AUTHENTICATION}" NOTIFICATIONS_SMTP_AUTHENTICATION: "${SMTP_AUTHENTICATION}"
NOTIFICATIONS_SMTP_ENCRYPTION: "${SMTP_TRANSPORT_ENCRYPTION:-none}" NOTIFICATIONS_SMTP_ENCRYPTION: "${SMTP_TRANSPORT_ENCRYPTION:-none}"
FRONTEND_ARCHIVER_MAX_SIZE: "10000000000" FRONTEND_ARCHIVER_MAX_SIZE: "10000000000"
FRONTEND_CHECK_FOR_UPDATES: "${CHECK_FOR_UPDATES:-true}"
PROXY_CSP_CONFIG_FILE_LOCATION: /etc/opencloud/csp.yaml PROXY_CSP_CONFIG_FILE_LOCATION: /etc/opencloud/csp.yaml
# enable to allow using the banned passwords list # enable to allow using the banned passwords list
OC_PASSWORD_POLICY_BANNED_PASSWORDS_LIST: banned-password-list.txt OC_PASSWORD_POLICY_BANNED_PASSWORDS_LIST: banned-password-list.txt
# control the password enforcement and policy for public shares # control the password enforcement and policy for public shares
OC_SHARING_PUBLIC_SHARE_MUST_HAVE_PASSWORD: "${OC_SHARING_PUBLIC_SHARE_MUST_HAVE_PASSWORD:-true}" OC_SHARING_PUBLIC_SHARE_MUST_HAVE_PASSWORD: "${OC_SHARING_PUBLIC_SHARE_MUST_HAVE_PASSWORD:-true}"
OC_SHARING_PUBLIC_WRITEABLE_SHARE_MUST_HAVE_PASSWORD: "${OC_SHARING_PUBLIC_WRITEABLE_SHARE_MUST_HAVE_PASSWORD:-true}" OC_SHARING_PUBLIC_WRITEABLE_SHARE_MUST_HAVE_PASSWORD: "${OC_SHARING_PUBLIC_WRITEABLE_SHARE_MUST_HAVE_PASSWORD:-false}"
OC_PASSWORD_POLICY_DISABLED: "${OC_PASSWORD_POLICY_DISABLED:-false}" OC_PASSWORD_POLICY_DISABLED: "${OC_PASSWORD_POLICY_DISABLED:-false}"
OC_PASSWORD_POLICY_MIN_CHARACTERS: "${OC_PASSWORD_POLICY_MIN_CHARACTERS:-8}" OC_PASSWORD_POLICY_MIN_CHARACTERS: "${OC_PASSWORD_POLICY_MIN_CHARACTERS:-8}"
OC_PASSWORD_POLICY_MIN_LOWERCASE_CHARACTERS: "${OC_PASSWORD_POLICY_MIN_LOWERCASE_CHARACTERS:-1}" OC_PASSWORD_POLICY_MIN_LOWERCASE_CHARACTERS: "${OC_PASSWORD_POLICY_MIN_LOWERCASE_CHARACTERS:-1}"
OC_PASSWORD_POLICY_MIN_UPPERCASE_CHARACTERS: "${OC_PASSWORD_POLICY_MIN_UPPERCASE_CHARACTERS:-1}" OC_PASSWORD_POLICY_MIN_UPPERCASE_CHARACTERS: "${OC_PASSWORD_POLICY_MIN_UPPERCASE_CHARACTERS:-1}"
OC_PASSWORD_POLICY_MIN_DIGITS: "${OC_PASSWORD_POLICY_MIN_DIGITS:-1}" OC_PASSWORD_POLICY_MIN_DIGITS: "${OC_PASSWORD_POLICY_MIN_DIGITS:-1}"
OC_PASSWORD_POLICY_MIN_SPECIAL_CHARACTERS: "${OC_PASSWORD_POLICY_MIN_SPECIAL_CHARACTERS:-1}" OC_PASSWORD_POLICY_MIN_SPECIAL_CHARACTERS: "${OC_PASSWORD_POLICY_MIN_SPECIAL_CHARACTERS:-1}"
# default language for services/WebUI; defaults to English, language code (ISO 639-1, e.g. de, en, fr)
OC_DEFAULT_LANGUAGE: ${DEFAULT_LANGUAGE}
volumes: volumes:
- ./config/opencloud/csp.yaml:/etc/opencloud/csp.yaml - ./config/opencloud/csp.yaml:/etc/opencloud/csp.yaml
- ./config/opencloud/banned-password-list.txt:/etc/opencloud/banned-password-list.txt - ./config/opencloud/banned-password-list.txt:/etc/opencloud/banned-password-list.txt

View File

@@ -0,0 +1,11 @@
---
# only expose the ports when you know what you are doing!
services:
collaboration:
ports:
# expose the wopi server on all interfaces
- "0.0.0.0:9300:9300"
collabora:
ports:
# expose the collabora server on all interfaces
- "0.0.0.0:9980:9980"

View File

@@ -2,9 +2,9 @@
services: services:
collaboration: collaboration:
ports: ports:
# expose the wopi server # expose the wopi server on localhost
- "9300:9300" - "127.0.0.1:9300:9300"
collabora: collabora:
ports: ports:
# expose the collabora server # expose the collabora server on localhost
- "9980:9980" - "127.0.0.1:9980:9980"

View File

@@ -0,0 +1,8 @@
---
# only expose the ports when you know what you re doing!
services:
keycloak:
ports:
# expose the keycloak server on all interfaces
- "0.0.0.0:9000:9000"
- "0.0.0.0:8080:8080"

View File

@@ -2,5 +2,6 @@
services: services:
keycloak: keycloak:
ports: ports:
- "9000:9000" # expose the keycloak server on localhost
- "8080:8080" - "127.0.0.1:9000:9000"
- "127.0.0.1:8080:8080"

View File

@@ -0,0 +1,10 @@
---
# only expose the ports when you know what you are doing!
services:
opencloud:
environment:
# bind to all interfaces
PROXY_HTTP_ADDR: "0.0.0.0:9200"
ports:
# expose the opencloud server on all interfaces
- "0.0.0.0:9200:9200"

View File

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

View File

@@ -14,7 +14,17 @@ services:
GRAPH_LDAP_REFINT_ENABLED: "true" # osixia has refint enabled. GRAPH_LDAP_REFINT_ENABLED: "true" # osixia has refint enabled.
FRONTEND_READONLY_USER_ATTRIBUTES: "user.onPremisesSamAccountName,user.displayName,user.mail,user.passwordProfile,user.accountEnabled,user.appRoleAssignments" FRONTEND_READONLY_USER_ATTRIBUTES: "user.onPremisesSamAccountName,user.displayName,user.mail,user.passwordProfile,user.accountEnabled,user.appRoleAssignments"
PROXY_OIDC_REWRITE_WELLKNOWN: "true" PROXY_OIDC_REWRITE_WELLKNOWN: "true"
WEB_OIDC_CLIENT_ID: ${OC_OIDC_CLIENT_ID:-web} OC_OIDC_CLIENT_ID: ${OC_OIDC_CLIENT_ID}
OC_OIDC_CLIENT_SCOPES: ${OC_OIDC_CLIENT_SCOPES}
PROXY_ROLE_ASSIGNMENT_OIDC_CLAIM: ${PROXY_ROLE_ASSIGNMENT_OIDC_CLAIM:-roles}
WEBFINGER_WEB_OIDC_CLIENT_ID: ${WEBFINGER_WEB_OIDC_CLIENT_ID}
WEBFINGER_WEB_OIDC_CLIENT_SCOPES: ${WEBFINGER_WEB_OIDC_CLIENT_SCOPES}
WEBFINGER_ANDROID_OIDC_CLIENT_ID: ${WEBFINGER_ANDROID_OIDC_CLIENT_ID}
WEBFINGER_ANDROID_OIDC_CLIENT_SCOPES: ${WEBFINGER_ANDROID_OIDC_CLIENT_SCOPES}
WEBFINGER_IOS_OIDC_CLIENT_ID: ${WEBFINGER_IOS_OIDC_CLIENT_ID}
WEBFINGER_IOS_OIDC_CLIENT_SCOPES: ${WEBFINGER_IOS_OIDC_CLIENT_SCOPES}
WEBFINGER_DESKTOP_OIDC_CLIENT_ID: ${WEBFINGER_DESKTOP_OIDC_CLIENT_ID}
WEBFINGER_DESKTOP_OIDC_CLIENT_SCOPES: ${WEBFINGER_DESKTOP_OIDC_CLIENT_SCOPES}
PROXY_ROLE_ASSIGNMENT_DRIVER: "oidc" PROXY_ROLE_ASSIGNMENT_DRIVER: "oidc"
OC_OIDC_ISSUER: ${IDP_ISSUER_URL:-https://keycloak.opencloud.test/realms/openCloud} OC_OIDC_ISSUER: ${IDP_ISSUER_URL:-https://keycloak.opencloud.test/realms/openCloud}
# This specifies to start all services except idm and idp. These are replaced by external services. # This specifies to start all services except idm and idp. These are replaced by external services.
@@ -45,6 +55,7 @@ services:
WEB_OPTION_ACCOUNT_EDIT_LINK_HREF: ${IDP_ACCOUNT_URL} WEB_OPTION_ACCOUNT_EDIT_LINK_HREF: ${IDP_ACCOUNT_URL}
ldap-server: ldap-server:
image: bitnamilegacy/openldap:2.6 image: bitnamilegacy/openldap:2.6
# Bitnami images require GID 0 to write to internal socket and PID directories
networks: networks:
opencloud-net: opencloud-net:
entrypoint: [ "/bin/sh", "/opt/bitnami/scripts/openldap/docker-entrypoint-override.sh", "/opt/bitnami/scripts/openldap/run.sh" ] entrypoint: [ "/bin/sh", "/opt/bitnami/scripts/openldap/docker-entrypoint-override.sh", "/opt/bitnami/scripts/openldap/run.sh" ]
@@ -65,6 +76,7 @@ services:
- ./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_DIR:-ldap-certs}:/opt/bitnami/openldap/share - ${LDAP_CERTS_DIR:-ldap-certs}:/opt/bitnami/openldap/share
- ${LDAP_DATA_DIR:-ldap-data}:/bitnami/openldap - ${LDAP_DATA_DIR:-ldap-data}:/bitnami/openldap
restart: always
volumes: volumes:
ldap-certs: ldap-certs:

View File

@@ -23,19 +23,19 @@ services:
# Keycloak IDP specific configuration # Keycloak IDP specific configuration
PROXY_AUTOPROVISION_ACCOUNTS: "false" PROXY_AUTOPROVISION_ACCOUNTS: "false"
PROXY_ROLE_ASSIGNMENT_DRIVER: "oidc" PROXY_ROLE_ASSIGNMENT_DRIVER: "oidc"
OC_OIDC_ISSUER: https://${KEYCLOAK_DOMAIN:-keycloak.opencloud.test}/realms/openCloud OC_OIDC_ISSUER: https://${KEYCLOAK_DOMAIN:-keycloak.opencloud.test}${TRAEFIK_PORT_HTTPS:+:}${TRAEFIK_PORT_HTTPS:-}/realms/openCloud
PROXY_OIDC_REWRITE_WELLKNOWN: "true" PROXY_OIDC_REWRITE_WELLKNOWN: "true"
WEB_OIDC_CLIENT_ID: ${OC_OIDC_CLIENT_ID:-web} WEB_OIDC_CLIENT_ID: ${OC_OIDC_CLIENT_ID:-web}
PROXY_USER_OIDC_CLAIM: "uuid" PROXY_USER_OIDC_CLAIM: "uuid"
PROXY_USER_CS3_CLAIM: "userid" PROXY_USER_CS3_CLAIM: "userid"
WEB_OPTION_ACCOUNT_EDIT_LINK_HREF: "https://${KEYCLOAK_DOMAIN:-keycloak.opencloud.test}/realms/openCloud/account" WEB_OPTION_ACCOUNT_EDIT_LINK_HREF: "https://${KEYCLOAK_DOMAIN:-keycloak.opencloud.test}${TRAEFIK_PORT_HTTPS:+:}${TRAEFIK_PORT_HTTPS:-}/realms/openCloud/account"
# admin and demo accounts must be created in Keycloak # admin and demo accounts must be created in Keycloak
OC_ADMIN_USER_ID: "" OC_ADMIN_USER_ID: ""
SETTINGS_SETUP_DEFAULT_ASSIGNMENTS: "false" SETTINGS_SETUP_DEFAULT_ASSIGNMENTS: "false"
GRAPH_ASSIGN_DEFAULT_USER_ROLE: "false" GRAPH_ASSIGN_DEFAULT_USER_ROLE: "false"
GRAPH_USERNAME_MATCH: "none" GRAPH_USERNAME_MATCH: "none"
# This is needed to set the correct CSP rules for OpenCloud # This is needed to set the correct CSP rules for OpenCloud
IDP_DOMAIN: ${KEYCLOAK_DOMAIN:-keycloak.opencloud.test} IDP_DOMAIN: ${KEYCLOAK_DOMAIN:-keycloak.opencloud.test}${TRAEFIK_PORT_HTTPS:+:}${TRAEFIK_PORT_HTTPS:-}
ldap-server: ldap-server:
image: bitnamilegacy/openldap:2.6 image: bitnamilegacy/openldap:2.6
@@ -54,6 +54,8 @@ services:
volumes: volumes:
- ./config/ldap/ldif/10_base.ldif:/ldifs/10_base.ldif - ./config/ldap/ldif/10_base.ldif:/ldifs/10_base.ldif
- ./config/ldap/ldif/20_admin.ldif:/ldifs/20_admin.ldif - ./config/ldap/ldif/20_admin.ldif:/ldifs/20_admin.ldif
- ./config/ldap/ldif/50_acls.ldif:/opt/bitnami/openldap/etc/schema/50_acls.ldif
- ./config/ldap/init-ldap-acls.sh:/docker-entrypoint-initdb.d/init-ldap-acls.sh
- ./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:/opt/bitnami/openldap/share
- ldap-data:/bitnami/openldap - ldap-data:/bitnami/openldap
@@ -62,7 +64,7 @@ services:
restart: always restart: always
postgres: postgres:
image: postgres:17-alpine image: postgres:17.10-alpine
networks: networks:
opencloud-net: opencloud-net:
volumes: volumes:
@@ -76,7 +78,7 @@ services:
restart: always restart: always
keycloak: keycloak:
image: quay.io/keycloak/keycloak:26.3.3 image: quay.io/keycloak/keycloak:26.6.2
networks: networks:
opencloud-net: opencloud-net:
command: [ "start", "--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" ]
@@ -87,13 +89,14 @@ services:
- "./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} LDAP_ADMIN_PASSWORD: ${LDAP_BIND_PASSWORD:-admin}
OC_DOMAIN: ${OC_DOMAIN:-cloud.opencloud.test} OC_DOMAIN: ${OC_DOMAIN:-cloud.opencloud.test}${TRAEFIK_PORT_HTTPS:+:}${TRAEFIK_PORT_HTTPS:-}
KC_HOSTNAME: ${KEYCLOAK_DOMAIN:-keycloak.opencloud.test} KC_HOSTNAME: ${KEYCLOAK_DOMAIN:-keycloak.opencloud.test}
KC_DB: postgres KC_DB: postgres
KC_DB_URL: "jdbc:postgresql://postgres:5432/keycloak" KC_DB_URL: "jdbc:postgresql://postgres:5432/keycloak"
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_LOG_LEVEL: ${KC_LOG_LEVEL:-INFO}
KC_PROXY_HEADERS: xforwarded KC_PROXY_HEADERS: xforwarded
KC_HTTP_ENABLED: true KC_HTTP_ENABLED: true
KEYCLOAK_ADMIN: ${KEYCLOAK_ADMIN:-kcadmin} KEYCLOAK_ADMIN: ${KEYCLOAK_ADMIN:-kcadmin}

View File

@@ -6,6 +6,7 @@ services:
- ./config/opencloud/proxy.yaml:/etc/opencloud/proxy.yaml - ./config/opencloud/proxy.yaml:/etc/opencloud/proxy.yaml
radicale: radicale:
image: ${RADICALE_DOCKER_IMAGE:-opencloudeu/radicale}:${RADICALE_DOCKER_TAG:-latest} image: ${RADICALE_DOCKER_IMAGE:-opencloudeu/radicale}:${RADICALE_DOCKER_TAG:-latest}
user: ${OC_CONTAINER_UID_GID:-1000:1000}
networks: networks:
opencloud-net: opencloud-net:
logging: logging:

43
renovate.json Normal file
View File

@@ -0,0 +1,43 @@
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"platformAutomerge": true,
"enabledManagers": ["docker-compose", "custom.regex"],
"baseBranchPatterns": ["main", "stable-4.0"],
"packageRules": [
{
"matchManagers": ["docker-compose", "custom.regex"],
"labels": ["Type:Dependencies", "Bot:Renovate"]
},
{
"matchManagers": ["docker-compose"],
"matchUpdateTypes": ["patch"],
"automerge": true
},
{
"matchBaseBranches": ["stable-4.0"],
"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,7 +1,10 @@
--- ---
services: services:
tika: tika:
image: ${TIKA_IMAGE:-apache/tika:latest-full} image: ${TIKA_IMAGE:-apache/tika:latest}
# Using the base variant for smaller image size and faster startup
# The base variant includes core functionality for text extraction
# Full variant is only needed for specialized OCR/image processing
# release notes: https://tika.apache.org # release notes: https://tika.apache.org
networks: networks:
opencloud-net: opencloud-net:

View File

@@ -1,7 +1,7 @@
--- ---
services: services:
postgres: postgres:
image: postgres:17-alpine image: postgres:17.10-alpine
networks: networks:
opencloud-net: opencloud-net:
volumes: volumes:
@@ -15,7 +15,7 @@ services:
restart: always restart: always
keycloak: keycloak:
image: quay.io/keycloak/keycloak:26.3.3 image: quay.io/keycloak/keycloak:26.6.2
networks: networks:
opencloud-net: opencloud-net:
command: [ "start", "--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" ]
@@ -32,6 +32,7 @@ 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_LOG_LEVEL: ${KC_LOG_LEVEL:-INFO}
KC_PROXY_HEADERS: xforwarded KC_PROXY_HEADERS: xforwarded
KC_HTTP_ENABLED: true KC_HTTP_ENABLED: true
KEYCLOAK_ADMIN: ${KEYCLOAK_ADMIN:-kcadmin} KEYCLOAK_ADMIN: ${KEYCLOAK_ADMIN:-kcadmin}

View File

@@ -13,6 +13,7 @@ services:
- "traefik.http.routers.collaboration.rule=Host(`${WOPISERVER_DOMAIN:-wopiserver.opencloud.test}`)" - "traefik.http.routers.collaboration.rule=Host(`${WOPISERVER_DOMAIN:-wopiserver.opencloud.test}`)"
- "traefik.http.routers.collaboration.${TRAEFIK_SERVICES_TLS_CONFIG}" - "traefik.http.routers.collaboration.${TRAEFIK_SERVICES_TLS_CONFIG}"
- "traefik.http.routers.collaboration.service=collaboration" - "traefik.http.routers.collaboration.service=collaboration"
- "traefik.http.routers.collaboration.middlewares=hsts-header"
- "traefik.http.services.collaboration.loadbalancer.server.port=9300" - "traefik.http.services.collaboration.loadbalancer.server.port=9300"
collabora: collabora:
labels: labels:
@@ -21,4 +22,5 @@ services:
- "traefik.http.routers.collabora.rule=Host(`${COLLABORA_DOMAIN:-collabora.opencloud.test}`)" - "traefik.http.routers.collabora.rule=Host(`${COLLABORA_DOMAIN:-collabora.opencloud.test}`)"
- "traefik.http.routers.collabora.${TRAEFIK_SERVICES_TLS_CONFIG}" - "traefik.http.routers.collabora.${TRAEFIK_SERVICES_TLS_CONFIG}"
- "traefik.http.routers.collabora.service=collabora" - "traefik.http.routers.collabora.service=collabora"
- "traefik.http.routers.collabora.middlewares=hsts-header"
- "traefik.http.services.collabora.loadbalancer.server.port=9980" - "traefik.http.services.collabora.loadbalancer.server.port=9980"

View File

@@ -12,4 +12,5 @@ services:
- "traefik.http.routers.keycloak.rule=Host(`${KEYCLOAK_DOMAIN:-keycloak.opencloud.test}`)" - "traefik.http.routers.keycloak.rule=Host(`${KEYCLOAK_DOMAIN:-keycloak.opencloud.test}`)"
- "traefik.http.routers.keycloak.${TRAEFIK_SERVICES_TLS_CONFIG}" - "traefik.http.routers.keycloak.${TRAEFIK_SERVICES_TLS_CONFIG}"
- "traefik.http.routers.keycloak.service=keycloak" - "traefik.http.routers.keycloak.service=keycloak"
- "traefik.http.routers.keycloak.middlewares=hsts-header"
- "traefik.http.services.keycloak.loadbalancer.server.port=8080" - "traefik.http.services.keycloak.loadbalancer.server.port=8080"

View File

@@ -3,14 +3,22 @@ services:
opencloud: opencloud:
labels: labels:
- "traefik.enable=true" - "traefik.enable=true"
# define middleware here, to make sure its loaded with the first defined container (opencloud)
# if defined in the traefik container with a disabled dashboard it won't be loaded fast enough
- "traefik.http.middlewares.hsts-header.headers.stsSeconds=31536000"
- "traefik.http.middlewares.hsts-header.headers.stsIncludeSubdomains=true"
- "traefik.http.middlewares.hsts-header.headers.stsPreload=true"
- "traefik.http.middlewares.hsts-header.headers.forceSTSHeader=true"
- "traefik.http.routers.opencloud.entrypoints=https" - "traefik.http.routers.opencloud.entrypoints=https"
- "traefik.http.routers.opencloud.rule=Host(`${OC_DOMAIN:-cloud.opencloud.test}`)" - "traefik.http.routers.opencloud.rule=Host(`${OC_DOMAIN:-cloud.opencloud.test}`)"
- "traefik.http.routers.opencloud.service=opencloud" - "traefik.http.routers.opencloud.service=opencloud"
- "traefik.http.routers.opencloud.middlewares=hsts-header"
- "traefik.http.services.opencloud.loadbalancer.server.port=9200" - "traefik.http.services.opencloud.loadbalancer.server.port=9200"
- "traefik.http.routers.opencloud.${TRAEFIK_SERVICES_TLS_CONFIG}" - "traefik.http.routers.opencloud.${TRAEFIK_SERVICES_TLS_CONFIG}"
traefik: traefik:
image: traefik:v3 image: traefik:v3.7.3
# release notes: https://github.com/traefik/traefik/releases # release notes: https://github.com/traefik/traefik/releases
user: ${TRAEFIK_CONTAINER_UID_GID:-0:0}
networks: networks:
opencloud-net: opencloud-net:
aliases: aliases:
@@ -22,9 +30,11 @@ services:
- "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_LOG_LEVEL=${TRAEFIK_LOG_LEVEL:-ERROR}"
- "TRAEFIK_ACCESS_LOG=${TRAEFIK_ACCESS_LOG:-false}" - "TRAEFIK_ACCESS_LOG=${TRAEFIK_ACCESS_LOG:-false}"
- "TRAEFIK_PORT_HTTP=${TRAEFIK_PORT_HTTP:-80}"
- "TRAEFIK_PORT_HTTPS=${TRAEFIK_PORT_HTTPS:-443}"
ports: ports:
- "80:80" - "${TRAEFIK_PORT_HTTP:-80}:${TRAEFIK_PORT_HTTP:-80}"
- "443:443" - "${TRAEFIK_PORT_HTTPS:-443}:${TRAEFIK_PORT_HTTPS:-443}"
volumes: volumes:
- "${DOCKER_SOCKET_PATH:-/var/run/docker.sock}:/var/run/docker.sock:ro" - "${DOCKER_SOCKET_PATH:-/var/run/docker.sock}:/var/run/docker.sock:ro"
- "./config/traefik/docker-entrypoint-override.sh:/opt/traefik/bin/docker-entrypoint-override.sh" - "./config/traefik/docker-entrypoint-override.sh:/opt/traefik/bin/docker-entrypoint-override.sh"

View File

@@ -5,15 +5,18 @@ services:
environment: environment:
# this is needed for setting the correct CSP header # this is needed for setting the correct CSP header
COLLABORA_DOMAIN: ${COLLABORA_DOMAIN:-collabora.opencloud.test} COLLABORA_DOMAIN: ${COLLABORA_DOMAIN:-collabora.opencloud.test}
TRAEFIK_PORT_HTTPS: ${TRAEFIK_PORT_HTTPS:+:}${TRAEFIK_PORT_HTTPS:-}
# expose nats and the reva gateway for the collaboration service # expose nats and the reva gateway for the collaboration service
NATS_NATS_HOST: 0.0.0.0 NATS_NATS_HOST: 0.0.0.0
GATEWAY_GRPC_ADDR: 0.0.0.0:9142 GATEWAY_GRPC_ADDR: 0.0.0.0:9142
# make collabora the secure view app # make collabora the secure view app
FRONTEND_APP_HANDLER_SECURE_VIEW_APP_ADDR: eu.opencloud.api.collaboration.CollaboraOnline FRONTEND_APP_HANDLER_SECURE_VIEW_APP_ADDR: eu.opencloud.api.collaboration
GRAPH_AVAILABLE_ROLES: "b1e2218d-eef8-4d4c-b82d-0f1a1b48f3b5,a8d5fe5e-96e3-418d-825b-534dbdf22b99,fb6c3e19-e378-47e5-b277-9732f9de6e21,58c63c02-1d89-4572-916a-870abc5a1b7d,2d00ce52-1fc2-4dbc-8b95-a73b73395f5a,1c996275-f1c9-4e71-abdf-a42f6495e960,312c0871-5ef7-4b3a-85b6-0e4074c64049,aa97fe03-7980-45ac-9e50-b325749fd7e6" GRAPH_AVAILABLE_ROLES: "b1e2218d-eef8-4d4c-b82d-0f1a1b48f3b5,a8d5fe5e-96e3-418d-825b-534dbdf22b99,fb6c3e19-e378-47e5-b277-9732f9de6e21,58c63c02-1d89-4572-916a-870abc5a1b7d,2d00ce52-1fc2-4dbc-8b95-a73b73395f5a,1c996275-f1c9-4e71-abdf-a42f6495e960,312c0871-5ef7-4b3a-85b6-0e4074c64049,aa97fe03-7980-45ac-9e50-b325749fd7e6"
collaboration: collaboration:
image: ${OC_DOCKER_IMAGE:-opencloudeu/opencloud-rolling}:${OC_DOCKER_TAG:-latest} # renovate: depName=opencloudeu/opencloud-rolling
image: ${OC_DOCKER_IMAGE:-opencloudeu/opencloud-rolling}:${OC_DOCKER_TAG:-6.2.0}
user: ${OC_CONTAINER_UID_GID:-1000:1000}
networks: networks:
opencloud-net: opencloud-net:
depends_on: depends_on:
@@ -29,15 +32,15 @@ services:
COLLABORATION_HTTP_ADDR: 0.0.0.0:9300 COLLABORATION_HTTP_ADDR: 0.0.0.0:9300
MICRO_REGISTRY: "nats-js-kv" MICRO_REGISTRY: "nats-js-kv"
MICRO_REGISTRY_ADDRESS: "opencloud:9233" MICRO_REGISTRY_ADDRESS: "opencloud:9233"
COLLABORATION_WOPI_SRC: https://${WOPISERVER_DOMAIN:-wopiserver.opencloud.test} COLLABORATION_WOPI_SRC: https://${WOPISERVER_DOMAIN:-wopiserver.opencloud.test}${TRAEFIK_PORT_HTTPS:+:}${TRAEFIK_PORT_HTTPS:-}
COLLABORATION_APP_NAME: "CollaboraOnline" COLLABORATION_APP_NAME: "CollaboraOnline"
COLLABORATION_APP_PRODUCT: "Collabora" COLLABORATION_APP_PRODUCT: "Collabora"
COLLABORATION_APP_ADDR: https://${COLLABORA_DOMAIN:-collabora.opencloud.test} COLLABORATION_APP_ADDR: https://${COLLABORA_DOMAIN:-collabora.opencloud.test}${TRAEFIK_PORT_HTTPS:+:}${TRAEFIK_PORT_HTTPS:-}
COLLABORATION_APP_ICON: https://${COLLABORA_DOMAIN:-collabora.opencloud.test}/favicon.ico COLLABORATION_APP_ICON: https://${COLLABORA_DOMAIN:-collabora.opencloud.test}${TRAEFIK_PORT_HTTPS:+:}${TRAEFIK_PORT_HTTPS:-}/favicon.ico
COLLABORATION_APP_INSECURE: "${INSECURE:-true}" COLLABORATION_APP_INSECURE: "${INSECURE:-true}"
COLLABORATION_CS3API_DATAGATEWAY_INSECURE: "${INSECURE:-true}" COLLABORATION_CS3API_DATAGATEWAY_INSECURE: "${INSECURE:-true}"
COLLABORATION_LOG_LEVEL: ${LOG_LEVEL:-info} COLLABORATION_LOG_LEVEL: ${LOG_LEVEL:-info}
OC_URL: https://${OC_DOMAIN:-cloud.opencloud.test} OC_URL: https://${OC_DOMAIN:-cloud.opencloud.test}${TRAEFIK_PORT_HTTPS:+:}${TRAEFIK_PORT_HTTPS:-}
volumes: volumes:
# configure the .env file to use own paths instead of docker internal volumes # configure the .env file to use own paths instead of docker internal volumes
- ${OC_CONFIG_DIR:-opencloud-config}:/etc/opencloud - ${OC_CONFIG_DIR:-opencloud-config}:/etc/opencloud
@@ -46,23 +49,33 @@ services:
restart: always restart: always
collabora: collabora:
image: collabora/code:25.04.4.2.1 image: collabora/code:25.04.10.3.1
# release notes: https://www.collaboraonline.com/release-notes/ # release notes: https://www.collaboraonline.com/release-notes/
networks: networks:
opencloud-net: opencloud-net:
environment: environment:
aliasgroup1: https://${WOPISERVER_DOMAIN:-wopiserver.opencloud.test}:443 aliasgroup1: https://${WOPISERVER_DOMAIN:-wopiserver.opencloud.test}${TRAEFIK_PORT_HTTPS:+:}${TRAEFIK_PORT_HTTPS:-}
DONT_GEN_SSL_CERT: "YES" DONT_GEN_SSL_CERT: "YES"
extra_params: | extra_params: |
--o:ssl.enable=${COLLABORA_SSL_ENABLE:-true} \ --o:ssl.enable=${COLLABORA_SSL_ENABLE:-true} \
--o:ssl.ssl_verification=${COLLABORA_SSL_VERIFICATION:-true} \ --o:ssl.ssl_verification=${COLLABORA_SSL_VERIFICATION:-true} \
--o:ssl.termination=true \ --o:ssl.termination=true \
--o:welcome.enable=false \ --o:welcome.enable=false \
--o:net.frame_ancestors=${OC_DOMAIN:-cloud.opencloud.test} --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} username: ${COLLABORA_ADMIN_USER:-admin}
password: ${COLLABORA_ADMIN_PASSWORD:-admin} password: ${COLLABORA_ADMIN_PASSWORD:-admin}
cap_add: cap_add:
- MKNOD - SYS_ADMIN
security_opt:
- seccomp=unconfined
- apparmor:unconfined
volumes:
# Mount local TrueType fonts so the container can use system fonts
# (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
logging: logging:
driver: ${LOG_DRIVER:-local} driver: ${LOG_DRIVER:-local}
restart: always restart: always