Dominik Schmidt 7de7ad23bf feat(search): check the index schema on startup and refuse breaking changes
Both engines now diff the stored/live index schema against the schema
generated from code when the service starts. A shared recursive
classifier in the mapping package is the single oracle:

- equal: start normally.
- additive (new fields without any indexed data): applied in place.
  OpenSearch gets a PUT _mapping with the full code properties, bleve
  persists the code mapping into the index (SetInternal + reopen) so
  the new fields are properly typed immediately and later startups
  classify equal. A startup warning lists the new fields because
  documents indexed before the upgrade lack them until re-indexed.
- breaking (changed definitions or analyzers, removed or renamed
  fields, or new fields that already contain data of unknown form):
  refuse to start with an error describing the rebuild procedure
  (delete the index, start, run "opencloud search index --all-spaces")
  and the OC_EXCLUDE_RUN_SERVICES=search escape hatch.

PUT _mapping is deliberately only the apply mechanism, never the
judge: its merge semantics cannot see removals or renames and it
accepts in-place updatable param changes with an ack. bleve
additionally checks idx.Fields() so previously dynamically indexed
data (which leaves no schema trace in bleve) is caught, matching by
exact name and by path prefix.

While at it: the OpenSearch startup check runs with a real,
minute-bounded context instead of context.TODO(), bleve indexes are
opened with a 5s bolt_timeout so a second process fails fast instead
of hanging on the file lock, and the reversed errors.Is arguments in
bleve.NewIndex were fixed.

https://github.com/opencloud-eu/opencloud/issues/3092
2026-07-29 19:27:42 +02:00
2026-06-11 09:28:37 +02:00
2026-06-19 11:29:45 +02:00
2026-01-07 15:04:34 +01:00
2025-01-28 18:03:12 +01:00
2026-01-09 11:42:43 +01:00
2025-12-06 17:13:07 +01:00
2026-05-14 16:39:17 +02:00
2025-08-15 12:41:36 +02:00
2026-06-11 09:28:37 +02:00
2025-03-13 14:04:14 +01:00
2026-06-17 12:54:38 +02:00
2026-06-02 10:01:41 +00:00
2026-01-09 11:42:43 +01:00
2026-06-17 15:42:47 +02:00
2025-02-04 11:29:46 +01:00
2026-02-09 14:31:58 +01:00
2025-01-17 17:21:23 +01:00
2025-01-27 16:29:43 +01:00

OpenCloud logo

status-badge Matrix License

Server Backend

Tip

For general information about OpenCloud and how to install please visit OpenCloud on Github and OpenCloud GmbH.

This is the main repository of the OpenCloud server. It contains the golang codebase for the backend services.

Getting Involved

The OpenCloud server is released under Apache 2.0. The project is thrilled to receive contributions in all forms. Start hacking now, there are many ways to get involved such as:

Every contribution is meaningful and appreciated! Please refer to our Contribution Guidelines if you want to get started.

Build OpenCloud

To build the backend, follow these instructions:

Generate the assets needed by e.g., the web UI and the builtin IDP

make generate

Then compile the opencloud binary

make -C opencloud build

That will produce the binary opencloud/bin/opencloud. It can be started as a local test instance right away with a two step command:

opencloud/bin/opencloud init && opencloud/bin/opencloud server

This creates a server configuration (by default in $HOME/.opencloud) and starts the server.

For more setup- and installation options consult the Development Documentation.

Technology

Important information for contributors about the technology in use.

Authentication

The OpenCloud backend authenticates users via OpenID Connect using either an external IdP like Keycloak or the embedded LibreGraph Connect identity provider.

Database

The OpenCloud backend does not use a database. It stores all data in the filesystem. By default, the root directory of the backend is $HOME/.opencloud/.

Security

If you find a security-related issue, please contact security@opencloud.eu immediately.

Description
No description provided
Readme Apache-2.0 348 MiB
Languages
Go 49%
Gherkin 36.2%
PHP 12.1%
JavaScript 1.3%
Shell 0.6%
Other 0.6%