26 lines
1.2 KiB
Markdown
26 lines
1.2 KiB
Markdown
|
# Architecture
|
||
|
|
||
|
The isle daemon is the central point around which all operations occur. Users of
|
||
|
the isle command-line tool (or, soon, a GUI) communicate with the daemon over a
|
||
|
local RPC socket to issue commands, for example to tell it to join a new network
|
||
|
or to retrieve the names of hosts in an already-joined network.
|
||
|
|
||
|
For every network which is joined, the isle daemon will create and manage
|
||
|
sub-processes to provide certain parts of its functionality. These include:
|
||
|
|
||
|
* A [nebula][nebula] instance to provide VPN functionality.
|
||
|
* A [dnsmasq][dnsmasq] instance to act as DNS server.
|
||
|
* Zero or more [garage][garage] instances, depending on how storage is
|
||
|
configured on the host, to provide the S3 storage layer.
|
||
|
|
||
|
The isle daemon considers the configuration and management of these
|
||
|
sub-processes to be an implementation detail. In other words, its RPC interface,
|
||
|
and therefore all user interfaces, do not expose members to the fact that these
|
||
|
sub-processes exist, or even that these projects are being used under the hood.
|
||
|
|
||
|
![Architectural diagram](./architecture.svg)
|
||
|
|
||
|
[nebula]: https://github.com/slackhq/nebula
|
||
|
[garage]: https://garagehq.deuxfleurs.fr/
|
||
|
[dnsmasq]: https://dnsmasq.org/doc.html
|