services: ocis: image: ${OCIS_IMAGE:-owncloud/ocis-rolling:latest} entrypoint: /bin/sh command: ['-c', 'ocis init || true && ocis server'] extra_hosts: - host.docker.internal:${DOCKER_HOST:-host-gateway} environment: OCIS_URL: https://host.docker.internal:9200 OCIS_INSECURE: true OCIS_LOG_LEVEL: error IDM_ADMIN_PASSWORD: admin PROXY_ENABLE_BASIC_AUTH: true PROXY_TLS: 'false' WEB_ASSET_APPS_PATH: /web/apps WEB_UI_CONFIG_FILE: /web/config.json PROXY_CSP_CONFIG_FILE_LOCATION: /etc/ocis/csp.yaml # fulltext search SEARCH_EXTRACTOR_TYPE: tika SEARCH_EXTRACTOR_TIKA_TIKA_URL: http://tika:9998 FRONTEND_FULL_TEXT_SEARCH_ENABLED: "true" labels: traefik.enable: true traefik.http.routers.ocis.tls: true traefik.http.routers.ocis.rule: Host(`host.docker.internal`) && PathPrefix(`/`) traefik.http.routers.ocis.entrypoints: ocis traefik.http.services.ocis.loadbalancer.server.port: 9200 traefik.http.routers.ocis.middlewares: cors volumes: - ocis-config:/etc/ocis - ./dev/docker/ocis.web.config.json:/web/config.json - ./dev/docker/ocis.apps.yaml:/etc/ocis/apps.yaml - ./dev/docker/csp.yaml:/etc/ocis/csp.yaml # apps - ./packages/web-app-advanced-search/dist:/web/apps/advanced-search - ./packages/web-app-cast/dist:/web/apps/cast - ./packages/web-app-draw-io/dist:/web/apps/draw-io - ./packages/web-app-external-sites/dist:/web/apps/external-sites - ./packages/web-app-external-sites/tests/config/manifest.json:/web/apps/external-sites/manifest.json - ./packages/web-app-importer/dist:/web/apps/importer - ./packages/web-app-json-viewer/dist:/web/apps/json-viewer - ./packages/web-app-photo-addon/dist:/web/apps/photo-addon - ./packages/web-app-progress-bars/dist:/web/apps/progress-bars - ./packages/web-app-unzip/dist:/web/apps/unzip - ./packages/web-app-ai-doc-summary/dist:/web/apps/ai-doc-summary - ./packages/web-app-ai-image-alt-text-sidebar/dist:/web/apps/ai-image-alt-text-sidebar - ./packages/web-app-ai-quick-draft-creator/dist:/web/apps/ai-quick-draft-creator - ./packages/web-app-chat-with-file/dist:/web/apps/chat-with-file - ./packages/web-app-version-changelog/dist:/web/apps/version-changelog - ./packages/web-app-group-management/dist:/web/apps/group-management - ./packages/web-app-file-comments/dist:/web/apps/file-comments - ./packages/web-app-ai-folder-brief-sidebar/dist:/web/apps/ai-folder-brief-sidebar - ./packages/web-app-ai-sensitive-data-scanner/dist:/web/apps/ai-sensitive-data-scanner - ./packages/web-app-ai-data-insights-sidebar/dist:/web/apps/ai-data-insights-sidebar - ./packages/web-app-ai-multi-doc-synthesizer/dist:/web/apps/ai-multi-doc-synthesizer - ./packages/web-app-ai-smart-file-tagger-qa/dist:/web/apps/ai-smart-file-tagger-qa - ./packages/web-app-vim-nav/dist:/web/apps/vim-nav - ./packages/web-app-ai-smart-collections-nav/dist:/web/apps/ai-smart-collections-nav - ./packages/web-app-ai-folder-readme-generator/dist:/web/apps/ai-folder-readme-generator - ./packages/web-app-jupyter/dist:/web/apps/jupyter depends_on: - traefik ai-llm-proxy: build: context: ./packages/ai-llm-proxy dockerfile: Dockerfile extra_hosts: - host.docker.internal:${DOCKER_HOST:-host-gateway} environment: NODE_TLS_REJECT_UNAUTHORIZED: '0' OCIS_URL: 'https://host.docker.internal:9200' LLM_ENDPOINT: '${AI_LLM_ENDPOINT:-http://host.docker.internal:11434/v1}' LLM_API_KEY: '${AI_LLM_API_KEY:-}' PORT: '3030' labels: traefik.enable: true traefik.http.routers.ai-llm-proxy.tls: true traefik.http.routers.ai-llm-proxy.rule: Host(`host.docker.internal`) && PathPrefix(`/ai-llm-proxy`) traefik.http.routers.ai-llm-proxy.entrypoints: ocis traefik.http.routers.ai-llm-proxy.middlewares: ai-llm-proxy-strip,cors traefik.http.middlewares.ai-llm-proxy-strip.stripPrefix.prefixes: /ai-llm-proxy traefik.http.services.ai-llm-proxy.loadbalancer.server.port: 3030 depends_on: - traefik # tika is required for the photo and search extensions tika: image: apache/tika:latest-full # release notes: https://tika.apache.org depends_on: - traefik companion: image: transloadit/companion:6.2.0 extra_hosts: - host.docker.internal:${DOCKER_HOST:-host-gateway} environment: NODE_TLS_REJECT_UNAUTHORIZED: 0 COMPANION_CLIENT_ORIGINS: 'true' COMPANION_ALLOW_LOCAL_URLS: 'true' COMPANION_DATADIR: /tmp/companion/ COMPANION_DOMAIN: host.docker.internal:9200 COMPANION_PROTOCOL: https COMPANION_PATH: /companion COMPANION_ONEDRIVE_KEY: '${COMPANION_ONEDRIVE_KEY}' COMPANION_ONEDRIVE_SECRET: '${COMPANION_ONEDRIVE_SECRET}' COMPANION_TUS_DEFERRED_UPLOAD_LENGTH: 'false' volumes: - uppy_companion_datadir:/tmp/companion/ labels: traefik.enable: true traefik.http.routers.companion.tls: true traefik.http.routers.companion.rule: Host(`host.docker.internal`) && PathPrefix(`/companion`) traefik.http.routers.companion.entrypoints: ocis traefik.http.services.companion.loadbalancer.server.port: 3020 traefik: image: traefik:v3.6.10 restart: unless-stopped entrypoint: [ '/bin/sh', '-c', "[ -f /certificates/server.key ] && ./entrypoint.sh $$@ || (apk add openssl && openssl req -subj '/CN=ocis.test' -x509 -sha256 -nodes -days 3650 -newkey rsa:2048 -keyout /certificates/server.key -out /certificates/server.crt && chmod -R 777 /certificates && ./entrypoint.sh $$@)" ] command: - '--pilot.dashboard=false' - '--log.level=DEBUG' - '--api.dashboard=true' - '--api.insecure=true' - '--providers.file.directory=/configs' - '--providers.docker=true' - '--providers.docker.exposedbydefault=false' - '--entrypoints.web.address=:80' - '--entrypoints.ocis.address=:9200' - '--entrypoints.ocis-federated.address=:10200' - '--entrypoints.websecure.address=:443' - '--entrypoints.websecure.http.middlewares=https_config@docker' - '--entrypoints.websecure.http.tls.options=default' labels: traefik.enable: true traefik.http.routers.http_catchall.rule: HostRegexp(`{any:.+}`) traefik.http.routers.http_catchall.entrypoints: web traefik.http.routers.http_catchall.middlewares: https_config traefik.http.middlewares.https_config.headers.sslRedirect: true traefik.http.middlewares.https_config.headers.stsSeconds: 63072000 traefik.http.middlewares.https_config.headers.stsIncludeSubdomains: true traefik.http.middlewares.cors.headers.accesscontrolallowmethods: '*' traefik.http.middlewares.cors.headers.accesscontrolallowheaders: '*' traefik.http.middlewares.cors.headers.accesscontrolalloworiginlist: '*' traefik.http.middlewares.cors.headers.accesscontrolexposeheaders: '*' traefik.http.middlewares.cors.headers.accesscontrolmaxage: 100 traefik.http.middlewares.cors.headers.addvaryheader: true ports: - '9200:9200' volumes: - './dev/docker/traefik/certificates:/certificates' - './dev/docker/traefik/configs:/configs' - '/var/run/docker.sock:/var/run/docker.sock:ro' volumes: ocis-config: uppy_companion_datadir: