Just Dashboard / Docs
Administration

Linked servers

Link a Just Dashboard to your just-dashboard.com account to see its health and reach it from one page, and what a linked server shares.

Linking is optional. A Just Dashboard that is never linked talks to nothing but GitHub, for its own update check. A linked one calls just-dashboard.com every 30 seconds with a short status report and listens for the actions you allowed. The site never connects to your server: your dashboard stays reachable only on your tailnet or through an SSH tunnel, exactly as before.

Linking arrives in the Just Dashboard release after 0.8.2. Earlier versions have no Settings → just-dashboard.com page and no link command.

The server starts the link, so no password or token is ever typed into a terminal. It asks the site for a short code, and you approve that code while signed in. There are three ways to start, and they all do the same thing:

  • While installing. The installer asks Link this server to your just-dashboard.com account? The default is no. Answer yes, or pass --link, and it prints the code after the dashboard is healthy. --link-scope operate or --link-scope maintain asks for a wider scope; --no-link skips the question. The install finishes whether or not the link does.
  • From the dashboard. Open Settings → just-dashboard.com with an administrator account, choose a scope, then Link. The page shows the code and an Approve on just-dashboard.com button.
  • From the terminal. In the dashboard's folder on the server, run sudo ./scripts/manage.sh link, optionally followed by observe, operate or maintain.

Then open the approval page (the button, the printed address, or Servers → Link a server on the site), sign in with Google if asked, and enter the code. The page shows what the server said about itself: its name, hostname, version, system, the address the request came from, and its key fingerprint. Compare the fingerprint with the one on the server's Settings → just-dashboard.com page, then choose Approve or Deny.

A code is good for fifteen minutes and can be approved once. Five wrong codes in fifteen minutes pause code entry for your account. An account can link up to 25 servers.

Choose what it shares

The scope is chosen on the server and enforced there. The site only offers the controls the server reports it will accept, and the server checks every action against its own scope before running it, whatever the site asks.

ScopeSharesLets the site
ObserveVersion and update state, OS, kernel and uptime, the way in, CPU, memory, disk, load and network, container and backup counts, alerts firingRefresh the snapshot
OperateEverything in Observe, plus container, stack, backup job and last-deployed project namesAlso start, stop and restart containers, restart stacks, run a backup job now
MaintainThe same as OperateAlso install a dashboard update, set automatic updates, restart the dashboard

Observe is the default. To widen or narrow it later, change the scope on Settings → just-dashboard.com; the site follows within a heartbeat.

What a server shares

Every 30 seconds, and right after an action finishes, a linked server sends:

  • Server: its name, version, the newest version it knows of and whether an update is breaking, the state of an update in progress, its scope, uptime, OS, kernel and architecture, and its automatic-update policy.
  • Access: whether it is reached over Tailscale or an SSH tunnel, its address and port, its certificate mode, and on a Tailscale install its MagicDNS name and tailnet IPv4 address.
  • Metrics: CPU, load, memory and swap use, the fullest disk and its mount point, network throughput, CPU steal and CPU pressure.
  • Counts: running, stopped and unhealthy containers; backup jobs, the last run and failures; deployment projects and the last run.
  • Alerts firing now: their kind, subject, reading and start time. At Observe, an alert about a container or a backup job leaves out its name.
  • At Operate and above, also the names, images and states of containers, the Compose stacks, the backup jobs, and the name of the last project deployed.

It never sends .env contents, the allowlist, dashboard accounts, API keys, file paths beyond mount points, logs, connection strings, deployment variables, or backup credentials. The site keeps seven days of the metrics above to draw the last day's charts.

Use the servers page

Servers on the site lists every linked server with its status, CPU, memory and disk, version and alerts. A server that misses three heartbeats in a row shows as Offline. Each server's page has:

  • Access. A Tailscale install gets Open dashboard, which works only from a device on the same tailnet. Every install gets the SSH tunnel command, ssh -N -L 8443:localhost:8443 you@your-server, with the server's own port. The server does not know the address you reach it by, so fill in the SSH user and host once and the command is ready to copy. See Private access.
  • Actions within the server's scope. Restart and stop take a second press. An action waits for the server and lapses after ten minutes if it does not check in. The result, and anything the server refused, appears under Recent actions.
  • Updates. The installed version against the newest release, with each release in between. At Maintain, Install and Restart dashboard ask you to type the server's name first. Automatic updates sets which releases the server installs on its own (off, patch releases only, or every release) and in which hours of its local time. The server keeps the policy and runs it itself, so the site being unreachable never starts or blocks an update. It never installs a release marked breaking on its own, tries each version once, and runs the policy only while the server is linked at Maintain.

Every action is recorded in the site's activity log and in the server's own audit log, with your account as the one who asked.

From the server: Unlink on Settings → just-dashboard.com, or sudo ./scripts/manage.sh unlink. From the site: Remove server at the foot of the server's page. Either side tells the other, and the server stops calling the site. It keeps running exactly as before, and you can link it again whenever you like; it keeps its key, so the fingerprint stays the same.

To make sure a server can never be linked, set JD_ACCOUNT_LINK=false in its .env and restart. That removes the installer question, the Settings page and the command, and ends a link already in place. See the configuration reference.

On this page