Compare commits

..

2 Commits

Author SHA1 Message Date
Michael 'Flimmy' Flemming
73e50bca60 restore minio env example 2025-10-31 16:22:31 +01:00
Michael 'Flimmy' Flemming
8e9a7d8267 add minio back 2025-10-31 16:13:54 +01:00
10 changed files with 69 additions and 123 deletions

View File

@@ -57,10 +57,7 @@ TRAEFIK_SERVICES_TLS_CONFIG="tls.certresolver=letsencrypt"
# - certFile: /certs/opencloud.test.crt # - certFile: /certs/opencloud.test.crt
# keyFile: /certs/opencloud.test.key # keyFile: /certs/opencloud.test.key
# stores: # stores:
# default: # - default
# defaultCertificate:
# certFile: /certs/opencloud.test.crt
# keyFile: /certs/opencloud.test.key
# #
# 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.
@@ -137,7 +134,12 @@ DECOMPOSEDS3_ACCESS_KEY=
DECOMPOSEDS3_SECRET_KEY= DECOMPOSEDS3_SECRET_KEY=
# S3 bucket. Defaults to "opencloud" # S3 bucket. Defaults to "opencloud"
DECOMPOSEDS3_BUCKET= 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. # Define SMTP settings if you would like to send OpenCloud email notifications.
# To actually send notifications, you also need to enable the 'notifications' service # To actually send notifications, you also need to enable the 'notifications' service
@@ -178,11 +180,7 @@ START_ADDITIONAL_SERVICES=""
# 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" # Defaults to "apache/tika:latest-full"
# 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 ###
@@ -211,18 +209,12 @@ 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=

1
.gitignore vendored
View File

@@ -5,7 +5,6 @@
# 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,9 +2,6 @@
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:
@@ -16,7 +13,6 @@ 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
@@ -77,6 +73,26 @@ OpenCloud Compose offers a modular approach to deploying OpenCloud with several
- 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
@@ -148,14 +164,6 @@ 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.
@@ -232,25 +240,6 @@ 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
@@ -346,7 +335,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:slim | | `TIKA_IMAGE` | Apache Tika image tag | apache/tika:latest-full |
| `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 |

View File

@@ -1,31 +0,0 @@
---
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:

File diff suppressed because one or more lines are too long

View File

@@ -1,3 +0,0 @@
{
"entrypoint": "js/maps-uKkx1qsf.js"
}

View File

@@ -28,7 +28,6 @@ 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}/'
manifest-src: manifest-src:

View File

@@ -1,10 +1,7 @@
--- ---
services: services:
tika: tika:
image: ${TIKA_IMAGE:-apache/tika:latest} image: ${TIKA_IMAGE:-apache/tika:latest-full}
# 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:

32
testing/minio.yml Normal file
View File

@@ -0,0 +1,32 @@
---
services:
minio:
image: minio/minio:latest
# release notes: https://github.com/minio/minio/releases
networks:
opencloud-net:
entrypoint:
- /bin/sh
command:
[
"-c",
"mkdir -p /data/${DECOMPOSEDS3_BUCKET:-opencloud-bucket} && minio server --console-address ':9001' /data",
]
volumes:
- minio-data:/data
environment:
MINIO_ROOT_USER: ${DECOMPOSEDS3_ACCESS_KEY:-opencloud}
MINIO_ROOT_PASSWORD: ${DECOMPOSEDS3_SECRET_KEY:-opencloud-secret-key}
labels:
- "traefik.enable=true"
- "traefik.http.routers.minio.entrypoints=https"
- "traefik.http.routers.minio.rule=Host(`${MINIO_DOMAIN:-minio.opencloud.test}`)"
- "traefik.http.routers.minio.tls.certresolver=http"
- "traefik.http.routers.minio.service=minio"
- "traefik.http.services.minio.loadbalancer.server.port=9001"
logging:
driver: ${LOG_DRIVER:-local}
restart: always
volumes:
minio-data:

View File

@@ -9,7 +9,7 @@ services:
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 FRONTEND_APP_HANDLER_SECURE_VIEW_APP_ADDR: eu.opencloud.api.collaboration.CollaboraOnline
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:
@@ -46,7 +46,7 @@ services:
restart: always restart: always
collabora: collabora:
image: collabora/code:25.04.7.1.1 image: collabora/code:25.04.4.2.1
# release notes: https://www.collaboraonline.com/release-notes/ # release notes: https://www.collaboraonline.com/release-notes/
networks: networks:
opencloud-net: opencloud-net:
@@ -58,23 +58,16 @@ services:
--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}
--o:net.lok_allow.host[14]=${OC_DOMAIN-cloud.opencloud.test} \
--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 - 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: logging:
driver: ${LOG_DRIVER:-local} driver: ${LOG_DRIVER:-local}
restart: always restart: always
entrypoint: [ '/bin/bash', '-c' ] entrypoint: ['/bin/bash', '-c']
command: [ 'coolconfig generate-proof-key && /start-collabora-online.sh' ] command: ['coolconfig generate-proof-key && /start-collabora-online.sh']
healthcheck: healthcheck:
test: [ "CMD", "curl", "-f", "http://localhost:9980/hosting/discovery" ] test: [ "CMD", "curl", "-f", "http://localhost:9980/hosting/discovery" ]
interval: 15s interval: 15s