Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

waldur-site-agent-nextcloud

Nextcloud plugin for Waldur Site Agent.

Users purchase storage plans in Waldur and automatically receive access to a shared Nextcloud Group Folder. Login is via Keycloak OIDC.

At a glance

Entry point Group Role
nextcloud waldur_site_agent.backends order processing, membership sync, reporting

Modes: order_process, membership_sync, report, event_process (recommended).

Operation Behaviour
Create resource Nextcloud group and Group Folder with the ordered quota
Terminate resource Deletes the Group Folder and the group
Update limits Sets the Group Folder quota
Add / remove members Adds / removes users in the Nextcloud group
Pause Sets the folder quota to 0
Downscale Sets the folder quota to 1 GiB
Restore No-op — returns False; the quota comes back with the next limit update
Usage reporting Group Folder bytes used

How it works

  • Each Waldur resource → a Nextcloud Group + Group Folder (with quota from the plan)
  • Users added to the resource → added to the Nextcloud group → can access the folder
  • Usage is reported as Group Folder bytes used

Prerequisites

Install and enable in Nextcloud admin:

  • User OIDC app (user_oidc) — configure to point at your Keycloak realm
  • Group Folders app (groupfolders)

In the OIDC provider settings, set the user ID attribute to preferred_username (matches the Keycloak username that the site-agent uses when calling the OCS API).

Configuration example

offerings:
  - name: "Nextcloud Storage"
    waldur_api_url: "https://waldur.example.com/api/"
    waldur_api_token: "<site agent api token>"
    waldur_offering_uuid: "<offering uuid>"
    backend_type: "nextcloud"
    order_processing_backend: "nextcloud"
    membership_sync_backend: "nextcloud"
    reporting_backend: "nextcloud"
    # STOMP is strongly recommended for Nextcloud.  On event-based deployments
    # the agent retries the team-member fetch to avoid a race where the
    # create-order event arrives before Waldur commits the initial membership.
    stomp_enabled: true
    # stomp_membership_sync_enabled: false  # uncomment to keep HTTP polling for
    #                                       # membership sync even with STOMP on
    backend_settings:
      nextcloud_url: "https://nextcloud.example.com"
      admin_username: "admin"
      admin_password: "<nextcloud admin or app password>"
      group_prefix: "waldur-"          # prefix for auto-created groups
      default_storage_quota_gb: 25     # fallback if plan has no storage limit (GiB)
      allow_resharing: false           # allow users to reshare folder contents
    backend_components:
      storage:
        # Quota values are in GiB (1 GiB = 1024³ bytes), consistent with how
        # Nextcloud labels storage in its UI.
        measured_unit: "GiB"
        accounting_type: "limit"
        label: "Storage"
        unit_factor: 1

Backend settings reference

Key Default Description
nextcloud_url (required) Base URL of the Nextcloud instance
admin_username (required) Admin account for OCS API calls
admin_password (required) Admin password or app password
group_prefix "waldur-" Prefix prepended to every auto-created group name
default_storage_quota_gb 25 Fallback quota (GiB) when the Waldur plan has no storage limit
allow_resharing false If false, group members cannot reshare folder contents

The agent does not expand ${VAR} references in its configuration file; write the values in, or generate the file from a template at deploy time. The settings are validated by waldur_site_agent_nextcloud.schemas.NextcloudBackendSettingsSchema; a misspelt or missing required key is logged as a warning when the agent loads its configuration, and the backend refuses to start without the required ones. The backend also requires a storage component with accounting_type: limit.

STOMP settings reference

Key Default Description
stomp_enabled false Enable STOMP event-driven processing
stomp_membership_sync_enabled null Inherits stomp_enabled. Set false to keep HTTP polling for membership.

team_fetch_attempts (backend-level, non-configurable)

The Nextcloud backend sets team_fetch_attempts = 4 internally. On order-processing paths (including STOMP create-order events) the event can arrive before Waldur has committed the initial team membership row. The agent retries the team-member fetch up to 4 times (with a 3 s delay between attempts) if the list comes back empty. Other backends default to 1 (no retry); this higher value is specific to Nextcloud's create-order path.

Note: the retry only helps when the team is entirely absent. A non-empty but stale team (new member not yet committed) breaks on the first attempt.

Tests

cd plugins/nextcloud && uv run pytest tests/

Metadata

Release files for waldur-site-agent-nextcloud 1.0.8rc7

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for waldur-site-agent-nextcloud 1.0.8rc7
File Size Uploaded Provenance
waldur_site_agent_nextcloud-1.0.8rc7.tar.gz 18.1 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for waldur-site-agent-nextcloud 1.0.8rc7
File Interpreter ABI Platform
waldur_site_agent_nextcloud-1.0.8rc7-py3-none-any.whl Python 3 none any Details

Total release size: 33.3 kB

Release files / waldur_site_agent_nextcloud-1.0.8rc7.tar.gz

Download URL waldur_site_agent_nextcloud-1.0.8rc7.tar.gz
Size 18.1 kB
Tags Source
SHA-256 checksum
How to use checksums
ac23ad0c3057a748fc024824159ca29195f529530172d48bc582f62baf192ab4
BLAKE2b-256 checksum
How to use checksums
0740816d16a0371aefb178c8c1ad156a032e421a8ebe0a2f32f3ec1690ec7aa5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.23 {"installer":{"name":"uv","version":"0.12.23","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"12","id":"bookworm","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / waldur_site_agent_nextcloud-1.0.8rc7-py3-none-any.whl

Download URL waldur_site_agent_nextcloud-1.0.8rc7-py3-none-any.whl
Size 15.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ed70c460604e5908a04269512a3903059ad6942884dd778d2f48fa36d20d819a
BLAKE2b-256 checksum
How to use checksums
235e62f526c680443b724b13414390ffa24151314885c3ff75546178985e58d1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.23 {"installer":{"name":"uv","version":"0.12.23","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"12","id":"bookworm","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Security for waldur-site-agent-nextcloud 1.0.8rc7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page