Skip to content

Installation

SentryAssets runs as a Docker Compose stack on your own Linux server. This guide takes you from an empty server to the first sign-in.

Area Requirement
Server Linux with Docker (rootless recommended) or Podman, each with the Compose plugin, and Git
Memory 4 GiB recommended (the containers’ limits add up to just over 3 GiB); another 2.5 GiB with the virus scanner
DNS two names, one for the web UI (such as assets.example.test) and one for the agents (such as agents.example.test); both may point to the same server
Ports 80 and 443 reachable from outside; agents and web UI share port 443 and are told apart by host name
Certificate either automatic through ACME (Let’s Encrypt, with an e-mail address) or an internal certificate from Caddy (internal)

If port 443 is not an option for the agents, docker-compose.agent-port.yml gives them a port of their own (8443 by default).

  1. Get the repository and change to the directory of the Compose files:

    Terminal window
    git clone https://github.com/securebits-cyber/sentryassets.git
    cd sentryassets/deploy/compose
  2. Create the settings and adjust SA_UI_HOST, SA_AGENT_HOST and SA_UI_TLS (see Configuration):

    Terminal window
    cp .env.example .env
  3. Create random secrets. The script writes them once to ./secrets and on later runs only creates missing ones:

    Terminal window
    ../../scripts/generate-secrets.sh
  4. Build the images and create the database schema:

    Terminal window
    docker compose build
    docker compose run --rm migrate
  5. Create the organisation:

    Terminal window
    docker compose run --rm cli setup --organization "RECPLAST GmbH"
  6. Create the PKI for the agents. The command asks for a passphrase for the root key and prints the fingerprint of the root CA; note it down, every agent installation needs it:

    Terminal window
    docker compose run --rm cli pki init --organization "RECPLAST GmbH" \
    --agent-host agents.example.test --output-dir /pki
  7. Write the encrypted root key straight to an offline medium and delete it from the volume. It is only needed to renew the CAs:

    Terminal window
    (umask 077; docker compose run --rm -T --entrypoint cat cli /pki/root-ca.p12 > /media/offline/root-ca.p12)
    docker compose run --rm --entrypoint rm cli /pki/root-ca.p12
  8. Create an emergency account. The command asks for the password and shows an otpauth:// address for your authenticator app:

    Terminal window
    docker compose run --rm cli admin create-emergency --username emergency
  9. Start the stack:

    Terminal window
    docker compose up -d
  • docker compose ps shows every service as healthy; migrate has exited with code 0.
  • https://<SA_UI_HOST> shows the sign-in. Sign in with the emergency account; the setup wizard leads through location, OIDC test and the first agent.

The Compose file builds the extensions for Pro, Enterprise and the ISMS add-on into the images. Without a licence their areas are visible and locked; a licence key or the trial unlocks them at once. To build the community edition alone, set SA_EXTENSIONS= (empty) in .env.

Terminal window
git pull
docker compose build
docker compose run --rm migrate
docker compose up -d

Notes on single versions are in the changelog (CHANGELOG.md). For updates without downtime see High availability.

  • A service does not start: docker compose logs <service> shows the cause. Unsafe settings, such as a secret given directly in the environment instead of as a file, stop the start with a message that never shows the value itself.
  • Sign-in fails with error 500 after an interrupted start: docker compose up -d --force-recreate creates the containers again with their network aliases.
  • More cases under Troubleshooting.

SentryAssets is a product of SecureBits Cyber Security UG (haftungsbeschränkt)