[ 'window_title' => 'CluPilot server — terminal', 'open' => 'Open terminal', 'hint' => 'Opens a separate window with a root session on the CluPilot server.', 'stage' => [ 'connecting' => [ 'title' => 'Connecting to the CluPilot server', 'note' => 'The one-time ticket is being redeemed and the session set up.', ], 'ended' => [ 'title' => 'Session ended', 'note' => 'The connection to the server was closed. A new attempt opens a fresh session.', ], 'lost' => [ 'title' => 'No connection', 'note' => 'No session came about. Is the terminal service running?', ], 'rejected' => [ 'title' => 'Ticket no longer valid', 'note' => 'A ticket lasts thirty seconds and exactly one session. This one had expired or was already redeemed — a new attempt issues a fresh one.', ], 'unreachable' => [ 'title' => 'No session on the server', 'note' => 'The bridge did not reach a command line. Two reasons are by far the most likely: the server key is no longer in /root/.ssh/authorized_keys, or the server regenerated its host keys and the pinned fingerprint no longer matches. Running "sudo bash deploy/install-agent.sh" on the server clears up either. Which of the two it was is in the terminal service log; this window deliberately does not learn it.', ], 'service_down' => [ 'title' => 'The terminal service is not running', 'note' => 'The console is up, the bridge behind it is not: nginx answers 502 for this path. On the server, "docker compose up -d terminal" helps. It shares the tunnel container\'s network namespace and has to be restarted whenever the tunnel is — otherwise it listens in a namespace that no longer exists while still reporting "healthy".', ], 'not_here' => [ 'title' => 'There is no terminal under this name', 'note' => 'The bridge is a console tool and answers 404 on public hostnames — the same rule as /admin. Open the console under its own name.', ], 'retry' => 'Reconnect', ], 'problem' => [ 'no_key' => [ 'title' => 'No identity has been generated for the server', 'note' => 'The server terminal has its own SSH key, separate from the fleet key. It is generated under Settings.', ], 'not_installed' => [ 'title' => 'The server is not set up for this yet', 'note' => 'The key exists but has not been installed on the server. Run "sudo bash deploy/install-agent.sh" there once — that adds it and records the server\'s fingerprint.', ], 'off_network' => [ 'title' => 'Not from this address', 'note' => 'A root session on the server only opens from the management network or an allowed address. Anyone on the VPN gets through — the list is under Settings.', ], 'unknown' => [ 'title' => 'The terminal cannot be opened right now', 'note' => 'Something went wrong while issuing the ticket. The incident is in the log; a new attempt is worth a try.', ], ], ], ];