Acting on—
hub
—
Needs attention
—
Events, 24h
—
Hosts
—
Services down
Fleet
| Host | Family | Address |
|---|
Services
| Unit | State |
|---|
Updates & package changes
Press the button. Read-only: it simulates the upgrade, it installs nothing.
Recentclick a row for detail
Notifications
Commands run
Packages and Docker
Privileged (sudo)
Replayable sudo sessions replay on the host: sudo sudoreplay <TSID>
—
Accounts “Can reach root” is the real question — not group membership
| User | Role | Can reach root | Password | Allowed from | Key fingerprint | Actions |
|---|
Add account
Username
Role
Allowed from
Their SSH public key
What is “allowed from”? The public IP address their connection
arrives from — not their wifi name and not a 192.168 address. Ask them to run
curl ifconfig.me and send you the result. Home addresses often
change, so pin a range like 84.54.90.* rather than one address.
Leave blank to use the office default. You can widen it later from the table above, and
Access shows where each account has actually connected from.
Add existing runner
Runner
Allowed from (blank = runner's own)
Runners are defined once, on the Runners page, then added to
whichever hosts they'll actually run jobs on — same identity, same key, same audit
trail everywhere. Defining a new runner happens there, not here.
Runner fleet the runner containers themselves — health, restart, power
| Runner | Node / vmid | State | Runners inside (executor) | Service | Jobs | Oldest job | Disk | Actions |
|---|---|---|---|---|---|---|---|---|
| press “Check now” | ||||||||
Restart runner restarts only the
gitlab-runner service inside the container; jobs in flight fail and GitLab retries them.
Reboot restarts the whole container. Power off is a graceful shutdown
(60 s); Force stop is the hard stop for a container that ignores it. Every
action is recorded in Activity under your name. A runner is called stuck when its
oldest job container has run for more than 3 hours.
Runners shared CI/automation identities — add one to a host from the Accounts page
| Name | Username | Sources | Key fingerprint | Actions |
|---|
Define new runner
Name
Username
Allowed from
Runner's SSH public key — optional, usually leave blank
Name is just a label — it's what shows up everywhere in the UI
and in logs, so make it recognisable (GitLab shows a short token in its runner list;
put that here too). Username is the actual Linux account name this runner gets
on every host it's added to — must be a valid username, shared across hosts. Defining
a runner here does not create any account anywhere yet; add it to a host from that
host's Accounts page.
Leave the key blank unless you have a specific reason not to. A runner authenticates with a short-lived certificate signed by the Vault SSH CA, and sshd validates that against its trusted CA — it never reads the account's authorized_keys at all. A key registered here gets planted on every host this runner is later added to, never expires, and carries no forced command — a permanently weaker way in, sitting next to the locked-down one.
Leave the key blank unless you have a specific reason not to. A runner authenticates with a short-lived certificate signed by the Vault SSH CA, and sshd validates that against its trusted CA — it never reads the account's authorized_keys at all. A key registered here gets planted on every host this runner is later added to, never expires, and carries no forced command — a permanently weaker way in, sitting next to the locked-down one.
Blocked now
| Address |
|---|
Never blocked
Brute-force protection never locks these out. Keep your own network here.
| Address or range |
|---|
Who may connect, and from where a key used outside its pinned range is refused before authentication finishes
| User | Role | Pinned sources | Seen connecting from |
|---|
Block history
Take temporary access
Database
Access
Minutes
Issued for
Reason (recorded)
PostgreSQL enforces the deadline itself, with
VALID UNTIL — the credential stops working whether or not
anything cleans up afterwards. The database is never exposed to issue it; the statement
runs inside its own container.
Credentials still live
| Username | Expires | Database |
|---|
Hub-wide. The host selector does not apply to Vault.
Vault secrets
| Path |
|---|
New path (folders separated by /)
Editing changes here are what the next deploy job fetches — save takes effect immediately
| Key | Value |
|---|
Raw journal read-only — the panel account cannot write or open a shell
Pick a unit.