diff --git a/content/AGENTS.md b/content/AGENTS.md index d419e36..0228862 100644 --- a/content/AGENTS.md +++ b/content/AGENTS.md @@ -148,6 +148,23 @@ Some text: This applies to all list types: unordered (`*`), ordered (`.`), and description lists. +## AsciiDoc Section Heading Spacing + +Every section heading (lines starting with one or more `=` followed by a space and text) must be followed by a blank line before its content. This has no effect on rendering but is required for readability of the source file. + +Exception: the document title at line 1 followed by document attributes (`:attr: value`) is the AsciiDoc header section — no blank line is needed or wanted there. + +```asciidoc +// Wrong — heading immediately followed by content +== My Section +Some text here. + +// Correct +== My Section + +Some text here. +``` + ## AsciiDoc Section Heading Capitalisation All section headings (lines starting with one or more `=` followed by a space) must use **Associated Press (AP) title case**. Use https://headlinecapitalization.com/ (select "AP" style) as the reference tool when writing or reviewing headings. diff --git a/content/ocis/9.0/antora.yml b/content/ocis/9.0/antora.yml index faf3f9a..e994884 100644 --- a/content/ocis/9.0/antora.yml +++ b/content/ocis/9.0/antora.yml @@ -9,6 +9,19 @@ nav: asciidoc: attributes: + # Audit-tracking attributes: every page that was reviewed or updated for this + # version carries `:lastUpdatedVersion: {ocis-audit-version}` and + # `:lastUpdatedDate: {ocis-audit-date}` in its header. Centralising the values + # here means a single edit covers all pages at once. + # + # Update these values when you have verified that ALL content that requires a + # review has been checked or updated — for example, that Mermaid diagrams, + # architecture descriptions and configuration examples are still accurate for + # the new version. Do NOT bump these values for purely mechanical edits + # (formatting, typo fixes) that do not involve a content review. + ocis-audit-version: '9.0.0-rc.1' + ocis-audit-date: '2026-10-25' + # used to define the include path for services without trailing / # note that any changes of this path also need adjustment in # https://github.com/owncloud/ocis-charts/tree/master/charts/ocis/docs diff --git a/content/ocis/9.0/modules/ROOT/pages/index.adoc b/content/ocis/9.0/modules/ROOT/pages/index.adoc index 804a89d..39c4bf5 100644 --- a/content/ocis/9.0/modules/ROOT/pages/index.adoc +++ b/content/ocis/9.0/modules/ROOT/pages/index.adoc @@ -1,10 +1,18 @@ = The Infinite Scale Documentation :toc: right :toclevels: 2 -:description: Welcome to the Infinite Scale documentation. Infinite Scale is a data platform providing tools to integrate, organize, share and govern data and metadata. +:description: Welcome to the ownCloud Infinite Scale (oCIS) 9.0 documentation: admin setup, configuration, services and developer guides. +:readingTime: 2 +:level: beginner +:lastUpdatedVersion: {ocis-audit-version} +:lastUpdatedDate: {ocis-audit-date} include::admin:partial$multi-location/compose-version.adoc[] +ownCloud Infinite Scale (oCIS) is a data platform for integrating, organizing, sharing and governing data and metadata. This documentation covers administration, deployment and configuration as well as developer resources for the 9.0 release. Choose the xref:admin:index.adoc[admin] or xref:developer:index.adoc[developer] section to get started. + +{readingTime} min read · Level: {level} · Last updated for oCIS {lastUpdatedVersion} on 25.10.2026 + == Introduction {description} @@ -22,3 +30,17 @@ IMPORTANT: Rolling releases are published in a cycle of 3 weeks. Due to this rel == End-User License Agreement (EULA) ownCloud provides an EULA to clarify, among various topics, who can use this software and which conditions apply to the groups of users defined. See the actual {compose_raw_url}{compose_version}/assets/End-User-License-Agreement-for-ownCloud-Infinite-Scale.pdf[EULA] for details. + +== FAQ + +=== What Is the Difference Between the Admin and Developer Documentation? + +The xref:admin:index.adoc[admin] documentation covers installing, configuring and operating Infinite Scale. The xref:developer:index.adoc[developer] documentation covers building, extending and contributing to oCIS. + +=== Where Do I Start as a New Administrator? + +Start with the xref:admin:prerequisites/prerequisites.adoc[prerequisites] and the xref:admin:deployment/general/general-info.adoc[general deployment information], then follow the xref:admin:deployment/index.adoc[deployment] guide for your chosen deployment type. + +=== Which oCIS Version Is This Documentation For? + +This documentation is verified against oCIS `9.0.0-rc.1`. See the xref:admin:deployment/services/env-var-changes.adoc[environment variable changes] page for differences from earlier versions. diff --git a/content/ocis/9.0/modules/admin/pages/architecture/architecture.adoc b/content/ocis/9.0/modules/admin/pages/architecture/architecture.adoc index 783566f..b42825e 100644 --- a/content/ocis/9.0/modules/admin/pages/architecture/architecture.adoc +++ b/content/ocis/9.0/modules/admin/pages/architecture/architecture.adoc @@ -3,6 +3,10 @@ :toclevels: 4 :description: This page gives you an overview of the architecture and the concepts behind Infinite Scale. Infinite Scale was designed from the beginning as a data platform providing tools to integrate, organize, share and govern data and metadata. :page-aliases: ROOT:architecture/architecture.adoc +:readingTime: 11 +:level: intermediate +:lastUpdatedVersion: {ocis-audit-version} +:lastUpdatedDate: {ocis-audit-date} :c4-model-url: https://en.wikipedia.org/wiki/C4_model :suture-url: https://github.com/thejerf/suture @@ -16,6 +20,10 @@ :ocis-pkg-url: https://github.com/owncloud/ocis/tree/master/ocis-pkg :go-micro-url: https://github.com/asim/go-micro +This page explains the architecture and core concepts of Infinite Scale, including spaces, the microservice runtime and the request flow. It is for administrators and operators who want to understand how oCIS components interact before deploying or scaling an instance. You should be familiar with microservices and basic networking. + +{readingTime} min read · Level: {level} · Last updated for oCIS {lastUpdatedVersion} on 25.10.2026 + == Introduction {description} @@ -48,6 +56,37 @@ image::architecture/c4-ocis-system-context.svg[Infinite Scale System Context,wid image::architecture/c4-ocis-system-container.svg[Infinite Scale Container View,width=400] +== Request Flow + +The diagram below shows the default request flow for a file access request, verified against a running `v9.0.0-rc.1` instance. The xref:{s-path}/proxy.adoc[proxy] is the single entry point on port `9200`. It authenticates the request and routes it to the service responsible for the request path. + +[mermaid, width=600] +----- +sequenceDiagram + autonumber + participant C as Client (Web / Desktop / Mobile) + participant P as proxy (:9200) + participant A as auth-bearer + idp + participant D as ocdav (:9163) + participant G as gateway (:9142) + participant S as storage-users (:9157, driver ocis) + participant F as POSIX filesystem + C->>P: HTTPS WebDAV request (/dav/...) + P->>A: validate bearer token + A-->>P: authenticated user + P->>D: forward to ocdav (/dav/, /webdav/, /remote.php/) + D->>G: CS3 request (Stat / List / Read) + G->>S: CS3 storage call + S->>F: read metadata + blob + F-->>S: data + S-->>G: CS3 response + G-->>D: CS3 response + D-->>P: WebDAV response + P-->>C: HTTPS response +----- + +NOTE: The proxy also routes the Libre Graph API (`/graph`), OCS (`/ocs`), and the Web UI (`/`) to their respective services. Authentication is always performed by the xref:{s-path}/auth-bearer.adoc[auth-bearer] service together with the xref:{s-path}/idp.adoc[idp] service (or an external Identity Provider). + == Concepts // from https://owncloud.dev/ocis/ @@ -128,4 +167,135 @@ CS3 (Cloud Storage Services for Synchronization and Sharing) is based on {grpc-u ==== Protocol-Driven Development -Interacting with Infinite Scale involves a multitude af APIs. The server and all clients rely on {oidc-url}[OpenID Connect] for authentication. The embedded LibreGraph Connect can be replaced with any other OpenID Connect Identity Provider. Clients use the {webdav-url}[WebDAV]-based https://github.com/cernbox/smashbox/blob/master/protocol/protocol.md[ownCloud sync protocol] to manage files and folders, Open Collaboration Services (OCS) to manage shares and https://tus.io/protocols/resumable-upload.html[TUS] to upload files in a resumable way. On the server side, REVA is the reference implementation of the https://github.com/cs3org/cs3apis[CS3APIS], which are defined using protocol buffers. By embedding Go-lang LDAP Authentication (GLAuth), Infinite Scale provides a read-only LDAP interface to make accounts, including guests, available to firewalls and other systems. +Interacting with Infinite Scale involves a multitude of APIs. The server and all clients rely on {oidc-url}[OpenID Connect] for authentication. The embedded LibreGraph Connect can be replaced with any other OpenID Connect Identity Provider. Clients use the {webdav-url}[WebDAV]-based https://github.com/cernbox/smashbox/blob/master/protocol/protocol.md[ownCloud sync protocol] to manage files and folders, Open Collaboration Services (OCS) to manage shares and https://tus.io/protocols/resumable-upload.html[TUS] to upload files in a resumable way. On the server side, REVA is the reference implementation of the https://github.com/cs3org/cs3apis[CS3APIS], which are defined using protocol buffers. By embedding the xref:{s-path}/idm.adoc[IDM service] (based on LibreGraph Identity Management), Infinite Scale provides an LDAP interface to make accounts, including guests, available to firewalls and other systems. + +== Deployment Models + +Infinite Scale can be deployed as a **single binary** (`ocis server`), with **Docker Compose**, or on **Kubernetes** using the oCIS Helm chart. Because every option is an environment variable, the configuration is identical across deployment types. The deployment type mainly determines whether services can be scaled out and how they discover each other and exchange events. + +=== Service Discovery and Events + +By default, services register in a NATS JetStream key-value store (registry type `nats-js-kv`, set via `MICRO_REGISTRY`) and exchange events over the same NATS server (`OCIS_EVENTS_ENDPOINT`, default `127.0.0.1:9233`). In a single binary the embedded NATS server provides both. In a Compose or Helm deployment a shared NATS server provides both across all replicas. + +[mermaid, width=700] +----- +flowchart TB + subgraph SB["Single binary (ocis server)"] + direction TB + N1["embedded NATS (:9233)
registry: nats-js-kv - events"] + P1["proxy"] --- N1 + D1["ocdav"] --- N1 + G1["gateway"] --- N1 + S1["storage-users"] --- N1 + end + + subgraph DC["Docker Compose / Helm (Kubernetes)"] + direction TB + N2["shared NATS JetStream
registry: nats-js-kv - events"] + P2["proxy (replicas)"] --- N2 + D2["ocdav (replicas)"] --- N2 + G2["gateway (replicas)"] --- N2 + S2["storage-users (replicas)"] --- N2 + end +----- + +NOTE: The in-memory registry (`MICRO_REGISTRY=memory`) only works inside a single process and is intended for development, not for production or scale-out deployments. + +=== Storage Drivers + +The `storage-users` service supports different storage drivers, selected with `STORAGE_USERS_DRIVER`: + +[mermaid, width=600] +----- +flowchart LR + G["gateway"] --> SU["storage-users"] + SU -->|"driver: ocis (default)"| POSIX[("POSIX volume
metadata + blobs")] + SU -->|"driver: s3ng"| S3[("S3 bucket (blobs)")] + SU -->|"driver: s3ng"| POSIX2[("POSIX volume (metadata)")] +----- + +=== Configurable Components: Pro and Cons per Deployment Type + +The defaults below are identical for the single binary, Docker Compose and Helm deployments because configuration is environment-variable based. The deployment type only changes whether a component can scale out: a single binary cannot scale individual services, while Compose and Helm can scale replicas that share a registry and event bus. + +[width="100%",cols="~,~,~,~",options="header"] +|=== +| Component / Option +| Good for +| Drawbacks +| Default and when to use + +| Service registry: `nats-js-kv` (NATS JetStream key-value) +| Distributed service discovery across replicas and nodes. +| Needs a reachable NATS server; adds a lookup hop. +| Default in all deployment types. Use everywhere except single-process development. + +| Service registry: `memory` (in-memory) +| Zero configuration, no external dependency. +| Only works within one process; no discovery across replicas. +| Not a production default. Development and testing only. + +| Storage driver: `ocis` (POSIX / decomposedfs) +| Simple, no external object store; metadata and blobs on a POSIX volume. +| Scales with the filesystem; no native object-store redundancy. +| Default in all deployment types. Use for small to medium deployments on POSIX storage. + +| Storage driver: `s3ng` (S3 blobs + POSIX metadata) +| Blobs on scalable, redundant S3-compatible object storage. +| Needs an S3 endpoint and credentials; metadata stays on POSIX. +| Not a default. Use when S3 storage is configured, for large or geo-distributed deployments. + +| Storage driver: `owncloudsql` +| Legacy ownCloud SQL storage. +| Deprecated; not for new deployments. +| Deprecated. Do not use for new deployments. + +| Cache store: `memory` +| Best performance, no external dependency. +| No persistence; lost on restart; per-instance only. +| Default for caches. Use only where persistence and scale-out are not required. + +| Cache store: `nats-js-kv` +| Shared, persistent cache across replicas. +| Needs a reachable NATS server. +| Default for persistent stores. Use for scale-out deployments. + +| Cache store: `redis-sentinel` +| Shared, persistent, HA cache on Redis. +| Extra Redis Sentinel infrastructure to operate. +| Not a default. Use when a Redis Sentinel cluster is already available. + +| Cache store: `noop` +| Disables caching entirely. +| No caching benefit; higher load on backends. +| Not a default. Use only for debugging. + +| Identity: embedded `idp` + `idm` +| Zero-configuration OIDC and LDAP out of the box. +| Limited functionality; for small installations and testing. +| Default in all deployment types. Use for small environments. + +| Identity: external IdP (e.g. Keycloak) + LDAP +| Enterprise features: 2FA, federation, user provisioning. +| Additional components to operate and secure. +| Not a default. Use for production and enterprise environments. + +|=== + +== FAQ + +=== What Is the Single Entry Point for Client Requests? + +The xref:{s-path}/proxy.adoc[proxy] service on port `9200` is the single entry point. It terminates TLS, authenticates requests and routes them to the responsible backend service. + +=== How Do Services Find Each Other? + +Services register in a NATS JetStream key-value store (registry type `nats-js-kv`). See the xref:deployment/services/registry.adoc[Registry] page for details and the available registry types. + +=== Can I Scale Individual Services? + +Yes, in a Docker Compose or Kubernetes deployment you can run multiple replicas of a service. A single binary runs all services in one process and cannot scale individual services. See the xref:availability_scaling/availability_scaling.adoc[availability and scaling] page. + +=== Which Storage Driver Should I Use? + +Use the default `ocis` driver (POSIX / decomposedfs) for small to medium deployments. Use the `s3ng` driver when you want blobs on S3-compatible object storage. See the xref:deployment/storage/general-considerations.adoc[storage considerations] page. diff --git a/content/ocis/9.0/modules/admin/pages/deployment/general/general-info.adoc b/content/ocis/9.0/modules/admin/pages/deployment/general/general-info.adoc index bf5e846..31848c9 100644 --- a/content/ocis/9.0/modules/admin/pages/deployment/general/general-info.adoc +++ b/content/ocis/9.0/modules/admin/pages/deployment/general/general-info.adoc @@ -1,7 +1,15 @@ = General Information :toc: right -:description: This document covers general aspects of Infinite Scale like start modes, services, important minimum configuration etc. for a common understanding. +:description: General Infinite Scale concepts: start modes, the embedded supervisor, managing and configuring services, and the base data directory. :page-aliases: ROOT:deployment/general/general-info.adoc +:readingTime: 19 +:level: beginner +:lastUpdatedVersion: {ocis-audit-version} +:lastUpdatedDate: {ocis-audit-date} + +This page covers the general concepts of Infinite Scale that apply regardless of how you deploy it: start modes, the embedded supervisor, how to manage and configure services, and where data is stored. It is for administrators setting up or operating an instance. We recommend reading it before you start a deployment. + +{readingTime} min read · Level: {level} · Last updated for oCIS {lastUpdatedVersion} on 25.10.2026 == Introduction @@ -721,3 +729,21 @@ include::partial$multi-location/idm-https-reverse-proxy.adoc[] == Maintenance Commands There are multiple commands available to maintain the Infinite Scale instance. See the xref:maintenance/commands/commands.adoc[Maintenance Commands] document for more details. + +== FAQ + +=== What Is the Difference Between Supervised and Unsupervised Services? + +Supervised services are started together by the embedded runtime with `ocis server` and share one process. Unsupervised services are started individually with `ocis server` and run as separate processes that you manage yourself. + +=== How Do I Start Only a Subset of Services? + +Use the `OCIS_ADD_RUN_SERVICES` environment variable (to add services) or `OCIS_EXCLUDE_RUN_SERVICES` (to exclude services) when starting `ocis server`. See the xref:{s-path}/services_rules.adoc[Services Rules] page. + +=== Where Is the Infinite Scale Data Stored? + +In the base data directory, which defaults to `~/.ocis` (single binary) or `/var/lib/ocis` (container). See the Base Data Directory section above. Note that Infinite Scale does not use a database. + +=== Which Command Lists the Running Services? + +Run `ocis list` to list the services running in supervised mode. See the xref:maintenance/commands/commands.adoc[Maintenance Commands] page for all maintenance commands. diff --git a/content/ocis/9.0/modules/admin/pages/deployment/index.adoc b/content/ocis/9.0/modules/admin/pages/deployment/index.adoc index 10542b9..705a76c 100644 --- a/content/ocis/9.0/modules/admin/pages/deployment/index.adoc +++ b/content/ocis/9.0/modules/admin/pages/deployment/index.adoc @@ -1,12 +1,32 @@ = Deployment :toc: right -:description: There are several deployment options for Infinite Scale available. Consider which one serves your purposes best. Generally speaking, you can decide between using containers or manually set up a regular server. +:description: Overview of the Infinite Scale deployment options: single binary, Docker Compose and Kubernetes with the oCIS Helm chart. :page-aliases: ROOT:deployment/index.adoc +:readingTime: 2 +:level: beginner +:lastUpdatedVersion: {ocis-audit-version} +:lastUpdatedDate: {ocis-audit-date} -{description} +Infinite Scale can be deployed as a single binary, with Docker Compose, or on Kubernetes using the oCIS Helm chart. This page helps you choose the deployment option that fits your environment and points you to the right setup guides. No prior oCIS experience is required. + +{readingTime} min read · Level: {level} · Last updated for oCIS {lastUpdatedVersion} on 25.10.2026 * The xref:deployment/general/general-info.adoc[General Info] section summarizes general and important information which is not dependent on the way that you install Infinite Scale. Any setup refers to this general information as prerequisite knowledge. * The next steps will likely be mounting a xref:deployment/storage/nfs.adoc[Network File System] and managing xref:deployment/services/services.adoc[Services]. * xref:deployment/security/security.adoc[Securing Infinite Scale] should be a primary concern after you've set up your server. + +== FAQ + +=== Which Deployment Option Should I Choose? + +Use the **single binary** for a quick start or small installation. Use **Docker Compose** for a containerized single-node setup. Use **Kubernetes with the oCIS Helm chart** when you need to scale services across multiple nodes. + +=== Do the Configuration Options Differ Between Deployment Types? + +No. Infinite Scale is configured entirely through environment variables, so the same options apply to the single binary, Docker Compose and Helm deployments. The deployment type only changes how services are run and scaled. See xref:deployment/services/env-var-note.adoc[Notes for Environment Variables]. + +=== Where Can I Find the List of Default Ports? + +See the xref:deployment/services/ports-used.adoc[Ports Used] page for the default port ranges of every service. diff --git a/content/ocis/9.0/modules/admin/pages/deployment/services/ports-used.adoc b/content/ocis/9.0/modules/admin/pages/deployment/services/ports-used.adoc index 5d20ff9..1bc29b1 100644 --- a/content/ocis/9.0/modules/admin/pages/deployment/services/ports-used.adoc +++ b/content/ocis/9.0/modules/admin/pages/deployment/services/ports-used.adoc @@ -2,6 +2,14 @@ :toc: right :description: Infinite Scale uses ports for communication between services. This page provides an overview of default port ranges. :page-aliases: ROOT:deployment/services/ports-used.adoc +:readingTime: 2 +:level: beginner +:lastUpdatedVersion: {ocis-audit-version} +:lastUpdatedDate: {ocis-audit-date} + +This page lists the default port ranges used by Infinite Scale services. It is for administrators configuring firewalls, load balancers or reverse proxies. You should be familiar with basic networking. + +{readingTime} min read · Level: {level} · Last updated for oCIS {lastUpdatedVersion} on 25.10.2026 == Introduction @@ -40,7 +48,7 @@ The following port ranges are used by services: | 9166-9169 | xref:{s-path}/auth-machine.adoc[auth-machine] | 9170-9174 | xref:{s-path}/notifications.adoc[notifications] | 9175-9179 | xref:{s-path}/storage-publiclink.adoc[storage-publiclink] -| 9180-9184 | FREE +| 9180-9184 | FREE (formerly used by accounts) | 9185-9189 | xref:{s-path}/thumbnails.adoc[thumbnails] | 9190-9194 | xref:{s-path}/settings.adoc[settings] | 9195-9197 | xref:{s-path}/activitylog.adoc[activitylog] @@ -50,7 +58,8 @@ The following port ranges are used by services: | 9210-9214 | xref:{s-path}/userlog.adoc[userlog] | 9215-9219 | xref:{s-path}/storage-system.adoc[storage-system] | 9220-9224 | xref:{s-path}/search.adoc[search] -| 9225-9229 | FREE +| 9225-9228 | FREE +| 9229 | xref:{s-path}/audit.adoc[audit] (debug server) | 9230-9234 | xref:{s-path}/nats.adoc[nats] | 9235-9239 | xref:{s-path}/idm.adoc[idm] | 9240-9244 | xref:{s-path}/app-registry.adoc[app-registry] @@ -58,9 +67,25 @@ The following port ranges are used by services: | 9250-9254 | https://github.com/owncloud/ocis/tree/master/ocis/pkg/runtime[ocis server (runtime)] | 9255-9259 | xref:{s-path}/postprocessing.adoc[postprocessing] | 9260-9264 | xref:{s-path}/clientlog.adoc[clientlog] +| 9265-9269 | xref:{s-path}/invitations.adoc[invitations] | 9270-9274 | xref:{s-path}/eventhistory.adoc[eventhistory] +| 9275-9279 | xref:{s-path}/webfinger.adoc[webfinger] (also see 9277 xref:{s-path}/antivirus.adoc[antivirus] debug server) | 9280-9284 | xref:{s-path}/ocm.adoc[ocm] | 9285-9289 | xref:{s-path}/storage-users.adoc[storage-users (vault)] | 9300-9304 | xref:{s-path}/collaboration.adoc[collaboration] | 9350-9354 | xref:{s-path}/ocdav.adoc[ocdav] |=== + +== FAQ + +=== Which Port Do Clients Connect To? + +Clients connect to the xref:{s-path}/proxy.adoc[proxy] on port `9200` (HTTPS). All other ports are for service-to-service communication on the internal network. + +=== Do I Need to Open All These Ports Externally? + +No. Only port `9200` (the proxy) needs to be reachable by clients. The remaining ports are bound to `127.0.0.1` by default and are used for internal service communication; expose them only on a trusted internal network. + +=== Where Can I Change a Service Port? + +Each service port is configurable through its environment variables, for example `PROXY_HTTP_ADDR` for the proxy or `GRAPH_HTTP_ADDR` for the graph service. See the individual xref:deployment/services/services.adoc[service] pages. diff --git a/content/ocis/9.0/modules/admin/pages/deployment/services/registry.adoc b/content/ocis/9.0/modules/admin/pages/deployment/services/registry.adoc index 4de3371..fa4e177 100644 --- a/content/ocis/9.0/modules/admin/pages/deployment/services/registry.adoc +++ b/content/ocis/9.0/modules/admin/pages/deployment/services/registry.adoc @@ -1,7 +1,15 @@ = Registry :toc: right -:description: All services need to be able to communicate with each other. To do so, they register in a common registry. +:description: How Infinite Scale services discover each other through a service registry, and which registry types (nats-js-kv, memory) are available. :page-aliases: ROOT:deployment/services/registry.adoc +:readingTime: 3 +:level: intermediate +:lastUpdatedVersion: {ocis-audit-version} +:lastUpdatedDate: {ocis-audit-date} + +The registry lets all Infinite Scale services find and communicate with each other. This page explains the available registry types and when to use them. You should be familiar with the oCIS service architecture. + +{readingTime} min read · Level: {level} · Last updated for oCIS {lastUpdatedVersion} on 25.10.2026 == Introduction @@ -18,3 +26,51 @@ NOTE: If not running _built-in nats_, `MICRO_REGISTRY_ADDRESS` needs to be set t * *memory* + Setting the environment variable to memory starts an in-memory registry. This only works with the developer version of Infinite Scale. + +=== How the Registry Is Used + +Every service registers itself in the registry on startup and looks up the other services it needs to talk to. In a single binary, the embedded NATS server provides the registry. In a Docker Compose or Helm deployment, a shared NATS server provides the registry across all replicas. + +[mermaid, width=500] +----- +flowchart LR + subgraph Reg["Service registry (nats-js-kv)"] + R[("NATS JetStream key-value store")] + end + P["proxy"] -- "register / lookup" --- R + D["ocdav"] -- "register / lookup" --- R + G["gateway"] -- "register / lookup" --- R + S["storage-users"] -- "register / lookup" --- R +----- + +=== Registry Options: Pro and Cons + +[width="100%",cols="~,~,~",options="header"] +|=== +| Registry option | Good for | Drawbacks + +| `nats-js-kv` (NATS JetStream key-value) +| Distributed discovery across replicas and nodes; required for scale-out. +| Needs a reachable NATS server. + +| `memory` (in-memory) +| Zero configuration, no external dependency. +| Only works within one process; not for production or scale-out. + +|=== + +Default in all deployment types is `nats-js-kv`. Use `memory` only for single-process development. + +== FAQ + +=== Which Registry Does Infinite Scale Use by Default? + +The default is `nats-js-kv`, a NATS JetStream key-value store. You only need to set `MICRO_REGISTRY_ADDRESS` when the NATS server is not the built-in one, which is the same address as `OCIS_EVENTS_ENDPOINT`. + +=== Can I Use mDNS, etcd or Consul as the Registry? + +No. Those registry types were deprecated and removed. If your configuration still sets `MICRO_REGISTRY` to `mdns`, `nats`, `etcd` or `consul`, switch to `nats-js-kv`. See the xref:migration/upgrading_4.0.0_5.0.0.adoc[migration notes]. + +=== Does the Registry Work in a Single Binary Without Extra Setup? + +Yes. When you run `ocis server`, the embedded NATS server provides the registry automatically, so no extra configuration is needed. diff --git a/content/ocis/9.0/modules/admin/pages/deployment/services/s-list/auth-app.adoc b/content/ocis/9.0/modules/admin/pages/deployment/services/s-list/auth-app.adoc index 539e656..a363475 100644 --- a/content/ocis/9.0/modules/admin/pages/deployment/services/s-list/auth-app.adoc +++ b/content/ocis/9.0/modules/admin/pages/deployment/services/s-list/auth-app.adoc @@ -2,9 +2,17 @@ :toc: right :description: The Infinite Scale Auth App service provides authentication for 3rd party apps. :page-aliases: ROOT:deployment/services/s-list/auth-app.adoc +:readingTime: 5 +:level: intermediate +:lastUpdatedVersion: {ocis-audit-version} +:lastUpdatedDate: {ocis-audit-date} :service_name: auth-app +The `auth-app` service issues tokens that let third-party apps authenticate against Infinite Scale without a user session. Tokens can be created, listed and deleted via the CLI, the REST API or the impersonation API. Because generating access tokens is security relevant, the service is not started automatically and must be enabled explicitly. + +{readingTime} min read · Level: {level} · Last updated for oCIS {lastUpdatedVersion} on 25.10.2026 + == Introduction {description} @@ -24,7 +32,7 @@ To enable `{service_name}`, you first must set `PROXY_ENABLE_APP_AUTH` to `true` == Default Values -* Auth Basic listens on port 9245 by default. +* Auth App listens on HTTP port 9247 by default (gRPC on 9246, debug on 9245). include::partial$deployment/services/auth-service-family.adoc[] @@ -179,3 +187,17 @@ curl --request POST "https:///auth-app/tokens?expiry=\{value}&us == Configuration include::partial$deployment/services/env-and-yaml.adoc[tag=envvars-yaml] + +== FAQ + +=== How Do I Start the Auth-App Service? + +The service is excluded from autostart because generating access tokens is security relevant. Add it with `OCIS_ADD_RUN_SERVICES=auth-app` (or start it explicitly on the command line) and set `PROXY_ENABLE_APP_AUTH=true` on the xref:{s-path}/proxy.adoc[proxy] service. + +=== How Do I Create an App Token? + +Use the CLI: `ocis auth-app create --user-name=${user} --expiration=${token_expiration}`. The default expiration is `72h`; valid time abbreviations are `h`, `m` and `s`. Alternatively, POST to the `/auth-app/tokens?expiry=72h` endpoint with an active bearer token, or use the impersonation API. + +=== Which Port Does the Auth-App Service Listen On? + +The `auth-app` service listens on HTTP port `9247` by default (gRPC on `9246`, debug on `9245`). diff --git a/content/ocis/9.0/modules/admin/pages/deployment/services/s-list/auth-basic.adoc b/content/ocis/9.0/modules/admin/pages/deployment/services/s-list/auth-basic.adoc index aa8577b..afd0e3a 100644 --- a/content/ocis/9.0/modules/admin/pages/deployment/services/s-list/auth-basic.adoc +++ b/content/ocis/9.0/modules/admin/pages/deployment/services/s-list/auth-basic.adoc @@ -2,9 +2,17 @@ :toc: right :description: The Infinite Scale Auth Basic service provides basic authentication for those clients who cannot handle O> :page-aliases: ROOT:deployment/services/s-list/auth-basic.adoc +:readingTime: 2 +:level: intermediate +:lastUpdatedVersion: {ocis-audit-version} +:lastUpdatedDate: {ocis-audit-date} :service_name: auth-basic +The `auth-basic` service validates HTTP Basic authentication for clients that cannot handle OpenID Connect, such as some WebDAV clients. It does not validate credentials itself but delegates to a configurable auth manager, with LDAP being the recommended option. This page explains how to enable the service and choose an auth manager. + +{readingTime} min read · Level: {level} · Last updated for oCIS {lastUpdatedVersion} on 25.10.2026 + == Introduction {description} @@ -25,11 +33,11 @@ include::partial$deployment/services/auth-service-family.adoc[] == Auth Managers -Since the `auth-basic` service does not do any validation itself, it needs to be configured with an authentication manager. One can use the `AUTH_BASIC_AUTH_PROVIDER` environment variable to configure this. +Since the `auth-basic` service does not do any validation itself, it needs to be configured with an authentication manager. One can use the `AUTH_BASIC_AUTH_MANAGER` environment variable to configure this. === LDAP Auth Manager -Setting `AUTH_BASIC_AUTH_PROVIDER` to `"ldap"` will configure the `auth-basic` service to use LDAP as auth manager. This is the recommended option for running in a production and testing environment. More details on how to configure LDAP with ocis can be found in the admin docs. +Setting `AUTH_BASIC_AUTH_MANAGER` to `"ldap"` will configure the `auth-basic` service to use LDAP as auth manager. This is the recommended option for running in a production and testing environment. More details on how to configure LDAP with ocis can be found in the admin docs. === Other Auth Managers @@ -42,3 +50,17 @@ Scalability, just like memory and CPU consumption, are highly dependent on the c == Configuration include::partial$deployment/services/env-and-yaml.adoc[tag=envvars-yaml] + +== FAQ + +=== How Do I Enable Basic Authentication? + +Set `PROXY_ENABLE_BASIC_AUTH` to `true` on the xref:{s-path}/proxy.adoc[proxy] service. Clients then authenticate by sending an HTTP Basic `Authorization` header; only HTTP basic auth requests involve the `auth-basic` service. + +=== Which Auth Manager Should I Use? + +`"ldap"` is the recommended auth manager for production and testing environments. `"owncloudsql"` is also supported but not recommended. Select the manager with the `AUTH_BASIC_AUTH_MANAGER` environment variable. + +=== Does Basic Authentication Support Cookies? + +No. The basic authentication implementation does not support cookies and is therefore not intended to be used for benchmarks. diff --git a/content/ocis/9.0/modules/admin/pages/deployment/services/s-list/auth-bearer.adoc b/content/ocis/9.0/modules/admin/pages/deployment/services/s-list/auth-bearer.adoc index b575edf..2617d29 100644 --- a/content/ocis/9.0/modules/admin/pages/deployment/services/s-list/auth-bearer.adoc +++ b/content/ocis/9.0/modules/admin/pages/deployment/services/s-list/auth-bearer.adoc @@ -2,9 +2,17 @@ :toc: right :description: The Infinite Scale Auth Bearer service authenticates OpenID Connect bearer tokens. :page-aliases: ROOT:deployment/services/s-list/auth-bearer.adoc +:readingTime: 1 +:level: beginner +:lastUpdatedVersion: {ocis-audit-version} +:lastUpdatedDate: {ocis-audit-date} :service_name: auth-bearer +The `auth-bearer` service authenticates OpenID Connect bearer tokens presented by clients. A default deployment uses the built-in OpenID Connect identity provider, but an external one can be configured as well. This page lists the default ports and scalability notes. + +{readingTime} min read · Level: {level} · Last updated for oCIS {lastUpdatedVersion} on 25.10.2026 + == Introduction {description} @@ -13,7 +21,7 @@ == Default Values -* Users listens on port 9148 by default. +* Auth Bearer listens on gRPC port 9148 by default. include::partial$deployment/services/auth-service-family.adoc[] @@ -29,3 +37,17 @@ This will change over time and be documented when available. == Configuration include::partial$deployment/services/env-and-yaml.adoc[tag=envvars-yaml] + +== FAQ + +=== Which Port Does the Auth-Bearer Service Listen On? + +The `auth-bearer` service listens on gRPC port `9148` by default. + +=== Can I Use an External Identity Provider? + +Yes. A default Infinite Scale deployment starts the built-in xref:{s-path}/idp.adoc[OpenID Connect identity provider], but you can configure an external one as well. + +=== Can I Scale the Auth-Bearer Service? + +Yes. The service has no persistence or caching of its own and the xref:{s-path}/proxy.adoc[proxy] caches verified bearer tokens, so multiple instances can be started without further configuration. Note that the `auth` registry used by the xref:{s-path}/gateway.adoc[gateway] service currently uses a single instance of the service; to use more than one auth provider per deployment, scale the gateway. diff --git a/content/ocis/9.0/modules/admin/pages/deployment/services/s-list/eventhistory.adoc b/content/ocis/9.0/modules/admin/pages/deployment/services/s-list/eventhistory.adoc index 1283f45..595d5f8 100644 --- a/content/ocis/9.0/modules/admin/pages/deployment/services/s-list/eventhistory.adoc +++ b/content/ocis/9.0/modules/admin/pages/deployment/services/s-list/eventhistory.adoc @@ -2,16 +2,24 @@ :toc: right :description: The Infinite Scale eventhistory service consumes all events from the configured event system like NATS, stores them and allows other services to retrieve them via an event ID. :page-aliases: ROOT:deployment/services/s-list/eventhistory.adoc +:readingTime: 1 +:level: beginner +:lastUpdatedVersion: {ocis-audit-version} +:lastUpdatedDate: {ocis-audit-date} :service_name: eventhistory +The `eventhistory` service consumes all events from the event system (NATS), stores them and lets other services retrieve them by event ID. It cannot run without an event system. This page lists the default port and prerequisites. + +{readingTime} min read · Level: {level} · Last updated for oCIS {lastUpdatedVersion} on 25.10.2026 + == Introduction {description} == Default Values -* The eventhistory service listens on port 9174 by default. +* The eventhistory service listens on gRPC port 9274 by default. == Prerequisites @@ -40,3 +48,17 @@ include::partial$multi-location/event-bus.adoc[] == Configuration include::partial$deployment/services/env-and-yaml.adoc[tag=envvars-yaml] + +== FAQ + +=== Which Port Does the Eventhistory Service Listen On? + +The `eventhistory` service listens on gRPC port `9274` by default. + +=== Can Eventhistory Run Without an Event System? + +No. Running the `eventhistory` service without an event system like NATS is not possible, because it consumes all events from the configured event system. + +=== How Do Other Services Retrieve Events? + +Other services call the `eventhistory` service via gRPC. The request must contain the event ID that should be retrieved. diff --git a/content/ocis/9.0/modules/admin/pages/deployment/services/s-list/graph.adoc b/content/ocis/9.0/modules/admin/pages/deployment/services/s-list/graph.adoc index 8ab99c7..4e6ee90 100644 --- a/content/ocis/9.0/modules/admin/pages/deployment/services/s-list/graph.adoc +++ b/content/ocis/9.0/modules/admin/pages/deployment/services/s-list/graph.adoc @@ -2,6 +2,8 @@ :toc: right :description: The graph service provides the Graph API which is a RESTful web API used to access Infinite Scale resources. :page-aliases: ROOT:deployment/services/s-list/graph.adoc +:lastUpdatedVersion: {ocis-audit-version} +:lastUpdatedDate: {ocis-audit-date} :service_name: graph diff --git a/content/ocis/9.0/modules/admin/pages/deployment/services/s-list/idm.adoc b/content/ocis/9.0/modules/admin/pages/deployment/services/s-list/idm.adoc index f83b977..3b69efc 100644 --- a/content/ocis/9.0/modules/admin/pages/deployment/services/s-list/idm.adoc +++ b/content/ocis/9.0/modules/admin/pages/deployment/services/s-list/idm.adoc @@ -2,9 +2,17 @@ :toc: right :description: The Infinite Scale IDM service provides a minimal LDAP service for Infinite Scale. It is started as part of the runtime and serves as a central place for storing user and group information. :page-aliases: ROOT:deployment/services/s-list/idm.adoc +:readingTime: 3 +:level: intermediate +:lastUpdatedVersion: {ocis-audit-version} +:lastUpdatedDate: {ocis-audit-date} :service_name: idm +The IDM service provides a minimal LDAP server for Infinite Scale and is the central place for storing user and group information. It is based on LibreGraph Identity Management and is mainly targeted at small installations and testing. For larger setups or production environments, a full LDAP server or an external identity management solution is recommended. + +{readingTime} min read · Level: {level} · Last updated for oCIS {lastUpdatedVersion} on 25.10.2026 + == Introduction {description} The IDM Service is based on https://github.com/libregraph/idm[LibreGraph Identity Management]. @@ -33,7 +41,7 @@ Therefore the IDM service is **not** meant to replace a general purpose LDAP ser == Default Values -* IDM listens on port 9325 by default. +* IDM listens on port 9235 by default (LDAPS). * In the default configuration it only accepts TLS-protected connections (LDAPS). * The BaseDN of the LDAP tree is `o=libregraph-idm`. * IDM gives LDAP write permissions to a single user + @@ -92,3 +100,17 @@ Extract the `idm_password` password to enter from the `ocis.yaml` config file wh == Configuration include::partial$deployment/services/env-and-yaml.adoc[tag=envvars-yaml] + +== FAQ + +=== Which Port Does the IDM Service Listen On? + +IDM listens on port `9235` (LDAPS) by default. In the default configuration it only accepts TLS-protected connections. + +=== Can IDM Replace My Existing LDAP Server? + +No. IDM is mainly targeted at small installations and testing. It only supports a subset of the LDAP operations (`BIND`, `SEARCH`, `ADD`, `MODIFY` and `DELETE`), does no LDAP schema verification and does not support features like 2FA. For larger setups or production environments, use a real LDAP server or an external identity management solution. + +=== Where Does IDM Store Its Data? + +IDM stores its data in a `boltdb` file `idm/ocis.boltdb` inside the Infinite Scale xref:deployment/general/general-info.adoc#base-data-directory[Base Data Directory]. diff --git a/content/ocis/9.0/modules/admin/pages/deployment/services/s-list/nats.adoc b/content/ocis/9.0/modules/admin/pages/deployment/services/s-list/nats.adoc index e458369..d8e714f 100644 --- a/content/ocis/9.0/modules/admin/pages/deployment/services/s-list/nats.adoc +++ b/content/ocis/9.0/modules/admin/pages/deployment/services/s-list/nats.adoc @@ -2,9 +2,17 @@ :toc: right :description: The NATS service is the event broker of the system. It distributes events among all other services and enables other services to communicate asynchronously. :page-aliases: ROOT:deployment/services/s-list/nats.adoc +:readingTime: 2 +:level: intermediate +:lastUpdatedVersion: {ocis-audit-version} +:lastUpdatedDate: {ocis-audit-date} :service_name: nats +The NATS service is the event broker of the system. Services publish events to it and consume them via consumer groups, which guarantees that each event is delivered exactly once per group. The built-in NATS server also provides the default `nats-js-kv` service registry. + +{readingTime} min read · Level: {level} · Last updated for oCIS {lastUpdatedVersion} on 25.10.2026 + == Introduction {description} @@ -15,7 +23,7 @@ Services can `Consume` events from the nats service by registering to a `Consume == Default Values -* Thumbnails listens on port 9230 by default. +* NATS listens on port 9233 by default (debug server on 9234). * The default location storing events is $OCIS_BASE_DATA_PATH/nats == Underlying Technology @@ -41,3 +49,17 @@ Note that using TLS is highly recommended for production environments, especiall == Configuration include::partial$deployment/services/env-and-yaml.adoc[tag=envvars-yaml] + +== FAQ + +=== Which Port Does the NATS Service Listen On? + +NATS listens on port `9233` by default, with a debug server on `9234`. + +=== Where Are Events Stored? + +The built-in NATS stores events in `$OCIS_BASE_DATA_PATH/nats` by default. Set the `NATS_NATS_STORE_DIR` environment variable to use a different folder. + +=== How Do I Secure the NATS Connection With TLS? + +Set `NATS_TLS_CERT` and `NATS_TLS_KEY` to the certificate and key files and set `ENABLE_TLS` to `true`. Using TLS is highly recommended for production environments, especially when using container orchestration with Kubernetes. diff --git a/content/ocis/9.0/modules/admin/pages/deployment/services/s-list/ocdav.adoc b/content/ocis/9.0/modules/admin/pages/deployment/services/s-list/ocdav.adoc index ccb3e83..12df6a7 100644 --- a/content/ocis/9.0/modules/admin/pages/deployment/services/s-list/ocdav.adoc +++ b/content/ocis/9.0/modules/admin/pages/deployment/services/s-list/ocdav.adoc @@ -2,6 +2,8 @@ :toc: right :description: The ocDAV service is responsible for translating ownCloud-flavored WebDAV into CS3 API calls. Note that previews (thumbnails) are provided by the xref:{s-path}/webdav.adoc[WebDAV service]. :page-aliases: ROOT:deployment/services/s-list/ocdav.adoc +:lastUpdatedVersion: {ocis-audit-version} +:lastUpdatedDate: {ocis-audit-date} // references https://github.com/owncloud/ocis/pull/3864 ([docs-only] add PROPFIND sequence diagram examples) // also see: https://owncloud.dev/architecture/protocol-changes/ diff --git a/content/ocis/9.0/modules/admin/pages/deployment/services/s-list/settings.adoc b/content/ocis/9.0/modules/admin/pages/deployment/services/s-list/settings.adoc index 6ae0b43..b007858 100644 --- a/content/ocis/9.0/modules/admin/pages/deployment/services/s-list/settings.adoc +++ b/content/ocis/9.0/modules/admin/pages/deployment/services/s-list/settings.adoc @@ -2,9 +2,17 @@ :toc: right :description: The Infinite Scale Settings service provides functionality for other services to register new settings as well as storing and retrieving the respective settings' values. :page-aliases: ROOT:deployment/services/s-list/settings.adoc +:readingTime: 4 +:level: intermediate +:lastUpdatedVersion: {ocis-audit-version} +:lastUpdatedDate: {ocis-audit-date} :service_name: settings +The settings service is the central store for Infinite Scale configuration values such as user profile settings, roles and permissions. Services register _settings bundles_ with it and read or write _setting values_ at runtime. This page explains how settings are managed, persisted and cached, and how to define custom roles. + +{readingTime} min read · Level: {level} · Last updated for oCIS {lastUpdatedVersion} on 25.10.2026 + == Introduction {description} @@ -21,15 +29,9 @@ The settings service is currently used for managing the: * possible user roles and their respective permissions, * assignment of roles to users. -As an example, user profile settings that can be changed in the Web UI must be persistent. - -The settings service supports two different backends for persisting the data. The backend can be set via the `SETTINGS_STORE_TYPE` environment variable. Supported values are: +As an example, user profile settings that can be changed in the Web UI must be persistent. -* `metadata`: The default. This backend persists the settings data via the `storage-system` service. -* `filesystem`: This backend persists the settings data in a directory on the local filesystem. - The directory can be configured with `SETTINGS_DATA_PATH`. This backend is **not** suitable for running - multiple intances of the `settings` service in a scale-out deployment and should be therefore considered - deprecated. +The settings service persists settings data via the `storage-system` service (the metadata store). The storage-system gateway is configured via `SETTINGS_STORAGE_GATEWAY_GRPC_ADDR` (alias `STORAGE_GATEWAY_GRPC_ADDR`). Current versions of Infinite Scale do not provide a local-filesystem persistence backend for the settings service, so the settings service must not be run in a scale-out deployment without a shared `storage-system` service. == Settings Management @@ -41,7 +43,7 @@ Services can set or query Infinite Scale *setting values* of a user from setting == Service Accounts -The settings service needs to know the IDs of service accounts but it doesn't need their secrets. Currently only one service account can be configured which has the admin role. This can be set with the `SETTINGS_SERVICE_ACCOUNT_ID_ADMIN` envvar, but it will also pick up the global `OCIS_SERVICE_ACCOUNT_ID` envvar. Also see the xref:{s-path}/auth-service.adoc[auth-service] service description for additional details. +The settings service needs to know the IDs of service accounts but it doesn't need their secrets. The service account IDs can be set with the `SETTINGS_SERVICE_ACCOUNT_IDS` envvar, and the global `OCIS_SERVICE_ACCOUNT_ID` envvar is also picked up. Also see the xref:{s-path}/auth-service.adoc[auth-service] service description for additional details. // include common translations text :envvar_name: SETTINGS_TRANSLATION_PATH @@ -89,7 +91,7 @@ To create custom roles: * Copy the role example to a `json` file. * Change `id`, `name`, and `displayName` according your requirements. * Copy the desired permissions from the `user-all-permissions` example to the `settings` array of the role. -* Set the `SETTINGS_BUNDLE_PATH` environment variable to the path/json-file and (re)start Infinite Scale. +* Set the `SETTINGS_BUNDLES_PATH` environment variable to the path/json-file and (re)start Infinite Scale. See the full https://owncloud.dev/services/settings/#custom-roles[Custom Roles] json example in the developer documentation for more details. @@ -98,7 +100,7 @@ See the full https://owncloud.dev/services/settings/#custom-roles[Custom Roles] // renders dependent on is_cache or is_store :is_cache: true -When using `SETTINGS_STORE_TYPE=metadata`, the `settings` service caches the results of queries against the storage backend to provide faster responses. The content of this cache is independent of the cache used in the `storage-system` service as it caches directory listing and settings content stored in files. +The `settings` service caches the results of queries against the storage backend to provide faster responses. The cache store is configured via `OCIS_CACHE_STORE` / `SETTINGS_CACHE_STORE` (see the partial below). The content of this cache is independent of the cache used in the `storage-system` service as it caches directory listing and settings content stored in files. // get the complete .adoc page but do not render any contained tag directive when found in the middle include::partial$multi-location/cache-store.adoc[tag=**] @@ -110,3 +112,17 @@ include::partial$multi-location/event-bus.adoc[] == Configuration include::partial$deployment/services/env-and-yaml.adoc[tag=envvars-yaml] + +== FAQ + +=== Which Port Does the Settings Service Listen On? + +The settings service listens on HTTP port `9190` by default (gRPC on `9194`, debug on `9191`). + +=== Where Are Settings Stored? + +The settings service persists settings data via the `storage-system` service (the metadata store), configured via `SETTINGS_STORAGE_GATEWAY_GRPC_ADDR`. Current versions do not provide a local-filesystem persistence backend, so the settings service must not be run in a scale-out deployment without a shared `storage-system` service. + +=== How Do I Define Custom Roles? + +Set the `SETTINGS_BUNDLES_PATH` environment variable to a JSON file containing the role definition and restart Infinite Scale. See the _Custom Roles_ section above for the file format. diff --git a/content/ocis/9.0/modules/admin/pages/deployment/services/tls.adoc b/content/ocis/9.0/modules/admin/pages/deployment/services/tls.adoc index d392df1..be6cf60 100644 --- a/content/ocis/9.0/modules/admin/pages/deployment/services/tls.adoc +++ b/content/ocis/9.0/modules/admin/pages/deployment/services/tls.adoc @@ -2,6 +2,14 @@ :toc: right :description: TLS is important to secure communication between parties. Infinite Scale provides TLS for internal communication and also for communication with users or services which are not provided by Infinite Scale. :page-aliases: ROOT:deployment/services/tls.adoc +:readingTime: 5 +:level: advanced +:lastUpdatedVersion: {ocis-audit-version} +:lastUpdatedDate: {ocis-audit-date} + +Infinite Scale provides TLS for internal service-to-service communication as well as for communication with users and external services like SMTP, WOPI, LDAP and the HTTP frontend. This page describes the environment variables for gRPC, HTTP backends, the event bus, the Graph API and the proxy. Managing certificates is not in scope of this document. + +{readingTime} min read · Level: {level} · Last updated for oCIS {lastUpdatedVersion} on 25.10.2026 == Introduction @@ -65,7 +73,7 @@ Activates TLS for HTTP-based services using the server certificate and key confi * `OCIS_HTTP_TLS_CERTIFICATE` and * `OCIS_HTTP_TLS_KEY` -If OCIS_HTTP_TLS_CERTIFICATE is not set, a temporary server certificate is generated - to be used with `PROXY_INSECURE_BACKEND=true`. +If OCIS_HTTP_TLS_CERTIFICATE is not set, a temporary server certificate is generated - to be used with `PROXY_INSECURE_BACKENDS=true`. -- PROXY_INSECURE_BACKENDS:: @@ -110,7 +118,7 @@ Activates TLS for the HTTP-based services using the server certificate and key c * `OCIS_HTTP_TLS_CERTIFICATE` and * `OCIS_HTTP_TLS_KEY` -If OCIS_HTTP_TLS_CERTIFICATE is not set, a temporary server certificate is generated - to be used with `PROXY_INSECURE_BACKEND=true`. +If OCIS_HTTP_TLS_CERTIFICATE is not set, a temporary server certificate is generated - to be used with `PROXY_INSECURE_BACKENDS=true`. -- OCIS_HTTP_TLS_CERTIFICATE:: @@ -172,3 +180,21 @@ Path/File name of the TLS server certificate for the HTTPS server. PROXY_HTTPS_CACERT:: Path/File for the root CA certificate used to validate the server’s TLS certificate for https enabled backend services. + +== FAQ + +=== How Do I Enable TLS for gRPC Service-to-Service Communication? + +Set `OCIS_GRPC_TLS_ENABLED` to `true` (global scope) and configure the server certificate and key via `OCIS_GRPC_TLS_CERTIFICATE` and `OCIS_GRPC_TLS_KEY`. If no certificate is set, a temporary self-signed server certificate is generated, which clients can accept with `OCIS_GRPC_CLIENT_TLS_MODE=insecure`. Set the client TLS mode to `on` to enable transport security including server certificate verification. + +=== How Do I Enable TLS for the HTTP Services? + +Set `OCIS_HTTP_TLS_ENABLED` to `true` and configure the server certificate and key via `OCIS_HTTP_TLS_CERTIFICATE` and `OCIS_HTTP_TLS_KEY`. If no certificate is set, a temporary self-signed server certificate is generated, which the proxy can accept with `PROXY_INSECURE_BACKENDS=true`. + +=== Which Services Do Not Support TLS for Service-to-Service Communication? + +The xref:{s-path}/frontend.adoc[frontend] and the xref:{s-path}/ocdav.adoc[ocdav] service currently do not provide TLS for service-to-service communication. TLS will be added to them in a future release. + +=== How Do I Secure the Event Bus (NATS) Connection? + +Enable TLS for the connection to the events broker with `OCIS_EVENTS_ENABLE_TLS` and configure the NATS listener certificate via `NATS_TLS_CERT` and `NATS_TLS_KEY`. Use `OCIS_INSECURE` to skip the client certificate verification during the TLS handshake. diff --git a/content/ocis/9.0/modules/admin/pages/deployment/webui/webui-customisation.adoc b/content/ocis/9.0/modules/admin/pages/deployment/webui/webui-customisation.adoc index 160c6f0..44acbb0 100644 --- a/content/ocis/9.0/modules/admin/pages/deployment/webui/webui-customisation.adoc +++ b/content/ocis/9.0/modules/admin/pages/deployment/webui/webui-customisation.adoc @@ -2,6 +2,14 @@ :toc: right :description: The behavior of the embedded web frontend named ownCloud Web can be configured. This guide shows you how to do so. :page-aliases: ROOT:deployment/webui/webui-customisation.adoc, ROOT:deployment/webui/webui.adoc +:readingTime: 4 +:level: intermediate +:lastUpdatedVersion: {ocis-audit-version} +:lastUpdatedDate: {ocis-audit-date} + +The embedded ownCloud Web frontend can be customized by replacing compiled web assets, overriding single assets like logos and registering custom web applications. This page explains the `WEB_ASSET_*` variables and how to load custom apps via `apps.yaml`. A restart of Infinite Scale is needed to load new applications or changes. + +{readingTime} min read · Level: {level} · Last updated for oCIS {lastUpdatedVersion} on 25.10.2026 == Introduction @@ -9,7 +17,7 @@ == Custom Compiled Web Assets -If you want to use your custom compiled web client assets instead of the embedded ones, then you can do that by setting the `WEB_ASSET_PATH` variable to point to your compiled files. See https://owncloud.dev/clients/web/getting-started/[ownCloud Web / Getting Started] and https://owncloud.dev/clients/web/backend-ocis/[ownCloud Web / Setup with oCIS] in the developer documentation for more details. +If you want to use your custom compiled web client assets instead of the embedded ones, then you can do that by setting the `WEB_ASSET_CORE_PATH` variable to point to your compiled files. (Related variables: `WEB_ASSET_THEMES_PATH` for themes and `WEB_ASSET_APPS_PATH` for apps.) See https://owncloud.dev/clients/web/getting-started/[ownCloud Web / Getting Started] and https://owncloud.dev/clients/web/backend-ocis/[ownCloud Web / Setup with oCIS] in the developer documentation for more details. === Using Custom Assets @@ -120,3 +128,17 @@ NOTE: A local provided configuration yaml will always override the shipped appli == Miscellaneous Please note that Infinite Scale, in particular the web service, needs a restart to load new applications or changes to the `apps.yaml` file. + +== FAQ + +=== How Do I Use My Own Compiled Web Assets? + +Set the `WEB_ASSET_CORE_PATH` variable to point to your compiled files. Related variables are `WEB_ASSET_THEMES_PATH` for themes and `WEB_ASSET_APPS_PATH` for apps. + +=== How Do I Override a Single Asset Like a Logo? + +Place the file in a custom structure under `WEB_ASSET_APPS_PATH//`, for example `WEB_ASSET_APPS_PATH/image-viewer-dfx/logo.png`. On loading the web app, custom assets defined this way overwrite the default ones. + +=== How Do I Configure or Disable a Web Application? + +Provide the configuration in the `apps.yaml` file inside `$OCIS_BASE_DATA_PATH/config/`. It is merged with the `config` field of the application manifest, and a locally provided configuration always overrides the shipped application manifest. Set `disabled: true` to prevent an application from being loaded. Infinite Scale needs a restart to load new applications or changes to the `apps.yaml` file. diff --git a/content/ocis/9.0/modules/admin/pages/maintenance/commands/backup-consistency.adoc b/content/ocis/9.0/modules/admin/pages/maintenance/commands/backup-consistency.adoc index e085b96..a5b7717 100644 --- a/content/ocis/9.0/modules/admin/pages/maintenance/commands/backup-consistency.adoc +++ b/content/ocis/9.0/modules/admin/pages/maintenance/commands/backup-consistency.adoc @@ -1,4 +1,5 @@ = Backup Consistency +:description: Inspect the consistency of an Infinite Scale storage and list orphaned blobs, missing blobs, missing nodes and missing files. :page-aliases: ROOT:maintenance/b-r/backup-consistency.adoc The backup consistency command allows inspecting the consistency of an Infinite Scale storage: diff --git a/content/ocis/9.0/modules/admin/pages/maintenance/commands/clean-corrupt-public-shares.adoc b/content/ocis/9.0/modules/admin/pages/maintenance/commands/clean-corrupt-public-shares.adoc index f91508f..939bfd1 100644 --- a/content/ocis/9.0/modules/admin/pages/maintenance/commands/clean-corrupt-public-shares.adoc +++ b/content/ocis/9.0/modules/admin/pages/maintenance/commands/clean-corrupt-public-shares.adoc @@ -1,5 +1,6 @@ = Clean Corrupt Public Shares :toc: right +:description: Detect and optionally delete corrupt public shares whose storage grants have no corresponding share-manager entry. Detect and optionally delete storage grants that have no corresponding share-manager entry. diff --git a/content/ocis/9.0/modules/admin/pages/maintenance/commands/cleanup-orphaned-grants.adoc b/content/ocis/9.0/modules/admin/pages/maintenance/commands/cleanup-orphaned-grants.adoc index d9c65fe..e56c034 100644 --- a/content/ocis/9.0/modules/admin/pages/maintenance/commands/cleanup-orphaned-grants.adoc +++ b/content/ocis/9.0/modules/admin/pages/maintenance/commands/cleanup-orphaned-grants.adoc @@ -1,5 +1,6 @@ = Cleanup Orphaned Grants :toc: right +:description: Detect and optionally delete orphaned storage grants that have no corresponding share-manager entry. :page-aliases: ROOT:maintenance/b-r/cleanup-orphaned-grants.adoc Detect and optionally delete storage grants that have no corresponding share-manager entry. diff --git a/content/ocis/9.0/modules/admin/pages/maintenance/commands/cleanup-orphaned-shares.adoc b/content/ocis/9.0/modules/admin/pages/maintenance/commands/cleanup-orphaned-shares.adoc index 093ebbe..cc8e6df 100644 --- a/content/ocis/9.0/modules/admin/pages/maintenance/commands/cleanup-orphaned-shares.adoc +++ b/content/ocis/9.0/modules/admin/pages/maintenance/commands/cleanup-orphaned-shares.adoc @@ -1,5 +1,6 @@ = Cleanup Orphaned Shares :toc: right +:description: Use this CLI command to clean up shared space or directory orphans when a shared space or directory is deleted. :page-aliases: ROOT:maintenance/b-r/cleanup-orphaned-shares.adoc Use this CLI command to clean up shared space or directory orphans when a shared space or directory is deleted. This cannot be done automatically at the moment. diff --git a/content/ocis/9.0/modules/admin/pages/maintenance/commands/move-stuck-uploads.adoc b/content/ocis/9.0/modules/admin/pages/maintenance/commands/move-stuck-uploads.adoc index 7f0c0f0..238e46f 100644 --- a/content/ocis/9.0/modules/admin/pages/maintenance/commands/move-stuck-uploads.adoc +++ b/content/ocis/9.0/modules/admin/pages/maintenance/commands/move-stuck-uploads.adoc @@ -1,5 +1,6 @@ = Move Stuck Uploads :toc: right +:description: Detect and optionally move stuck uploads left behind when file metadata could not be moved to its final destination. :page-aliases: ROOT:maintenance/b-r/move-stuck-uploads.adoc Detect and optionally move stuck uploads. diff --git a/content/ocis/9.0/modules/admin/pages/maintenance/commands/node-metadata.adoc b/content/ocis/9.0/modules/admin/pages/maintenance/commands/node-metadata.adoc index 70e40cc..4f878ae 100644 --- a/content/ocis/9.0/modules/admin/pages/maintenance/commands/node-metadata.adoc +++ b/content/ocis/9.0/modules/admin/pages/maintenance/commands/node-metadata.adoc @@ -1,4 +1,5 @@ = Inspect and Manipulate Node Metadata +:description: CLI tools to inspect and manipulate node metadata in the decomposedfs storage. Use only under supervision of ownCloud support. :page-aliases: ROOT:maintenance/b-r/node-metadata.adoc WARNING: Use this command with absolute care. It is not intended to play around and should only be used on request and under supervision of ownCloud support. diff --git a/content/ocis/9.0/modules/admin/pages/maintenance/commands/node-tree-size.adoc b/content/ocis/9.0/modules/admin/pages/maintenance/commands/node-tree-size.adoc index ad447d7..2bbb7d0 100644 --- a/content/ocis/9.0/modules/admin/pages/maintenance/commands/node-tree-size.adoc +++ b/content/ocis/9.0/modules/admin/pages/maintenance/commands/node-tree-size.adoc @@ -1,4 +1,5 @@ = Inspect and Repair Node Tree Sizes +:description: CLI tool to check and repair the treesize metadata of a space in the decomposedfs storage. :page-aliases: ROOT:maintenance/b-r/node-tree-size.adoc WARNING: Use this command with absolute care. It is not intended to play around and should only be used on request and under supervision of ownCloud support. diff --git a/content/ocis/9.0/modules/admin/pages/maintenance/commands/rebuild-jsoncs3-indexes.adoc b/content/ocis/9.0/modules/admin/pages/maintenance/commands/rebuild-jsoncs3-indexes.adoc index a6d2cdd..c39d091 100644 --- a/content/ocis/9.0/modules/admin/pages/maintenance/commands/rebuild-jsoncs3-indexes.adoc +++ b/content/ocis/9.0/modules/admin/pages/maintenance/commands/rebuild-jsoncs3-indexes.adoc @@ -1,4 +1,5 @@ = Rebuild jsoncs3 Indexes +:description: Rebuild the jsoncs3 share indexes from the shares json. Use only on request and under supervision of ownCloud support. :page-aliases: ROOT:maintenance/b-r/rebuild-jsoncs3-indexes.adoc WARNING: Use this command with absolute care. It is not intended to play around and should only be used on request and under supervision of ownCloud support. diff --git a/content/ocis/9.0/modules/admin/pages/maintenance/commands/revisions-cleanup.adoc b/content/ocis/9.0/modules/admin/pages/maintenance/commands/revisions-cleanup.adoc index bbe6938..42a12cc 100644 --- a/content/ocis/9.0/modules/admin/pages/maintenance/commands/revisions-cleanup.adoc +++ b/content/ocis/9.0/modules/admin/pages/maintenance/commands/revisions-cleanup.adoc @@ -1,4 +1,5 @@ = Revisions Cleanup +:description: The revisions command allows removing the revisions of files in the storage. :page-aliases: ROOT:maintenance/b-r/revisions-cleanup.adoc The revisions command allows removing the revisions of files in the storage. diff --git a/content/ocis/9.0/modules/admin/pages/maintenance/commands/rolling-back-and-forward.adoc b/content/ocis/9.0/modules/admin/pages/maintenance/commands/rolling-back-and-forward.adoc index 300176a..c9e25f8 100644 --- a/content/ocis/9.0/modules/admin/pages/maintenance/commands/rolling-back-and-forward.adoc +++ b/content/ocis/9.0/modules/admin/pages/maintenance/commands/rolling-back-and-forward.adoc @@ -1,4 +1,5 @@ = Roll Back / Roll Forward Decomposedfs Migrations +:description: Roll back or roll forward decomposedfs migrations. Disable clients and users logging in while any migration is in progress. :page-aliases: ROOT:maintenance/b-r/rolling-back-and-forward.adoc WARNING: Use this command with absolute care. It is not intended to play around and should only be used on request and under supervision of ownCloud support. diff --git a/content/ocis/9.0/modules/admin/pages/maintenance/commands/service-health.adoc b/content/ocis/9.0/modules/admin/pages/maintenance/commands/service-health.adoc index d24dd83..df0d280 100644 --- a/content/ocis/9.0/modules/admin/pages/maintenance/commands/service-health.adoc +++ b/content/ocis/9.0/modules/admin/pages/maintenance/commands/service-health.adoc @@ -1,4 +1,5 @@ = Service Health +:description: The service health CLI command allows checking the health status of a service. If there are no issues found, nothing health related will get printed. :page-aliases: ROOT:maintenance/b-r/service-health.adoc The service health CLI command allows checking the health status of a service. If there are no issues found, nothing health related will get printed. diff --git a/content/ocis/9.0/modules/admin/pages/maintenance/commands/trash.adoc b/content/ocis/9.0/modules/admin/pages/maintenance/commands/trash.adoc index 5aff037..0a55fc8 100644 --- a/content/ocis/9.0/modules/admin/pages/maintenance/commands/trash.adoc +++ b/content/ocis/9.0/modules/admin/pages/maintenance/commands/trash.adoc @@ -1,4 +1,5 @@ = Trash CLI +:description: The trash CLI command allows removing empty folders from the trashbin. This should be used to speed up trash bin operations. :page-aliases: ROOT:maintenance/b-r/trash.adoc The trash CLI command allows removing empty folders from the trashbin. This should be used to speed up trash bin operations. diff --git a/content/ocis/9.0/modules/admin/pages/maintenance/commands/verify-and-inspect-blobstore.adoc b/content/ocis/9.0/modules/admin/pages/maintenance/commands/verify-and-inspect-blobstore.adoc index fae3f3c..3741c69 100644 --- a/content/ocis/9.0/modules/admin/pages/maintenance/commands/verify-and-inspect-blobstore.adoc +++ b/content/ocis/9.0/modules/admin/pages/maintenance/commands/verify-and-inspect-blobstore.adoc @@ -1,5 +1,6 @@ = Verify and Inspect a Blobstore :toc: right +:description: Verify and inspect the configured Blobstore without requiring direct access to the underlying storage system. Verify and inspect the configured Blobstore without requiring direct access to the underlying storage system. diff --git a/content/ocis/9.0/modules/admin/pages/prerequisites/prerequisites.adoc b/content/ocis/9.0/modules/admin/pages/prerequisites/prerequisites.adoc index 5747511..b40a884 100644 --- a/content/ocis/9.0/modules/admin/pages/prerequisites/prerequisites.adoc +++ b/content/ocis/9.0/modules/admin/pages/prerequisites/prerequisites.adoc @@ -3,6 +3,10 @@ :toclevels: 2 :description: The prerequisites section gives an overview and background about minimum requirements with respect to hardware, virtualization, operating system and optional software to operate Infinite Scale successfully. :page-aliases: ROOT:prerequisites/prerequisites.adoc +:readingTime: 13 +:level: beginner +:lastUpdatedVersion: {ocis-audit-version} +:lastUpdatedDate: {ocis-audit-date} :ext4_url: https://en.wikipedia.org/wiki/Ext4 :btrfs_url: https://en.wikipedia.org/wiki/Btrfs @@ -21,6 +25,10 @@ :messagepack: https://msgpack.org/index.html +This page lists the hardware, operating system, filesystem and software prerequisites for running Infinite Scale. It is for administrators planning an installation. You should be familiar with basic Linux system administration. + +{readingTime} min read · Level: {level} · Last updated for oCIS {lastUpdatedVersion} on 25.10.2026 + == Introduction {description} @@ -234,12 +242,12 @@ Depending on the usecase, you can run Infinite Scale on: For _best performance_, _stability_, _support_, and _full functionality_ we officially support Infinite Scale running on the following Linux distributions: -* Debian 10 and higher -* Fedora 32 and higher -* Red Hat Enterprise Linux 7.5 and higher including all 100% compatible derivatives -* SUSE Linux Enterprise Server 12 with SP4/5 and SLES 15.x -* openSUSE Leap 15.2 and higher -* Ubuntu 20.04 and higher +* Debian 12 and higher +* Fedora 42 and higher +* Red Hat Enterprise Linux 8 and higher including all 100% compatible derivatives +* SUSE Linux Enterprise Server 15 and higher +* openSUSE Leap 15.6 and higher +* Ubuntu 22.04 LTS and higher == Usermanagement, Authorization and Authentication @@ -372,3 +380,17 @@ Supported languages are: * German Additional languages may be contributed by the community but are not guaranteed to be complete. + +== FAQ + +=== What Are the Minimum Hardware Requirements? + +As a baseline, use a 64-bit CPU with at least 2 GB of RAM for a small test instance. See the Hardware section above; production sizing depends on your use case. + +=== Which Operating Systems Are Supported? + +See the Supported Operating Systems section above for the supported Linux distributions and their minimum versions. + +=== Do I Need a Database for Infinite Scale? + +No. Infinite Scale does not use a database. All data and metadata are stored on a POSIX-compliant filesystem. See the xref:deployment/general/general-info.adoc#base-data-directory[Base Data Directory] section in the general information. diff --git a/content/ocis/9.0/modules/developer/pages/apis/grpc_apis/index.adoc b/content/ocis/9.0/modules/developer/pages/apis/grpc_apis/index.adoc index cbf0efc..af2ff9c 100644 --- a/content/ocis/9.0/modules/developer/pages/apis/grpc_apis/index.adoc +++ b/content/ocis/9.0/modules/developer/pages/apis/grpc_apis/index.adoc @@ -1,6 +1,7 @@ = gRPC :toc: right :toclevels: 3 +:description: gRPC is a modern open source high performance Remote Procedure Call (RPC) framework that can run in any environment. == Remote Procedure Calls diff --git a/content/ocis/9.0/modules/developer/pages/apis/http/authorization.adoc b/content/ocis/9.0/modules/developer/pages/apis/http/authorization.adoc index 47d3ae4..762aefa 100644 --- a/content/ocis/9.0/modules/developer/pages/apis/http/authorization.adoc +++ b/content/ocis/9.0/modules/developer/pages/apis/http/authorization.adoc @@ -1,6 +1,7 @@ = Authorization :toc: right :toclevels: 3 +:description: Infinite Scale supports three OIDC authentication methods: Authorization Code Flow, Implicit Flow and Hybrid Flow. In its default configuration, Infinite Scale supports three authentication methods as outlined on the link:https://openid.net/specs/openid-connect-core-1_0.html#rfc.section.3[OIDC official site]: diff --git a/content/ocis/9.0/modules/developer/pages/apis/http/graph/groups.adoc b/content/ocis/9.0/modules/developer/pages/apis/http/graph/groups.adoc index 863f918..1cc1053 100644 --- a/content/ocis/9.0/modules/developer/pages/apis/http/graph/groups.adoc +++ b/content/ocis/9.0/modules/developer/pages/apis/http/graph/groups.adoc @@ -1,11 +1,12 @@ = Groups :toc: right :toclevels: 3 +:description: The Groups API is implementing a subset of the functionality of the MS Graph Group resource. == Groups API -The Groups API is implementing a subset of the functionality of the link:https://learn.microsoft.com/en-us/graph/api/resources/group?view=graph-rest-1.0[MS Graph Group resource] The JSON representation of a Group as handled by the Groups API looks like this: +The Groups API is implementing a subset of the functionality of the link:https://learn.microsoft.com/en-us/graph/api/resources/group?view=graph-rest-1.0[MS Graph Group resource]. The JSON representation of a Group as handled by the Groups API looks like this: [source,json] ---- diff --git a/content/ocis/9.0/modules/developer/pages/apis/http/graph/index.adoc b/content/ocis/9.0/modules/developer/pages/apis/http/graph/index.adoc index 97567c9..cf6eabd 100644 --- a/content/ocis/9.0/modules/developer/pages/apis/http/graph/index.adoc +++ b/content/ocis/9.0/modules/developer/pages/apis/http/graph/index.adoc @@ -1,6 +1,7 @@ = LibreGraph :toc: right :toclevels: 3 +:description: The LibreGraph API is a REST Api which is inspired by the Microsoft Graph API. The LibreGraph API is a REST Api which is inspired by the link:https://developer.microsoft.com/en-us/graph[Microsoft Graph API]. It tries to stay compliant with the Microsoft Graph API and aims to be the Next Generation Api in Infinite Scale where we want to support most of the features of the platform. The link:https://github.com/owncloud/libre-graph-api[API specification] is available in the OpenApi 3 standard and there are generated client and server link:https://github.com/owncloud/libre-graph-api#clients[SDKs] available. You can browse the API with the xref:apis/http/graph/swagger-ui.adoc[Swagger UI]. diff --git a/content/ocis/9.0/modules/developer/pages/apis/http/graph/permissions.adoc b/content/ocis/9.0/modules/developer/pages/apis/http/graph/permissions.adoc index 4a4ac1f..2b4ec8e 100644 --- a/content/ocis/9.0/modules/developer/pages/apis/http/graph/permissions.adoc +++ b/content/ocis/9.0/modules/developer/pages/apis/http/graph/permissions.adoc @@ -1,6 +1,7 @@ = Permissions :toc: right :toclevels: 3 +:description: The Permissions API is implementing a subset of the functionality of the MS Graph Permission resource. == Permissions API diff --git a/content/ocis/9.0/modules/developer/pages/apis/http/graph/role.adoc b/content/ocis/9.0/modules/developer/pages/apis/http/graph/role.adoc index 07f8e92..9b95e91 100644 --- a/content/ocis/9.0/modules/developer/pages/apis/http/graph/role.adoc +++ b/content/ocis/9.0/modules/developer/pages/apis/http/graph/role.adoc @@ -1,6 +1,7 @@ = Role :toc: right :toclevels: 3 +:description: The Roles API is implementing a subset of the functionality of the MS Graph Role Management. == Role API diff --git a/content/ocis/9.0/modules/developer/pages/apis/http/graph/spaces.adoc b/content/ocis/9.0/modules/developer/pages/apis/http/graph/spaces.adoc index 45ee276..c661854 100644 --- a/content/ocis/9.0/modules/developer/pages/apis/http/graph/spaces.adoc +++ b/content/ocis/9.0/modules/developer/pages/apis/http/graph/spaces.adoc @@ -1,6 +1,7 @@ = Spaces :toc: right :toclevels: 3 +:description: The Spaces API is implementing a subset of the functionality of the MS Graph Drives resource. == Spaces API diff --git a/content/ocis/9.0/modules/developer/pages/apis/http/graph/users.adoc b/content/ocis/9.0/modules/developer/pages/apis/http/graph/users.adoc index be28e4f..1437d43 100644 --- a/content/ocis/9.0/modules/developer/pages/apis/http/graph/users.adoc +++ b/content/ocis/9.0/modules/developer/pages/apis/http/graph/users.adoc @@ -1,11 +1,12 @@ = Users :toc: right :toclevels: 3 +:description: The Users API is implementing a subset of the functionality of the MS Graph User resource. == Users API -The Users API is implementing a subset of the functionality of the link:https://learn.microsoft.com/en-us/graph/api/resources/user?view=graph-rest-1.0[MS Graph User resource] The JSON representation of a User handled by the Users API looks like this: +The Users API is implementing a subset of the functionality of the link:https://learn.microsoft.com/en-us/graph/api/resources/user?view=graph-rest-1.0[MS Graph User resource]. The JSON representation of a User handled by the Users API looks like this: [source,json] ---- diff --git a/content/ocis/9.0/modules/developer/pages/apis/http/index.adoc b/content/ocis/9.0/modules/developer/pages/apis/http/index.adoc index d408d59..2e33687 100644 --- a/content/ocis/9.0/modules/developer/pages/apis/http/index.adoc +++ b/content/ocis/9.0/modules/developer/pages/apis/http/index.adoc @@ -1,6 +1,7 @@ = HTTP :toc: right :toclevels: 3 +:description: The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. The link:https://www.rfc-editor.org/info/rfc2616/[Hypertext Transfer Protocol (HTTP)] is a stateless application-level protocol for distributed, collaborative, hypertext information systems. HTTP is the foundation of data communication for the World Wide Web, where hypertext documents include hyperlinks to other resources that the user can easily access, for example by a mouse click or by tapping the screen in a web browser. diff --git a/content/ocis/9.0/modules/developer/pages/apis/http/tus_upload.adoc b/content/ocis/9.0/modules/developer/pages/apis/http/tus_upload.adoc index c5e5d07..62c1b47 100644 --- a/content/ocis/9.0/modules/developer/pages/apis/http/tus_upload.adoc +++ b/content/ocis/9.0/modules/developer/pages/apis/http/tus_upload.adoc @@ -1,6 +1,7 @@ = Resumable Upload :toc: right :toclevels: 3 +:description: Infinite Scale supports the tus resumable-upload protocol to reliably resume large file uploads. Infinite Scale supports the tus resumable-upload protocol, which is a robust, modular, and open protocol designed to resume large file uploads reliably over HTTP. In situations where file uploads might be interrupted due to network issues, browser crashes, or other unforeseen interruptions, tus ensures that uploads can be resumed from the point of failure without losing data. This documentation shows some basic examples, refer link:https://tus.io/protocols/resumable-upload[tus official site] for more details. diff --git a/content/ocis/9.0/modules/developer/pages/apis/http/webdav/index.adoc b/content/ocis/9.0/modules/developer/pages/apis/http/webdav/index.adoc index 4ce1103..1a4d5a0 100644 --- a/content/ocis/9.0/modules/developer/pages/apis/http/webdav/index.adoc +++ b/content/ocis/9.0/modules/developer/pages/apis/http/webdav/index.adoc @@ -1,6 +1,7 @@ = WebDAV :toc: right :toclevels: 2 +:description: WebDAV is a set of methods, headers and content-types extending HTTP/1.1 for the management of resources. **Web D**istributed **A**uthoring and **V**ersioning (WebDAV) consists of a set of methods, headers, and content-types extending HTTP/1.1 for the management of resources and -properties, creation and management of resource collections, URL namespace manipulation, and resource locking (collision avoidance). WebDAV is one of the central APIs that ownCloud uses for handling file resources, metadata and locks. diff --git a/content/ocis/9.0/modules/developer/pages/apis/index.adoc b/content/ocis/9.0/modules/developer/pages/apis/index.adoc index 03ba70b..179f766 100644 --- a/content/ocis/9.0/modules/developer/pages/apis/index.adoc +++ b/content/ocis/9.0/modules/developer/pages/apis/index.adoc @@ -1,6 +1,7 @@ = APIs :toc: right :toclevels: 3 +:description: Infinite Scale provides a large set of different application programming interfaces (APIs). Infinite Scale provides a large set of different _application programming interfaces (APIs)_. Infinite Scale is built by microservices. That means many calls to "functions" in the code are remote calls. diff --git a/content/ocis/9.0/modules/developer/pages/architecture/collaborative-storage.adoc b/content/ocis/9.0/modules/developer/pages/architecture/collaborative-storage.adoc index a218b86..cd0f497 100644 --- a/content/ocis/9.0/modules/developer/pages/architecture/collaborative-storage.adoc +++ b/content/ocis/9.0/modules/developer/pages/architecture/collaborative-storage.adoc @@ -1,5 +1,6 @@ = Collaborative Storage :toc: right +:description: Design goal of Infinite Scale: work with collaborative storage that third-party tools can manipulate in parallel, and monitor the changes. One of the envisioned design goals of Infinite Scale is to work with so called _collaborative storage_, which means that the file system it is running on is not exclusive for Infinite Scale, but can be manipulated in parallel through third party tools. Infinite Scale is expected to monitor the changes that happen independently and react in a consistent and user friendly way. diff --git a/content/ocis/9.0/modules/developer/pages/architecture/efficient-stat-polling.adoc b/content/ocis/9.0/modules/developer/pages/architecture/efficient-stat-polling.adoc index 4cc5579..f7356e0 100644 --- a/content/ocis/9.0/modules/developer/pages/architecture/efficient-stat-polling.adoc +++ b/content/ocis/9.0/modules/developer/pages/architecture/efficient-stat-polling.adoc @@ -1,6 +1,9 @@ = Efficient Stat Polling :toc: right :toclevels: 3 +:description: How the fallback sync mechanism uses the ETag to decide which parts of a sync tree need to be checked with stat() calls. +:lastUpdatedVersion: {ocis-audit-version} +:lastUpdatedDate: {ocis-audit-date} The fallback sync mechanism uses the ETag to determine which part of a sync tree needs to be checked by recursively descending into folders whose ETag has changed. The ETag can be calculated using a `stat()` call in the filesystem and we are going to explore how many `stat()` calls are necessary and how the number might be reduced. @@ -200,7 +203,9 @@ What can we do to reduce the number of stat calls to storage providers. Well, th This would reduce the number of necessary stat requests to active storages. === Active Share Node Cache Invalidation + We can extend the lifetime of share ETag cache entries and only invalidate them when the root of the storage that contains them changes its ETag. That would reduce the number of stat requests to the number of active users. === Push Notifications + We can further enhance this by sending push notifications when the root of a storage changes. Which is becoming increasingly necessary for mobile devices anyway. diff --git a/content/ocis/9.0/modules/developer/pages/architecture/index.adoc b/content/ocis/9.0/modules/developer/pages/architecture/index.adoc index 981b9e4..bf6843d 100644 --- a/content/ocis/9.0/modules/developer/pages/architecture/index.adoc +++ b/content/ocis/9.0/modules/developer/pages/architecture/index.adoc @@ -1,6 +1,9 @@ = Architecture :toc: right :toclevels: 3 +:description: In the architecture part of the documentation we collect useful developer documentation on different aspects of the architecture. +:lastUpdatedVersion: {ocis-audit-version} +:lastUpdatedDate: {ocis-audit-date} In the architecture part of the documentation we collect useful developer documentation on different aspects of the architecture. We are using mermaid.js to collaborate on the necessary diagrams. diff --git a/content/ocis/9.0/modules/developer/pages/architecture/posixfs-storage-driver.adoc b/content/ocis/9.0/modules/developer/pages/architecture/posixfs-storage-driver.adoc index c9b41a3..548bc48 100644 --- a/content/ocis/9.0/modules/developer/pages/architecture/posixfs-storage-driver.adoc +++ b/content/ocis/9.0/modules/developer/pages/architecture/posixfs-storage-driver.adoc @@ -1,5 +1,6 @@ = PosixFS Storage Driver :toc: right +:description: The Posix FS Storage Driver is a new storage driver for Infinite Scale. The Posix FS Storage Driver is a new storage driver for Infinite Scale. diff --git a/content/ocis/9.0/modules/developer/pages/architecture/protocol-changes.adoc b/content/ocis/9.0/modules/developer/pages/architecture/protocol-changes.adoc index d23ec1d..f145f89 100644 --- a/content/ocis/9.0/modules/developer/pages/architecture/protocol-changes.adoc +++ b/content/ocis/9.0/modules/developer/pages/architecture/protocol-changes.adoc @@ -1,5 +1,8 @@ = Protocol Changes :toc: right +:description: The spaces concept allows clients to look up the space endpoints a user has access to and then do individual sync discoveries. +:lastUpdatedVersion: {ocis-audit-version} +:lastUpdatedDate: {ocis-audit-date} The spaces concept allows clients to look up the space endpoints a user has access to and then do individual sync discoveries. Technically, we introduce an indirection that allows clients to rely on server provided URLs instead of hardcoded `/webdav` or `/dav/files/\{username}` paths, that may change over time. diff --git a/content/ocis/9.0/modules/developer/pages/architecture/services-communication.adoc b/content/ocis/9.0/modules/developer/pages/architecture/services-communication.adoc index e4436b7..6f69198 100644 --- a/content/ocis/9.0/modules/developer/pages/architecture/services-communication.adoc +++ b/content/ocis/9.0/modules/developer/pages/architecture/services-communication.adoc @@ -1,5 +1,6 @@ = Services Communication :toc: right :toclevels: 3 +:description: Diagram of the communication between the oCIS services. image::ocis/architecture/ocis-services-communication.drawio.svg[] diff --git a/content/ocis/9.0/modules/developer/pages/architecture/upload-processing.adoc b/content/ocis/9.0/modules/developer/pages/architecture/upload-processing.adoc index 5b5b67a..a446fa4 100644 --- a/content/ocis/9.0/modules/developer/pages/architecture/upload-processing.adoc +++ b/content/ocis/9.0/modules/developer/pages/architecture/upload-processing.adoc @@ -1,6 +1,9 @@ = Upload Processing :toc: right :toclevels: 3 +:description: Uploads are handled by a dedicated service that uses TUS.io for resumable uploads. +:lastUpdatedVersion: {ocis-audit-version} +:lastUpdatedDate: {ocis-audit-date} Uploads are handled by a dedicated service that uses TUS.io for resumable uploads. When all bytes have been transferred the upload is finalized by making the file available in file listings and for download. diff --git a/content/ocis/9.0/modules/developer/pages/cli-commands/create-new-cli-command.adoc b/content/ocis/9.0/modules/developer/pages/cli-commands/create-new-cli-command.adoc index 8e8ad48..2a98b79 100644 --- a/content/ocis/9.0/modules/developer/pages/cli-commands/create-new-cli-command.adoc +++ b/content/ocis/9.0/modules/developer/pages/cli-commands/create-new-cli-command.adoc @@ -1,6 +1,7 @@ = Create a New CLI Command :toc: right :toclevels: 3 +:description: Create a new CLI command for an oCIS service. Service commands are usually located in the service's pkg/command subfolder. [NOTE] diff --git a/content/ocis/9.0/modules/developer/pages/cli-commands/document-cli-commands.adoc b/content/ocis/9.0/modules/developer/pages/cli-commands/document-cli-commands.adoc index dfa4e60..d8c4f4f 100644 --- a/content/ocis/9.0/modules/developer/pages/cli-commands/document-cli-commands.adoc +++ b/content/ocis/9.0/modules/developer/pages/cli-commands/document-cli-commands.adoc @@ -1,6 +1,7 @@ = Document CLI Commands :toc: right :toclevels: 3 +:description: Any CLI command that is added to Infinite Scale must be documented here in the dev docs and the admin docs. Any CLI command that is added to Infinite Scale must be documented here in the dev docs and the xref:admin:maintenance/commands/commands.adoc[admin docs]. Note that the admin docs primarily distinguish between online and offline commands because the structure of the documentation is different. Typically, any command documented in the developer documentation is integrated into the admin documentation and adapted according to the target audience. The description here is for developers; the admin docs are derived from it. diff --git a/content/ocis/9.0/modules/developer/pages/cli-commands/index.adoc b/content/ocis/9.0/modules/developer/pages/cli-commands/index.adoc index 816aee4..849ebce 100644 --- a/content/ocis/9.0/modules/developer/pages/cli-commands/index.adoc +++ b/content/ocis/9.0/modules/developer/pages/cli-commands/index.adoc @@ -1,6 +1,7 @@ = oCIS CLI Commands :toc: right :toclevels: 3 +:description: CLI commands can either be embedded in a service or operate independently. CLI commands can either be embedded in a service or operate independently. diff --git a/content/ocis/9.0/modules/developer/pages/cli-commands/service_dependent_cli.adoc b/content/ocis/9.0/modules/developer/pages/cli-commands/service_dependent_cli.adoc index d0b3fae..d1657d8 100644 --- a/content/ocis/9.0/modules/developer/pages/cli-commands/service_dependent_cli.adoc +++ b/content/ocis/9.0/modules/developer/pages/cli-commands/service_dependent_cli.adoc @@ -1,6 +1,7 @@ = Service Dependent CLI :toc: right :toclevels: 3 +:description: This document describes ocis CLI commands that are embedded in a service. This document describes ocis CLI commands that are _embedded in a service_. diff --git a/content/ocis/9.0/modules/developer/pages/cli-commands/service_independent_cli.adoc b/content/ocis/9.0/modules/developer/pages/cli-commands/service_independent_cli.adoc index 8fea290..52d0f8c 100644 --- a/content/ocis/9.0/modules/developer/pages/cli-commands/service_independent_cli.adoc +++ b/content/ocis/9.0/modules/developer/pages/cli-commands/service_independent_cli.adoc @@ -1,6 +1,7 @@ = Service Independent CLI :toc: right :toclevels: 3 +:description: This document describes ocis CLI commands that are service independent. This document describes ocis CLI commands that are _service independent_. diff --git a/content/ocis/9.0/modules/developer/pages/clients/index.adoc b/content/ocis/9.0/modules/developer/pages/clients/index.adoc index 9eff150..d9fdf46 100644 --- a/content/ocis/9.0/modules/developer/pages/clients/index.adoc +++ b/content/ocis/9.0/modules/developer/pages/clients/index.adoc @@ -1,5 +1,6 @@ = Clients :toc: right :toclevels: 3 +:description: Documentation for clients that work with oCIS: ownCloud Web and rclone. This Section describes clients for ocis. diff --git a/content/ocis/9.0/modules/developer/pages/clients/rclone/index.adoc b/content/ocis/9.0/modules/developer/pages/clients/rclone/index.adoc index cf81611..709d4b3 100644 --- a/content/ocis/9.0/modules/developer/pages/clients/rclone/index.adoc +++ b/content/ocis/9.0/modules/developer/pages/clients/rclone/index.adoc @@ -1,6 +1,7 @@ = Rclone :toc: right :toclevels: 3 +:description: Use rclone to sync files between oCIS and other cloud storage over WebDAV, with basic auth or OpenID Connect. == About Rclone diff --git a/content/ocis/9.0/modules/developer/pages/clients/rclone/webdav-sync-basic-auth.adoc b/content/ocis/9.0/modules/developer/pages/clients/rclone/webdav-sync-basic-auth.adoc index 952ff83..af47557 100644 --- a/content/ocis/9.0/modules/developer/pages/clients/rclone/webdav-sync-basic-auth.adoc +++ b/content/ocis/9.0/modules/developer/pages/clients/rclone/webdav-sync-basic-auth.adoc @@ -1,6 +1,7 @@ = WebDAV with Basic Authentication :toc: right :toclevels: 3 +:description: Sync files between rclone and oCIS over WebDAV using basic authentication. == WebDAV with Basic Authentication diff --git a/content/ocis/9.0/modules/developer/pages/clients/rclone/webdav-sync-oidc.adoc b/content/ocis/9.0/modules/developer/pages/clients/rclone/webdav-sync-oidc.adoc index f2dde03..583bd9b 100644 --- a/content/ocis/9.0/modules/developer/pages/clients/rclone/webdav-sync-oidc.adoc +++ b/content/ocis/9.0/modules/developer/pages/clients/rclone/webdav-sync-oidc.adoc @@ -1,6 +1,7 @@ = WebDAV with OpenID Connect :toc: right :toclevels: 3 +:description: Rclone itself is not able to open and maintain an OpenID Connect session. == WebDAV with OpenID Connect diff --git a/content/ocis/9.0/modules/developer/pages/clients/web/backend/backend-ocis.adoc b/content/ocis/9.0/modules/developer/pages/clients/web/backend/backend-ocis.adoc index 6876a42..0e7ce70 100644 --- a/content/ocis/9.0/modules/developer/pages/clients/web/backend/backend-ocis.adoc +++ b/content/ocis/9.0/modules/developer/pages/clients/web/backend/backend-ocis.adoc @@ -1,6 +1,7 @@ = Setup With oCIS :toc: right :toclevels: 3 +:description: Set up ownCloud Web for local development against an oCIS backend: clone the repo, install dependencies and run the web build. == Setting Up Web diff --git a/content/ocis/9.0/modules/developer/pages/clients/web/building/building.adoc b/content/ocis/9.0/modules/developer/pages/clients/web/building/building.adoc index 57b5370..76acd6e 100644 --- a/content/ocis/9.0/modules/developer/pages/clients/web/building/building.adoc +++ b/content/ocis/9.0/modules/developer/pages/clients/web/building/building.adoc @@ -1,6 +1,7 @@ = Building From Source :toc: right :toclevels: 3 +:description: Build ownCloud Web from source: install dependencies with pnpm and run the build for Web and all apps. == Building ownCloud Web diff --git a/content/ocis/9.0/modules/developer/pages/clients/web/development/conventions.adoc b/content/ocis/9.0/modules/developer/pages/clients/web/development/conventions.adoc index 69757e4..1af1733 100644 --- a/content/ocis/9.0/modules/developer/pages/clients/web/development/conventions.adoc +++ b/content/ocis/9.0/modules/developer/pages/clients/web/development/conventions.adoc @@ -1,6 +1,7 @@ = Conventions :toc: right :toclevels: 3 +:description: This is a collection of tips and conventions to follow when working on the ownCloud web frontend. This is a collection of tips and conventions to follow when working on the link:https://github.com/owncloud/ocis[ownCloud web frontend]. Since it is a living document, please open a PR if you find something missing. diff --git a/content/ocis/9.0/modules/developer/pages/clients/web/development/index.adoc b/content/ocis/9.0/modules/developer/pages/clients/web/development/index.adoc index 7e6cae3..49f3895 100644 --- a/content/ocis/9.0/modules/developer/pages/clients/web/development/index.adoc +++ b/content/ocis/9.0/modules/developer/pages/clients/web/development/index.adoc @@ -1,6 +1,7 @@ = Development :toc: right :toclevels: 3 +:description: This section is a guide about the development of ownCloud Web core, apps and extensions. This includes tooling, conventions and the repo structure. This section is a guide about the development of ownCloud Web *core*, *apps* and *extensions*. This includes *tooling*, *conventions* and the *repo structure*. diff --git a/content/ocis/9.0/modules/developer/pages/clients/web/development/repo-structure.adoc b/content/ocis/9.0/modules/developer/pages/clients/web/development/repo-structure.adoc index c2c6e2f..72363c9 100644 --- a/content/ocis/9.0/modules/developer/pages/clients/web/development/repo-structure.adoc +++ b/content/ocis/9.0/modules/developer/pages/clients/web/development/repo-structure.adoc @@ -1,6 +1,7 @@ = Repo Structure and (Published) Packages :toc: right :toclevels: 3 +:description: From a developer's perspective, the most important parts of the ownCloud oCIS repository. == Repository Structure diff --git a/content/ocis/9.0/modules/developer/pages/clients/web/development/tooling.adoc b/content/ocis/9.0/modules/developer/pages/clients/web/development/tooling.adoc index 29b3f7f..a2ddec7 100644 --- a/content/ocis/9.0/modules/developer/pages/clients/web/development/tooling.adoc +++ b/content/ocis/9.0/modules/developer/pages/clients/web/development/tooling.adoc @@ -1,6 +1,7 @@ = Tooling :toc: right :toclevels: 3 +:description: Web is using pnpm as package manager and vite as build tool. == Packaging diff --git a/content/ocis/9.0/modules/developer/pages/clients/web/embed-mode/index.adoc b/content/ocis/9.0/modules/developer/pages/clients/web/embed-mode/index.adoc index a091200..5f3ceaf 100644 --- a/content/ocis/9.0/modules/developer/pages/clients/web/embed-mode/index.adoc +++ b/content/ocis/9.0/modules/developer/pages/clients/web/embed-mode/index.adoc @@ -1,6 +1,7 @@ = Embed Mode :toc: right :toclevels: 3 +:description: The ownCloud Web can be consumed by another application in a stripped down version called "Embed mode". The ownCloud Web can be consumed by another application in a stripped down version called "Embed mode". This mode is supposed to be used in the context of selecting or sharing resources. diff --git a/content/ocis/9.0/modules/developer/pages/clients/web/extension-system/extension-types/actions.adoc b/content/ocis/9.0/modules/developer/pages/clients/web/extension-system/extension-types/actions.adoc index 53f1f9c..0ed21c9 100644 --- a/content/ocis/9.0/modules/developer/pages/clients/web/extension-system/extension-types/actions.adoc +++ b/content/ocis/9.0/modules/developer/pages/clients/web/extension-system/extension-types/actions.adoc @@ -1,6 +1,7 @@ = Action Extensions :toc: right :toclevels: 3 +:description: Actions are one of the possible extension types. Registered actions get rendered in various places across the UI, depending on their scope and targets. == Action Extension Type diff --git a/content/ocis/9.0/modules/developer/pages/clients/web/extension-system/extension-types/app-menu-items.adoc b/content/ocis/9.0/modules/developer/pages/clients/web/extension-system/extension-types/app-menu-items.adoc index facafa8..136f383 100644 --- a/content/ocis/9.0/modules/developer/pages/clients/web/extension-system/extension-types/app-menu-items.adoc +++ b/content/ocis/9.0/modules/developer/pages/clients/web/extension-system/extension-types/app-menu-items.adoc @@ -1,6 +1,7 @@ = Application Menu Item Extensions :toc: right :toclevels: 3 +:description: This extension type allows apps to register links to internal or external pages within the application switcher menu on the top left. == Extension Type AppMenuItem diff --git a/content/ocis/9.0/modules/developer/pages/clients/web/extension-system/extension-types/custom-components.adoc b/content/ocis/9.0/modules/developer/pages/clients/web/extension-system/extension-types/custom-components.adoc index 232d23c..5bb6e99 100644 --- a/content/ocis/9.0/modules/developer/pages/clients/web/extension-system/extension-types/custom-components.adoc +++ b/content/ocis/9.0/modules/developer/pages/clients/web/extension-system/extension-types/custom-components.adoc @@ -1,6 +1,7 @@ = Custom Component Extensions :toc: right :toclevels: 3 +:description: CustomComponent extensions need to define one or multiple extensionPointIds as render target. == Extension Type CustomComponent diff --git a/content/ocis/9.0/modules/developer/pages/clients/web/extension-system/extension-types/folder-view.adoc b/content/ocis/9.0/modules/developer/pages/clients/web/extension-system/extension-types/folder-view.adoc index 2afd2e8..64adf3c 100644 --- a/content/ocis/9.0/modules/developer/pages/clients/web/extension-system/extension-types/folder-view.adoc +++ b/content/ocis/9.0/modules/developer/pages/clients/web/extension-system/extension-types/folder-view.adoc @@ -1,6 +1,7 @@ = Folder View Extensions :toc: right :toclevels: 3 +:description: The folder view is one of the possible extension types. Registered folder view can be used to render multiple resources (folders, files, spaces) in the UI. == Folder View Extension Type diff --git a/content/ocis/9.0/modules/developer/pages/clients/web/extension-system/extension-types/index.adoc b/content/ocis/9.0/modules/developer/pages/clients/web/extension-system/extension-types/index.adoc index 127f927..3057631 100644 --- a/content/ocis/9.0/modules/developer/pages/clients/web/extension-system/extension-types/index.adoc +++ b/content/ocis/9.0/modules/developer/pages/clients/web/extension-system/extension-types/index.adoc @@ -1,5 +1,6 @@ = Extension Types :toc: right :toclevels: 3 +:description: This section is a guide about the different predefined extension types of ownCloud Web. This section is a guide about the different predefined extension types of ownCloud Web. Please refer to the respective subpages to learn more about the individual extension types. diff --git a/content/ocis/9.0/modules/developer/pages/clients/web/extension-system/extension-types/left-sidebar-menu-item.adoc b/content/ocis/9.0/modules/developer/pages/clients/web/extension-system/extension-types/left-sidebar-menu-item.adoc index 781d74f..1eb2a45 100644 --- a/content/ocis/9.0/modules/developer/pages/clients/web/extension-system/extension-types/left-sidebar-menu-item.adoc +++ b/content/ocis/9.0/modules/developer/pages/clients/web/extension-system/extension-types/left-sidebar-menu-item.adoc @@ -1,6 +1,7 @@ = Left Sidebar Menu Item Extensions :toc: right :toclevels: 3 +:description: One possible extension type is left sidebar menu items. == Left Sidebar Menu Item Extension Type diff --git a/content/ocis/9.0/modules/developer/pages/clients/web/extension-system/extension-types/right-sidebar-panels.adoc b/content/ocis/9.0/modules/developer/pages/clients/web/extension-system/extension-types/right-sidebar-panels.adoc index 6d220bf..9ec1bb5 100644 --- a/content/ocis/9.0/modules/developer/pages/clients/web/extension-system/extension-types/right-sidebar-panels.adoc +++ b/content/ocis/9.0/modules/developer/pages/clients/web/extension-system/extension-types/right-sidebar-panels.adoc @@ -1,6 +1,7 @@ = Right Sidebar Panel Extensions :toc: right :toclevels: 3 +:description: The right sidebar is supposed to show information and make context specific actions available for single or multiple selected items. == Extension Type SideBarPanel diff --git a/content/ocis/9.0/modules/developer/pages/clients/web/extension-system/extension-types/search.adoc b/content/ocis/9.0/modules/developer/pages/clients/web/extension-system/extension-types/search.adoc index 8a2295f..fbdc30f 100644 --- a/content/ocis/9.0/modules/developer/pages/clients/web/extension-system/extension-types/search.adoc +++ b/content/ocis/9.0/modules/developer/pages/clients/web/extension-system/extension-types/search.adoc @@ -1,6 +1,7 @@ = Search Extensions :toc: right :toclevels: 3 +:description: One possible extension type is search. == Search Extensions diff --git a/content/ocis/9.0/modules/developer/pages/clients/web/extension-system/index.adoc b/content/ocis/9.0/modules/developer/pages/clients/web/extension-system/index.adoc index fcae968..decffdf 100644 --- a/content/ocis/9.0/modules/developer/pages/clients/web/extension-system/index.adoc +++ b/content/ocis/9.0/modules/developer/pages/clients/web/extension-system/index.adoc @@ -1,6 +1,7 @@ = Extension System :toc: right :toclevels: 3 +:description: ownCloud Web can be extended through various entry points with custom apps and extensions. == Concepts and Building Blocks diff --git a/content/ocis/9.0/modules/developer/pages/clients/web/extension-system/viewer-editor-apps.adoc b/content/ocis/9.0/modules/developer/pages/clients/web/extension-system/viewer-editor-apps.adoc index 6248343..35c39aa 100644 --- a/content/ocis/9.0/modules/developer/pages/clients/web/extension-system/viewer-editor-apps.adoc +++ b/content/ocis/9.0/modules/developer/pages/clients/web/extension-system/viewer-editor-apps.adoc @@ -1,6 +1,7 @@ = Viewer and Editor Apps :toc: right :toclevels: 3 +:description: ownCloud Web allows developers to implement apps for viewing and editing specific file types. == Viewer and Editor Apps diff --git a/content/ocis/9.0/modules/developer/pages/clients/web/getting-started.adoc b/content/ocis/9.0/modules/developer/pages/clients/web/getting-started.adoc index 45222b6..42b24e6 100644 --- a/content/ocis/9.0/modules/developer/pages/clients/web/getting-started.adoc +++ b/content/ocis/9.0/modules/developer/pages/clients/web/getting-started.adoc @@ -1,6 +1,7 @@ = Getting Started :toc: right :toclevels: 3 +:description: The source code is hosted in the ocis repo in the web folder. == Source Code diff --git a/content/ocis/9.0/modules/developer/pages/clients/web/index.adoc b/content/ocis/9.0/modules/developer/pages/clients/web/index.adoc index e83a88d..1d18de4 100644 --- a/content/ocis/9.0/modules/developer/pages/clients/web/index.adoc +++ b/content/ocis/9.0/modules/developer/pages/clients/web/index.adoc @@ -1,5 +1,6 @@ = ownCloud Web :toc: right :toclevels: 3 +:description: This is the next generation ownCloud frontend. If you're new here, head over to the getting started guide for a quick introduction. -This is the next generation ownCloud frontend. If you're new here, head over to the the xref:clients/web/getting-started.adoc[getting started guide] for a quick introduction. +This is the next generation ownCloud frontend. If you're new here, head over to the xref:clients/web/getting-started.adoc[getting started guide] for a quick introduction. diff --git a/content/ocis/9.0/modules/developer/pages/clients/web/releasing/deprecations.adoc b/content/ocis/9.0/modules/developer/pages/clients/web/releasing/deprecations.adoc index 1c3c4e1..2e179fe 100644 --- a/content/ocis/9.0/modules/developer/pages/clients/web/releasing/deprecations.adoc +++ b/content/ocis/9.0/modules/developer/pages/clients/web/releasing/deprecations.adoc @@ -1,6 +1,7 @@ = Deprecations and Migrations :toc: right :toclevels: 3 +:description: This guide tracks deprecations, planned removals, and migration paths for ownCloud Web. This guide tracks deprecations, planned removals, and migration paths for ownCloud Web. Developers should reference this guide when upgrading between major versions to ensure compatibility and adopt recommended practices. diff --git a/content/ocis/9.0/modules/developer/pages/clients/web/releasing/index.adoc b/content/ocis/9.0/modules/developer/pages/clients/web/releasing/index.adoc index 7512fb0..6a8f8e8 100644 --- a/content/ocis/9.0/modules/developer/pages/clients/web/releasing/index.adoc +++ b/content/ocis/9.0/modules/developer/pages/clients/web/releasing/index.adoc @@ -1,5 +1,6 @@ = Releasing :toc: right :toclevels: 3 +:description: This section serves as a guide for releasing ownCloud Web and managing important deprecations for a release. This section serves as a guide for releasing ownCloud Web and managing important deprecations for a release. diff --git a/content/ocis/9.0/modules/developer/pages/clients/web/releasing/releasing.adoc b/content/ocis/9.0/modules/developer/pages/clients/web/releasing/releasing.adoc index 6f15981..ad4af89 100644 --- a/content/ocis/9.0/modules/developer/pages/clients/web/releasing/releasing.adoc +++ b/content/ocis/9.0/modules/developer/pages/clients/web/releasing/releasing.adoc @@ -1,6 +1,7 @@ = Releasing :toc: right :toclevels: 3 +:description: ownCloud Web can be hosted standalone for a dedicated oCIS backend or bundled as part of oCIS. == Releasing ownCloud Web diff --git a/content/ocis/9.0/modules/developer/pages/clients/web/testing/accesibility.adoc b/content/ocis/9.0/modules/developer/pages/clients/web/testing/accesibility.adoc index 70c1ba5..4f2f721 100644 --- a/content/ocis/9.0/modules/developer/pages/clients/web/testing/accesibility.adoc +++ b/content/ocis/9.0/modules/developer/pages/clients/web/testing/accesibility.adoc @@ -1,6 +1,7 @@ = Accessibility :toc: right :toclevels: 3 +:description: Accessibility is a crucial aspect of web development. It ensures that web applications are usable by everyone, including people with disabilities. == Introduction diff --git a/content/ocis/9.0/modules/developer/pages/clients/web/testing/e2e-testing-standards.adoc b/content/ocis/9.0/modules/developer/pages/clients/web/testing/e2e-testing-standards.adoc index 1b22cb7..149c1f7 100644 --- a/content/ocis/9.0/modules/developer/pages/clients/web/testing/e2e-testing-standards.adoc +++ b/content/ocis/9.0/modules/developer/pages/clients/web/testing/e2e-testing-standards.adoc @@ -1,6 +1,7 @@ = End-to-End (E2E) Test Standards :toc: right :toclevels: 3 +:description: In ownCloud, we use Playwright for webUI test automation. == Introduction diff --git a/content/ocis/9.0/modules/developer/pages/clients/web/testing/index.adoc b/content/ocis/9.0/modules/developer/pages/clients/web/testing/index.adoc index 0280f6e..1839ad5 100644 --- a/content/ocis/9.0/modules/developer/pages/clients/web/testing/index.adoc +++ b/content/ocis/9.0/modules/developer/pages/clients/web/testing/index.adoc @@ -1,5 +1,6 @@ = Tests :toc: right :toclevels: 3 +:description: Guides on running different kinds of tests in ownCloud Web. Guides on running different kinds of tests in ownCloud Web. diff --git a/content/ocis/9.0/modules/developer/pages/clients/web/testing/testing.adoc b/content/ocis/9.0/modules/developer/pages/clients/web/testing/testing.adoc index de8a1bf..a028cb0 100644 --- a/content/ocis/9.0/modules/developer/pages/clients/web/testing/testing.adoc +++ b/content/ocis/9.0/modules/developer/pages/clients/web/testing/testing.adoc @@ -1,6 +1,7 @@ = Running Tests :toc: right :toclevels: 3 +:description: In order to allow us to make changes quickly, often and with a high level of confidence, we heavily rely on tests within the web repository. == Introduction diff --git a/content/ocis/9.0/modules/developer/pages/clients/web/theming/index.adoc b/content/ocis/9.0/modules/developer/pages/clients/web/theming/index.adoc index cf5ad4d..e3940b4 100644 --- a/content/ocis/9.0/modules/developer/pages/clients/web/theming/index.adoc +++ b/content/ocis/9.0/modules/developer/pages/clients/web/theming/index.adoc @@ -1,6 +1,7 @@ = Theming :toc: right :toclevels: 3 +:description: By providing your own theme, you can customize the user experience for your own ownCloud installation. == Introduction diff --git a/content/ocis/9.0/modules/developer/pages/clients/web/translations/index.adoc b/content/ocis/9.0/modules/developer/pages/clients/web/translations/index.adoc index d793fce..a57ef06 100644 --- a/content/ocis/9.0/modules/developer/pages/clients/web/translations/index.adoc +++ b/content/ocis/9.0/modules/developer/pages/clients/web/translations/index.adoc @@ -1,6 +1,7 @@ = Translations :toc: right :toclevels: 3 +:description: Translations are essential for the web frontend. == Introduction diff --git a/content/ocis/9.0/modules/developer/pages/clients/web/translations/translations.adoc b/content/ocis/9.0/modules/developer/pages/clients/web/translations/translations.adoc index d1358b7..1ef2a02 100644 --- a/content/ocis/9.0/modules/developer/pages/clients/web/translations/translations.adoc +++ b/content/ocis/9.0/modules/developer/pages/clients/web/translations/translations.adoc @@ -1,6 +1,7 @@ = Working With Translations :toc: right :toclevels: 3 +:description: The translation setup is managed within each Packages folder that contains a translation source. == Translation Setup diff --git a/content/ocis/9.0/modules/developer/pages/license.adoc b/content/ocis/9.0/modules/developer/pages/license.adoc index 73c0907..0648f5a 100644 --- a/content/ocis/9.0/modules/developer/pages/license.adoc +++ b/content/ocis/9.0/modules/developer/pages/license.adoc @@ -1,6 +1,7 @@ = License :toc: right :toclevels: 3 +:description: The source code of the project is licensed under the Apache 2.0 license. For the license of the used libraries you have to check the respective sources. // this generates a proper link to the actual version of the eula which can be ocis version dependent. include::admin:partial$multi-location/compose-version.adoc[] diff --git a/content/ocis/9.0/modules/developer/pages/ocis/adr/0001-introduce-accounts-service.adoc b/content/ocis/9.0/modules/developer/pages/ocis/adr/0001-introduce-accounts-service.adoc index 8590df2..10254f7 100644 --- a/content/ocis/9.0/modules/developer/pages/ocis/adr/0001-introduce-accounts-service.adoc +++ b/content/ocis/9.0/modules/developer/pages/ocis/adr/0001-introduce-accounts-service.adoc @@ -1,6 +1,7 @@ = 1. Introduce an Accounts Service :toc: right :toclevels: 3 +:description: ADR 1: To attach metadata like shares to users ownCloud relies on persistent, non-reassignable, unique identifiers for users (and files). * Status: superseded by xref:ocis/adr/0003-external-user-management.adoc[ADR-0003] * Deciders: link:https://github.com/butonic[@butonic], link:https://github.com/felixboehm[@felixboehm], link:https://github.com/micbar[@micbar], link:https://github.com/pmaier1[@pmaier1] @@ -8,6 +9,11 @@ Technical Story: link:https://github.com/owncloud/ocis-accounts/pull/34[persist accounts] +[NOTE] +==== +The `accounts` service described here no longer exists in current oCIS versions (the `owncloud/ocis-accounts` repository is archived). User management is now provided by the `graph`, `idm` and `idp` services. +==== + == Context and Problem Statement To attach metadata like shares to users ownCloud relies on persistent, non-reassignable, unique identifiers for users (and files). Email und username can change when a user changes his name. But even the OIDC sub+iss combination may change when the IdP changes. While there is link:https://openid.net/specs/openid-connect-account-porting-1_0.html[an account porting protocol] that describes how a relying party (RP) such as ownCloud should behave, it still requires the RP to maintain its own user identifiers. diff --git a/content/ocis/9.0/modules/developer/pages/ocis/adr/0002-persist-accounts-using-cs3-storage.adoc b/content/ocis/9.0/modules/developer/pages/ocis/adr/0002-persist-accounts-using-cs3-storage.adoc index ebdb6c1..ae7d283 100644 --- a/content/ocis/9.0/modules/developer/pages/ocis/adr/0002-persist-accounts-using-cs3-storage.adoc +++ b/content/ocis/9.0/modules/developer/pages/ocis/adr/0002-persist-accounts-using-cs3-storage.adoc @@ -1,13 +1,19 @@ = 2. Persist Accounts in a CS3 Storage :toc: right :toclevels: 3 +:description: ADR 2: To set up High Availability (HA) or a geo-replicated setup we need to persist accounts in a distributed way. -* Status: accepted +* Status: superseded * Deciders: link:https://github.com/butonic[@butonic], link:https://github.com/felixboehm[@felixboehm] * Date: 2020-08-21 Technical Story: link:https://github.com/owncloud/ocis-accounts/pull/92[File system based indexing] +[NOTE] +==== +The `accounts` service this ADR refers to no longer exists in current oCIS versions (the `owncloud/ocis-accounts` repository is archived). User and group management is now handled by the `graph`, `idm` and `idp` services together with external LDAP / Keycloak. See xref:ocis/adr/0003-external-user-management.adoc[ADR-0003] and xref:ocis/adr/0017-allow-read-only-external-user-management.adoc[ADR-0017] for the external user management direction. +==== + == Context and Problem Statement To set up High Availability (HA) or a geo-replicated setup we need to persist accounts in a distributed way. To efficiently query the accounts by email or username, and not only by id, they need to be indexed. Unfortunately, the link:https://github.com/blevesearch/bleve[bleve] index we currently store locally on disk cannot be shared by multiple instances, preventing a scale out deployment. diff --git a/content/ocis/9.0/modules/developer/pages/ocis/adr/0003-external-user-management.adoc b/content/ocis/9.0/modules/developer/pages/ocis/adr/0003-external-user-management.adoc index b0a4faa..3706827 100644 --- a/content/ocis/9.0/modules/developer/pages/ocis/adr/0003-external-user-management.adoc +++ b/content/ocis/9.0/modules/developer/pages/ocis/adr/0003-external-user-management.adoc @@ -1,6 +1,7 @@ = 3. Use External User Management :toc: right :toclevels: 3 +:description: ADR 3 (superseded by ADR-0017): use external user management instead of the built-in accounts service. * Status: superseded by xref:ocis/adr/0017-allow-read-only-external-user-management.adoc[17. Allow Read Only External User Management] * Deciders: link:https://github.com/butonic[@butonic], link:https://github.com/micbar[@micbar], link:https://github.com/dragotin[@dragotin], link:https://github.com/hodyroff[@hodyroff], link:https://github.com/pmaier1[@pmaier1] diff --git a/content/ocis/9.0/modules/developer/pages/ocis/adr/0004-support-hot-migration.adoc b/content/ocis/9.0/modules/developer/pages/ocis/adr/0004-support-hot-migration.adoc index 92cc5e3..dd69a29 100644 --- a/content/ocis/9.0/modules/developer/pages/ocis/adr/0004-support-hot-migration.adoc +++ b/content/ocis/9.0/modules/developer/pages/ocis/adr/0004-support-hot-migration.adoc @@ -1,6 +1,7 @@ = 4. Support Hot Migration :toc: right :toclevels: 3 +:description: ADR 4: Migration is one of the most important topics of the oCIS story. We need to provide a concept how to migrate from oC10 to oCIS. * Status: proposed * Deciders: link:https://github.com/butonic[@butonic], link:https://github.com/micbar[@micbar], link:https://github.com/dragotin[@dragotin], link:https://github.com/hodyroff[@hodyroff], link:https://github.com/pmaier1[@pmaier1] diff --git a/content/ocis/9.0/modules/developer/pages/ocis/adr/0005-cs3-api-account-management.adoc b/content/ocis/9.0/modules/developer/pages/ocis/adr/0005-cs3-api-account-management.adoc index 5405b2a..cded756 100644 --- a/content/ocis/9.0/modules/developer/pages/ocis/adr/0005-cs3-api-account-management.adoc +++ b/content/ocis/9.0/modules/developer/pages/ocis/adr/0005-cs3-api-account-management.adoc @@ -1,6 +1,7 @@ = 5. Account Management Through CS3 API :toc: right :toclevels: 3 +:description: ADR 5: What would be a more effective way of using network resources and handle account management within the oCIS-Reva ecosystem? * Status: proposed * Deciders: link:https://github.com/refs[@refs], link:https://github.com/butonic[@butonic], link:https://github.com/micbar[@micbar], link:https://github.com/dragotin[@dragotin], link:https://github.com/pmaier1[@pmaier1] @@ -8,6 +9,11 @@ Technical Story: link:https://github.com/cs3org/cs3apis/pull/119[Write only management API for User and Group resources] +[NOTE] +==== +The direction of this ADR has been implemented: account management is exposed through the CS3 userprovider API, which is served by the `graph` service. The `accounts` service referenced in this ADR no longer exists in current oCIS versions (see xref:ocis/adr/0001-introduce-accounts-service.adoc[ADR-0001] and xref:ocis/adr/0002-persist-accounts-using-cs3-storage.adoc[ADR-0002]); user management is now provided by the `graph`, `idm` and `idp` services. +==== + == Context and Problem Statement What would be a more effective way of using network resources and handle account management within the oCIS-Reva ecosystem? Separating account management at the service level is pragmatic and allows for fast iterations, but also steadily accumulates inconsistencies and bloats technical debt. diff --git a/content/ocis/9.0/modules/developer/pages/ocis/adr/0006-service-discovery.adoc b/content/ocis/9.0/modules/developer/pages/ocis/adr/0006-service-discovery.adoc index 67c1031..ca26456 100644 --- a/content/ocis/9.0/modules/developer/pages/ocis/adr/0006-service-discovery.adoc +++ b/content/ocis/9.0/modules/developer/pages/ocis/adr/0006-service-discovery.adoc @@ -1,6 +1,7 @@ = 6. Service Discovery within oCIS and Reva :toc: right :toclevels: 3 +:description: ADR 6: service discovery within oCIS and reva via named services instead of hardcoded host and port values. * Status: accepted * Deciders: link:https://github.com/refs[@refs], link:https://github.com/butonic[@butonic], link:https://github.com/micbar[@micbar], link:https://github.com/dragotin[@dragotin], link:https://github.com/pmaier1[@pmaier1] diff --git a/content/ocis/9.0/modules/developer/pages/ocis/adr/0007-api-for-spaces.adoc b/content/ocis/9.0/modules/developer/pages/ocis/adr/0007-api-for-spaces.adoc index 93081ae..28597c4 100644 --- a/content/ocis/9.0/modules/developer/pages/ocis/adr/0007-api-for-spaces.adoc +++ b/content/ocis/9.0/modules/developer/pages/ocis/adr/0007-api-for-spaces.adoc @@ -1,5 +1,6 @@ = 7. Open Graph API for oCIS File Spaces :toc: right +:description: ADR 7: As one of the building blocks for Spaces in oCIS we plan to add an API that returns information about available spaces. * Status: accepted * Deciders: link:https://github.com/butonic[@butonic], link:https://github.com/micbar[@micbar], link:https://github.com/dragotin[@dragotin], link:https://github.com/hodyroff[@hodyroff], link:https://github.com/pmaier1[@pmaier1] diff --git a/content/ocis/9.0/modules/developer/pages/ocis/adr/0008-configuration.adoc b/content/ocis/9.0/modules/developer/pages/ocis/adr/0008-configuration.adoc index 474bea9..e6ee5f3 100644 --- a/content/ocis/9.0/modules/developer/pages/ocis/adr/0008-configuration.adoc +++ b/content/ocis/9.0/modules/developer/pages/ocis/adr/0008-configuration.adoc @@ -1,6 +1,7 @@ = 8. Configuration :toc: right :toclevels: 3 +:description: ADR 8: An issue arises in point 2, in the sense that configuration file refers to a single file containing the value for the env variable. * Status: proposed * Deciders: link:https://github.com/refs[@refs], link:https://github.com/butonic[@butonic], link:https://github.com/micbar[@micbar], link:https://github.com/dragotin[@dragotin], link:https://github.com/pmaier1[@pmaier1] @@ -24,6 +25,7 @@ An issue arises in point 2, in the sense that configuration file refers to a sin Because we solely rely on link:https://github.com/owncloud/ocis/blob/master/ocis-pkg/config/config.go[structured configuration] we need a way to modify values in this struct using the provided means urfave/cli gives us (flags, env variables, config files and default value), but since we have different modes of operation (supervised Vs. unsupervised) we have to define a clear line. === Decision Drivers + * Improve experience for the end user. * Improve experience for developers. * Sane defaults. diff --git a/content/ocis/9.0/modules/developer/pages/ocis/adr/0009-extension-template.adoc b/content/ocis/9.0/modules/developer/pages/ocis/adr/0009-extension-template.adoc index 8dcee28..6aec106 100644 --- a/content/ocis/9.0/modules/developer/pages/ocis/adr/0009-extension-template.adoc +++ b/content/ocis/9.0/modules/developer/pages/ocis/adr/0009-extension-template.adoc @@ -1,6 +1,7 @@ = 9. Extension Template :toc: right :toclevels: 3 +:description: ADR 9: We want to accelerate and simplify extension development by removing the necessity to type or copy the boilerplate code. * Status: proposed * Deciders: link:https://github.com/c0rby[@c0rby] diff --git a/content/ocis/9.0/modules/developer/pages/ocis/adr/0010-policy-enforcement.adoc b/content/ocis/9.0/modules/developer/pages/ocis/adr/0010-policy-enforcement.adoc index ddc0383..5507a40 100644 --- a/content/ocis/9.0/modules/developer/pages/ocis/adr/0010-policy-enforcement.adoc +++ b/content/ocis/9.0/modules/developer/pages/ocis/adr/0010-policy-enforcement.adoc @@ -1,6 +1,7 @@ = 10. Extension Policies :toc: right :toclevels: 3 +:description: ADR 10: There should be a way to impose certain limitations in areas of the code that require licensing. * Status: proposed * Deciders: link:https://github.com/butonic[@butonic], link:https://github.com/micbar[@micbar], link:https://github.com/dragotin[@dragotin], link:https://github.com/hodyroff[@hodyroff], link:https://github.com/pmaier1[@pmaier1], link:https://github.com/fschade[@fschade] diff --git a/content/ocis/9.0/modules/developer/pages/ocis/adr/0011-global-url-format.adoc b/content/ocis/9.0/modules/developer/pages/ocis/adr/0011-global-url-format.adoc index 1e1bb25..fe92681 100644 --- a/content/ocis/9.0/modules/developer/pages/ocis/adr/0011-global-url-format.adoc +++ b/content/ocis/9.0/modules/developer/pages/ocis/adr/0011-global-url-format.adoc @@ -1,5 +1,6 @@ = 11. WebUI URL Format :toc: right +:description: ADR 11: When speaking about URLs we have to make a difference between browser URLs and API URLs. * Status: accepted * Deciders: link:https://github.com/refs[@refs], link:https://github.com/butonic[@butonic], link:https://github.com/micbar[@micbar], link:https://github.com/dragotin[@dragotin], link:https://github.com/hodyroff[@hodyroff], link:https://github.com/pmaier1[@pmaier1], link:https://github.com/fschade[@fschade], link:https://github.com/tbsbdr[@tbsbdr], link:https://github.com/kulmann[@kulmann] diff --git a/content/ocis/9.0/modules/developer/pages/ocis/adr/0012-tracing.adoc b/content/ocis/9.0/modules/developer/pages/ocis/adr/0012-tracing.adoc index 834fe7a..40b65a1 100644 --- a/content/ocis/9.0/modules/developer/pages/ocis/adr/0012-tracing.adoc +++ b/content/ocis/9.0/modules/developer/pages/ocis/adr/0012-tracing.adoc @@ -1,6 +1,7 @@ = 12. Tracing :toc: right :toclevels: 3 +:description: ADR 12: migrate to OpenTelemetry because the current logs have too much verbosity to debug an instance. * Status: proposed * Deciders: link:https://github.com/butonic[@butonic], link:https://github.com/micbar[@micbar], link:https://github.com/dragotin[@dragotin], link:https://github.com/mstingl[@mstingl] link:https://github.com/pmaier1[@pmaier1], link:https://github.com/fschade[@fschade] diff --git a/content/ocis/9.0/modules/developer/pages/ocis/adr/0013-locking.adoc b/content/ocis/9.0/modules/developer/pages/ocis/adr/0013-locking.adoc index ca7cc3d..2b1c4a2 100644 --- a/content/ocis/9.0/modules/developer/pages/ocis/adr/0013-locking.adoc +++ b/content/ocis/9.0/modules/developer/pages/ocis/adr/0013-locking.adoc @@ -1,6 +1,7 @@ = 13. Locking :toc: right :toclevels: 3 +:description: ADR 13: At the time of this writing no locking mechanisms exists in oCIS / REVA for both directories and files. - Status: accepted - Deciders: link:https://github.com/hodyroff[@hodyroff], link:https://github.com/pmaier1[@pmaier1], link:https://github.com/jojowein[@jojowein], link:https://github.com/dragotin[@dragotin], link:https://github.com/micbar[@micbar], link:https://github.com/tbsbdr[@tbsbdr], link:https://github.com/wkloucek[@wkloucek] diff --git a/content/ocis/9.0/modules/developer/pages/ocis/adr/0014-microservices-runtime.adoc b/content/ocis/9.0/modules/developer/pages/ocis/adr/0014-microservices-runtime.adoc index 5ce6077..fdcc795 100644 --- a/content/ocis/9.0/modules/developer/pages/ocis/adr/0014-microservices-runtime.adoc +++ b/content/ocis/9.0/modules/developer/pages/ocis/adr/0014-microservices-runtime.adoc @@ -1,6 +1,7 @@ = 14. Microservices Runtime :toc: right :toclevels: 3 +:description: ADR 14: a hybrid microservices runtime to start and supervise the services embedded in the single oCIS binary. * Status: proposed * Deciders: link:https://github.com/butonic[@butonic], link:https://github.com/micbar[@micbar], link:https://github.com/dragotin[@dragotin], link:https://github.com/mstingl[@mstingl] link:https://github.com/pmaier1[@pmaier1], link:https://github.com/fschade[@fschade] diff --git a/content/ocis/9.0/modules/developer/pages/ocis/adr/0015-events.adoc b/content/ocis/9.0/modules/developer/pages/ocis/adr/0015-events.adoc index 8bbe517..ea7587d 100644 --- a/content/ocis/9.0/modules/developer/pages/ocis/adr/0015-events.adoc +++ b/content/ocis/9.0/modules/developer/pages/ocis/adr/0015-events.adoc @@ -1,6 +1,7 @@ = 15. oCIS Event System :toc: right :toclevels: 3 +:description: ADR 15: To be able to implement simple, flexible and independent inter service communication there is the idea to implement an event system in oCIS. * Status: proposed * Deciders: link:https://github.com/butonic[@butonic], link:https://github.com/micbar[@micbar], link:https://github.com/dragotin[@dragotin], link:https://github.com/c0rby[@c0rby], link:https://github.com/wkloucek[@wkloucek] diff --git a/content/ocis/9.0/modules/developer/pages/ocis/adr/0016-files-metadata.adoc b/content/ocis/9.0/modules/developer/pages/ocis/adr/0016-files-metadata.adoc index e4aadfd..ae3d52c 100644 --- a/content/ocis/9.0/modules/developer/pages/ocis/adr/0016-files-metadata.adoc +++ b/content/ocis/9.0/modules/developer/pages/ocis/adr/0016-files-metadata.adoc @@ -1,6 +1,7 @@ = 16. Storage for Files Metadata :toc: right :toclevels: 3 +:description: ADR 16: In addition to the file content we need to store metadata which is attached to a file. * Status: superseded by xref:ocis/adr/0024-msgpack-metadata.adoc[ADR-0024] * Deciders: link:https://github.com/butonic[@butonic], link:https://github.com/dragotin[@dragotin], link:https://github.com/micbar[@micbar], link:https://github.com/c0rby[@c0rby] diff --git a/content/ocis/9.0/modules/developer/pages/ocis/adr/0017-allow-read-only-external-user-management.adoc b/content/ocis/9.0/modules/developer/pages/ocis/adr/0017-allow-read-only-external-user-management.adoc index d50dc59..a0e6960 100644 --- a/content/ocis/9.0/modules/developer/pages/ocis/adr/0017-allow-read-only-external-user-management.adoc +++ b/content/ocis/9.0/modules/developer/pages/ocis/adr/0017-allow-read-only-external-user-management.adoc @@ -1,6 +1,7 @@ = 17. Allow Read Only External User Management :toc: right :toclevels: 3 +:description: ADR 17: oCIS needs to be integrated with various external Authentication and Identity Management Systems. * Status: proposed * Deciders: link:https://github.com/butonic[@butonic], link:https://github.com/micbar[@micbar], link:https://github.com/rhafer[@rhafer] diff --git a/content/ocis/9.0/modules/developer/pages/ocis/adr/0018-file-search-api.adoc b/content/ocis/9.0/modules/developer/pages/ocis/adr/0018-file-search-api.adoc index 4a02757..c1fc0c1 100644 --- a/content/ocis/9.0/modules/developer/pages/ocis/adr/0018-file-search-api.adoc +++ b/content/ocis/9.0/modules/developer/pages/ocis/adr/0018-file-search-api.adoc @@ -1,6 +1,7 @@ = 18. File Search API :toc: right :toclevels: 3 +:description: ADR 18: define a file search API so that files can be found based on certain search terms, using the WebDAV API. * Status: proposed * Deciders: link:https://github.com/butonic[@butonic], link:https://github.com/micbar[@micbar], link:https://github.com/dragotin[@dragotin], link:https://github.com/c0rby[@c0rby] diff --git a/content/ocis/9.0/modules/developer/pages/ocis/adr/0019-file-search-index.adoc b/content/ocis/9.0/modules/developer/pages/ocis/adr/0019-file-search-index.adoc index a7ba34a..22e253f 100644 --- a/content/ocis/9.0/modules/developer/pages/ocis/adr/0019-file-search-index.adoc +++ b/content/ocis/9.0/modules/developer/pages/ocis/adr/0019-file-search-index.adoc @@ -1,6 +1,7 @@ = 19. File Search Index :toc: right :toclevels: 3 +:description: ADR 19: provide a file search index, implemented with Bleve Search and included in the single binary. * Status: accepted * Deciders: link:https://github.com/butonic[@butonic], link:https://github.com/micbar[@micbar], link:https://github.com/dragotin[@dragotin], link:https://github.com/c0rby[@c0rby] diff --git a/content/ocis/9.0/modules/developer/pages/ocis/adr/0020-file-search-query-language.adoc b/content/ocis/9.0/modules/developer/pages/ocis/adr/0020-file-search-query-language.adoc index 47548a8..b840fb1 100644 --- a/content/ocis/9.0/modules/developer/pages/ocis/adr/0020-file-search-query-language.adoc +++ b/content/ocis/9.0/modules/developer/pages/ocis/adr/0020-file-search-query-language.adoc @@ -1,6 +1,7 @@ = 20. File Search Query Language :toc: right :toclevels: 3 +:description: ADR 20: From the users perspective, the interface to search is just a single form field where the user enters one or more search terms. * Status: accepted * Deciders: link:https://github.com/butonic[@butonic], link:https://github.com/micbar[@micbar], link:https://github.com/dragotin[@dragotin], link:https://github.com/c0rby[@c0rby], link:https://github.com/kulmann[@kulmann], link:https://github.com/felix-schwarz[@felix-schwarz], link:https://github.com/JammingBen[@JammingBen] diff --git a/content/ocis/9.0/modules/developer/pages/ocis/adr/0021-service-accounts.adoc b/content/ocis/9.0/modules/developer/pages/ocis/adr/0021-service-accounts.adoc index d622403..50c3c3f 100644 --- a/content/ocis/9.0/modules/developer/pages/ocis/adr/0021-service-accounts.adoc +++ b/content/ocis/9.0/modules/developer/pages/ocis/adr/0021-service-accounts.adoc @@ -1,6 +1,7 @@ = 21. Service Accounts :toc: right :toclevels: 3 +:description: ADR 21: introduce service accounts so that oCIS services can authenticate against each other. * Status: proposed * Deciders: link:https://github.com/butonic[@butonic], link:https://github.com/c0rby[@c0rby] diff --git a/content/ocis/9.0/modules/developer/pages/ocis/adr/0022-sharing-and-space-management-api.adoc b/content/ocis/9.0/modules/developer/pages/ocis/adr/0022-sharing-and-space-management-api.adoc index 8dfe380..9b0c43b 100644 --- a/content/ocis/9.0/modules/developer/pages/ocis/adr/0022-sharing-and-space-management-api.adoc +++ b/content/ocis/9.0/modules/developer/pages/ocis/adr/0022-sharing-and-space-management-api.adoc @@ -1,6 +1,7 @@ = 22. Sharing and Space Management API :toc: right :toclevels: 3 +:description: ADR 22: In the early days of the rewrite of ownCloud it was an important goal to keep all important APIs compatible with ownCloud Classic. * Status: accepted * Deciders: link:https://github.com/JammingBen[@JammingBen] link:https://github.com/butonic[@butonic] link:https://github.com/theonering[@theonering] link:https://github.com/kobergj[@kobergj] link:https://github.com/micbar[@micbar] diff --git a/content/ocis/9.0/modules/developer/pages/ocis/adr/0023-index-and-store-metadata.adoc b/content/ocis/9.0/modules/developer/pages/ocis/adr/0023-index-and-store-metadata.adoc index f2352a3..5c9f2bc 100644 --- a/content/ocis/9.0/modules/developer/pages/ocis/adr/0023-index-and-store-metadata.adoc +++ b/content/ocis/9.0/modules/developer/pages/ocis/adr/0023-index-and-store-metadata.adoc @@ -1,6 +1,7 @@ = 23. Index and Store Metadata :toc: right :toclevels: 3 +:description: ADR 23: ownCloud Infinite Scale is supposed to become a data platform and as such it needs to provide access to metadata. * Status: accepted * Deciders: link:https://github.com/butonic[@butonic], link:https://github.com/dschmidt[@theonering], link:https://github.com/micbar[@micbar], link:https://github.com/dragotin[@dragotin] diff --git a/content/ocis/9.0/modules/developer/pages/ocis/adr/0024-msgpack-metadata.adoc b/content/ocis/9.0/modules/developer/pages/ocis/adr/0024-msgpack-metadata.adoc index fbec393..db162ea 100644 --- a/content/ocis/9.0/modules/developer/pages/ocis/adr/0024-msgpack-metadata.adoc +++ b/content/ocis/9.0/modules/developer/pages/ocis/adr/0024-msgpack-metadata.adoc @@ -1,6 +1,7 @@ = 24. MessagePack Metadata :toc: right :toclevels: 3 +:description: ADR 24: File metadata management is an important aspect for oCIS as a data platform. * Status: accepted * Deciders: link:https://github.com/butonic[@butonic], link:https://github.com/aduffeck[@aduffeck], link:https://github.com/micbar[@micbar], link:https://github.com/dragotin[@dragotin] diff --git a/content/ocis/9.0/modules/developer/pages/ocis/adr/0025-distributed-search-index.adoc b/content/ocis/9.0/modules/developer/pages/ocis/adr/0025-distributed-search-index.adoc index d08d85d..06bae74 100644 --- a/content/ocis/9.0/modules/developer/pages/ocis/adr/0025-distributed-search-index.adoc +++ b/content/ocis/9.0/modules/developer/pages/ocis/adr/0025-distributed-search-index.adoc @@ -1,6 +1,7 @@ = 25. Distributed Search Index :toc: right :toclevels: 3 +:description: ADR 25: Search is currently implemented with blevesearch, which internally uses bbolt. bbolt writes to a local file, which prevents scaling out the service. * Status: draft * Deciders: link:https://github.com/butonic[@butonic], link:https://github.com/fschade[@fschade], link:https://github.com/aduffeck[@aduffeck] diff --git a/content/ocis/9.0/modules/developer/pages/ocis/adr/0026-application-based-user-settings.adoc b/content/ocis/9.0/modules/developer/pages/ocis/adr/0026-application-based-user-settings.adoc index 9bce258..378077e 100644 --- a/content/ocis/9.0/modules/developer/pages/ocis/adr/0026-application-based-user-settings.adoc +++ b/content/ocis/9.0/modules/developer/pages/ocis/adr/0026-application-based-user-settings.adoc @@ -1,5 +1,6 @@ = 26. Application Based User Settings :toc: right +:description: ADR 26: To share user settings across devices applications want to store user specific settings on the server. * Status: draft * Deciders: link:https://github.com/butonic[@butonic], link:https://github.com/fschade[@fschade], link:https://github.com/kulmann[@kulmann] diff --git a/content/ocis/9.0/modules/developer/pages/ocis/adr/0027-new-share-jail.adoc b/content/ocis/9.0/modules/developer/pages/ocis/adr/0027-new-share-jail.adoc index 43d16dc..110fdf6 100644 --- a/content/ocis/9.0/modules/developer/pages/ocis/adr/0027-new-share-jail.adoc +++ b/content/ocis/9.0/modules/developer/pages/ocis/adr/0027-new-share-jail.adoc @@ -1,5 +1,6 @@ = 27. New Share Jail :toc: right +:description: ADR 27: The oCIS share jail is a space that contains all accepted / synced shares of a user. * Status: draft * Deciders: link:https://github.com/butonic[@butonic], link:https://github.com/rhafer[@rhafer], link:https://github.com/dragotin[@dragotin] diff --git a/content/ocis/9.0/modules/developer/pages/ocis/adr/0028-activities-service.adoc b/content/ocis/9.0/modules/developer/pages/ocis/adr/0028-activities-service.adoc index 0ef44ad..de45b70 100644 --- a/content/ocis/9.0/modules/developer/pages/ocis/adr/0028-activities-service.adoc +++ b/content/ocis/9.0/modules/developer/pages/ocis/adr/0028-activities-service.adoc @@ -1,6 +1,7 @@ = 28. Activity Service :toc: right :toclevels: 3 +:description: ADR 28: The user should be able to see all activities for a resource. * Status: draft * Deciders: link:https://github.com/kobergj[@kobergj], link:https://github.com/fschade[@fschade] diff --git a/content/ocis/9.0/modules/developer/pages/ocis/adr/index.adoc b/content/ocis/9.0/modules/developer/pages/ocis/adr/index.adoc index 57093cd..35fa57e 100644 --- a/content/ocis/9.0/modules/developer/pages/ocis/adr/index.adoc +++ b/content/ocis/9.0/modules/developer/pages/ocis/adr/index.adoc @@ -1,6 +1,7 @@ = Architecture Decisions :toc: right :toclevels: 3 +:description: oCIS documents architecture decisions using Markdown Architectural Decision Records (MADR) and manages them with adr-tools. oCIS is documenting architecture decisions using link:https://adr.github.io/madr/[Markdown Architectural Decision Records] (MADR), following link:https://cognitect.com/blog/2011/11/15/documenting-architecture-decisions[Documenting Architecture Decisions by Michael Nygard]. diff --git a/content/ocis/9.0/modules/developer/pages/ocis/config.adoc b/content/ocis/9.0/modules/developer/pages/ocis/config.adoc index 87860fb..47bb7cd 100644 --- a/content/ocis/9.0/modules/developer/pages/ocis/config.adoc +++ b/content/ocis/9.0/modules/developer/pages/ocis/config.adoc @@ -1,6 +1,7 @@ = Configuration :toc: right :toclevels: 3 +:description: In order to simplify deployments and development the configuration model from oCIS aims to be simple yet flexible. == Configuration Framework diff --git a/content/ocis/9.0/modules/developer/pages/ocis/deployment/basic-remote-setup.adoc b/content/ocis/9.0/modules/developer/pages/ocis/deployment/basic-remote-setup.adoc index 0f9191e..8d0fef0 100644 --- a/content/ocis/9.0/modules/developer/pages/ocis/deployment/basic-remote-setup.adoc +++ b/content/ocis/9.0/modules/developer/pages/ocis/deployment/basic-remote-setup.adoc @@ -1,6 +1,7 @@ = Basic Remote Setup :toc: right :toclevels: 3 +:description: The default configuration of the oCIS binary and the owncloud/ocis docker image assume, that you access oCIS on localhost. The default configuration of the oCIS binary and the `owncloud/ocis` docker image assume, that you access oCIS on `localhost`. This enables you to do quick testing and development without any configuration. diff --git a/content/ocis/9.0/modules/developer/pages/ocis/deployment/continuous_deployment.adoc b/content/ocis/9.0/modules/developer/pages/ocis/deployment/continuous_deployment.adoc index 1cccf6b..95b2bf4 100644 --- a/content/ocis/9.0/modules/developer/pages/ocis/deployment/continuous_deployment.adoc +++ b/content/ocis/9.0/modules/developer/pages/ocis/deployment/continuous_deployment.adoc @@ -1,7 +1,8 @@ = Continuous Deployment :toc: right +:description: Continuously deployed oCIS example deployments, updated with every commit to master and every release. -We are continuously deploying the following deployment examples. Every example is deployed in two flavors: +We are continuously deploying the following deployment examples. Every example is deployed in three flavors: * Master: + Reflects the current master branch state of oCIS and will be updated with every commit to master diff --git a/content/ocis/9.0/modules/developer/pages/ocis/deployment/index.adoc b/content/ocis/9.0/modules/developer/pages/ocis/deployment/index.adoc index 18b06bd..07a0557 100644 --- a/content/ocis/9.0/modules/developer/pages/ocis/deployment/index.adoc +++ b/content/ocis/9.0/modules/developer/pages/ocis/deployment/index.adoc @@ -1,6 +1,7 @@ = Deployment :toc: right :toclevels: 3 +:description: This section handles deployments and operations for admins and people who are interested in how versatile oCIS is. == Deployments Scenarios and Examples diff --git a/content/ocis/9.0/modules/developer/pages/ocis/deployment/kubernetes.adoc b/content/ocis/9.0/modules/developer/pages/ocis/deployment/kubernetes.adoc index 51e855a..5847401 100644 --- a/content/ocis/9.0/modules/developer/pages/ocis/deployment/kubernetes.adoc +++ b/content/ocis/9.0/modules/developer/pages/ocis/deployment/kubernetes.adoc @@ -1,6 +1,7 @@ = Kubernetes :toc: right :toclevels: 3 +:description: Deploy oCIS on Kubernetes with the oCIS Helm chart and configure it via values.yaml. == What Is Kubernetes @@ -41,7 +42,7 @@ If that is still too abstract, link:https://dev.to/miguelmota/comment/filh[here === How Does oCIS Fit in the Kubernetes Model -oCIS was designed with running on Kubernetes in mind. We set up to adopt the link:https://12factor.net/[Twelve-Factor App] principles regarding configuration, with almost every aspect of oCIS being modifiable via environment variables. This comes in handy when you especially have a look at how a helm chart's (we will introduce this concept shortly) link:https://github.com/owncloud/ocis-charts/blob/d8735e3222d2050504303851d3461909c86fcc89/ocis/values.yaml[list of values] looks like. +oCIS was designed with running on Kubernetes in mind. We set up to adopt the link:https://12factor.net/[Twelve-Factor App] principles regarding configuration, with almost every aspect of oCIS being modifiable via environment variables. This comes in handy when you especially have a look at how a Helm chart's (we will introduce this concept shortly) link:https://github.com/owncloud/ocis-charts/blob/main/charts/ocis/values.yaml[list of values] looks like. == What Is Minikube @@ -79,6 +80,11 @@ Configuration options are described link:https://github.com/owncloud/ocis-charts . install the package: + `helm install ocis .` (you need to set configuration values in almost all cases) ++ +[NOTE] +==== +The chart's default `appVersion` targets oCIS 8.2.x. To deploy oCIS 9.0, override the image tag, for example `helm install ocis . --set image.tag=9.0.0-rc.1`. +==== . verify the application is running in the cluster: + `kubectl get pods` diff --git a/content/ocis/9.0/modules/developer/pages/ocis/deployment/monitoring-tracing.adoc b/content/ocis/9.0/modules/developer/pages/ocis/deployment/monitoring-tracing.adoc index 0988fb2..eb7f2b2 100644 --- a/content/ocis/9.0/modules/developer/pages/ocis/deployment/monitoring-tracing.adoc +++ b/content/ocis/9.0/modules/developer/pages/ocis/deployment/monitoring-tracing.adoc @@ -1,6 +1,7 @@ = Monitoring & Tracing :toc: right :toclevels: 3 +:description: Monitoring and tracing gives developers and admin insights into a complex system, in this case oCIS. Monitoring and tracing gives developers and admin insights into a complex system, in this case oCIS. diff --git a/content/ocis/9.0/modules/developer/pages/ocis/deployment/ocis_full.adoc b/content/ocis/9.0/modules/developer/pages/ocis/deployment/ocis_full.adoc index e8e26ff..37a04f4 100644 --- a/content/ocis/9.0/modules/developer/pages/ocis/deployment/ocis_full.adoc +++ b/content/ocis/9.0/modules/developer/pages/ocis/deployment/ocis_full.adoc @@ -1,6 +1,7 @@ = Full Modular oCIS with WebOffice :toc: right :toclevels: 3 +:description: Example deployment of a full modular oCIS with Collabora or OnlyOffice behind Traefik as reverse proxy. == Overview diff --git a/content/ocis/9.0/modules/developer/pages/ocis/deployment/ocis_keycloak.adoc b/content/ocis/9.0/modules/developer/pages/ocis/deployment/ocis_keycloak.adoc index b2831e6..cd9baf1 100644 --- a/content/ocis/9.0/modules/developer/pages/ocis/deployment/ocis_keycloak.adoc +++ b/content/ocis/9.0/modules/developer/pages/ocis/deployment/ocis_keycloak.adoc @@ -1,6 +1,7 @@ = oCIS with Keycloak :toc: right :toclevels: 3 +:description: Example docker-compose deployment of oCIS with Keycloak as identity provider behind Traefik. == Overview @@ -10,9 +11,9 @@ link:https://github.com/owncloud/ocis/tree/master/deployments/examples/ocis_keycloak[Find this example on GitHub] -The docker stack consists 4 containers. One of them is Traefik, a proxy which is terminating ssl and forwards the requests to oCIS in the internal docker network. It is also responsible for redirecting requests on the OIDC discovery endpoints (e.g. `.well-known/openid-configuration`) to the correct destination in Keycloak. +The docker stack consists of 4 containers. One of them is Traefik, a proxy which is terminating ssl and forwards the requests to oCIS in the internal docker network. It is also responsible for redirecting requests on the OIDC discovery endpoints (e.g. `.well-known/openid-configuration`) to the correct destination in Keycloak. -Keycloak add two containers: Keycloak itself and a PostgreSQL as database. Keycloak will be configured as oCIS' IDP instead of the internal IDP xref:{dev-s-path}/idp/idp.adoc[LibreGraph Connect]. +Keycloak adds two containers: Keycloak itself and a PostgreSQL as database. Keycloak will be configured as oCIS' IDP instead of the internal IDP xref:{dev-s-path}/idp/idp.adoc[LibreGraph Connect]. The other container is oCIS itself, running all services in one container. In this example oCIS uses the xref:ocis/storage/storagedrivers.adoc[oCIS storage driver] diff --git a/content/ocis/9.0/modules/developer/pages/ocis/deployment/ocis_ldap.adoc b/content/ocis/9.0/modules/developer/pages/ocis/deployment/ocis_ldap.adoc index 9931a42..acf2a00 100644 --- a/content/ocis/9.0/modules/developer/pages/ocis/deployment/ocis_ldap.adoc +++ b/content/ocis/9.0/modules/developer/pages/ocis/deployment/ocis_ldap.adoc @@ -1,5 +1,6 @@ = oCIS with LDAP :toc: right +:description: Example docker-compose deployment of oCIS with an OpenLDAP server and LDAP admin interface behind Traefik. == Overview diff --git a/content/ocis/9.0/modules/developer/pages/ocis/deployment/preparing_server.adoc b/content/ocis/9.0/modules/developer/pages/ocis/deployment/preparing_server.adoc index 87b7c6c..1f5b381 100644 --- a/content/ocis/9.0/modules/developer/pages/ocis/deployment/preparing_server.adoc +++ b/content/ocis/9.0/modules/developer/pages/ocis/deployment/preparing_server.adoc @@ -1,13 +1,14 @@ = Preparing a Server :toc: right :toclevels: 3 +:description: Prepare a server to run oCIS, using Hetzner Cloud as an example: create a server, configure DNS and access it via ssh. == Example for Hetzner Cloud * create server on Hetzner Cloud. Set labels "owner" and "for". Example for hcloud cli: + [source,bash] ---- -hcloud server create --type cx21 --image ubuntu-20.04 --ssh-key admin --name ocis-server --label owner=admin --label for=testing +hcloud server create --type cx21 --image ubuntu-24.04 --ssh-key admin --name ocis-server --label owner=admin --label for=testing ---- * Configure DNS A-records for needed domains pointing on the servers ip address, for example in CloudFlare diff --git a/content/ocis/9.0/modules/developer/pages/ocis/development/beta-testplan.adoc b/content/ocis/9.0/modules/developer/pages/ocis/development/beta-testplan.adoc index 31b3e66..a68e985 100644 --- a/content/ocis/9.0/modules/developer/pages/ocis/development/beta-testplan.adoc +++ b/content/ocis/9.0/modules/developer/pages/ocis/development/beta-testplan.adoc @@ -1,6 +1,7 @@ = Beta Testplan :toc: right :toclevels: 3 +:description: This document is supposed to give you some ideas how and what to test on ocis. == Beta Testing diff --git a/content/ocis/9.0/modules/developer/pages/ocis/development/build.adoc b/content/ocis/9.0/modules/developer/pages/ocis/development/build.adoc index 36924c5..720c1d7 100644 --- a/content/ocis/9.0/modules/developer/pages/ocis/development/build.adoc +++ b/content/ocis/9.0/modules/developer/pages/ocis/development/build.adoc @@ -1,6 +1,7 @@ = Build :toc: right :toclevels: 3 +:description: You only need to run the following command if you have changed protobuf definitions or the frontend part in one of the extensions. == Build Requirements diff --git a/content/ocis/9.0/modules/developer/pages/ocis/development/continuous-integration.adoc b/content/ocis/9.0/modules/developer/pages/ocis/development/continuous-integration.adoc index 775c178..2fb3a4e 100644 --- a/content/ocis/9.0/modules/developer/pages/ocis/development/continuous-integration.adoc +++ b/content/ocis/9.0/modules/developer/pages/ocis/development/continuous-integration.adoc @@ -1,6 +1,7 @@ = Continuous Integration :toc: right :toclevels: 3 +:description: oCIS uses GitHub Actions as its CI system. oCIS uses link:https://docs.github.com/en/actions[GitHub Actions,window=_blank] as its CI system. Workflow runs are visible in the link:https://github.com/owncloud/ocis/actions[Actions tab,window=_blank] of the repository, and the status of each run is reported directly on the pull request. diff --git a/content/ocis/9.0/modules/developer/pages/ocis/development/debugging.adoc b/content/ocis/9.0/modules/developer/pages/ocis/development/debugging.adoc index 70371c2..44ebe7a 100644 --- a/content/ocis/9.0/modules/developer/pages/ocis/development/debugging.adoc +++ b/content/ocis/9.0/modules/developer/pages/ocis/development/debugging.adoc @@ -1,5 +1,6 @@ = Debugging :toc: right +:description: Debug oCIS services: attach a debugger to the processes forked by ocis server, or start services independently. == Debugging @@ -21,29 +22,29 @@ ps ax | grep ocis 12837 pts/1 Sl+ 0:00 bin/ocis-debug server 12845 pts/1 Sl 0:00 bin/ocis-debug graph -12847 pts/1 Sl 0:00 bin/ocis-debug reva-auth-bearer +12847 pts/1 Sl 0:00 bin/ocis-debug auth-bearer 12849 pts/1 Sl 0:00 bin/ocis-debug ocs -12850 pts/1 Sl 0:00 bin/ocis-debug reva-storage-oc-data +12850 pts/1 Sl 0:00 bin/ocis-debug storage-shares 12863 pts/1 Sl 0:00 bin/ocis-debug webdav -12874 pts/1 Sl 0:00 bin/ocis-debug reva-frontend -12897 pts/1 Sl 0:00 bin/ocis-debug reva-sharing -12905 pts/1 Sl 0:00 bin/ocis-debug reva-gateway -12912 pts/1 Sl 0:00 bin/ocis-debug reva-storage-home -12920 pts/1 Sl 0:00 bin/ocis-debug reva-users -12929 pts/1 Sl 0:00 bin/ocis-debug glauth -12940 pts/1 Sl 0:00 bin/ocis-debug reva-storage-home-data +12874 pts/1 Sl 0:00 bin/ocis-debug frontend +12897 pts/1 Sl 0:00 bin/ocis-debug sharing +12905 pts/1 Sl 0:00 bin/ocis-debug gateway +12912 pts/1 Sl 0:00 bin/ocis-debug storage-users +12920 pts/1 Sl 0:00 bin/ocis-debug users +12929 pts/1 Sl 0:00 bin/ocis-debug idm +12940 pts/1 Sl 0:00 bin/ocis-debug storage-publiclink 12948 pts/1 Sl 0:00 bin/ocis-debug idp 12952 pts/1 Sl 0:00 bin/ocis-debug proxy 12961 pts/1 Sl 0:00 bin/ocis-debug thumbnails -12971 pts/1 Sl 0:00 bin/ocis-debug reva-storage-oc +12971 pts/1 Sl 0:00 bin/ocis-debug storage-system 12981 pts/1 Sl 0:00 bin/ocis-debug web -12993 pts/1 Sl 0:00 bin/ocis-debug api -12998 pts/1 Sl 0:00 bin/ocis-debug registry -13004 pts/1 Sl 0:00 bin/ocis-debug web -13015 pts/1 Sl 0:00 bin/ocis-debug reva-auth-basic +12993 pts/1 Sl 0:00 bin/ocis-debug search +12998 pts/1 Sl 0:00 bin/ocis-debug nats +13004 pts/1 Sl 0:00 bin/ocis-debug clientlog +13015 pts/1 Sl 0:00 bin/ocis-debug auth-basic ---- -Then you can set a breakpoint in the service you need and attach to the process via processid. To debug the `reva-sharing` service the VS Code `launch.json` would look like this: +Then you can set a breakpoint in the service you need and attach to the process via processid. To debug the `sharing` service the VS Code `launch.json` would look like this: [source,json] ---- @@ -68,30 +69,29 @@ Then you can set a breakpoint in the service you need and attach to the process [source,bash] ---- #/bin/sh -LOG_LEVEL="debug" - -bin/ocis --log-level=$LOG_LEVEL micro & - -bin/ocis --log-level=$LOG_LEVEL glauth & -bin/ocis --log-level=$LOG_LEVEL graph & -#bin/ocis --log-level=$LOG_LEVEL hello & -bin/ocis --log-level=$LOG_LEVEL idp & -#bin/ocis --log-level=$LOG_LEVEL ocs & -bin/ocis --log-level=$LOG_LEVEL web & -bin/ocis --log-level=$LOG_LEVEL reva-auth-basic & -bin/ocis --log-level=$LOG_LEVEL reva-auth-bearer & -bin/ocis --log-level=$LOG_LEVEL reva-frontend & -bin/ocis --log-level=$LOG_LEVEL reva-gateway & -bin/ocis --log-level=$LOG_LEVEL reva-sharing & -bin/ocis --log-level=$LOG_LEVEL reva-storage-home & -bin/ocis --log-level=$LOG_LEVEL reva-storage-home-data & -bin/ocis --log-level=$LOG_LEVEL reva-storage-oc & -bin/ocis --log-level=$LOG_LEVEL reva-storage-oc-data & -bin/ocis --log-level=$LOG_LEVEL reva-storage-root & -bin/ocis --log-level=$LOG_LEVEL reva-users & -#bin/ocis --log-level=$LOG_LEVEL webdav - -bin/ocis --log-level=$LOG_LEVEL proxy & +export OCIS_LOG_LEVEL="debug" + +bin/ocis nats & + +bin/ocis idm & +bin/ocis graph & +#bin/ocis hello & +bin/ocis idp & +#bin/ocis ocs & +bin/ocis web & +bin/ocis auth-basic & +bin/ocis auth-bearer & +bin/ocis frontend & +bin/ocis gateway & +bin/ocis sharing & +bin/ocis storage-users & +bin/ocis storage-shares & +bin/ocis storage-publiclink & +bin/ocis storage-system & +bin/ocis users & +#bin/ocis webdav + +bin/ocis proxy & ---- . Get the list of running processes: @@ -102,26 +102,26 @@ ps ax | grep ocis 12837 pts/1 Sl+ 0:00 bin/ocis-debug server 12845 pts/1 Sl 0:00 bin/ocis-debug graph -12847 pts/1 Sl 0:00 bin/ocis-debug reva-auth-bearer +12847 pts/1 Sl 0:00 bin/ocis-debug auth-bearer 12849 pts/1 Sl 0:00 bin/ocis-debug ocs -12850 pts/1 Sl 0:00 bin/ocis-debug reva-storage-oc-data +12850 pts/1 Sl 0:00 bin/ocis-debug storage-shares 12863 pts/1 Sl 0:00 bin/ocis-debug webdav -12874 pts/1 Sl 0:00 bin/ocis-debug reva-frontend -12897 pts/1 Sl 0:00 bin/ocis-debug reva-sharing -12905 pts/1 Sl 0:00 bin/ocis-debug reva-gateway -12912 pts/1 Sl 0:00 bin/ocis-debug reva-storage-home -12920 pts/1 Sl 0:00 bin/ocis-debug reva-users -12929 pts/1 Sl 0:00 bin/ocis-debug glauth -12940 pts/1 Sl 0:00 bin/ocis-debug reva-storage-home-data +12874 pts/1 Sl 0:00 bin/ocis-debug frontend +12897 pts/1 Sl 0:00 bin/ocis-debug sharing +12905 pts/1 Sl 0:00 bin/ocis-debug gateway +12912 pts/1 Sl 0:00 bin/ocis-debug storage-users +12920 pts/1 Sl 0:00 bin/ocis-debug users +12929 pts/1 Sl 0:00 bin/ocis-debug idm +12940 pts/1 Sl 0:00 bin/ocis-debug storage-publiclink 12948 pts/1 Sl 0:00 bin/ocis-debug idp 12952 pts/1 Sl 0:00 bin/ocis-debug proxy 12961 pts/1 Sl 0:00 bin/ocis-debug thumbnails -12971 pts/1 Sl 0:00 bin/ocis-debug reva-storage-oc +12971 pts/1 Sl 0:00 bin/ocis-debug storage-system 12981 pts/1 Sl 0:00 bin/ocis-debug web -12993 pts/1 Sl 0:00 bin/ocis-debug api -12998 pts/1 Sl 0:00 bin/ocis-debug registry -13004 pts/1 Sl 0:00 bin/ocis-debug web -13015 pts/1 Sl 0:00 bin/ocis-debug reva-auth-basic +12993 pts/1 Sl 0:00 bin/ocis-debug search +12998 pts/1 Sl 0:00 bin/ocis-debug nats +13004 pts/1 Sl 0:00 bin/ocis-debug clientlog +13015 pts/1 Sl 0:00 bin/ocis-debug auth-basic ---- . Kill the service you want to start in debug mode: @@ -131,7 +131,7 @@ ps ax | grep ocis kill 17628 ---- -. Start the service you are interested in debug mode. When using make to build the binary there is already a `bin/ocis-debug` binary for you. When running an IDE tell it which service to start by providing the corresponding sub command, e.g. `bin\ocis-debug reva-frontend`. +. Start the service you are interested in debug mode. When using make to build the binary there is already a `bin/ocis-debug` binary for you. When running an IDE tell it which service to start by providing the corresponding sub command, e.g. `bin/ocis-debug frontend`. === Debugging the oCIS in a Docker Container @@ -271,13 +271,11 @@ Debug wherever the call trace leads you to ... good luck! You can either run and manage the services independently, or you can update the `go.mod` file and replace dependencies with your local version. -To debug the reva frontend we need to add two replacements: +To debug reva we need to add a replacement: ---- -// use the local ocis-reva repo -replace github.com/owncloud/ocis-reva => ../ocis-reva -// also use the local reva repo -replace github.com/cs3org/reva => ../reva +// use a local reva checkout +replace github.com/owncloud/reva/v2 => ../reva ---- NOTE: The username and password only work when basic auth is available. Otherwise you have to obtain a bearer token, e.g. by grabbing it from the browser. diff --git a/content/ocis/9.0/modules/developer/pages/ocis/development/envvars.adoc b/content/ocis/9.0/modules/developer/pages/ocis/development/envvars.adoc index 2a20f90..77faec9 100644 --- a/content/ocis/9.0/modules/developer/pages/ocis/development/envvars.adoc +++ b/content/ocis/9.0/modules/developer/pages/ocis/development/envvars.adoc @@ -1,6 +1,7 @@ = Environment Variables :toc: right :toclevels: 3 +:description: Environment variables are an essential part of configuring services. Environment variables are an essential part of configuring services. diff --git a/content/ocis/9.0/modules/developer/pages/ocis/development/extensions.adoc b/content/ocis/9.0/modules/developer/pages/ocis/development/extensions.adoc index 8dae94b..5897186 100644 --- a/content/ocis/9.0/modules/developer/pages/ocis/development/extensions.adoc +++ b/content/ocis/9.0/modules/developer/pages/ocis/development/extensions.adoc @@ -1,6 +1,7 @@ = Extensions :toc: right :toclevels: 3 +:description: Develop oCIS extensions: any running code that integrates into oCIS and provides functionality to it and its users. oCIS is all about files, sync and share - but most of the time there is more you want to do with your files, e.g. having a different view on your photo collection or editing your offices files in an online file editor. ownCloud Classic faced the same problem and solved it with `applications`, which can extend the functionality of ownCloud Classic in a wide range. Since oCIS is different in its architecture compared to ownCloud Classic, we had to come up with a similar (yet slightly different) solution. To extend the functionality of oCIS, you can write or install `extensions`. An extension is basically any running code which integrates into oCIS and provides functionality to oCIS and its users. Because extensions are just microservices providing an API, you can technically choose any programming language you like - a huge improvement to ownCloud Classic, where it was nearly impossible to use a different programming language than PHP. diff --git a/content/ocis/9.0/modules/developer/pages/ocis/development/getting-started.adoc b/content/ocis/9.0/modules/developer/pages/ocis/development/getting-started.adoc index 5ecb434..ac4efa5 100644 --- a/content/ocis/9.0/modules/developer/pages/ocis/development/getting-started.adoc +++ b/content/ocis/9.0/modules/developer/pages/ocis/development/getting-started.adoc @@ -1,10 +1,11 @@ = Getting Started :toc: right :toclevels: 3 +:description: We want contributions to oCIS and the creation of extensions to be as easy as possible. == Requirements -We want contribution to oCIS and the creation of extensions to be as easy as possible. +We want contributions to oCIS and the creation of extensions to be as easy as possible. So we are trying to reflect this in the tooling. It should be kept simple and quick to be set up. Besides standard development tools like git and a text editor, you need the following software for development: diff --git a/content/ocis/9.0/modules/developer/pages/ocis/development/index.adoc b/content/ocis/9.0/modules/developer/pages/ocis/development/index.adoc index 4d32858..8cfe083 100644 --- a/content/ocis/9.0/modules/developer/pages/ocis/development/index.adoc +++ b/content/ocis/9.0/modules/developer/pages/ocis/development/index.adoc @@ -1,4 +1,5 @@ = Development :toc: right :toclevels: 3 +:description: Developer documentation for building, testing, debugging and extending oCIS. diff --git a/content/ocis/9.0/modules/developer/pages/ocis/development/profiling.adoc b/content/ocis/9.0/modules/developer/pages/ocis/development/profiling.adoc index f8e17f7..2dfd8f4 100644 --- a/content/ocis/9.0/modules/developer/pages/ocis/development/profiling.adoc +++ b/content/ocis/9.0/modules/developer/pages/ocis/development/profiling.adoc @@ -1,6 +1,7 @@ = Profiling :toc: right :toclevels: 3 +:description: The only way to enable the profiler currently is to explicitly select which areas to collect samples for. == 0. Prerequisites diff --git a/content/ocis/9.0/modules/developer/pages/ocis/development/testing.adoc b/content/ocis/9.0/modules/developer/pages/ocis/development/testing.adoc index 11497c6..32cb189 100644 --- a/content/ocis/9.0/modules/developer/pages/ocis/development/testing.adoc +++ b/content/ocis/9.0/modules/developer/pages/ocis/development/testing.adoc @@ -1,6 +1,7 @@ = Acceptance Testing :toc: right :toclevels: 3 +:description: To run tests in the test suite you have two options. To run tests in the test suite you have two options. You may go the easy way and just run the test suite in docker. But for some tasks you could also need to install the test suite natively, which requires a little more setup since PHP and some dependencies need to be installed. diff --git a/content/ocis/9.0/modules/developer/pages/ocis/development/tracing.adoc b/content/ocis/9.0/modules/developer/pages/ocis/development/tracing.adoc index 7e62c7f..ec1bbc4 100644 --- a/content/ocis/9.0/modules/developer/pages/ocis/development/tracing.adoc +++ b/content/ocis/9.0/modules/developer/pages/ocis/development/tracing.adoc @@ -1,6 +1,7 @@ = Tracing :toc: right :toclevels: 3 +:description: Enable request tracing in oCIS with Jaeger: follow these steps to get started. By default, we use link:https://www.jaegertracing.io[Jaeger] for request tracing within oCIS. You can follow these steps to get started: diff --git a/content/ocis/9.0/modules/developer/pages/ocis/development/unit-testing/index.adoc b/content/ocis/9.0/modules/developer/pages/ocis/development/unit-testing/index.adoc index 40938ba..585d34f 100644 --- a/content/ocis/9.0/modules/developer/pages/ocis/development/unit-testing/index.adoc +++ b/content/ocis/9.0/modules/developer/pages/ocis/development/unit-testing/index.adoc @@ -1,6 +1,7 @@ = Unit Testing :toc: right :toclevels: 3 +:description: Go is a statically typed language, which makes it easy to write unit tests. Go is a statically typed language, which makes it easy to write unit tests. The Go standard library provides a `testing` package that allows you to write tests for your code. The testing package provides a framework for writing tests, and the `go test` command runs the tests. Other than that there are a lot of libraries and tools available to make testing easier. diff --git a/content/ocis/9.0/modules/developer/pages/ocis/development/unit-testing/testing-ginkgo.adoc b/content/ocis/9.0/modules/developer/pages/ocis/development/unit-testing/testing-ginkgo.adoc index be267a6..6aa6dd6 100644 --- a/content/ocis/9.0/modules/developer/pages/ocis/development/unit-testing/testing-ginkgo.adoc +++ b/content/ocis/9.0/modules/developer/pages/ocis/development/unit-testing/testing-ginkgo.adoc @@ -1,6 +1,7 @@ = Testing with Ginkgo :toc: right :toclevels: 3 +:description: Write unit tests in oCIS using Ginkgo and Gomega and learn how to mock other microservices. In this section we try to enable developers to write tests in oCIS using Ginkgo and Gomega and explain how to mock other microservices to also cover some integration tests. The full documentation of the tools can be found on the link:https://onsi.github.io/ginkgo/[Ginkgo] and link:https://onsi.github.io/gomega/[Gomega] websites. diff --git a/content/ocis/9.0/modules/developer/pages/ocis/development/unit-testing/testing-pkg.adoc b/content/ocis/9.0/modules/developer/pages/ocis/development/unit-testing/testing-pkg.adoc index eabc66e..1461bc3 100644 --- a/content/ocis/9.0/modules/developer/pages/ocis/development/unit-testing/testing-pkg.adoc +++ b/content/ocis/9.0/modules/developer/pages/ocis/development/unit-testing/testing-pkg.adoc @@ -1,6 +1,7 @@ = Standard Library Testing :toc: right :toclevels: 3 +:description: To write a unit test for your package, create a file with the _test.go suffix. == Using the Standard Library diff --git a/content/ocis/9.0/modules/developer/pages/ocis/flow-docs/index.adoc b/content/ocis/9.0/modules/developer/pages/ocis/flow-docs/index.adoc index f06d0d3..d3f5abe 100644 --- a/content/ocis/9.0/modules/developer/pages/ocis/flow-docs/index.adoc +++ b/content/ocis/9.0/modules/developer/pages/ocis/flow-docs/index.adoc @@ -1,4 +1,5 @@ = Flow Documentation :toc: right :toclevels: 3 +:description: Sequence diagrams describing important oCIS flows like login, request handling and public uploads. diff --git a/content/ocis/9.0/modules/developer/pages/ocis/flow-docs/login-flow.adoc b/content/ocis/9.0/modules/developer/pages/ocis/flow-docs/login-flow.adoc index 315edbe..aa36496 100644 --- a/content/ocis/9.0/modules/developer/pages/ocis/flow-docs/login-flow.adoc +++ b/content/ocis/9.0/modules/developer/pages/ocis/flow-docs/login-flow.adoc @@ -1,6 +1,9 @@ = Login Flow :toc: right :toclevels: 3 +:description: The following sequence diagram describes the openid connect auth code flow. +:lastUpdatedVersion: {ocis-audit-version} +:lastUpdatedDate: {ocis-audit-date} == Login Flow diff --git a/content/ocis/9.0/modules/developer/pages/ocis/flow-docs/public-upload-flow.adoc b/content/ocis/9.0/modules/developer/pages/ocis/flow-docs/public-upload-flow.adoc index eff5148..d9b97ed 100644 --- a/content/ocis/9.0/modules/developer/pages/ocis/flow-docs/public-upload-flow.adoc +++ b/content/ocis/9.0/modules/developer/pages/ocis/flow-docs/public-upload-flow.adoc @@ -1,6 +1,7 @@ = Public Upload Flow :toc: right :toclevels: 3 +:description: The following diagram describes the flow of requests == Public Upload Flow diff --git a/content/ocis/9.0/modules/developer/pages/ocis/flow-docs/request-flow.adoc b/content/ocis/9.0/modules/developer/pages/ocis/flow-docs/request-flow.adoc index d3761c2..f366150 100644 --- a/content/ocis/9.0/modules/developer/pages/ocis/flow-docs/request-flow.adoc +++ b/content/ocis/9.0/modules/developer/pages/ocis/flow-docs/request-flow.adoc @@ -1,91 +1,39 @@ = Request Flow :toc: right :toclevels: 3 +:description: Sequence diagram of the general oCIS request flow, showing where authentication, user lookup and token minting happen. +:lastUpdatedVersion: {ocis-audit-version} +:lastUpdatedDate: {ocis-audit-date} == Request Flow -The following sequence diagram describes the general request flow. It shows where account provisioning and token minting are happening: +The following sequence diagram describes the general request flow. It shows where authentication, user lookup and token minting are happening: -[mermaid, width=400] +[mermaid, width=600] ---- sequenceDiagram - %% we have comments!! \o/ - participant user as User - participant client as Client - participant proxy as ocis-proxy - participant idp as IdP - participant accounts as ocis-accounts - participant ldap as corporate LDAP server - - user->>+client: What is the content of my home? - - client->>+proxy: PROPFIND Bearer auth using oidc auth token - Note over client,proxy: What is in a bearer token? The spec recommends opaque tokens. Treat it as random byte noise. - Note over client,proxy: the proxy MUST authenticate users using ocis-accounts because it needs to decide where to send the request - %% Mention introspection endpoint for opaque tokens - %% idp uses jwt, so we can save a request - %% either way the token can be used to look up the sub and iss of the user - - %% or is token check enough? - proxy->>+idp: GET /userinfo - alt userinfo succeeds - - idp-->>proxy: 200 OK - Note over proxy,accounts: Content-Type: application/json{"sub": "248289761001","name": "Jane Doe","given_name": "Jane","family_name": "Doe","preferred_username": "j.doe","email": "janedoe@example.com","picture": "http://example.com/janedoe/me.jpg"} - %% see: https://openid.net/specs/openid-connect-core-1_0.html#UserInfoResponse - - else userinfo fails - - idp-->>-proxy: 401 Unauthorized - Note over proxy,accounts: WWW-Authenticate: error="invalid_token",error_description="The Access Token expired" - - proxy-->>client: 401 Unauthorized or 302 Found with redirect to idp - Note over client: start at login flow or refresh the token - - end - - proxy->>+accounts: TODO API call to exchange sub@iss with account UUID - Note over proxy,accounts: does not autoprovision users. They are explicitly provisioned later. - - alt account exists or has been migrated - - accounts-->>proxy: existing account UUID - else account does not exist - - opt oc10 endpoint is configured - Note over proxy,oc10: Check if user exists in oc10 - proxy->>+oc10: GET /apps/graphapi/v1.0/users/<uuid> - opt user exists in oc10 - oc10-->>-proxy: 200 - %% TODO auth using internal token - proxy->>+oc10: PROPFIND - Note over proxy,oc10: forward existing bearer auth - oc10-->>-proxy: Multistatus response - proxy-->>client: Multistatus response - client-->>user: List of Files X, Y, Z ... - end - end - - Note over proxy,accounts: provision a new account including displayname, email and sub@iss TODO only if the user is allowed to login, based on group membership in the ldap server - proxy->>proxy: generate new uuid - proxy->>+accounts: TODO create account with new generated uuid - accounts-->>-proxy: OK / error - - else account has been disabled - - accounts-->>-proxy: account is disabled - proxy-->>client: 401 Unauthorized or 302 Found with redirect to idp - Note over client: start at login flow or refresh the token - - end - proxy->>proxy: store uuid in context - - %% what if oc10 does not support a certain request / API - - proxy->>proxy: mint an internal jwt that includes the UUID and username using revas `x-access-token` header - proxy->>+reva: PROPFIND Token auth using internal JWT - reva-->>-proxy: Multistatus response - proxy-->>-client: Multistatus response - - client-->>-user: List of Files X, Y, Z ... + autonumber + participant C as Client (Web / Desktop / Mobile) + participant P as proxy (:9200) + participant A as auth-bearer + idp + participant GR as graph (:9120) + participant D as ocdav (:9163) + participant G as gateway (:9142) + participant S as storage-users (:9157, driver ocis) + + C->>P: HTTPS WebDAV request (/dav/...) with bearer token + P->>A: validate bearer token (userinfo) + A-->>P: authenticated user (sub, iss) + P->>GR: look up user via CS3 userprovider + GR-->>P: user (UUID, username) + Note over P: mint x-access-token with user UUID and username + P->>D: forward request to ocdav + D->>G: CS3 request (Stat / List / Read) + G->>S: CS3 storage call + S-->>G: CS3 response + G-->>D: CS3 response + D-->>P: WebDAV response + P-->>C: HTTPS response ---- + +NOTE: This diagram reflects oCIS 9.0. Earlier versions used an `accounts` service for user lookup and provisioning, which has been removed. User management is now provided by the `graph`, `idm` and `idp` services. diff --git a/content/ocis/9.0/modules/developer/pages/ocis/getting-started/demo-users.adoc b/content/ocis/9.0/modules/developer/pages/ocis/getting-started/demo-users.adoc index ee9a27d..b8af237 100644 --- a/content/ocis/9.0/modules/developer/pages/ocis/getting-started/demo-users.adoc +++ b/content/ocis/9.0/modules/developer/pages/ocis/getting-started/demo-users.adoc @@ -1,6 +1,7 @@ = Demo Users :toc: right :toclevels: 3 +:description: oCIS has the option to create demo users during the first startup. These enable you to do quick testing and developing. oCIS has the option to create demo users during the first startup. These enable you to do quick testing and developing. diff --git a/content/ocis/9.0/modules/developer/pages/ocis/getting-started/index.adoc b/content/ocis/9.0/modules/developer/pages/ocis/getting-started/index.adoc index eb62028..3ec59fd 100644 --- a/content/ocis/9.0/modules/developer/pages/ocis/getting-started/index.adoc +++ b/content/ocis/9.0/modules/developer/pages/ocis/getting-started/index.adoc @@ -1,6 +1,7 @@ = Getting Started :toc: right :toclevels: 3 +:description: We have an oCIS demo instance running on ocis.owncloud.com where you can get a first impression of it. == oCIS Online Demo diff --git a/content/ocis/9.0/modules/developer/pages/ocis/guides/ai_assisted_dev.adoc b/content/ocis/9.0/modules/developer/pages/ocis/guides/ai_assisted_dev.adoc index 52b7cf7..2b94ed7 100644 --- a/content/ocis/9.0/modules/developer/pages/ocis/guides/ai_assisted_dev.adoc +++ b/content/ocis/9.0/modules/developer/pages/ocis/guides/ai_assisted_dev.adoc @@ -1,6 +1,7 @@ = Building oCIS Web Extensions with AI-Assisted Development :toc: right :toclevels: 3 +:description: This guide demonstrates how to build Infinite Scale (oCIS) web extensions using AI-assisted development (sometimes called "vibe coding") with Claude AI. == Introduction diff --git a/content/ocis/9.0/modules/developer/pages/ocis/guides/backup.adoc b/content/ocis/9.0/modules/developer/pages/ocis/guides/backup.adoc index 5ec6179..52c87af 100644 --- a/content/ocis/9.0/modules/developer/pages/ocis/guides/backup.adoc +++ b/content/ocis/9.0/modules/developer/pages/ocis/guides/backup.adoc @@ -1,6 +1,7 @@ = Backup Considerations :toc: right :toclevels: 3 +:description: This small guide aims to shed some light on the internal Infinite Scale data structure. This small guide aims to shed some light on the internal Infinite Scale data structure. You can refer to it when you are trying to optimize your backups or if you are just curious about how Infinite Scale stores its data. diff --git a/content/ocis/9.0/modules/developer/pages/ocis/guides/index.adoc b/content/ocis/9.0/modules/developer/pages/ocis/guides/index.adoc index ca8f890..4fbb149 100644 --- a/content/ocis/9.0/modules/developer/pages/ocis/guides/index.adoc +++ b/content/ocis/9.0/modules/developer/pages/ocis/guides/index.adoc @@ -1,10 +1,11 @@ = Guides :toc: right :toclevels: 3 +:description: These guides should extend the generic documentation and help admins to learn Infinite Scale through digestible "hands-on" sessions. == Step-by-Step Guides -These guides should extend the generic documentation and help admins to learn Infinite Scale through digestable "hands-on" sessions. +These guides should extend the generic documentation and help admins to learn Infinite Scale through digestible "hands-on" sessions. === Available Guides diff --git a/content/ocis/9.0/modules/developer/pages/ocis/guides/metrics.adoc b/content/ocis/9.0/modules/developer/pages/ocis/guides/metrics.adoc index 019718a..cca8699 100644 --- a/content/ocis/9.0/modules/developer/pages/ocis/guides/metrics.adoc +++ b/content/ocis/9.0/modules/developer/pages/ocis/guides/metrics.adoc @@ -1,10 +1,11 @@ = Metrics :toc: right :toclevels: 3 +:description: Every oCIS service provides Prometheus metrics on its debug endpoint, optionally secured with a debug token. == Metrics -This service provides some link:https://prometheus.io/[Prometheus] metrics through the debug endpoint, you can optionally secure the metrics endpoint by some random token, which has to be configured either through the flag `--debug-token` or the environment variable `OCIS_DEBUG_TOKEN` mentioned above. By default, the metrics endpoint is bound to `\http://0.0.0.0:8001/metrics`. +Every oCIS service provides some link:https://prometheus.io/[Prometheus] metrics through its debug endpoint. You can optionally secure the metrics endpoint with a token configured via the `_DEBUG_TOKEN` environment variable (for example `SETTINGS_DEBUG_TOKEN`). By default, the metrics endpoint is bound to the debug address of the respective service (for example `http://127.0.0.1:9191/metrics` for the settings service, see `SETTINGS_DEBUG_ADDR`). * *go_gc_duration_seconds* + A summary of the GC invocation durations diff --git a/content/ocis/9.0/modules/developer/pages/ocis/guides/migrate-data-rclone.adoc b/content/ocis/9.0/modules/developer/pages/ocis/guides/migrate-data-rclone.adoc index 2b685b9..c231f81 100644 --- a/content/ocis/9.0/modules/developer/pages/ocis/guides/migrate-data-rclone.adoc +++ b/content/ocis/9.0/modules/developer/pages/ocis/guides/migrate-data-rclone.adoc @@ -1,6 +1,7 @@ = Migrate Data Using rclone :toc: right :toclevels: 3 +:description: People keep asking on how to migrate data from other cloud storage to Infinite Scale. People keep asking on how to migrate data from other cloud storage to Infinite Scale. diff --git a/content/ocis/9.0/modules/developer/pages/ocis/guides/ocis-and-containers.adoc b/content/ocis/9.0/modules/developer/pages/ocis/guides/ocis-and-containers.adoc index 4a331ee..008d010 100644 --- a/content/ocis/9.0/modules/developer/pages/ocis/guides/ocis-and-containers.adoc +++ b/content/ocis/9.0/modules/developer/pages/ocis/guides/ocis-and-containers.adoc @@ -1,6 +1,7 @@ = oCIS and Containers :toc: right :toclevels: 3 +:description: Containers are more lightweight than VMs. It is easier to work with shared volumes and networks because they are isolated from the host system. == Cloud Native diff --git a/content/ocis/9.0/modules/developer/pages/ocis/guides/ocis-local-docker.adoc b/content/ocis/9.0/modules/developer/pages/ocis/guides/ocis-local-docker.adoc index 2de3eac..1a9ccac 100644 --- a/content/ocis/9.0/modules/developer/pages/ocis/guides/ocis-local-docker.adoc +++ b/content/ocis/9.0/modules/developer/pages/ocis/guides/ocis-local-docker.adoc @@ -1,6 +1,7 @@ = Discover oCIS with Docker :toc: right :toclevels: 3 +:description: Discover oCIS locally with Docker: copy the provided docker-compose.yml and start the stack. == Prerequisites diff --git a/content/ocis/9.0/modules/developer/pages/ocis/guides/ocis-mini-eval.adoc b/content/ocis/9.0/modules/developer/pages/ocis/guides/ocis-mini-eval.adoc index 28709eb..9fc6f8c 100644 --- a/content/ocis/9.0/modules/developer/pages/ocis/guides/ocis-mini-eval.adoc +++ b/content/ocis/9.0/modules/developer/pages/ocis/guides/ocis-mini-eval.adoc @@ -1,6 +1,7 @@ = Minimalistic Evaluation Guide for oCIS with Docker :toc: right :toclevels: 3 +:description: Minimalistic guide to evaluate oCIS locally with Docker. Only intended for quick evaluation on a local machine. _IMPORTANT_ This type of installation is _ONLY_ intended for a quick evaluation and to access the instance from your local machine using internal certificates only. We recommend using test data only for this evaluation. diff --git a/content/ocis/9.0/modules/developer/pages/ocis/identity-provider/index.adoc b/content/ocis/9.0/modules/developer/pages/ocis/identity-provider/index.adoc index 2a9f06b..661dcbb 100644 --- a/content/ocis/9.0/modules/developer/pages/ocis/identity-provider/index.adoc +++ b/content/ocis/9.0/modules/developer/pages/ocis/identity-provider/index.adoc @@ -1,6 +1,7 @@ = Identity Provider :toc: right :toclevels: 3 +:description: oCIS provides out of the box a minimal OpenID Connect provider via the IDP service and a minimal LDAP service via the IDM service. == Overview diff --git a/content/ocis/9.0/modules/developer/pages/ocis/identity-provider/ldap-active-directory.adoc b/content/ocis/9.0/modules/developer/pages/ocis/identity-provider/ldap-active-directory.adoc index e478ab0..fbc451f 100644 --- a/content/ocis/9.0/modules/developer/pages/ocis/identity-provider/ldap-active-directory.adoc +++ b/content/ocis/9.0/modules/developer/pages/ocis/identity-provider/ldap-active-directory.adoc @@ -1,6 +1,7 @@ = LDAP - Active Directory :toc: right :toclevels: 3 +:description: oCIS can be configured using Active Directory as identity provider. == Overview diff --git a/content/ocis/9.0/modules/developer/pages/ocis/identity-provider/oidc.adoc b/content/ocis/9.0/modules/developer/pages/ocis/identity-provider/oidc.adoc index 9350116..c3db2b9 100644 --- a/content/ocis/9.0/modules/developer/pages/ocis/identity-provider/oidc.adoc +++ b/content/ocis/9.0/modules/developer/pages/ocis/identity-provider/oidc.adoc @@ -1,6 +1,7 @@ = OIDC :toc: right :toclevels: 3 +:description: Infinite Scale has implemented OpenID Connect (OIDC) for authentication. Infinite Scale has implemented OpenID Connect (OIDC) for authentication. OIDC defines a discovery mechanism, called OpenID Connect Discovery, diff --git a/content/ocis/9.0/modules/developer/pages/ocis/index.adoc b/content/ocis/9.0/modules/developer/pages/ocis/index.adoc index 723eb0d..c9e98fb 100644 --- a/content/ocis/9.0/modules/developer/pages/ocis/index.adoc +++ b/content/ocis/9.0/modules/developer/pages/ocis/index.adoc @@ -1,6 +1,7 @@ = oCIS - ownCloud Infinite Scale :toc: right :toclevels: 3 +:description: Welcome to oCIS, the modern file-sync and share platform, which is based on our knowledge and experience with the PHP based ownCloud server. image::ocis/infinite_scale.png[,width=300] diff --git a/content/ocis/9.0/modules/developer/pages/ocis/storage-backends/cephfs.adoc b/content/ocis/9.0/modules/developer/pages/ocis/storage-backends/cephfs.adoc index a246663..3b46007 100644 --- a/content/ocis/9.0/modules/developer/pages/ocis/storage-backends/cephfs.adoc +++ b/content/ocis/9.0/modules/developer/pages/ocis/storage-backends/cephfs.adoc @@ -1,6 +1,7 @@ = cephfs :toc: right :toclevels: 3 +:description: Use CephFS as an oCIS storage backend: it supports recursive change time propagation for etag calculation. oCIS intends to make the aspects of existing storage systems available as transparently as possible, but the static sync algorithm of the desktop client relies on some form of recursive change time propagation on the server side to detect changes. While this can be bolted on top of existing file systems with inotify, the kernel audit or a fuse based overlay filesystem, a storage system that already implements this aspect is preferable. Aside from EOS, cephfs supports a recursive change time that oCIS can use to calculate an etag for the webdav API. diff --git a/content/ocis/9.0/modules/developer/pages/ocis/storage-backends/dcfsnfs.adoc b/content/ocis/9.0/modules/developer/pages/ocis/storage-backends/dcfsnfs.adoc index 9ce05c8..957de5c 100644 --- a/content/ocis/9.0/modules/developer/pages/ocis/storage-backends/dcfsnfs.adoc +++ b/content/ocis/9.0/modules/developer/pages/ocis/storage-backends/dcfsnfs.adoc @@ -1,6 +1,7 @@ = Decomposed FS on NFS :toc: right :toclevels: 3 +:description: oCIS' default storage backend is the Decomposed FS. oCIS' default storage backend is the Decomposed FS. The Decomposed FS can be set up to run on a NFS share. That way the same storage can be provided over the network to other nodes running oCIS. diff --git a/content/ocis/9.0/modules/developer/pages/ocis/storage-backends/eos.adoc b/content/ocis/9.0/modules/developer/pages/ocis/storage-backends/eos.adoc index 479e466..ef0411e 100644 --- a/content/ocis/9.0/modules/developer/pages/ocis/storage-backends/eos.adoc +++ b/content/ocis/9.0/modules/developer/pages/ocis/storage-backends/eos.adoc @@ -1,6 +1,7 @@ = EOS :toc: right :toclevels: 3 +:description: oCIS can be configured to run on top of eos. oCIS can be configured to run on top of link:https://eos-web.web.cern.ch/[eos]. While the link:http://eos-docs.web.cern.ch/[eos documentation] does cover a lot of topics, it leaves out some details that you may have to either pull from various link:https://gitlab.cern.ch/eos/eos-docker[docker containers], the link:https://eos-community.web.cern.ch/[forums] or even the link:https://github.com/cern-eos/eos[source] itself. diff --git a/content/ocis/9.0/modules/developer/pages/ocis/storage-backends/index.adoc b/content/ocis/9.0/modules/developer/pages/ocis/storage-backends/index.adoc index 676855a..d34997c 100644 --- a/content/ocis/9.0/modules/developer/pages/ocis/storage-backends/index.adoc +++ b/content/ocis/9.0/modules/developer/pages/ocis/storage-backends/index.adoc @@ -1,4 +1,5 @@ = Storage Backends :toc: right :toclevels: 3 +:description: Storage backends for oCIS: the default decomposedfs, EOS and CephFS. diff --git a/content/ocis/9.0/modules/developer/pages/ocis/storage/index.adoc b/content/ocis/9.0/modules/developer/pages/ocis/storage/index.adoc index a6fbdd4..5fd460e 100644 --- a/content/ocis/9.0/modules/developer/pages/ocis/storage/index.adoc +++ b/content/ocis/9.0/modules/developer/pages/ocis/storage/index.adoc @@ -1,6 +1,7 @@ = Storage :toc: right :toclevels: 3 +:description: oCIS wraps reva and adds an opinionated configuration to provide the spaces registry and spaces provider services. == Overview @@ -15,7 +16,7 @@ image::ocis/storage/overview.drawio.svg[,width=300] The dashed lines in the diagram indicate requests that are made to authenticate requests or lookup the storage provider: -. After authenticating a request, the proxy may either use the CS3 `userprovider` or the accounts service to fetch the user information that will be minted into the `x-access-token`. +. After authenticating a request, the proxy uses the CS3 `userprovider` to fetch the user information that will be minted into the `x-access-token`. . The gateway will verify the JWT signature of the `x-access-token` or try to authenticate the request itself, e.g. using a public link token. diff --git a/content/ocis/9.0/modules/developer/pages/ocis/storage/namespaces.adoc b/content/ocis/9.0/modules/developer/pages/ocis/storage/namespaces.adoc index ba608ac..d9b5f36 100644 --- a/content/ocis/9.0/modules/developer/pages/ocis/storage/namespaces.adoc +++ b/content/ocis/9.0/modules/developer/pages/ocis/storage/namespaces.adoc @@ -1,6 +1,7 @@ = Namespaces :toc: right :toclevels: 3 +:description: A namespace is a set of paths with a common prefix. A _namespace_ is a set of paths with a common prefix. Depending on the endpoint you are talking to you will encounter a different kind of namespace: In ownCloud Classic all paths are considered relative to the users home. The CS3 API uses a global namespace and the _storage providers_ use a local namespace with paths relative to the storage providers root. diff --git a/content/ocis/9.0/modules/developer/pages/ocis/storage/proposedchanges.adoc b/content/ocis/9.0/modules/developer/pages/ocis/storage/proposedchanges.adoc index 5c9e3b7..d88fd1c 100644 --- a/content/ocis/9.0/modules/developer/pages/ocis/storage/proposedchanges.adoc +++ b/content/ocis/9.0/modules/developer/pages/ocis/storage/proposedchanges.adoc @@ -1,6 +1,7 @@ = Proposed Changes :toc: right :toclevels: 3 +:description: Some architectural changes still need to be clarified or changed. Maybe an ADR is in order for all of the below. Some architectural changes still need to be clarified or changed. Maybe an ADR is in order for all of the below. diff --git a/content/ocis/9.0/modules/developer/pages/ocis/storage/spaces.adoc b/content/ocis/9.0/modules/developer/pages/ocis/storage/spaces.adoc index ebd18c7..c2534d0 100644 --- a/content/ocis/9.0/modules/developer/pages/ocis/storage/spaces.adoc +++ b/content/ocis/9.0/modules/developer/pages/ocis/storage/spaces.adoc @@ -1,10 +1,11 @@ = Spaces :toc: right :toclevels: 3 +:description: The OData specification allows for a myriad of ways of addressing an entity. == Editing a Storage Space -The OData specification allows for a mirage of ways of addressing an entity. We will support addressing a Drive entity by its unique identifier, which is the one the graph-api returns when listing spaces, and its format is: +The OData specification allows for a myriad of ways of addressing an entity. We will support addressing a Drive entity by its unique identifier, which is the one the graph-api returns when listing spaces, and its format is: [source,json] ---- diff --git a/content/ocis/9.0/modules/developer/pages/ocis/storage/spacesprovider.adoc b/content/ocis/9.0/modules/developer/pages/ocis/storage/spacesprovider.adoc index d5d4bbf..b02d664 100644 --- a/content/ocis/9.0/modules/developer/pages/ocis/storage/spacesprovider.adoc +++ b/content/ocis/9.0/modules/developer/pages/ocis/storage/spacesprovider.adoc @@ -1,6 +1,7 @@ = Spaces Provider :toc: right :toclevels: 3 +:description: A storage provider manages resources identified by a reference by accessing a storage system with a storage driver. [WARNING] ==== diff --git a/content/ocis/9.0/modules/developer/pages/ocis/storage/spacesregistry.adoc b/content/ocis/9.0/modules/developer/pages/ocis/storage/spacesregistry.adoc index e8d2914..5ce2c1d 100644 --- a/content/ocis/9.0/modules/developer/pages/ocis/storage/spacesregistry.adoc +++ b/content/ocis/9.0/modules/developer/pages/ocis/storage/spacesregistry.adoc @@ -1,6 +1,7 @@ = Spaces Registry :toc: right :toclevels: 3 +:description: A storage spaces registry manages the namespace for a user so that clients can look up the spaces a user has access to. [WARNING] ==== diff --git a/content/ocis/9.0/modules/developer/pages/ocis/storage/storage_registry_discovery.adoc b/content/ocis/9.0/modules/developer/pages/ocis/storage/storage_registry_discovery.adoc index 1c809b7..4988e7f 100644 --- a/content/ocis/9.0/modules/developer/pages/ocis/storage/storage_registry_discovery.adoc +++ b/content/ocis/9.0/modules/developer/pages/ocis/storage/storage_registry_discovery.adoc @@ -1,6 +1,7 @@ = Storage Registry Discovery :toc: right :toclevels: 3 +:description: In order for an oCIS client to access oCIS storage spaces for an End-User, the client needs to know where the oCIS instance is. == Introduction diff --git a/content/ocis/9.0/modules/developer/pages/ocis/storage/storagedrivers.adoc b/content/ocis/9.0/modules/developer/pages/ocis/storage/storagedrivers.adoc index d526f77..cd9b817 100644 --- a/content/ocis/9.0/modules/developer/pages/ocis/storage/storagedrivers.adoc +++ b/content/ocis/9.0/modules/developer/pages/ocis/storage/storagedrivers.adoc @@ -1,6 +1,7 @@ = Storage Drivers :toc: right :toclevels: 3 +:description: Storage drivers map path and id based CS3 references to storage system specific references. A _storage driver_ implements access to a _storage system_: @@ -20,6 +21,7 @@ While the _storage provider_ is responsible for managing the tree, file up- and ==== == Storage Aspects + A lot of different storage technologies exist, ranging from general purpose file systems with POSIX semantics to software defined storage with multiple APIs. Choosing any of them is making a tradeoff decision. Or, if a storage technology is already in place it automatically predetermines the capabilities that can be made available. _Not all storage systems are created equal._ Unfortunately, no POSIX filesystem natively supports all storage aspects that ownCloud Classic requires: diff --git a/content/ocis/9.0/modules/developer/pages/ocis/storage/terminology.adoc b/content/ocis/9.0/modules/developer/pages/ocis/storage/terminology.adoc index af93f92..12902bc 100644 --- a/content/ocis/9.0/modules/developer/pages/ocis/storage/terminology.adoc +++ b/content/ocis/9.0/modules/developer/pages/ocis/storage/terminology.adoc @@ -1,6 +1,7 @@ = Terminology :toc: right :toclevels: 3 +:description: Terminology used throughout the oCIS storage documentation, the code and developer discussions. Communication is hard. And clear communication is even harder. You may encounter the following terms throughout the documentation, in the code or when talking to other developers. Just keep in mind that whenever you hear or read _storage_, that term needs to be clarified, because on its own it is too vague. PR welcome. diff --git a/content/ocis/9.0/modules/developer/pages/ocis/storage/users.adoc b/content/ocis/9.0/modules/developer/pages/ocis/storage/users.adoc index f437779..2d524a0 100644 --- a/content/ocis/9.0/modules/developer/pages/ocis/storage/users.adoc +++ b/content/ocis/9.0/modules/developer/pages/ocis/storage/users.adoc @@ -1,8 +1,9 @@ = Users :toc: right :toclevels: 3 +:description: User and group provisioning in oCIS: users are identified by UUID internally while usernames are used in the WebDAV and OCS APIs. -TODO add this to the storage overview? or is this a different part? That should be started as a separate service ? And documented elsewhere, e.g. in the accounts? +// TODO add this to the storage overview? or is this a different part? That should be started as a separate service? And documented elsewhere, e.g. in the accounts? == User and Group Provisioning diff --git a/content/ocis/9.0/modules/developer/pages/release_life_cycle.adoc b/content/ocis/9.0/modules/developer/pages/release_life_cycle.adoc index 8a1e4d2..02fff6d 100644 --- a/content/ocis/9.0/modules/developer/pages/release_life_cycle.adoc +++ b/content/ocis/9.0/modules/developer/pages/release_life_cycle.adoc @@ -1,6 +1,7 @@ = Release Life Cycle :toc: right :toclevels: 3 +:description: Clarity and transparency about the scheduling, nature and support of Infinite Scale releases. This page is designed to provide clarity and transparency regarding the scheduling, nature, and support of our releases, ensuring you have all the information you need to stay updated and manage your deployments effectively. Find an overview of our plans for future enhancements and features here at: link:https://github.com/orgs/owncloud/projects/344[owncloud.com/roadmap,window=_blank]. diff --git a/content/ocis/9.0/modules/developer/pages/release_notes.adoc b/content/ocis/9.0/modules/developer/pages/release_notes.adoc index d3edce1..209dda8 100644 --- a/content/ocis/9.0/modules/developer/pages/release_notes.adoc +++ b/content/ocis/9.0/modules/developer/pages/release_notes.adoc @@ -1,5 +1,6 @@ = Release Notes :toc: right :toclevels: 3 +:description: The Infinite Scale Release Notes are published with the ownCloud Documentation. The Infinite Scale Release Notes are published with the xref:ROOT::ocis_release_notes.adoc[ownCloud Documentation]. diff --git a/content/ocis/9.0/modules/developer/pages/releasing_guide/index.adoc b/content/ocis/9.0/modules/developer/pages/releasing_guide/index.adoc index 58e348d..1ed6916 100644 --- a/content/ocis/9.0/modules/developer/pages/releasing_guide/index.adoc +++ b/content/ocis/9.0/modules/developer/pages/releasing_guide/index.adoc @@ -1,6 +1,7 @@ = Releasing Processes :toc: right :toclevels: 3 +:description: This section provides information how to prepare a new Infinite Scale release. == General Information diff --git a/content/ocis/9.0/modules/developer/pages/releasing_guide/releasing_guide.adoc b/content/ocis/9.0/modules/developer/pages/releasing_guide/releasing_guide.adoc index f2c72c4..6bf5c11 100644 --- a/content/ocis/9.0/modules/developer/pages/releasing_guide/releasing_guide.adoc +++ b/content/ocis/9.0/modules/developer/pages/releasing_guide/releasing_guide.adoc @@ -1,5 +1,6 @@ = Releasing Guide :toc: right +:description: To prepare an oCIS production release, you must follow a specific sequence of steps in the correct order. To prepare an oCIS production release, you must follow a specific sequence of steps in the correct order. @@ -14,7 +15,7 @@ Use these detailed copy/paste checklists for Jira when starting a new release. ** For Patch releases: `8.2.1` * The process differs slightly when creating a patch release only. -* Changes applied to a `stable-8.2` branch valid for documentation will be processed to the `docs-stable-x.y` branch automatically after merging. +* Changes applied to a `stable-9.0` branch valid for documentation will be processed to the `docs-stable-x.y` branch automatically after merging. ==== === Steps for Major or Minor Releases @@ -50,15 +51,15 @@ Backport changes to `master` and create other required stable branches, update c https://doc.owncloud.com/ocis/releasing_guide/releasing_guide.html * [ ] Start the Releasing Process - * [ ] Create a `stable-8.2` branch based on current `master` + * [ ] Create a `stable-9.0` branch based on current `master` * [ ] Inform documentation that the releasing process has started * [ ] Start the Release Candidates Phase - * [ ] Create a new feature branch based on `stable-8.2` + * [ ] Create a new feature branch based on `stable-9.0` * [ ] Move all changelog items from `unreleased` to `8.2.0-rc.1_2025-06-12` * [ ] Bump oCIS version in `ocis-pkg/version/version.go` * [ ] Bump oCIS version in `sonar-project.properties` - * [ ] Create PR with `[full-ci][k6-test]` against `stable-8.2` + * [ ] Create PR with `[full-ci][k6-test]` against `stable-9.0` * [ ] Get PR approved. **DO NOT MERGE YET** * [ ] Wait for pipeline to be green * [ ] Create tag: `git tag -s v8.2.0-rc.1 -m "Release 8.2.0-rc.1"` @@ -71,11 +72,11 @@ https://doc.owncloud.com/ocis/releasing_guide/releasing_guide.html * [ ] All issues are fixed, RC phase has finished * [ ] Prepare Release - * [ ] Create a new feature branch based on `stable-8.2` + * [ ] Create a new feature branch based on `stable-9.0` * [ ] Move all changelog items from `8.2.0-rc.*` to `8.2.0_2025-04-01` * [ ] Bump oCIS version in `ocis-pkg/version/version.go` * [ ] Bump oCIS version in `sonar-project.properties` - * [ ] Create PR with `[full-ci][k6-test]` against `stable-8.2` + * [ ] Create PR with `[full-ci][k6-test]` against `stable-9.0` * [ ] Mark PR as **Draft** to avoid accidentially merging * [ ] Get PR approved. **DO NOT MERGE YET**\ Info: merging will be done in step *Release the new Version* @@ -102,12 +103,12 @@ https://doc.owncloud.com/ocis/releasing_guide/releasing_guide.html * [ ] Announce release in *Teams channel: oCIS* * [ ] Postprocessing and Finalization - * [ ] Backport `stable-8.2` to the master branch - * [ ] Create a `docs-stable-8.2` branch - * [ ] Create orphan branch: `git checkout --orphan docs-stable-8.2` + * [ ] Backport `stable-9.0` to the master branch + * [ ] Create a `docs-stable-9.0` branch + * [ ] Create orphan branch: `git checkout --orphan docs-stable-9.0` * [ ] Initial commit: `git commit --allow-empty -m "initial commit"` * [ ] Push it: `git push` - * [ ] Add `stable-8.2` to the nightly cron jobs in drone (`Settings` -> `Cron Jobs`) + * [ ] Add `stable-9.0` to the nightly cron jobs in drone (`Settings` -> `Cron Jobs`) ---- === Steps for Patch Releases Only @@ -139,11 +140,11 @@ Integrate all patches and set the final version https://doc.owncloud.com/ocis/releasing_guide/releasing_guide.html * [ ] Prepare Release - * [ ] Create a new feature branch based on `stable-8.2` + * [ ] Create a new feature branch based on `stable-9.0` * [ ] Move all changelog items from `unreleased` to `8.2.1_2026-07-01` * [ ] Bump oCIS version in `ocis-pkg/version/version.go` * [ ] Bump oCIS version in `sonar-project.properties` - * [ ] Create PR with `[full-ci][k6-test]` against `stable-8.2` + * [ ] Create PR with `[full-ci][k6-test]` against `stable-9.0` * [ ] Mark PR as **Draft** to avoid accidentially merging * [ ] Get PR approved **requires 2 approvals**, **DO NOT MERGE YET**\ Info: merging will be done in step *Release the new Version* @@ -176,7 +177,7 @@ https://doc.owncloud.com/ocis/releasing_guide/releasing_guide.html === Envvar Changes -Follow the xref:services/general-info/envvars/new-release-process.adoc[Release Process for Envvars] documentation to update the required environment variable data. These changes _must_ be present in the appropriate `stable-8.2` branch and should be applied to the respective feature branch during the development cycle. This _avoids manually backporting_ to `stable-8.2` but may be required if changes go to master instead. Changes to envvars are typically found in the `docs` folder. +Follow the xref:services/general-info/envvars/new-release-process.adoc[Release Process for Envvars] documentation to update the required environment variable data. These changes _must_ be present in the appropriate `stable-9.0` branch and should be applied to the respective feature branch during the development cycle. This _avoids manually backporting_ to `stable-9.0` but may be required if changes go to master instead. Changes to envvars are typically found in the `docs` folder. [WARNING] ==== diff --git a/content/ocis/9.0/modules/developer/pages/releasing_guide/troubleshooting.adoc b/content/ocis/9.0/modules/developer/pages/releasing_guide/troubleshooting.adoc index b459ce9..2c4c80a 100644 --- a/content/ocis/9.0/modules/developer/pages/releasing_guide/troubleshooting.adoc +++ b/content/ocis/9.0/modules/developer/pages/releasing_guide/troubleshooting.adoc @@ -1,6 +1,7 @@ = Troubleshooting :toc: right :toclevels: 3 +:description: This document covers some of the issues that can happen during the release process. This document covers some of the issues that can happen during the release process. @@ -13,7 +14,7 @@ Once the `stable-x.y` branch has been created but work has been merged into mast [WARNING] ==== -* Any change applied to `stable-8.2` must be made _before_ the tag for this release is created to be part of which is mandatory for any code change. +* Any change applied to `stable-9.0` must be made _before_ the tag for this release is created to be part of which is mandatory for any code change. * There is one exception. Changes applied for documentation purposes are accessed via the branch name by the doc process and not via the tag and therefore accessible to the documentation processes. ==== @@ -31,12 +32,12 @@ Changes to documentation must be present in the respective stable branch because https://doc.owncloud.com/ocis/latest/developer/ocis/releasing_guide.html * [ ] Check all relevant commits made to the master branch that are not in stable\ -`git log stable-8.2..master -- docs/` +`git log stable-9.0..master -- docs/` * [ ] Double check all changes if they apply to stable\ -`git diff stable-8.2..master -- docs/` -* [ ] Create a new feature branch based on `stable-8.2` +`git diff stable-9.0..master -- docs/` +* [ ] Create a new feature branch based on `stable-9.0` * [ ] Cherry pick missing commits -* [ ] Create PR with leading `[docs-only]` against `stable-8.2` +* [ ] Create PR with leading `[docs-only]` against `stable-9.0` * [ ] Get PR approved **requires 2 approvals** and merge it * [ ] Delete feature branch ---- @@ -59,12 +60,12 @@ Follow these steps to apply all `ocis_full` deployment example related changes f https://doc.owncloud.com/ocis/latest/developer/ocis/releasing_guide.html * [ ] Check all relevant commits made to the master branch that are not in stable\ -`git log stable-8.2..master -- deployments/examples/ocis_full/` +`git log stable-9.0..master -- deployments/examples/ocis_full/` * [ ] Double check all changes if they apply to stable\ -`git diff stable-8.2..master -- deployments/examples/ocis_full/` -* [ ] Create a new feature branch based on `stable-8.2` +`git diff stable-9.0..master -- deployments/examples/ocis_full/` +* [ ] Create a new feature branch based on `stable-9.0` * [ ] Cherry pick missing commits -* [ ] Create PR with leading `[docs-only]` against `stable-8.2` +* [ ] Create PR with leading `[docs-only]` against `stable-9.0` * [ ] Get PR approved **requires 2 approvals** and merge it * [ ] Delete feature branch ---- diff --git a/content/ocis/9.0/modules/developer/pages/service-independent/index.adoc b/content/ocis/9.0/modules/developer/pages/service-independent/index.adoc index 20706ac..ce037f4 100644 --- a/content/ocis/9.0/modules/developer/pages/service-independent/index.adoc +++ b/content/ocis/9.0/modules/developer/pages/service-independent/index.adoc @@ -1,6 +1,7 @@ = Service Independent Settings :toc: right :toclevels: 3 +:description: Some components programmed are not bound to a service but are valid for all of ocis. Some components programmed are not bound to a service but are valid for all of ocis. These are for example environment variables that are used before any service gets started. For ocis CLI commands that are service independent, see the xref:../cli-commands/service_independent_cli.adoc[Service Independent CLI] documentation. diff --git a/content/ocis/9.0/modules/developer/pages/service-independent/service_independent_envvars.adoc b/content/ocis/9.0/modules/developer/pages/service-independent/service_independent_envvars.adoc index 1a3b155..f2755eb 100644 --- a/content/ocis/9.0/modules/developer/pages/service-independent/service_independent_envvars.adoc +++ b/content/ocis/9.0/modules/developer/pages/service-independent/service_independent_envvars.adoc @@ -1,6 +1,7 @@ = Service Independent Envvars :toc: right :toclevels: 3 +:description: The following environment variables are service independent. The following environment variables are service independent. You will find the respective code in the `ocis-pkg/` directory. See the xref:admin:deployment/services/env-vars-special-scope.adoc[Admin Documentation - Environment Variables with Special Scopes] for a comprehensive list and explanation. diff --git a/content/ocis/9.0/modules/developer/pages/services/general-info/add-translations.adoc b/content/ocis/9.0/modules/developer/pages/services/general-info/add-translations.adoc index 220bbb7..5b522a7 100644 --- a/content/ocis/9.0/modules/developer/pages/services/general-info/add-translations.adoc +++ b/content/ocis/9.0/modules/developer/pages/services/general-info/add-translations.adoc @@ -1,6 +1,7 @@ = Add Translations :toc: right :toclevels: 3 +:description: Add translations to oCIS services: they are shown in the ownCloud Web UI and synced with Transifex daily. Services can have texts that need to be translated. These translations will be shown in the ownCloud Web UI. Compared to web, these translations: diff --git a/content/ocis/9.0/modules/developer/pages/services/general-info/additional-information.adoc b/content/ocis/9.0/modules/developer/pages/services/general-info/additional-information.adoc index 82312cf..857a7ee 100644 --- a/content/ocis/9.0/modules/developer/pages/services/general-info/additional-information.adoc +++ b/content/ocis/9.0/modules/developer/pages/services/general-info/additional-information.adoc @@ -1,6 +1,7 @@ = Additional Information :toc: right :toclevels: 3 +:description: ocis is using grpc for inter-service communication. This section contains information on general topics diff --git a/content/ocis/9.0/modules/developer/pages/services/general-info/envvars/deprecating-variables.adoc b/content/ocis/9.0/modules/developer/pages/services/general-info/envvars/deprecating-variables.adoc index d782af1..dfb5d98 100644 --- a/content/ocis/9.0/modules/developer/pages/services/general-info/envvars/deprecating-variables.adoc +++ b/content/ocis/9.0/modules/developer/pages/services/general-info/envvars/deprecating-variables.adoc @@ -1,6 +1,7 @@ = Envvar Deprecation :toc: right :toclevels: 3 +:description: Sometimes it is necessary to deprecate an environment variable to align the naming with conventions or remove it completely. == Deprecating Environment Variables diff --git a/content/ocis/9.0/modules/developer/pages/services/general-info/envvars/env-var-deltas/index.adoc b/content/ocis/9.0/modules/developer/pages/services/general-info/envvars/env-var-deltas/index.adoc index 363061a..b44cb2c 100644 --- a/content/ocis/9.0/modules/developer/pages/services/general-info/envvars/env-var-deltas/index.adoc +++ b/content/ocis/9.0/modules/developer/pages/services/general-info/envvars/env-var-deltas/index.adoc @@ -1,5 +1,6 @@ = Deltas Between Versions :toc: right +:description: This section provides information about the handling of added, removed and deprecated environment variables between two major/minor versions. == Introduction diff --git a/content/ocis/9.0/modules/developer/pages/services/general-info/envvars/envvar-naming-scopes.adoc b/content/ocis/9.0/modules/developer/pages/services/general-info/envvars/envvar-naming-scopes.adoc index b10548c..8889478 100644 --- a/content/ocis/9.0/modules/developer/pages/services/general-info/envvars/envvar-naming-scopes.adoc +++ b/content/ocis/9.0/modules/developer/pages/services/general-info/envvars/envvar-naming-scopes.adoc @@ -1,5 +1,6 @@ = Envvar Naming Scopes :toc: right +:description: The scope of an environment variable can be derived from its name. The scope of an environment variable can be derived from its name. Therefore, it is important to follow the correct naming scheme to enable easy and proper identification. This is important when either: diff --git a/content/ocis/9.0/modules/developer/pages/services/general-info/envvars/index.adoc b/content/ocis/9.0/modules/developer/pages/services/general-info/envvars/index.adoc index 99b7295..a61674f 100644 --- a/content/ocis/9.0/modules/developer/pages/services/general-info/envvars/index.adoc +++ b/content/ocis/9.0/modules/developer/pages/services/general-info/envvars/index.adoc @@ -1,6 +1,7 @@ = Environment Variables :toc: right :toclevels: 3 +:description: This section provides general information how to manage environment variables. == General Information diff --git a/content/ocis/9.0/modules/developer/pages/services/general-info/envvars/new-release-process.adoc b/content/ocis/9.0/modules/developer/pages/services/general-info/envvars/new-release-process.adoc index 9a6db73..676aa80 100644 --- a/content/ocis/9.0/modules/developer/pages/services/general-info/envvars/new-release-process.adoc +++ b/content/ocis/9.0/modules/developer/pages/services/general-info/envvars/new-release-process.adoc @@ -1,5 +1,6 @@ = Release Process for Envvars :toc: right +:description: Release process for environment variables: steps to complete before a new release gets finally tagged. [IMPORTANT] ==== diff --git a/content/ocis/9.0/modules/developer/pages/services/general-info/envvars/special-envvars.adoc b/content/ocis/9.0/modules/developer/pages/services/general-info/envvars/special-envvars.adoc index 814913e..9965609 100644 --- a/content/ocis/9.0/modules/developer/pages/services/general-info/envvars/special-envvars.adoc +++ b/content/ocis/9.0/modules/developer/pages/services/general-info/envvars/special-envvars.adoc @@ -1,6 +1,7 @@ = Special Envvars :toc: right :toclevels: 3 +:description: Handling these envvars properly is very important for the automated doc process for both the developer and the admin docs! Handling these envvars properly is very important for the automated doc process for both the developer and the admin docs! diff --git a/content/ocis/9.0/modules/developer/pages/services/general-info/index.adoc b/content/ocis/9.0/modules/developer/pages/services/general-info/index.adoc index 42909db..c10b214 100644 --- a/content/ocis/9.0/modules/developer/pages/services/general-info/index.adoc +++ b/content/ocis/9.0/modules/developer/pages/services/general-info/index.adoc @@ -1,6 +1,7 @@ = General Information :toc: right :toclevels: 3 +:description: This section provides general information valid for all services. == General Information diff --git a/content/ocis/9.0/modules/developer/pages/services/general-info/new-service-checklist.adoc b/content/ocis/9.0/modules/developer/pages/services/general-info/new-service-checklist.adoc index 99a3dc6..1eee8bc 100644 --- a/content/ocis/9.0/modules/developer/pages/services/general-info/new-service-checklist.adoc +++ b/content/ocis/9.0/modules/developer/pages/services/general-info/new-service-checklist.adoc @@ -1,6 +1,9 @@ = New Service Checklist :toc: right :toclevels: 3 +:description: When a new service gets introduced, this checklist is a good starting point for things that need to be completed before the service gets published. +:lastUpdatedVersion: {ocis-audit-version} +:lastUpdatedDate: {ocis-audit-date} When a new service gets introduced, this checklist is a good starting point for things that need to be completed before the service gets published (merged). This list is without claim of completeness or correct sort order. diff --git a/content/ocis/9.0/modules/developer/pages/services/general-info/port-ranges.adoc b/content/ocis/9.0/modules/developer/pages/services/general-info/port-ranges.adoc index b67e946..958b8a4 100644 --- a/content/ocis/9.0/modules/developer/pages/services/general-info/port-ranges.adoc +++ b/content/ocis/9.0/modules/developer/pages/services/general-info/port-ranges.adoc @@ -1,5 +1,6 @@ = Port Ranges :toc: right +:description: oCIS services often need a port to expose their services to other services or the outside world. == Introduction @@ -60,7 +61,7 @@ We also suggest using the last port in your extensions' range as a debug/metrics | 9250-9254 | link:https://github.com/owncloud/ocis/tree/master/ocis/pkg/runtime[ocis server (runtime)] | 9255-9259 | xref:{dev-s-path}/postprocessing/postprocessing.adoc[postprocessing] | 9260-9264 | xref:{dev-s-path}/clientlog/clientlog.adoc[clientlog] -| 9265-9269 | xref:{dev-s-path}/clientlog/clientlog.adoc[clientlog] +| 9265-9269 | xref:{dev-s-path}/invitations/invitations.adoc[invitations] | 9270-9274 | xref:{dev-s-path}/eventhistory/eventhistory.adoc[eventhistory] | 9275-9279 | xref:{dev-s-path}/webfinger/webfinger.adoc[webfinger] | 9280-9284 | xref:{dev-s-path}/ocm/ocm.adoc[ocm] diff --git a/content/ocis/9.0/modules/developer/pages/services/general-info/registry.adoc b/content/ocis/9.0/modules/developer/pages/services/general-info/registry.adoc index 9a3209c..f139db5 100644 --- a/content/ocis/9.0/modules/developer/pages/services/general-info/registry.adoc +++ b/content/ocis/9.0/modules/developer/pages/services/general-info/registry.adoc @@ -1,6 +1,7 @@ = Registry :toc: right :toclevels: 3 +:description: To be able to communicate with each other, services need to register in a common registry. To be able to communicate with each other, services need to register in a common registry. diff --git a/content/ocis/9.0/modules/developer/pages/services/s-list/graph/unified-roles.adoc b/content/ocis/9.0/modules/developer/pages/services/s-list/graph/unified-roles.adoc index 6eaf4c7..327b250 100644 --- a/content/ocis/9.0/modules/developer/pages/services/s-list/graph/unified-roles.adoc +++ b/content/ocis/9.0/modules/developer/pages/services/s-list/graph/unified-roles.adoc @@ -1,6 +1,7 @@ = Unified Roles :toc: right :toclevels: 3 +:description: Add unified roles to the graph service by editing the /pkg/conversions/role.go file in the reva repository. == Create a New Built-in Role diff --git a/content/ocis/9.0/modules/developer/pages/services/s-list/idm/admin_password_reset.adoc b/content/ocis/9.0/modules/developer/pages/services/s-list/idm/admin_password_reset.adoc index d1a8682..4c52002 100644 --- a/content/ocis/9.0/modules/developer/pages/services/s-list/idm/admin_password_reset.adoc +++ b/content/ocis/9.0/modules/developer/pages/services/s-list/idm/admin_password_reset.adoc @@ -1,6 +1,7 @@ = Resetting a Lost Administrator Password +:description: Reset a lost administrator password when using oCIS with the built-in IDM via the ocis idm resetpassword command. -By default, when using oCIS with the builtin IDM an ad generates the user `admin` (DN `uid=admin,ou=users,o=libregraph-idm`) if, for any reason, the password of that user is lost, it can be reset using the `resetpassword` sub-command: +By default, when using oCIS with the built-in IDM, idm generates the user `admin` (DN `uid=admin,ou=users,o=libregraph-idm`). If, for any reason, the password of that user is lost, it can be reset using the `resetpassword` sub-command: [source,bash] ---- diff --git a/content/ocis/9.0/modules/developer/pages/services/s-list/idm/configuration_hints.adoc b/content/ocis/9.0/modules/developer/pages/services/s-list/idm/configuration_hints.adoc index 9bd2052..1eed1e7 100644 --- a/content/ocis/9.0/modules/developer/pages/services/s-list/idm/configuration_hints.adoc +++ b/content/ocis/9.0/modules/developer/pages/services/s-list/idm/configuration_hints.adoc @@ -1,6 +1,7 @@ = Configuration Hints :toc: right :toclevels: 3 +:description: By default IDM generates a self-signed certificate and key on first startup to be able to provide TLS protected services. == TLS Server Certificates diff --git a/content/ocis/9.0/modules/developer/pages/services/s-list/idp/theming.adoc b/content/ocis/9.0/modules/developer/pages/services/s-list/idp/theming.adoc index 382f88b..3b8c33a 100644 --- a/content/ocis/9.0/modules/developer/pages/services/s-list/idp/theming.adoc +++ b/content/ocis/9.0/modules/developer/pages/services/s-list/idp/theming.adoc @@ -1,6 +1,7 @@ = Theming :toc: right :toclevels: 3 +:description: Our default IDP UI is built with the LibreGraph Connect React app. == Intro diff --git a/content/ocis/9.0/modules/developer/pages/services/s-list/ocm/create_share_flow.adoc b/content/ocis/9.0/modules/developer/pages/services/s-list/ocm/create_share_flow.adoc index 545e7c1..9ae8a98 100644 --- a/content/ocis/9.0/modules/developer/pages/services/s-list/ocm/create_share_flow.adoc +++ b/content/ocis/9.0/modules/developer/pages/services/s-list/ocm/create_share_flow.adoc @@ -1,6 +1,9 @@ = Create Share Flow :toc: right :toclevels: 3 +:description: Sequence diagram of the OCM create share flow between two Infinite Scale instances. +:lastUpdatedVersion: {ocis-audit-version} +:lastUpdatedDate: {ocis-audit-date} == OCM Create Share Flow diff --git a/content/ocis/9.0/modules/developer/pages/services/s-list/ocm/invitation_flow.adoc b/content/ocis/9.0/modules/developer/pages/services/s-list/ocm/invitation_flow.adoc index 6d2dd0e..3edd113 100644 --- a/content/ocis/9.0/modules/developer/pages/services/s-list/ocm/invitation_flow.adoc +++ b/content/ocis/9.0/modules/developer/pages/services/s-list/ocm/invitation_flow.adoc @@ -1,6 +1,9 @@ = Invitation Flow :toc: right :toclevels: 3 +:description: Sequence diagram of the OCM invitation flow between two Infinite Scale instances. +:lastUpdatedVersion: {ocis-audit-version} +:lastUpdatedDate: {ocis-audit-date} == OCM Invitation Flow diff --git a/content/ocis/9.0/modules/developer/pages/services/s-list/settings/bundles.adoc b/content/ocis/9.0/modules/developer/pages/services/s-list/settings/bundles.adoc index 643f60b..9f040fe 100644 --- a/content/ocis/9.0/modules/developer/pages/services/s-list/settings/bundles.adoc +++ b/content/ocis/9.0/modules/developer/pages/services/s-list/settings/bundles.adoc @@ -1,4 +1,5 @@ = Settings Bundles +:description: A Settings Bundle is a collection of settings, uniquely identified by the key of the extension registering the bundle and the key of the bundle itself. A _Settings Bundle_ is a collection of settings, uniquely identified by the key of the extension registering the bundle and the key of the bundle itself. Its purpose is to let oCIS services define settings and make them available to users. They are dynamically rendered into forms, available in the frontend. diff --git a/content/ocis/9.0/modules/developer/pages/services/s-list/settings/glossary.adoc b/content/ocis/9.0/modules/developer/pages/services/s-list/settings/glossary.adoc index 93e64b6..c111934 100644 --- a/content/ocis/9.0/modules/developer/pages/services/s-list/settings/glossary.adoc +++ b/content/ocis/9.0/modules/developer/pages/services/s-list/settings/glossary.adoc @@ -1,6 +1,7 @@ = Glossary :toc: right :toclevels: 3 +:description: In the context of this extension and oCIS in general, we are using the following terminology. In the context of this extension and oCIS in general, we are using the following terminology. diff --git a/content/ocis/9.0/modules/developer/pages/services/s-list/settings/values.adoc b/content/ocis/9.0/modules/developer/pages/services/s-list/settings/values.adoc index 6228559..16b5016 100644 --- a/content/ocis/9.0/modules/developer/pages/services/s-list/settings/values.adoc +++ b/content/ocis/9.0/modules/developer/pages/services/s-list/settings/values.adoc @@ -1,6 +1,7 @@ = Settings Values :toc: right :toclevels: 3 +:description: A Settings Value is the value an authenticated user has chosen for a specific setting, defined in a settings bundle. A _Settings Value_ is the value an authenticated user has chosen for a specific setting, defined in a _settings bundle_. diff --git a/content/ocis/9.0/modules/developer/pages/services/s-list/web/releasing.adoc b/content/ocis/9.0/modules/developer/pages/services/s-list/web/releasing.adoc index 0daf60c..b472b3d 100644 --- a/content/ocis/9.0/modules/developer/pages/services/s-list/web/releasing.adoc +++ b/content/ocis/9.0/modules/developer/pages/services/s-list/web/releasing.adoc @@ -1,6 +1,7 @@ = Releasing :toc: right :toclevels: 3 +:description: The next generation Web Frontend is shipped as an oCIS Extension. == Releasing diff --git a/content/ocis/AGENTS.md b/content/ocis/AGENTS.md index 730d6c7..3d72e9f 100644 --- a/content/ocis/AGENTS.md +++ b/content/ocis/AGENTS.md @@ -2,6 +2,58 @@ Agent guidelines specific to the oCIS component (developer service pages, Collector and Swagger UI). Applies to every oCIS version directory. Loaded on demand; repo-wide rules live in the root `AGENTS.md`, content-authoring rules in `content/AGENTS.md`. +## Audit-Tracking Page Attributes + +Pages that contain content requiring periodic review (Mermaid diagrams, architecture descriptions, configuration examples) carry two tracking attributes in their document header: + +```asciidoc +:lastUpdatedVersion: {ocis-audit-version} +:lastUpdatedDate: {ocis-audit-date} +``` + +The values are centralised in `content/ocis//antora.yml` under `ocis-audit-version` and `ocis-audit-date`. Update those two keys there — all pages pick up the new values automatically on the next build. + +### Placement rule + +Both attributes **must** live in the document header — the block of `:attr:` lines directly after the title, before the first blank line. A blank line before them ends the header section and changes how Antora processes the attributes. + +```asciidoc +// Correct — consecutive, in the header += Page Title +:toc: right +:description: ... +:lastUpdatedVersion: {ocis-audit-version} +:lastUpdatedDate: {ocis-audit-date} + +First paragraph... + +// Wrong — after a blank line, outside the header += Page Title +:toc: right +:description: ... + +:lastUpdatedVersion: {ocis-audit-version} +:lastUpdatedDate: {ocis-audit-date} +``` + +### When to bump the values in antora.yml + +Only bump `ocis-audit-version` and `ocis-audit-date` when you have verified that **all** content requiring review has been checked or updated for the new version — for example, that Mermaid diagrams, architecture descriptions and configuration examples are still accurate. Do **not** bump for purely mechanical edits (formatting, typo fixes) that do not involve a content review. + +## ADR Description Prefix + +Every ADR page under `pages/ocis/adr/` must have its `:description:` attribute start with `ADR : ` (no leading zeros). This makes the description self-identifying in search results and metadata. + +```asciidoc +// Correct +:description: ADR 7: As one of the building blocks for Spaces in oCIS we plan to add an API... + +// Wrong — no prefix +:description: As one of the building blocks for Spaces in oCIS we plan to add an API... +``` + +Exception: if a status note is needed (e.g. superseded), keep it after the number: `ADR 3 (superseded by ADR-0017): ...` + ## Developer Service Pages The oCIS developer module (`content/ocis//modules/developer/`) has a specific structure and content rule for service pages.