{peer.notes}
} +
setQrKey((k) => k + 1)} />
+ ) : (
+ {config || "…"}
+ {text}
++ Signed in as {me?.username} ({me?.role}). +
+A code from your authenticator app is required at every sign-in.
++ {me.recoveryCodesLeft} recovery code{me.recoveryCodesLeft === 1 ? "" : "s"} left. +
+ {!disabling ? ( + + ) : ( + + )} + > + ) : ( + <> +Add a time-based one-time code from an authenticator app (Aegis, Google Authenticator, 1Password, and so on).
+ + > + )} +| + | Signed in | +Last seen | +From | +Browser | +
|---|---|---|---|---|
| {s.current && this one} | +{dateTime(s.createdAt)} | +{ago(s.lastSeenAt, now)} | +{s.ip} | ++ {s.userAgent} + | +
Each of these signs you in once if you lose your authenticator. Keep them somewhere safe; they are not shown again.
+Every administrative action, newest first. The last 5,000 entries are kept.
+| When | +Who | +Action | +Target | +Detail | +From | +
|---|---|---|---|---|---|
| {dateTime(e.at)} | +{e.actor} | ++ {e.action} + | +{e.target} | +{e.detail} | +{e.ip} | +
{status ? `${status.interface} on UDP ${status.listenPort} · ${status.backend} data plane` : " "}
+wireguard kernel module on the host for several times the throughput.
+ net.ipv4.ip_forward=1 in the container's sysctls.
+ | sysctl | +wanted | +current | +
|---|---|---|
| {s.key} | +{s.wanted} | ++ {s.current || "?"} {s.applied ? ok : not set} + | +
Values marked "not set" are global sysctls the container may not change. Apply them on the host; see docs/performance.md.
} +| Peer | +Address | +Endpoint | +Session | +Handshake | +Rate | +Transfer | +
|---|---|---|---|---|---|---|
| + + + {p.name} + + | +{p.ipv4} | +{l.endpoint ?? "—"} | +{duration(l.connectedSince, now)} | +{ago(l.lastHandshake, now)} | ++ ↓ {rate(l.rxRate)} · ↑ {rate(l.txRate)} + | ++ {bytes(l.rx)} / {bytes(l.tx)} + | +