nextcloud/all-in-one · error · InvalidSettingConfigurationException
Domain must contain at least one dot!
Error message
Domain must contain at least one dot!
What it means
First syntactic check inside ConfigurationManager::setDomain() in the Nextcloud AIO mastercontainer: a submitted domain must contain at least one dot, i.e. it must be a multi-label DNS name, not a bare hostname. Violations throw InvalidSettingConfigurationException, which ConfigurationController::SetConfig converts into an HTTP 422 response whose body is exactly this message, displayed in the AIO web UI. The check runs before DNS validation and cannot be skipped by the 'skip domain validation' option.
Source
Thrown at php/src/Data/ConfigurationManager.php:599
}
public function getAioVersion() : string {
$path = DataConst::GetAioVersionFile();
if ($path !== '' && file_exists($path)) {
return trim((string)file_get_contents($path));
}
return '';
}
/**
* @throws InvalidSettingConfigurationException
*
* We can't turn this into a private validation method because of the second argument.
*/
public function setDomain(string $domain, bool $skipDomainValidation) : void {
// Validate that at least one dot is contained
if (!str_contains($domain, '.')) {
throw new InvalidSettingConfigurationException("Domain must contain at least one dot!");
}
// Validate that no slashes are contained
if (str_contains($domain, '/')) {
throw new InvalidSettingConfigurationException("Domain must not contain slashes!");
}
// Validate that no colons are contained
if (str_contains($domain, ':')) {
throw new InvalidSettingConfigurationException("Domain must not contain colons!");
}
// Validate domain
if (filter_var($domain, FILTER_VALIDATE_DOMAIN, FILTER_FLAG_HOSTNAME) === false) {
throw new InvalidSettingConfigurationException("Domain is not a valid domain!");
}
// Validate that it is not an IP-addressView on GitHub (pinned to 6b788eec5e)
Solutions
- Submit a fully qualified domain name such as 'cloud.example.com'
- Point a real (sub)domain at your server — a free deSEC or dynamic-DNS subdomain is sufficient
- Do not try a bare hostname: AIO's later DNS validation needs a resolvable dotted name, so a single label can never pass
Example fix
// before domain = 'mycloud' // after domain = 'cloud.example.com'
Defensive patterns
Strategy: validation
Validate before calling
$domain = trim($input);
if (!str_contains($domain, '.')) {
// reject before POSTing: AIO requires a dotted DNS name
$errors[] = 'Domain must contain at least one dot';
} Try / catch
use AIO\Data\InvalidSettingConfigurationException;
try {
$configurationManager->setDomain($domain, $skipDomainValidation);
} catch (InvalidSettingConfigurationException $e) {
// designed user-facing channel: the controller returns the message as HTTP 422 body
$formErrors[] = $e->getMessage();
} Prevention
- Configure a real DNS (sub)domain before touching the AIO domain field
- Validate the domain client-side (must contain a dot) before submitting the form
- Never submit hostnames, IPs or URLs — only bare dotted DNS names
When it happens
Trigger: POSTing the AIO settings form (POST /api/docker/config) with domain='mycloud', 'server' or 'nextcloud'; a typo that drops the TLD ('cloud.example'); pasting an internal single-label hostname.
Common situations: Home-lab users without a purchased domain trying a LAN hostname; users coming from tools that accept single-label hosts; scripts posting the config API with an unqualified name.
Related errors
- Domain must not contain slashes!
- Domain must not contain colons!
- Domain is not a valid domain!
- Please enter a domain and not an IP-address!
- DNS config is not set for this domain or the domain is not a
AI-assisted analysis of nextcloud/all-in-one@6b788eec5e (2026-08-21).
Data as JSON: /api/errors/623265b0d70d7004.
Report an issue: GitHub.