Hosts and services
Everything the server answers for hangs on two things: a host, which is a
hostname the server knows, and the services attached to it, which are what
that hostname does. example.com is a host; its DNS zone, its website and its
mail are three services on it. The server's own hostnames are hosts too,
with the system's services on them.
An account holder sees only their own hosts and services, in the vocabulary of Domains, zones, and services. Hosts and Services, in the admin app's System menu, show every host and every service on the server, the system's included.
Hosts
Hosts lists each hostname with its owner (an account, or System), the services on it, and one certificate badge: OK, Self-signed, Expired or None. A Self-signed badge carries, as its tooltip, the reason the last certificate round gave.
A host's page adds:
- Domain: the DNS zone the host belongs to. A host finds its zone by
walking up its own name, label by label, until it reaches a host that
carries a zone belonging to the same owner, and takes the closest one. So
shop.example.combelongs to the zoneexample.com, unless it is a zone of its own. - Provisioning Strategy, Last Provisioning, Reason and Last Attempt: how the host gets its certificate and how the last round ended. Certificates explains them.
- The Services on the host, each with its Role:
web,mail,domainorother. - The Certificates assigned to the host.
elpanctl host:list
elpanctl host:view <hostname or UUID>
host:view also prints the DNS records at the host. host:list accepts
--format=tsv or --format=jsonl for scripts, as every list command does.
A host without services
A host is created with its first service and removed, by a worker, once it carries no service and no mail address (a mailbox, a forwarder, a group). One left behind from before that rule existed is a dangling host:
elpanctl host:remove-dangling --dry-run
elpanctl host:remove-dangling
It asks about each host unless you pass --force, and re-checks the host
before removing it: one that gained a service or a mail address in the
meantime is skipped.
Services
Services lists every service on the server: hostname, type, owner and creation time. A service's page shows the same, with its Role, its Description, a Note when its owner wrote one, and the Generated DNS Records the service contributes to its zone.
elpanctl service:list
elpanctl service:list --owner=<username>
elpanctl service:list --owner=server
elpanctl service:list --type=<type>
The service types
An account's services:
| Type | What it is |
|---|---|
| DNS Zone | Answers DNS for the domain and every domain beneath it. The container the account's other services publish their records into. |
| Website | A website on the hostname, with the DNS records that point it at the account's group (Shared IP Address Groups) and automatic HTTPS. |
| Website Alias | Another hostname serving an existing website. |
| The domain sends and receives mail: MX, SPF, DKIM, DMARC and the autodiscovery records come from it. | |
| Mail Server | The access side of mail, webmail and client connections; each Mail service names the Mail Server its users connect through. |
| Identity Provider | An OpenID Connect provider on the hostname, where the account's domain users sign in. |
The server's own, owned by System, on the server hostname and its subdomains:
| Type | Hostname | What it is |
|---|---|---|
| Server | <server hostname> | The canonical server name and its settings. |
| DNS Zone | <server hostname> | The server's own zone. |
| Admin Panel | admin.<server hostname> | The admin app. |
| Control Panel | control.<server hostname> | Where account holders sign in. |
| Identity Provider | accounts.<server hostname> | The server's own OpenID Connect provider. |
| Incoming Mail Server | mail.<server hostname> | Receives mail from outside and delivers it to mailboxes on this server. |
| Outgoing Mail Server | mail-out.<server hostname> | Sends the system's mail out. |
| Bounce Handler | bounces.<server hostname> | Receives delivery failure reports for mail the server forwarded. |
| DNS Server | dns1.<server hostname>, dns2.<server hostname> | The server's own authoritative name servers. See How DNS publication works. |
| phpMyAdmin, Adminer | phpmyadmin.<…>, adminer.<…> | The database tools. |
service:remove refuses a service the server created and needs, and says
so.
Create a service
The account holder creates services in their panel; you create them with
the service:*:create commands, usually right after the account, as
Create an account
shows.
Refresh a host or a service
Each service keeps its configuration on disk and its DNS records in the zone, and regenerates both when something it depends on changes. When they look out of step with what the panel shows, ask for them again:
elpanctl service:refresh <service UUID>
elpanctl host:refresh <hostname>
service:refresh asks one service to regenerate its configuration; a
worker applies it. host:refresh regenerates the DNS records of every
service on the host, comparing them with what the zone already holds, so a
refresh that changes nothing publishes nothing.
Remove a service
elpanctl service:remove <service UUID>
It shows the service and asks before removing it (--force skips the
question, and is needed when there is no terminal to answer it). The
service's DNS records and, for a website, its vhost go with it. The
repository's rules hold here as they do in the account panel: a Mail Server
that other Mail services use, or an Identity Provider with client
applications, is refused with the reason.
The host stays, and a worker removes it once it has no service and no mail
address left; host:remove-dangling removes one that is left behind.
Removing the server's Admin Panel, Control Panel or Identity
Provider service takes down the sign-in it provides, and the devices and
passkeys registered on it. service:remove names what each one takes with
it before asking; only the Admin Panel service can be set up again
(service:adminpanel:init). An admin user who signs in with a passkey alone
gets back in with server:login or server:admin-user:reset-credentials
(see Break-glass on the host).