mirror of
https://github.com/opencloud-eu/opencloud-compose.git
synced 2026-06-08 20:20:04 +08:00
Compare commits
81 Commits
bump-colla
...
fix-cert.y
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8c96301523 | ||
|
|
39412c7297 | ||
|
|
5873484022 | ||
|
|
6b3a1e36e1 | ||
|
|
fc67954f76 | ||
|
|
c392985614 | ||
|
|
df985a5304 | ||
|
|
fddd76a560 | ||
|
|
74d359b85c | ||
|
|
73fdc8a96a | ||
|
|
6e40d2d96e | ||
|
|
f24923f95e | ||
|
|
4f79e9ab7b | ||
|
|
cd5d97cda9 | ||
|
|
b501311d0f | ||
|
|
85deada0d2 | ||
|
|
522ced8c96 | ||
|
|
0622cf6e60 | ||
|
|
69b40132c0 | ||
|
|
f466650a97 | ||
|
|
a27c40c4dc | ||
|
|
94c8075b36 | ||
|
|
7543aa2eec | ||
|
|
d51d43825a | ||
|
|
723fb73fb4 | ||
|
|
16dd321bf2 | ||
|
|
6d0454d7a2 | ||
|
|
6f71feff30 | ||
|
|
f5df55fedc | ||
|
|
df98c14b80 | ||
|
|
53ec7140da | ||
|
|
d3f0044fe3 | ||
|
|
9cb8196122 | ||
|
|
bdd2638f3f | ||
|
|
3558f9c2e1 | ||
|
|
bc338d7ff4 | ||
|
|
4fc30f0330 | ||
|
|
93b8186eb6 | ||
|
|
85e3098e1c | ||
|
|
fed9c09ae5 | ||
|
|
c689b26275 | ||
|
|
c1dcf1d1d9 | ||
|
|
25b0de4525 | ||
|
|
67743a8e19 | ||
|
|
f253158ae7 | ||
|
|
219899adfc | ||
|
|
6be2c824ea | ||
|
|
3d82f1b60b | ||
|
|
c55b36b559 | ||
|
|
ce65001eba | ||
|
|
b88b80539b | ||
|
|
6502f1fee7 | ||
|
|
ef64eb6b92 | ||
|
|
07183c14fc | ||
|
|
409d775471 | ||
|
|
ad89914a81 | ||
|
|
5c26c75080 | ||
|
|
27aa8f40f1 | ||
|
|
f3c5f8f591 | ||
|
|
fc560119f4 | ||
|
|
b7078d309b | ||
|
|
c2cd669fc1 | ||
|
|
9a3a217c78 | ||
|
|
7cd7e19d6f | ||
|
|
311670fc14 | ||
|
|
97fbdbe85f | ||
|
|
fe3497ec51 | ||
|
|
c8557c3455 | ||
|
|
779c4e1daf | ||
|
|
bfc2a64a79 | ||
|
|
f6d384b411 | ||
|
|
1c1ccef59c | ||
|
|
487b73f0b3 | ||
|
|
d94ac7a036 | ||
|
|
81904c946a | ||
|
|
55021b319a | ||
|
|
817244159c | ||
|
|
4978313c41 | ||
|
|
29b44b0c78 | ||
|
|
5d5b9d56bf | ||
|
|
c5f7c6bb24 |
40
.env.example
40
.env.example
@@ -56,10 +56,13 @@ TRAEFIK_SERVICES_TLS_CONFIG="tls.certresolver=letsencrypt"
|
||||
# certificates:
|
||||
# - certFile: /certs/opencloud.test.crt
|
||||
# keyFile: /certs/opencloud.test.key
|
||||
# stores:
|
||||
# - default
|
||||
# stores:
|
||||
# default:
|
||||
# defaultCertificate:
|
||||
# certFile: /certs/opencloud.test.crt
|
||||
# keyFile: /certs/opencloud.test.key
|
||||
#
|
||||
# The certificates need to copied into ./certs/, the absolute path inside the container is /certs/.
|
||||
# The certificates need to be copied into ./certs/, the absolute path inside the container is /certs/.
|
||||
# You can also use TRAEFIK_CERTS_DIR=/path/on/host to set the path to the certificates directory.
|
||||
# Enable the access log for Traefik by setting the following variable to true.
|
||||
TRAEFIK_ACCESS_LOG=
|
||||
@@ -134,15 +137,11 @@ DECOMPOSEDS3_ACCESS_KEY=
|
||||
DECOMPOSEDS3_SECRET_KEY=
|
||||
# S3 bucket. Defaults to "opencloud"
|
||||
DECOMPOSEDS3_BUCKET=
|
||||
#
|
||||
# For testing purposes, add local minio S3 storage to the docker-compose file.
|
||||
# The leading colon is required to enable the service.
|
||||
#DECOMPOSEDS3_MINIO=:minio.yml
|
||||
# Minio domain. Defaults to "minio.opencloud.test".
|
||||
MINIO_DOMAIN=
|
||||
|
||||
|
||||
# Define SMTP settings if you would like to send OpenCloud email notifications.
|
||||
# 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.
|
||||
# SMTP host to connect to.
|
||||
@@ -163,12 +162,11 @@ SMTP_TRANSPORT_ENCRYPTION=
|
||||
# Allow insecure connections to the SMTP server. Defaults to false.
|
||||
SMTP_INSECURE=
|
||||
|
||||
# Addititional services to be started on opencloud startup
|
||||
# The following list of services is not startet automatically and must be
|
||||
# Additional services to be started on opencloud startup
|
||||
# The following list of services is not started automatically and must be
|
||||
# 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.
|
||||
START_ADDITIONAL_SERVICES="notifications"
|
||||
START_ADDITIONAL_SERVICES=""
|
||||
|
||||
|
||||
## Default Enabled Services ##
|
||||
@@ -180,7 +178,11 @@ START_ADDITIONAL_SERVICES="notifications"
|
||||
# search/tika.yml or by using the following command:
|
||||
# docker compose -f docker-compose.yml -f search/tika.yml up -d
|
||||
# Set the desired docker image tag or digest.
|
||||
# Defaults to "apache/tika:latest-full"
|
||||
# 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=
|
||||
|
||||
### IMPORTANT Note for Online Office Apps ###
|
||||
@@ -209,12 +211,18 @@ COLLABORA_SSL_ENABLE=false
|
||||
# If you're on an internet-facing server, enable SSL verification for Collabora Online.
|
||||
# Please comment out the following line:
|
||||
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 ###
|
||||
# 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.
|
||||
# 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.
|
||||
# Defaults to "100MB"
|
||||
#ANTIVIRUS_MAX_SCAN_SIZE=
|
||||
@@ -222,7 +230,7 @@ COLLABORA_SSL_VERIFICATION=false
|
||||
# Defaults to "partial"
|
||||
#ANTIVIRUS_MAX_SCAN_SIZE_MODE=
|
||||
# Image version of the ClamAV container.
|
||||
# Defaults to "latest"y
|
||||
# Defaults to "latest"
|
||||
CLAMAV_DOCKER_TAG=
|
||||
|
||||
|
||||
|
||||
1
.gitignore
vendored
1
.gitignore
vendored
@@ -5,6 +5,7 @@
|
||||
# exclude the apps folder
|
||||
/config/opencloud/apps/*
|
||||
!/config/opencloud/apps/.gitkeep
|
||||
!/config/opencloud/apps/maps
|
||||
|
||||
# exclude custom compose files
|
||||
/custom
|
||||
|
||||
94
README.md
94
README.md
@@ -2,6 +2,9 @@
|
||||
|
||||
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
|
||||
|
||||
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
|
||||
- **Monitoring** with metrics endpoints for observability and performance monitoring
|
||||
- **Radicale** integration for Calendar and Contacts
|
||||
- **ClamAV** antivirus scanning with ClamAV
|
||||
|
||||
## Quick Start Guide
|
||||
|
||||
@@ -40,7 +44,11 @@ OpenCloud Compose offers a modular approach to deploying OpenCloud with several
|
||||
|
||||
> **Note**: The repository includes `.env.example` as a template with default settings and documentation. Your actual `.env` file is excluded from version control (via `.gitignore`) to prevent accidentally committing sensitive information like passwords and domain-specific settings.
|
||||
|
||||
3. **Configure deployment options**:
|
||||
3. **Set admin password**:
|
||||
set `INITIAL_ADMIN_PASSWORD=your_secure_password` environment variable in your `.env` file
|
||||
4. **Domain**:
|
||||
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:
|
||||
```bash
|
||||
@@ -57,35 +65,17 @@ OpenCloud Compose offers a modular approach to deploying OpenCloud with several
|
||||
docker compose up -d
|
||||
```
|
||||
|
||||
4. **Add local domains to `/etc/hosts`**:
|
||||
6. **Add local domains to `/etc/hosts`** (for local development only):
|
||||
```
|
||||
127.0.0.1 cloud.opencloud.test
|
||||
127.0.0.1 traefik.opencloud.test
|
||||
127.0.0.1 keycloak.opencloud.test
|
||||
```
|
||||
|
||||
5. **Access OpenCloud**:
|
||||
7. **Access OpenCloud**:
|
||||
- URL: https://cloud.opencloud.test
|
||||
- Username: `admin`
|
||||
- Password: Set via `INITIAL_ADMIN_PASSWORD` environment variable in your `.env` file
|
||||
|
||||
### Production Deployment
|
||||
|
||||
1. **Edit the `.env` file** and configure:
|
||||
- Domain names
|
||||
- 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
|
||||
```
|
||||
- Password: value of your `INITIAL_ADMIN_PASSWORD`
|
||||
|
||||
## Deployment Options
|
||||
|
||||
@@ -93,6 +83,8 @@ OpenCloud Compose offers a modular approach to deploying OpenCloud with several
|
||||
|
||||
OpenCloud can be deployed with Keycloak for identity management and LDAP for the shared user directory:
|
||||
|
||||
> **DNS Requirements**: This setup requires DNS entries for both the main OpenCloud domain and the Keycloak subdomain. Configure DNS A/AAAA records for your domains (e.g., `cloud.example.com`, `keycloak.example.com`) or use a wildcard DNS entry (`*.example.com`).
|
||||
|
||||
Using `-f` flags:
|
||||
```bash
|
||||
docker compose -f docker-compose.yml -f idm/ldap-keycloak.yml -f traefik/opencloud.yml -f traefik/ldap-keycloak.yml up -d
|
||||
@@ -103,10 +95,10 @@ Or by setting in `.env`:
|
||||
COMPOSE_FILE=docker-compose.yml:idm/ldap-keycloak.yml:traefik/opencloud.yml:traefik/ldap-keycloak.yml
|
||||
```
|
||||
|
||||
Add to `/etc/hosts` for local development:
|
||||
```
|
||||
127.0.0.1 keycloak.opencloud.test
|
||||
```
|
||||
> **For local development only**: Add to `/etc/hosts`:
|
||||
> ```
|
||||
> 127.0.0.1 keycloak.opencloud.test
|
||||
> ```
|
||||
|
||||
This setup includes:
|
||||
- Keycloak for authentication and identity management
|
||||
@@ -117,6 +109,8 @@ This setup includes:
|
||||
|
||||
Include Collabora for document editing using either method:
|
||||
|
||||
> **DNS Requirements**: This setup requires DNS entries for the main OpenCloud domain, Collabora subdomain, and WOPI server subdomain. Configure DNS A/AAAA records for your domains (e.g., `cloud.example.com`, `collabora.example.com`, `wopiserver.example.com`) or use a wildcard DNS entry (`*.example.com`).
|
||||
|
||||
Using `-f` flags:
|
||||
```bash
|
||||
docker compose -f docker-compose.yml -f weboffice/collabora.yml -f traefik/opencloud.yml -f traefik/collabora.yml up -d
|
||||
@@ -127,16 +121,18 @@ Or by setting in `.env`:
|
||||
COMPOSE_FILE=docker-compose.yml:weboffice/collabora.yml:traefik/opencloud.yml:traefik/collabora.yml
|
||||
```
|
||||
|
||||
Add to `/etc/hosts` for local development:
|
||||
```
|
||||
127.0.0.1 collabora.opencloud.test
|
||||
127.0.0.1 wopiserver.opencloud.test
|
||||
```
|
||||
> **For local development only**: Add to `/etc/hosts`:
|
||||
> ```
|
||||
> 127.0.0.1 collabora.opencloud.test
|
||||
> 127.0.0.1 wopiserver.opencloud.test
|
||||
> ```
|
||||
|
||||
### With Full Text Search
|
||||
|
||||
Enable full text search capabilities with Apache Tika using either method:
|
||||
|
||||
> **DNS Requirements**: This setup requires DNS entries for the main OpenCloud domain. Configure a DNS A/AAAA record for your domain (e.g., `cloud.example.com`) or use a wildcard DNS entry (`*.example.com`).
|
||||
|
||||
Using `-f` flags:
|
||||
```bash
|
||||
docker compose -f docker-compose.yml -f search/tika.yml -f traefik/opencloud.yml up -d
|
||||
@@ -152,10 +148,20 @@ This setup includes:
|
||||
- Full text search functionality in the OpenCloud interface
|
||||
- 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
|
||||
|
||||
Enable CalDAV (calendars, to-do lists) and CardDAV (contacts) server.
|
||||
|
||||
> **DNS Requirements**: This setup requires DNS entries for the main OpenCloud domain. Configure a DNS A/AAAA record for your domain (e.g., `cloud.example.com`) or use a wildcard DNS entry (`*.example.com`).
|
||||
|
||||
Using `-f` flags:
|
||||
```bash
|
||||
docker compose -f docker-compose.yml -f radicale/radicale.yml -f traefik/opencloud.yml up -d
|
||||
@@ -174,6 +180,8 @@ This setup includes:
|
||||
|
||||
Enable monitoring capabilities with metrics endpoints using either method:
|
||||
|
||||
> **DNS Requirements**: This setup requires DNS entries for the main OpenCloud domain. Configure a DNS A/AAAA record for your domain (e.g., `cloud.example.com`) or use a wildcard DNS entry (`*.example.com`).
|
||||
|
||||
Using `-f` flags:
|
||||
```bash
|
||||
docker compose -f docker-compose.yml -f monitoring/monitoring.yml -f traefik/opencloud.yml up -d
|
||||
@@ -203,6 +211,8 @@ Access metrics endpoints:
|
||||
|
||||
If you already have a reverse proxy (Nginx, Caddy, etc.), use either method:
|
||||
|
||||
> **DNS Requirements**: When using an external proxy, you need to configure your external proxy to handle DNS and SSL termination. Ensure your DNS entries point to your external proxy server, and configure your proxy to forward requests to the exposed OpenCloud ports.
|
||||
|
||||
Using `-f` flags:
|
||||
```bash
|
||||
docker compose -f docker-compose.yml -f weboffice/collabora.yml -f external-proxy/opencloud.yml -f external-proxy/collabora.yml up -d
|
||||
@@ -218,11 +228,29 @@ This exposes the necessary ports:
|
||||
- Collabora: 9980
|
||||
- WOPI server: 9300
|
||||
|
||||
|
||||
**Please note:**
|
||||
If you're using **Nginx Proxy Manager (NPM)**, you **should NOT** activate **"Block Common Exploits"** for the Proxy Host.
|
||||
Otherwise, the desktop app authentication will return **error 403 Forbidden**.
|
||||
|
||||
### 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
|
||||
|
||||
@@ -318,7 +346,7 @@ Key variables:
|
||||
| `INSECURE` | Skip certificate validation | true |
|
||||
| `COLLABORA_DOMAIN` | Collabora domain | collabora.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_ADMIN` | Keycloak admin username | kcadmin |
|
||||
| `KEYCLOAK_ADMIN_PASSWORD` | Keycloak admin password | admin |
|
||||
|
||||
31
antivirus/clamav.yml
Normal file
31
antivirus/clamav.yml
Normal file
@@ -0,0 +1,31 @@
|
||||
---
|
||||
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
|
||||
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
|
||||
volumes:
|
||||
clamav-db:
|
||||
clamav-socket:
|
||||
@@ -2,7 +2,7 @@
|
||||
printenv
|
||||
# replace openCloud domain and LDAP password in keycloak realm import
|
||||
mkdir /opt/keycloak/data/import
|
||||
sed -e "s/cloud.opencloud.test/${OC_DOMAIN}/g" -e "s/ldap-admin-password/${LDAP_ADMIN_PASSWORD:-admin}/g" /opt/keycloak/data/import-dist/opencloud-realm.json > /opt/keycloak/data/import/opencloud-realm.json
|
||||
sed -e "s/cloud.opencloud.test/${OC_DOMAIN}/g" -e "s/ldap-admin-password/${LDAP_ADMIN_PASSWORD:-admin}/g" /opt/keycloak/data/import-dist/openCloud-realm.json > /opt/keycloak/data/import/openCloud-realm.json
|
||||
|
||||
# run original docker-entrypoint
|
||||
/opt/keycloak/bin/kc.sh "$@"
|
||||
|
||||
@@ -676,6 +676,7 @@
|
||||
"profile",
|
||||
"roles",
|
||||
"groups",
|
||||
"OpenCloudUnique_ID",
|
||||
"basic",
|
||||
"email"
|
||||
],
|
||||
@@ -1952,6 +1953,21 @@
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "c016f2b3-cf74-410e-a852-f6c7b49e0f5a",
|
||||
"name": "Block Client Registration",
|
||||
"providerId": "trusted-hosts",
|
||||
"subType": "anonymous",
|
||||
"subComponents": {},
|
||||
"config": {
|
||||
"host-sending-registration-request-must-match": [
|
||||
"true"
|
||||
],
|
||||
"client-uris-must-match": [
|
||||
"true"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "5a9aef85-98a6-4e90-b30f-8aa715e1f5e6",
|
||||
"name": "Allowed Protocol Mapper Types",
|
||||
@@ -2321,7 +2337,7 @@
|
||||
"always"
|
||||
],
|
||||
"usePasswordModifyExtendedOp": [
|
||||
"false"
|
||||
"true"
|
||||
],
|
||||
"trustEmail": [
|
||||
"false"
|
||||
|
||||
11
config/ldap/init-ldap-acls.sh
Executable file
11
config/ldap/init-ldap-acls.sh
Executable 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
|
||||
9
config/ldap/ldif/50_acls.ldif
Normal file
9
config/ldap/ldif/50_acls.ldif
Normal 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
|
||||
21
config/opencloud/apps/maps/js/maps-uKkx1qsf.js
Normal file
21
config/opencloud/apps/maps/js/maps-uKkx1qsf.js
Normal file
File diff suppressed because one or more lines are too long
3
config/opencloud/apps/maps/manifest.json
Normal file
3
config/opencloud/apps/maps/manifest.json
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"entrypoint": "js/maps-uKkx1qsf.js"
|
||||
}
|
||||
@@ -8,6 +8,7 @@ directives:
|
||||
- 'wss://${COMPANION_DOMAIN|companion.opencloud.test}/'
|
||||
- 'https://raw.githubusercontent.com/opencloud-eu/awesome-apps/'
|
||||
- 'https://${IDP_DOMAIN|keycloak.opencloud.test}/'
|
||||
- 'https://update.opencloud.eu/'
|
||||
default-src:
|
||||
- '''none'''
|
||||
font-src:
|
||||
@@ -27,6 +28,7 @@ directives:
|
||||
- 'data:'
|
||||
- 'blob:'
|
||||
- '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
|
||||
- 'https://${COLLABORA_DOMAIN|collabora.opencloud.test}/'
|
||||
manifest-src:
|
||||
@@ -39,6 +41,7 @@ directives:
|
||||
script-src:
|
||||
- '''self'''
|
||||
- '''unsafe-inline'''
|
||||
- 'https://${IDP_DOMAIN|keycloak.opencloud.test}/'
|
||||
style-src:
|
||||
- '''self'''
|
||||
- '''unsafe-inline'''
|
||||
|
||||
@@ -32,7 +32,7 @@ services:
|
||||
# email server (if configured)
|
||||
NOTIFICATIONS_SMTP_HOST: "${SMTP_HOST}"
|
||||
NOTIFICATIONS_SMTP_PORT: "${SMTP_PORT}"
|
||||
NOTIFICATIONS_SMTP_SENDER: "${SMTP_SENDER:-OpenCloud notifications <notifications@${OC_DOMAIN:-cloud.opencloud.test}>}"
|
||||
NOTIFICATIONS_SMTP_SENDER: "${SMTP_SENDER:-OpenCloud Notifications <notifications@cloud.opencloud.test>}"
|
||||
NOTIFICATIONS_SMTP_USERNAME: "${SMTP_USERNAME}"
|
||||
NOTIFICATIONS_SMTP_PASSWORD: "${SMTP_PASSWORD}"
|
||||
NOTIFICATIONS_SMTP_INSECURE: "${SMTP_INSECURE}"
|
||||
|
||||
6
external-proxy/keycloak.yml
Normal file
6
external-proxy/keycloak.yml
Normal file
@@ -0,0 +1,6 @@
|
||||
|
||||
services:
|
||||
keycloak:
|
||||
ports:
|
||||
- "9000:9000"
|
||||
- "8080:8080"
|
||||
@@ -44,7 +44,7 @@ services:
|
||||
# The openCloud users need to be able to edit their account in the externa IdP
|
||||
WEB_OPTION_ACCOUNT_EDIT_LINK_HREF: ${IDP_ACCOUNT_URL}
|
||||
ldap-server:
|
||||
image: bitnami/openldap:2.6
|
||||
image: bitnamilegacy/openldap:2.6
|
||||
networks:
|
||||
opencloud-net:
|
||||
entrypoint: [ "/bin/sh", "/opt/bitnami/scripts/openldap/docker-entrypoint-override.sh", "/opt/bitnami/scripts/openldap/run.sh" ]
|
||||
@@ -57,9 +57,6 @@ services:
|
||||
LDAP_TLS_KEY_FILE: /opt/bitnami/openldap/share/openldap.key
|
||||
LDAP_ROOT: "dc=opencloud,dc=eu"
|
||||
LDAP_ADMIN_PASSWORD: ${LDAP_BIND_PASSWORD:-admin}
|
||||
ports:
|
||||
- "127.0.0.1:389:1389"
|
||||
- "127.0.0.1:636:1636"
|
||||
volumes:
|
||||
# Only use the base ldif file to create the base structure
|
||||
- ./config/ldap/ldif/10_base.ldif:/ldifs/10_base.ldif
|
||||
@@ -68,6 +65,7 @@ services:
|
||||
- ./config/ldap/docker-entrypoint-override.sh:/opt/bitnami/scripts/openldap/docker-entrypoint-override.sh
|
||||
- ${LDAP_CERTS_DIR:-ldap-certs}:/opt/bitnami/openldap/share
|
||||
- ${LDAP_DATA_DIR:-ldap-data}:/bitnami/openldap
|
||||
restart: always
|
||||
|
||||
volumes:
|
||||
ldap-certs:
|
||||
|
||||
@@ -38,7 +38,7 @@ services:
|
||||
IDP_DOMAIN: ${KEYCLOAK_DOMAIN:-keycloak.opencloud.test}
|
||||
|
||||
ldap-server:
|
||||
image: bitnami/openldap:2.6
|
||||
image: bitnamilegacy/openldap:2.6
|
||||
networks:
|
||||
opencloud-net:
|
||||
entrypoint: [ "/bin/sh", "/opt/bitnami/scripts/openldap/docker-entrypoint-override.sh", "/opt/bitnami/scripts/openldap/run.sh" ]
|
||||
@@ -51,12 +51,11 @@ services:
|
||||
LDAP_TLS_KEY_FILE: /opt/bitnami/openldap/share/openldap.key
|
||||
LDAP_ROOT: "dc=opencloud,dc=eu"
|
||||
LDAP_ADMIN_PASSWORD: ${LDAP_BIND_PASSWORD:-admin}
|
||||
ports:
|
||||
- "127.0.0.1:389:1389"
|
||||
- "127.0.0.1:636:1636"
|
||||
volumes:
|
||||
- ./config/ldap/ldif/10_base.ldif:/ldifs/10_base.ldif
|
||||
- ./config/ldap/ldif/20_admin.ldif:/ldifs/20_admin.ldif
|
||||
- ./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
|
||||
- ldap-certs:/opt/bitnami/openldap/share
|
||||
- ldap-data:/bitnami/openldap
|
||||
@@ -65,7 +64,7 @@ services:
|
||||
restart: always
|
||||
|
||||
postgres:
|
||||
image: postgres:alpine
|
||||
image: postgres:17-alpine
|
||||
networks:
|
||||
opencloud-net:
|
||||
volumes:
|
||||
@@ -79,14 +78,14 @@ services:
|
||||
restart: always
|
||||
|
||||
keycloak:
|
||||
image: quay.io/keycloak/keycloak:25.0.0
|
||||
image: quay.io/keycloak/keycloak:26.3.3
|
||||
networks:
|
||||
opencloud-net:
|
||||
command: [ "start", "--proxy=edge", "--spi-connections-http-client-default-disable-trust-manager=${INSECURE:-false}", "--import-realm" ]
|
||||
command: [ "start", "--spi-connections-http-client-default-disable-trust-manager=${INSECURE:-false}", "--import-realm" ]
|
||||
entrypoint: [ "/bin/sh", "/opt/keycloak/bin/docker-entrypoint-override.sh" ]
|
||||
volumes:
|
||||
- "./config/keycloak/docker-entrypoint-override.sh:/opt/keycloak/bin/docker-entrypoint-override.sh"
|
||||
- "./config/keycloak/opencloud-realm.dist.json:/opt/keycloak/data/import-dist/opencloud-realm.json"
|
||||
- "./config/keycloak/opencloud-realm.dist.json:/opt/keycloak/data/import-dist/openCloud-realm.json"
|
||||
- "./config/keycloak/themes/opencloud:/opt/keycloak/themes/opencloud"
|
||||
environment:
|
||||
LDAP_ADMIN_PASSWORD: ${LDAP_BIND_PASSWORD:-admin}
|
||||
@@ -97,6 +96,8 @@ services:
|
||||
KC_DB_USERNAME: ${KC_DB_USERNAME:-keycloak}
|
||||
KC_DB_PASSWORD: ${KC_DB_PASSWORD:-keycloak}
|
||||
KC_FEATURES: impersonation
|
||||
KC_PROXY_HEADERS: xforwarded
|
||||
KC_HTTP_ENABLED: true
|
||||
KEYCLOAK_ADMIN: ${KEYCLOAK_ADMIN:-kcadmin}
|
||||
KEYCLOAK_ADMIN_PASSWORD: ${KEYCLOAK_ADMIN_PASSWORD:-admin}
|
||||
depends_on:
|
||||
|
||||
@@ -1,7 +1,10 @@
|
||||
---
|
||||
services:
|
||||
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
|
||||
networks:
|
||||
opencloud-net:
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
services:
|
||||
postgres:
|
||||
image: postgres:alpine
|
||||
image: postgres:17-alpine
|
||||
networks:
|
||||
opencloud-net:
|
||||
volumes:
|
||||
@@ -15,14 +15,14 @@ services:
|
||||
restart: always
|
||||
|
||||
keycloak:
|
||||
image: quay.io/keycloak/keycloak:25.0.0
|
||||
image: quay.io/keycloak/keycloak:26.3.3
|
||||
networks:
|
||||
opencloud-net:
|
||||
command: [ "start", "--proxy=edge", "--spi-connections-http-client-default-disable-trust-manager=${INSECURE:-false}", "--import-realm" ]
|
||||
command: [ "start", "--spi-connections-http-client-default-disable-trust-manager=${INSECURE:-false}", "--import-realm" ]
|
||||
entrypoint: [ "/bin/sh", "/opt/keycloak/bin/docker-entrypoint-override.sh" ]
|
||||
volumes:
|
||||
- "./config/keycloak/docker-entrypoint-override.sh:/opt/keycloak/bin/docker-entrypoint-override.sh"
|
||||
- "./config/keycloak/opencloud-realm-autoprovisioning.dist.json:/opt/keycloak/data/import-dist/opencloud-realm.json"
|
||||
- "./config/keycloak/opencloud-realm-autoprovisioning.dist.json:/opt/keycloak/data/import-dist/openCloud-realm.json"
|
||||
- "./config/keycloak/themes/opencloud:/opt/keycloak/themes/opencloud"
|
||||
environment:
|
||||
OC_DOMAIN: ${OC_DOMAIN:-cloud.opencloud.test}
|
||||
@@ -32,6 +32,8 @@ services:
|
||||
KC_DB_USERNAME: ${KC_DB_USERNAME:-keycloak}
|
||||
KC_DB_PASSWORD: ${KC_DB_PASSWORD:-keycloak}
|
||||
KC_FEATURES: impersonation
|
||||
KC_PROXY_HEADERS: xforwarded
|
||||
KC_HTTP_ENABLED: true
|
||||
KEYCLOAK_ADMIN: ${KEYCLOAK_ADMIN:-kcadmin}
|
||||
KEYCLOAK_ADMIN_PASSWORD: ${KEYCLOAK_ADMIN_PASSWORD:-admin}
|
||||
depends_on:
|
||||
|
||||
@@ -9,7 +9,7 @@ services:
|
||||
- "traefik.http.services.opencloud.loadbalancer.server.port=9200"
|
||||
- "traefik.http.routers.opencloud.${TRAEFIK_SERVICES_TLS_CONFIG}"
|
||||
traefik:
|
||||
image: traefik:v3.3.1
|
||||
image: traefik:v3
|
||||
# release notes: https://github.com/traefik/traefik/releases
|
||||
networks:
|
||||
opencloud-net:
|
||||
|
||||
@@ -9,7 +9,7 @@ services:
|
||||
NATS_NATS_HOST: 0.0.0.0
|
||||
GATEWAY_GRPC_ADDR: 0.0.0.0:9142
|
||||
# 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"
|
||||
|
||||
collaboration:
|
||||
@@ -46,7 +46,7 @@ services:
|
||||
restart: always
|
||||
|
||||
collabora:
|
||||
image: collabora/code:25.04.4.2.1
|
||||
image: collabora/code:25.04.7.1.1
|
||||
# release notes: https://www.collaboraonline.com/release-notes/
|
||||
networks:
|
||||
opencloud-net:
|
||||
@@ -58,15 +58,25 @@ services:
|
||||
--o:ssl.ssl_verification=${COLLABORA_SSL_VERIFICATION:-true} \
|
||||
--o:ssl.termination=true \
|
||||
--o:welcome.enable=false \
|
||||
--o:net.frame_ancestors=${OC_DOMAIN:-cloud.opencloud.test}
|
||||
--o:net.frame_ancestors=${OC_DOMAIN:-cloud.opencloud.test} \
|
||||
--o:net.lok_allow.host[14]=${OC_DOMAIN-cloud.opencloud.test} \
|
||||
--o:home_mode.enable=${COLLABORA_HOME_MODE:-false}
|
||||
username: ${COLLABORA_ADMIN_USER:-admin}
|
||||
password: ${COLLABORA_ADMIN_PASSWORD:-admin}
|
||||
cap_add:
|
||||
- MKNOD
|
||||
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:
|
||||
driver: ${LOG_DRIVER:-local}
|
||||
restart: always
|
||||
entrypoint: ['/bin/bash', '-c']
|
||||
command: ['coolconfig generate-proof-key && /start-collabora-online.sh']
|
||||
entrypoint: [ '/bin/bash', '-c' ]
|
||||
command: [ 'coolconfig generate-proof-key && /start-collabora-online.sh' ]
|
||||
healthcheck:
|
||||
test: ["CMD", "bash", "-c", "exec 3<>/dev/tcp/127.0.0.1/9980 && echo -e 'GET /hosting/discovery HTTP/1.1\r\nHost: localhost:9980\r\n\r\n' >&3 && head -n 1 <&3 | grep '200 OK'"]
|
||||
test: [ "CMD", "curl", "-f", "http://localhost:9980/hosting/discovery" ]
|
||||
interval: 15s
|
||||
timeout: 10s
|
||||
retries: 5
|
||||
|
||||
Reference in New Issue
Block a user