STATUS: draft
This document describes frontend services needed to manage PCloud core functionalities, such as: users with groups they belong to and roles, network infrastructure, application store/manager and home/launcher application.
PCloud out of the box comes with capabilities to manage users, give them access to only specific applications installed on the platform, store so administrators can install applications from various repositories onto the platform, and launcher so platform users can easily find and use installed applications.
Goal of this document is not to provide implementation details. Technichal implementation details for each service must be decided separately. This document merely draws the big picture to act as a starting point for further discussions.
Each PCloud envrionment consists of two virtual networks: public and private. Applications installed on public network are reachable globally, while applications installed on private network require user to be logged into the PCloud VPN. Reachability does not guarantee that user will be able to use the application, applications are free to restrict access to specific users or groups of users.
To achieve such security, PCloud platform must implement following concepts (each of which will be described in detail later in the document):
Functinoalities described above must be split into number of services, each of which is briefly described below.
This is partially implemented with basic UI. Current implementation can be found at core/auth/ui. It uses Ory Kratos to store user identities and Ory Hydra to implement OAuth2 flows. Notion of groups is not currently implemented.
User schema must be extended with:
Application Manager itself does not host application configurations developed by PCloud or any other third-party provider, that is the job of the Application Repository. Application Repository is an external HTTP service listing (in YAML/JSON format) set of published application configurations which can be installed onto the platform. For example third-party developer can host their own Application Repository or use already existing one to publish their application. PCloud must develop first-party repository to help kickstart the platform, but over time number of third-party repositories must emerge to create healty and competitive environment for application developers.
What application configuration looks like is described in a separate document: TBD
Application discovery flow must look like:
Application manager must let administrator:
Initial implementations can be found at:
core/installer/welcome/appmanager.goapps/app-repositoryCurrent implementation secures private network using Headscale which is an OSS (open-source software) implementation of Tailscale. Headscale has it's own notion of users and groups, and can make any shared service accessible to specific groups. So changes in group membersip must be automatically propagated from User Manager to Headscale.
On top of Headscale based security, applications implementing OIDC (OpenID Connect) protocol can tap into User Manager service to gather information regarding currently logged in user and their groups, and make decisions accordingly. Applications which do not implement OIDC themselves, must have OAuth2 Proxy running in front of them.