Modified OpenCloud that runs PrivoHub Drive (Apache-2.0)
  • Go 49%
  • Gherkin 36.1%
  • PHP 12%
  • JavaScript 1.3%
  • Shell 0.6%
  • Other 0.8%
Find a file
2026-10-22 14:35:53 +02:00
.agents/skills chore: fix commit message typo in bumping-reva skill 2026-08-25 10:01:26 +02:00
.bingo feat: add new editor roles (#3637) 2026-10-05 14:07:30 +02:00
.claude chore(skills): add skill for bumping web 2026-06-25 10:42:25 +02:00
.github Set milestones to stable prs (#3641) 2026-10-02 11:08:27 +02:00
.make cleanup: remove unused calens based changelog artifacts 2026-09-15 14:38:31 +02:00
.vscode steps refactoring (#3100) 2026-07-14 09:32:35 +02:00
deployments/examples Fix simple install script, use admin-password switch 2026-02-28 10:49:44 +01:00
devtools/deployments fix(csp): allow blob: in style-src for EPUB reader iframe (#3300) 2026-08-13 13:16:04 +02:00
docs/adr docs(adr): apply review wording suggestion 2026-09-01 07:26:32 +02:00
internal chore(graph): disable HTTP or eventhandlers by configuration 2026-09-01 10:57:26 +02:00
opencloud Point the image labels at the public code host 2026-10-22 14:35:53 +02:00
pkg [full-ci] chore: bump reva to 2.51.0 (#3657) 2026-10-05 17:08:52 +02:00
protogen Reindex disabled spaces once they get enabled again (#3579) 2026-10-05 14:28:58 +02:00
scripts Rename demo users 2025-01-28 18:03:12 +01:00
services feat(web): use a dark wordmark on the light theme's plain pages 2026-10-22 13:50:56 +02:00
tests feat: add new editor roles (#3637) 2026-10-05 14:07:30 +02:00
vendor chore: bump reva to 2.51.0 2026-10-05 14:12:21 +02:00
vendor-bin fix(ci): pin phpunit to 13.3.x) (#3644) 2026-10-02 09:53:53 +02:00
.backportrc.json Set milestones to stable prs (#3641) 2026-10-02 11:08:27 +02:00
.codacy.yml chore(codacy): exclude the generated search parity matrix 2026-08-28 19:56:57 +02:00
.dockerignore Dockerfile cleanup (#1352) 2025-08-15 12:41:36 +02:00
.editorconfig chore: Apply .editorconfig rules to both yml and yaml 2025-06-18 12:49:47 +01:00
.gitignore test(api): update php test dependencies (#3335) 2026-08-21 19:38:34 +02:00
.golangci.yml chore: bump golangci-lint to latest release 2026-09-22 14:37:49 +02:00
.mise-go-version.sh chore(mise): determine go version by parsing go.mod 2026-09-01 21:21:59 +02:00
.woodpecker.env [full-ci] chore: bump web to v8.1.0 (#3656) 2026-10-05 17:00:07 +02:00
.woodpecker.star [full-ci] chore: bump web to v8.1.0 (#3656) 2026-10-05 17:00:07 +02:00
CHANGELOG.md 🎉 Release 8.1.0 (#3534) 2026-10-05 19:37:42 +02:00
composer.json test(api): update php test dependencies (#3335) 2026-08-21 19:38:34 +02:00
CONTRIBUTING.md update links and references in CONTRIBUTING.md (#2411) 2026-03-06 14:48:55 +01:00
Dockerfile Add the PrivoHub Drive changes 2026-05-01 02:27:11 +02:00
go.mod chore: bump reva to 2.51.0 2026-10-05 14:12:21 +02:00
go.sum chore: bump reva to 2.51.0 2026-10-05 14:12:21 +02:00
LICENSE use vanilla version of LICENCE 2025-02-04 11:29:46 +01:00
Makefile chore: bump golangci-lint to latest release 2026-09-22 14:37:49 +02:00
mise.toml chore(mise): determine go version by parsing go.mod 2026-09-01 21:21:59 +02:00
opencloud_logo.png Reworked README.md 2025-01-17 17:21:23 +01:00
phpcs.xml steps refactoring (#3100) 2026-07-14 09:32:35 +02:00
README.md Point the README and image labels at the public source 2026-10-22 12:49:33 +02:00
release-config.ts add header to release pr. remove 📦️ Dependencies from release description (#3144) 2026-07-17 08:07:28 +02:00

OpenCloud logo

License

PrivoHub Drive: OpenCloud fork

This is the PrivoHub Drive fork of OpenCloud. The image is built from opencloud/docker/Dockerfile.multiarch; each release's source is the privohub-v{upstream} branch of this repository. The fork rebases onto upstream tags and adds a small set of additive commits: when none of the PRIVOHUB_* envs are set, the binary still behaves like vanilla OpenCloud.

PrivoHub additions on top of upstream

Env / setting What it does
PRIVOHUB_PERSONAL_QUOTA_BYTES Per-tenant personal-drive quota, applied on every login (cached for 5 minutes per user). Zero or unset disables.
PRIVOHUB_IDM_ADMIN_PASSWORD_FILE Path to a file containing the IDM admin password. Created at first boot by the entrypoint at /var/lib/opencloud/.privohub/idm-admin; read on every subsequent boot. The password is never logged or set via env.
WEB_OIDC_CLIENT_ID=opencloud-{tenant} + OCIS_OIDC_ISSUER=<keycloak-issuer> OIDC public-client PKCE against the per-tenant Keycloak realm. No client secret is required; the proxy validates via JWKS. This is upstream-default behavior; the operator only needs to set the two envs.
WEB_UI_THEME_PATH Defaults to /themes/privohub/theme.json in this fork (was opencloud/). Operators can still override.

Privacy posture

Upstream OpenCloud has no telemetry: there is no *_TELEMETRY env, no analytics SDK, no phone-home. The single outbound hint in upstream config is a documented feedbackLink URL; this fork removes that default so the only outbound HTTP traffic from a PrivoHub Drive pod is to its OIDC issuer (Keycloak). Verify with kubectl exec -- timeout 300 tcpdump -nn -i any 'not host <issuer-ip> and not net <cluster-cidr>' and expect zero packets.

Upstream OpenCloud 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.