Islandr
master
master
v
0.0.0
Islandr
Self-hosted WireGuard management platform. Peer lifecycle, RBAC access control, nftables enforcement.
Info
Context views
Container views
Component views
Deployment views
Dependencies
Decisions
Islandr Backend
Islandr
[Software System]
Islandr Backend
[Container: Quarkus 3 / Java 21 (native binary)]
auth
[Component:
JAX-RS
+
CDI]
Session
management,
local
login
(per-user
PBKDF2
password
or
ENV
admin),
OIDC
callback,
admin
bootstrap
(seeds
admin@local),
session
filter.
identity
[Component:
CDI]
OIDC
provider
registry,
JWKS
cache,
ID
token
verification.
peer
[Component:
JAX-RS
+
CDI
+
@Scheduled]
Peer
lifecycle
(create,
enable,
disable,
delete),
QR
code
generation,
activity
poller.
acl
[Component:
JAX-RS
+
CDI]
Sites,
Resources,
ResourcePorts,
Roles,
RoleResourceGrants,
ACL
matrix
API.
Browser-RDP
WebSocket
proxy
(IronRDP
RDCleanPath)
with
a
per-port
zero-trust
grant
check.
firewall
[Component:
CDI]
Full
ruleset
computation
from
ACL
model,
nft
-c
-f
validation,
atomic
nft
-f
reload.
Real/Mock/DryRun
adapters.
wg
[Component:
CDI]
WireGuard
CLI
adapter.
Real/Mock/DryRun
implementations
selected
via
islandr.wg.mode
config.
user
[Component:
JAX-RS
+
CDI]
User
management,
avatar
resolution
(Gravatar
→
MS365
photo
→
deterministic
initials).
audit
[Component:
CDI]
Immutable
append-only
audit
log.
Written
on
every
mutating
action
across
all
packages.
settings
[Component:
JAX-RS
+
CDI]
Runtime
instance
settings
(WG
config,
private
key
retention,
OIDC
providers).
Stored
in
DB,
audited.
dashboard
[Component:
JAX-RS
+
CDI]
Dashboard
aggregation:
online
peer
count,
audit
summary,
firewall
status.
dns
[Component:
CDI]
Minimal
DNS
resolver
(UDP/best-effort
TCP
:53),
opt-in
in
Settings.
Authoritative
for
the
managed
resource
zone
(Resource.dnsName),
ACL-filtered
answers
(NXDOMAIN
for
resources
the
querying
peer
has
no
grant
on);
everything
else
forwarded
upstream
byte-for-byte,
unparsed.
Hand-rolled
RFC
1035
wire
format,
no
library
(ADR-0023).
tls
[Component:
CDI]
TLS
keystore
management.
Hot-swaps
between
dummy
self-signed
cert
and
an
admin-uploaded
or
ACME-issued
cert
at
runtime,
no
restart
(ADR-0015).
acme
[Component:
JAX-RS
+
CDI
+
@Scheduled]
Hand-rolled
RFC
8555
ACME
client.
Requests,
validates
(HTTP-01
or
DNS-01
manual
mode),
and
renews
a
certificate
when
ACME
is
enabled
in
Settings;
no
certificate
library
(ADR-0019,
ADR-0020).
proxy
[Component:
CDI]
Host-side
Unix-socket-proxy
channel
for
wg/nft
when
the
backend
runs
unprivileged
in
a
container.
Adapter-mode
resolution
(explicit
>
container-detected
>
mock),
degraded
'enforcement
unavailable'
status
(ADR-0012).
discovery
[Component:
JAX-RS
+
CDI]
Admin-triggered
device
discovery:
enumerates
a
site's
CIDR,
probes
host
liveness
with
unprivileged
sockets,
fingerprints
a
resource
type
from
open
ports,
bulk-imports
the
reviewed
selection
as
Resource
rows
(ADR-0014).
admin
[Component:
JAX-RS
+
CDI]
Instance
config
export/import,
seeded-data
timestamp
repair
on
import,
version/update-check
endpoint.
OIDC
Provider
[Software
System]
Authenticates
users.
Microsoft
365
or
Google
Workspace.
WireGuard
[Software
System]
Linux
kernel
VPN
module.
Managed
via
wg
CLI.
nftables
[Software
System]
Linux
kernel
packet
filter.
Enforces
ACL
rules
generated
by
Islandr.
Let's
Encrypt
(ACME
CA)
[Software
System]
Fully
optional
—
only
contacted
when
an
admin
sets
a
domain
and
enables
ACME
in
Settings.
Islandr's
own
hand-rolled
RFC
8555
client
requests,
validates
(HTTP-01),
and
renews
a
certificate
directly;
no
certificate
library,
no
external
ACME
client
(ADR-0019).
Resource
Host
[Software
System]
A
machine
behind
the
VPN
inside
a
site
(e.g.
an
RDP
server).
For
browser-based
RDP
the
hub
connects
to
it
directly
over
TLS
and
relays
to
the
browser.
DNS
Upstream
[Software
System]
Fully
optional
—
only
reached
when
the
resource
DNS
resolver
is
enabled
in
Settings.
Public
or
admin-configured
recursive
resolver(s)
(default
1.1.1.1
/
8.8.8.8,
Settings.dnsResolverUpstream)
the
hub
forwards
any
query
outside
its
own
managed
resource
zone
to,
verbatim
and
unparsed
(ADR-0023).
Delegates OIDC token verification
Looks up or creates user on OIDC login
Logs login events
Adds / removes peers from WireGuard interface
Triggers full ruleset recompute on peer state change
Logs all peer mutations
Triggers full ruleset recompute on grant change
Logs ACL mutations
Browser-RDP RDCleanPath proxy over TLS
[TCP/TLS]
Logs user mutations
Logs settings changes
Triggers recompute on site-CIDR or resource change
Uploads/replaces certificate PEM, reads certificate info
nft CLI calls
[ProcessBuilder]
Delegates nft calls when containerized (socket mode)
[islandr.nft.mode=socket]
wg CLI calls
[ProcessBuilder]
Delegates wg calls when containerized (socket mode)
[islandr.wg.mode=socket]
Logs enforcement mode changes
JWKS fetch
[HTTPS]
ACL-scoped grant check for filtered zone answers
[AclService.hasAnyGrant]
Forwards non-zone queries verbatim
[UDP/TCP 53]
ACME directory, order, and HTTP-01/DNS-01 challenge requests
[HTTPS]
HTTP-01 challenge callback
[HTTP]
Installs renewed certificate into the keystore
Logs renewal attempts and outcomes
Unprivileged liveness/port probes over the existing WireGuard route
[TCP/UDP]
Bulk-imports reviewed hosts as Resource rows
Logs config import/export
Component View: Islandr - Islandr Backend
C4 Level 3 — Backend Components
Show legend
Component
Software
System,
External
Relationship
Islandr
[Software System]
Islandr Backend
[Container: Quarkus 3 / Java 21 (native binary)]
auth
[Component:
JAX-RS
+
CDI]
Session
management,
local
login
(per-user
PBKDF2
password
or
ENV
admin),
OIDC
callback,
admin
bootstrap
(seeds
admin@local),
session
filter.
identity
[Component:
CDI]
OIDC
provider
registry,
JWKS
cache,
ID
token
verification.
peer
[Component:
JAX-RS
+
CDI
+
@Scheduled]
Peer
lifecycle
(create,
enable,
disable,
delete),
QR
code
generation,
activity
poller.
acl
[Component:
JAX-RS
+
CDI]
Sites,
Resources,
ResourcePorts,
Roles,
RoleResourceGrants,
ACL
matrix
API.
Browser-RDP
WebSocket
proxy
(IronRDP
RDCleanPath)
with
a
per-port
zero-trust
grant
check.
firewall
[Component:
CDI]
Full
ruleset
computation
from
ACL
model,
nft
-c
-f
validation,
atomic
nft
-f
reload.
Real/Mock/DryRun
adapters.
wg
[Component:
CDI]
WireGuard
CLI
adapter.
Real/Mock/DryRun
implementations
selected
via
islandr.wg.mode
config.
user
[Component:
JAX-RS
+
CDI]
User
management,
avatar
resolution
(Gravatar
→
MS365
photo
→
deterministic
initials).
audit
[Component:
CDI]
Immutable
append-only
audit
log.
Written
on
every
mutating
action
across
all
packages.
settings
[Component:
JAX-RS
+
CDI]
Runtime
instance
settings
(WG
config,
private
key
retention,
OIDC
providers).
Stored
in
DB,
audited.
dashboard
[Component:
JAX-RS
+
CDI]
Dashboard
aggregation:
online
peer
count,
audit
summary,
firewall
status.
dns
[Component:
CDI]
Minimal
DNS
resolver
(UDP/best-effort
TCP
:53),
opt-in
in
Settings.
Authoritative
for
the
managed
resource
zone
(Resource.dnsName),
ACL-filtered
answers
(NXDOMAIN
for
resources
the
querying
peer
has
no
grant
on);
everything
else
forwarded
upstream
byte-for-byte,
unparsed.
Hand-rolled
RFC
1035
wire
format,
no
library
(ADR-0023).
tls
[Component:
CDI]
TLS
keystore
management.
Hot-swaps
between
dummy
self-signed
cert
and
an
admin-uploaded
or
ACME-issued
cert
at
runtime,
no
restart
(ADR-0015).
acme
[Component:
JAX-RS
+
CDI
+
@Scheduled]
Hand-rolled
RFC
8555
ACME
client.
Requests,
validates
(HTTP-01
or
DNS-01
manual
mode),
and
renews
a
certificate
when
ACME
is
enabled
in
Settings;
no
certificate
library
(ADR-0019,
ADR-0020).
proxy
[Component:
CDI]
Host-side
Unix-socket-proxy
channel
for
wg/nft
when
the
backend
runs
unprivileged
in
a
container.
Adapter-mode
resolution
(explicit
>
container-detected
>
mock),
degraded
'enforcement
unavailable'
status
(ADR-0012).
discovery
[Component:
JAX-RS
+
CDI]
Admin-triggered
device
discovery:
enumerates
a
site's
CIDR,
probes
host
liveness
with
unprivileged
sockets,
fingerprints
a
resource
type
from
open
ports,
bulk-imports
the
reviewed
selection
as
Resource
rows
(ADR-0014).
admin
[Component:
JAX-RS
+
CDI]
Instance
config
export/import,
seeded-data
timestamp
repair
on
import,
version/update-check
endpoint.
OIDC
Provider
[Software
System]
Authenticates
users.
Microsoft
365
or
Google
Workspace.
WireGuard
[Software
System]
Linux
kernel
VPN
module.
Managed
via
wg
CLI.
nftables
[Software
System]
Linux
kernel
packet
filter.
Enforces
ACL
rules
generated
by
Islandr.
Let's
Encrypt
(ACME
CA)
[Software
System]
Fully
optional
—
only
contacted
when
an
admin
sets
a
domain
and
enables
ACME
in
Settings.
Islandr's
own
hand-rolled
RFC
8555
client
requests,
validates
(HTTP-01),
and
renews
a
certificate
directly;
no
certificate
library,
no
external
ACME
client
(ADR-0019).
Resource
Host
[Software
System]
A
machine
behind
the
VPN
inside
a
site
(e.g.
an
RDP
server).
For
browser-based
RDP
the
hub
connects
to
it
directly
over
TLS
and
relays
to
the
browser.
DNS
Upstream
[Software
System]
Fully
optional
—
only
reached
when
the
resource
DNS
resolver
is
enabled
in
Settings.
Public
or
admin-configured
recursive
resolver(s)
(default
1.1.1.1
/
8.8.8.8,
Settings.dnsResolverUpstream)
the
hub
forwards
any
query
outside
its
own
managed
resource
zone
to,
verbatim
and
unparsed
(ADR-0023).
Delegates OIDC token verification
Looks up or creates user on OIDC login
Logs login events
Adds / removes peers from WireGuard interface
Triggers full ruleset recompute on peer state change
Logs all peer mutations
Triggers full ruleset recompute on grant change
Logs ACL mutations
Browser-RDP RDCleanPath proxy over TLS
[TCP/TLS]
Logs user mutations
Logs settings changes
Triggers recompute on site-CIDR or resource change
Uploads/replaces certificate PEM, reads certificate info
nft CLI calls
[ProcessBuilder]
Delegates nft calls when containerized (socket mode)
[islandr.nft.mode=socket]
wg CLI calls
[ProcessBuilder]
Delegates wg calls when containerized (socket mode)
[islandr.wg.mode=socket]
Logs enforcement mode changes
JWKS fetch
[HTTPS]
ACL-scoped grant check for filtered zone answers
[AclService.hasAnyGrant]
Forwards non-zone queries verbatim
[UDP/TCP 53]
ACME directory, order, and HTTP-01/DNS-01 challenge requests
[HTTPS]
HTTP-01 challenge callback
[HTTP]
Installs renewed certificate into the keystore
Logs renewal attempts and outcomes
Unprivileged liveness/port probes over the existing WireGuard route
[TCP/UDP]
Bulk-imports reviewed hosts as Resource rows
Logs config import/export
Component
Software
System,
External
Relationship
Component View: Islandr - Islandr Backend [
svg
|
png
|
puml
] [legend:
svg
|
png
|
puml
]