Public notices
This page tells how to publish the notices of a hosting provider: the accessibility statement, where the data is, and a privacy policy.
Publish the accessibility statement
The panel serves an accessibility statement at /accessibility/. The statement
is an honest default for a self-assessment, and two parts of it are yours. Set
them in the options of the panel component:
accessibilityStatement.contact: amailto:orhttps:URL for feedback.accessibilityStatement.enforcementUrl: the page of the enforcement body that applies to you. A public sector body must give this.
The statement covers the panel only. It says that it was prepared by automated
tests, and that no person did a manual audit. Do a manual audit before you give
the statement to a public tender. The list of problems is in the template
panel/src/panel/templates/accessibility.html.
Publish where the data is
GDPR Art. 28 and Data Act Art. 28 want a hosting provider to publish where the data is and who handles it. The panel shows this on the page of each deployment and on the public page /provider/, which needs no account.
Declare it in the repository variable PROVIDER_INFO of the deployment of the hosting provider, as JSON:
{
"legalEntity": { "name": "Example Hosting B.V.", "country": "NL" },
"dataLocation": { "country": "NL", "dataCenter": "Example Amsterdam 1" },
"subProcessors": [
{ "name": "Example Registrar", "purpose": "Registration of the domain names", "country": "NL" }
]
}
Deploy the hosting provider again after a change.
You can also declare it in the provider option of the panel, in default-config of the group hosting-provider. This value has priority over PROVIDER_INFO. In the leaf that composes the groups:
composed = panel.lib.composedGroups;
groups = composed // {
hosting-provider = composed.hosting-provider // {
default-config = lib.recursiveUpdate composed.hosting-provider.default-config {
applications.panel.provider = {
legalEntity = {
name = "Example Hosting B.V.";
country = "NL";
};
dataLocation = {
country = "NL";
dataCenter = "Example Amsterdam 1";
};
subProcessors = [
{
name = "Example Registrar";
purpose = "Registration of the domain names";
country = "NL";
}
];
};
};
};
};
| Option | Value |
|---|---|
legalEntity.name |
The registered name of the hosting provider, as in the contract. |
legalEntity.country |
The country where the hosting provider is established. |
dataLocation.country |
The country of the data center. |
dataLocation.dataCenter |
The name of the data center. |
subProcessors |
Each party that handles personal data for the hosting provider, with its name, purpose and country. Use the list in Annex IV. |
A country is an ISO 3166-1 alpha-2 code in upper case, for example NL. The evaluation checks only the form of the code: two upper case letters. Thus check the code yourself.
Set default-config as the last step, because core.lib.foldGroupExtensions sets it again. Do not set the value in a module of the group or in extraModules: a deploy bakes default-config into the configuration of the node, but it evaluates the node from the groups of the operator tree, thus such a module does not arrive. A DEPLOYMENT that names applications.panel replaces the baked entry, thus it must hold provider as well.
A deploy of the panel node publishes a change. The statement applies to all deployments of the group, because a deployment has no site of its own. These items are not available:
- A statement for each hypervisor. The statement does not describe a group that has hypervisors at more than one site.
- A site that the operator chooses.
- A Garage region from the site.
garageRegionstays a separate value.
Without provider, the deployment page and /provider/ show "Not declared".
A hosting provider with its own front-end publishes this in its own way. The API has no such route, and such a hosting provider does not need the provider option.
Publish a privacy policy
Set the deploy variable PRIVACY_POLICY_URL to the https URL of your privacy
policy. The panel then links to it from each page, and each operator deployment
uses it unless the operator sets privacyPolicyUrl (see the operator
configuration). Without the variable, the panel shows no
link and an operator deployment uses only its own privacyPolicyUrl. A change
of the URL redeploys each node. An operator deployment that exists gets the new
URL on its next deploy. On a mastodon node, the link replaces a policy that an
administrator wrote in mastodon. That text comes back if the URL is removed.