Welcome to oCIS, the stylish file-sync and portion platform, which is per our files and ride with the PHP based entirely entirely ownCloud server.
To fabricate a in actuality federated storage structure oCIS breaks down the primitive ownCloud 10 person particular namespace, which is assembled on the server aspect, and makes the particular person parts accessible to possibilities as storage spaces and storage location registries.
The map below shows the core ideas that are the muse for the present structure:
- Terminate person devices can fetch the checklist of storage spaces an particular person has entry to, by querying one or a pair of storage location registries. The checklist comprises a weird and wonderful endpoint for every storage location.
- Storage location registries put together the checklist of storage spaces an particular person has entry to. They may possibly well additionally subscribe to storage spaces in teach to fetch notifications about adjustments on behalf of an discontinuance customers cell or desktop client.
- Storage spaces command a group of files and folders. A customers non-public files are contained in a storage location, a community or project drive is a storage location, and even incoming shares are handled and implemented as storage spaces. Every with properties like owners, permissions, quota and kind.
- Storage providers can serve a pair of storage spaces. At an oCIS occasion, there shall be a dedicated storage provider to blame for customers non-public storage spaces. There shall be a pair of, both to shard the weight, present varied ranges of redundancy or toughen personalized workflows. Or there shall be correct one, net net page hosting all kinds of storage spaces.
As an illustration, Einstein may possibly well additionally are wanting to portion something with Marie, who has an yarn at a definite identity provider and makes use of a definite storage location registry. The task makes use of OpenID Join (OIDC) for authentication and would view something like this:
To portion something with Marie, Einstein would begin
https://cloud.zurich.take a look at. His browser hundreds oCIS net and items a login create that makes use of the OpenID Join Discovery to view up the OIDC issuer. For
email@example.com a look at he’ll discontinuance up at
https://idp.zurich.take a look at, authenticate and fetch redirected serve to
https://cloud.zurich.take a look at. Now, oCIS net will use a identical discovery to view up the storage location registry for the yarn, per the electronic mail (or username). He’ll leer that
https://cloud.zurich.take a look at may possibly be his storage registry that the receive UI will use to load the checklist of storage spaces that are on the market in to him.
After locating a folder that he needs to portion with Marie he enters her electronic mail
firstname.lastname@example.org a look at within the sharing dialog to grant her the editor role. This, in map, creates a current storage location that is registered with the storage location registry at
https://cloud.zurich.take a look at.
Einstein copies the URL within the browser (or an electronic mail with the same URL is disbursed routinely, or the storage registries use a serve-channel mechanism). It comprises basically the most particular
storage location identity and a direction relative to it:
https://cloud.zurich.take a look at/#/spaces/716199a6-00c0-4fec-93d2-7e00150b1c84/a/rel/direction.
When Marie enters that URL she shall be offered with a login create on the
https://cloud.zurich.take a look at occasion, on yarn of the portion modified into once created on that enviornment. If
https://cloud.zurich.take a look at trusts her OpenID Join identity provider
https://idp.paris.take a look at she can be able to log in. This time, the storage location registry discovery will come up with
https://cloud.paris.take a look at though. Since that registry is varied than the registry tied to
https://cloud.zurich.take a look at oCIS net can view up the storage location
716199a6-00c0-4fec-93d2-7e00150b1c84 and register the WebDAV URL
https://cloud.zurich.take a look at/dav/spaces/716199a6-00c0-4fec-93d2-7e00150b1c84/a/rel/direction in Marie’s storage location registry at
https://cloud.paris.take a look at. When she accepts that portion her possibilities shall be in a location to sync the present storage location at
https://cloud.zurich.take a look at.
The oCIS runtime permits us to dynamically put together companies working in a single task. We use suture to fabricate a supervisor tree that starts every service in a dedicated goroutine. By default oCIS will initiate all built-in oCIS extensions in a single task. Particular person companies may possibly well additionally be moved to varied nodes to scale-out and meet particular performance requirements. A lag-micro based entirely entirely registry permits companies in a pair of nodes to create a disbursed microservice structure.
Every oCIS extension makes use of ocis-pkg, which implements the lag-micro interfaces for servers to register and possibilities to lookup nodes with a service registry.
We’re following the 12 Element methodology with oCIS. The uniformity of companies also permits us to utilize the same portray, logging and configuration mechanism. Configurations are forwarded from the
oCIS runtime to the particular person extensions.
Whereas the lag-micro framework presents abstractions as effectively as implementations for the varied parts in a microservice structure, it makes use of a extra developer centered runtime philosophy: It is former to fetch companies from a repo, bring together them on the waft and begin them as particular person processes. For oCIS we decided to utilize a extra admin proper runtime: It is seemingly you’ll possibly presumably fetch a single binary and begin the contained oCIS extensions with a single
bin/ocis server. This also makes packaging more uncomplicated.
We use ocis-pkg to configure the default implementations for the lag-micro grpc server, client and mdns registry, swapping them out as valuable, e.g. to utilize the kubernetes registry plugin.
Plenty of embedded companies in oCIS are built upon the REVA runtime. We decided to bundle a pair of of the CS3 companies to logically community them. A home storage provider, which is facing metadata, and the corresponding files provider, which is facing up and fetch, are one example. The frontend with the oc flavoured webdav, ocs handlers and a files-gateway are one other.
Interacting with oCIS entails a mess af APIs. The server and all possibilities rely on OpenID Join for authentication. The embedded LibreGraph Join may possibly well additionally get replaced with any varied OpenID Join Identification Provider. Potentialities use the WebDAV based entirely entirely oc sync protocol to manipulate files and folders, ocs to manipulate shares and TUS to upload files in a resumable formula. On the server aspect REVA is the reference implementation of the CS3 apis which is defined the use of protobuf. By embedding libregraph/idm, oCIS presents a LDAP interface to fabricate accounts, at the side of pals on the market to firewalls and varied systems. Within the lengthy flee, we are taking a gape into the Microsoft Graph API, which is per odata, as a effectively-defined REST/JSON dialect for the present endpoints.
We flee a gargantuan take a look at suite, which originated in ownCloud 10 and continues to develop. An intensive description may possibly well additionally be stumbled on within the developer clinical doctors for checking out.
bin/ocis server will initiate the following companies, all of which is ready to be scaled and deployed on a single node or in a cloud native atmosphere, as valuable.