← Pharos Data Ark

PHAROS DATA ARK · 2026-10-29-01024f5b59

Handbook contents

Browser terminal

Access and login

Open Settings → System → Terminal. This opens https://dataark:4200/ (or HTTPS port 4200 on the dashboard's current hostname/IP) in a new tab. The shell is fixed to the existing Linux admin account and asks for its Linux password. This is separate from the shared caretaker password. No password was changed, copied into the browser, stored in source, or made passwordless.

The authenticated session has the existing admin account's ordinary shell and sudo permissions. It can modify or erase Ark data. Type exit when finished. Closing a browser tab is not a substitute for deliberately logging out of a privileged shell. Terminal web access was confirmed through both the DataArk hotspot and the local LAN on October 23, 2026. Automated checks stopped at the password prompt without entering credentials. A specific command execution result, disconnected-upstream behavior and reboot recovery were not separately confirmed.

First-use certificate trust

HTTPS uses a locally generated self-signed certificate for dataark, dataark.local, loopback, the hotspot address and local IPv4 addresses present when it was issued. Your browser may display a trust warning. Review certificate trust yourself before entering a Linux password; the agent must not bypass browser security interstitials.

Each Ark has its own certificate identity and expiry date. Download the certificate from the Ark you are using, and compare its fingerprint through the Pi’s local console or an already trusted SSH connection:


sudo openssl x509 -in /etc/dataark-terminal/certificate.crt -noout -fingerprint -sha256 -dates

Do not treat an example or another Ark’s fingerprint as this device’s identity. The public certificate is not installed into client trust stores automatically. If a new IP is not covered, use the configured hostname or review/reissue the certificate with the additional SAN. Never switch the public terminal to plaintext HTTP to avoid a warning.

Architecture and exact settings

Configuration locations

Tracked, non-secret sources: deploy/terminal/dataark-terminal.service, deploy/terminal/apache-terminal.conf, and deploy/install_terminal.py. The System link is in app/static/assets/js/status-help.js.

Live settings: /etc/systemd/system/dataark-terminal.service; /etc/apache2/sites-available/dataark-terminal.conf; /etc/apache2/conf-available/dataark-terminal-listen.conf (Listen 4200); /var/lib/shellinabox/known_hosts; /etc/dataark-terminal/certificate.crt and root-only private.key. /etc/dataark-terminal is root-only. Apache modules ssl, proxy, proxy_http and headers are enabled. Certificates/private keys must not be committed together or copied to a content share. Only the public certificate is published.

Install, restore and certificate renewal

Install shellinabox from Debian with its default service masked, then run the reviewed installer with explicit enablement:


sudo systemctl mask shellinabox.service
sudo apt-get install --no-install-recommends shellinabox
cd /opt/dataark
sudo python3 deploy/install_terminal.py --enable
bash deploy/deploy-web.sh

The installer preserves an existing certificate/key pair and fails on an incomplete pair. It copies SSH public host keys, validates the service/Apache configuration, enables the custom service and reloads Apache. It never changes admin's password or SSH authentication policy. The --enable flag is required; installation is not automatic on a normal web deploy.

Before certificate expiry, have a caretaker replace the certificate/key with the required hostname/IP SANs, verify their match and update the public certificate copy and fingerprint record. Reload Apache and explicitly review the changed trust identity on clients. Restoring the private configuration snapshot retains the existing certificate identity; keep that backup private. tools/capture_config.py includes the private certificate directory, terminal unit, Apache settings and known-hosts file.

Checks and recovery

Verified: Apache configuration syntax, TLS certificate validation using its explicit CA file, HTTPS 200, HTTP 400, backend loopback-only listener, default service masked, unauthenticated SSH denied and an actual HTTPS terminal session reaching the admin password prompt. No admin password was supplied during testing. Interactive terminal web access was subsequently confirmed through both the hotspot and the local LAN on October 23, 2026. No particular command execution result was reported; command execution, disconnected-upstream behavior and reboot recovery remain separate checks.


systemctl status dataark-terminal.service
journalctl -u dataark-terminal.service
apache2ctl configtest
openssl x509 -in /etc/dataark-terminal/certificate.crt -noout -fingerprint -sha256 -enddate

To disable completely: disable the Apache terminal site/listen configuration and reload Apache, then stop the custom backend. Normal SSH and library services are independent.


sudo a2dissite dataark-terminal
sudo a2disconf dataark-terminal-listen
sudo apache2ctl configtest
sudo systemctl reload apache2
sudo systemctl disable --now dataark-terminal.service

Keep the package's default service masked. Re-enabling uses the installer. If a change breaks web access, recover through normal SSH or local console.

Appearance

The browser terminal uses DEJ navy (#102b43) and warm gold (#ead39b), with a gold cursor and matching reconnect/menu controls. deploy/terminal/dataark.css changes default colours and readable monospace sizing; ANSI application colours and grid geometry stay under the terminal emulator. The installer copies it to /etc/shellinabox/dataark.css, referenced by the service --css flag. Refresh an existing terminal tab after a theme update. Restarting only dataark-terminal.service reconnects browser terminal sessions; the library and ordinary SSH service are independent.