SG SealGrid Athena Docs

Installation

Athena Server ships as a single Docker container that serves the web console on port 8443 and the agent gateway on port 8444. Pull the image, mount your data volumes, and run it behind your own TLS — that is the only supported deployment method.

Prerequisites#

Air-gapped install

Nothing here requires internet access. Transfer the container image (e.g. docker save/docker load) and your agent binaries onto the isolated network, then run exactly as below. See Air-Gapped Operation.

Run with Docker#

The container runs as a non-root user. Create the data directories and run it — configuration is supplied as environment variables, and the server issues its own TLS certificate on first start:

# 1. Create persistent directories on the host
mkdir -p /opt/athena/{data,pki,logs,backups,certs,packages,agent-binaries}

# 2. Run the server — it generates its own TLS certificate on first start
docker run -d \
  --name athena-server \
  --restart unless-stopped \
  -p 8443:8443 \
  -p 8444:8444 \
  -v /opt/athena/data:/app/data \
  -v /opt/athena/pki:/app/pki \
  -v /opt/athena/logs:/app/logs \
  -v /opt/athena/backups:/app/backups \
  -v /opt/athena/certs:/app/certs \
  -v /opt/athena/packages:/app/packages \
  -v /opt/athena/agent-binaries:/app/agent-binaries \
  ghcr.io/<owner>/athena-server:latest

The container exposes:

Path inside containerPurpose
/app/dataDatabase file (SQLite default) and app state
/app/pkiRoot CA and issued agent certificates
/app/packagesUploaded deployment packages
/app/agent-binariesAgent installers served for enrollment & self-update
/app/certsServer TLS certificate — auto-generated, or your own if supplied
/app/logsApplication log files
/app/backupsDatabase backups
That's the whole command

Athena defaults to SQLite and generates its TLS certificate on first start, so no extra configuration is needed to come up. The healthcheck calls https://localhost:8443/health.

Behind a reverse proxy, NAT, or port mapping? Add -e Server__PublicUrl=https://athena.example.com:8443 so the server stamps the correct externally-reachable address into the agent installers it generates. If you omit it, Athena derives that address from the inbound request host. Any other setting can be passed the same way — see Configuration.

First run#

On its first start the container generates its Root CA (and a server TLS certificate signed by it), seeds the default admin account from the DefaultAdmin config section, and runs database schema migrations automatically. Once the healthcheck reports healthy, the console is reachable at:

First sign-in#

  1. Browse to https://<host>:8443.
  2. Sign in as the default admin — username admin (unless you set DefaultAdmin__Username).
  3. Change the password immediately after signing in — the policy requires at least 8 characters with upper, lower, and a digit.
  4. Continue to Agent Enrollment to bring your first endpoint online.
Where to find the admin password

If you set DefaultAdmin__Password, that is the password. Otherwise, on first start Athena generates a secure random password for the admin account and writes it to the server log. Read it from the container logs:

docker logs athena-server 2>&1 | grep -A2 "DEFAULT ADMIN USER CREATED"

Look for the DEFAULT ADMIN USER CREATED banner, which prints the username and the generated password. The log is also persisted in the /app/logs volume. It is shown once, at creation — so grab it before changing the password.

Sessions time out after 3 minutes of inactivity and accounts lock after 5 failed sign-ins by default. Both are tunable in the Security config section.