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.
Requirements
Section titled “Requirements”| 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).
Install
Section titled “Install”-
Get the repository and change to the directory of the Compose files:
Terminal window git clone https://github.com/securebits-cyber/sentryassets.gitcd sentryassets/deploy/compose -
Create the settings and adjust
SA_UI_HOST,SA_AGENT_HOSTandSA_UI_TLS(see Configuration):Terminal window cp .env.example .env -
Create random secrets. The script writes them once to
./secretsand on later runs only creates missing ones:Terminal window ../../scripts/generate-secrets.sh -
Build the images and create the database schema:
Terminal window docker compose builddocker compose run --rm migrate -
Create the organisation:
Terminal window docker compose run --rm cli setup --organization "RECPLAST GmbH" -
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 -
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 -
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 -
Start the stack:
Terminal window docker compose up -d
Check the result
Section titled “Check the result”docker compose psshows every service ashealthy;migratehas 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.
Editions in the image
Section titled “Editions in the image”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.
Updating
Section titled “Updating”git pulldocker compose builddocker compose run --rm migratedocker compose up -dNotes on single versions are in the changelog (CHANGELOG.md). For updates without downtime see High availability.
Troubleshooting
Section titled “Troubleshooting”- 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-recreatecreates the containers again with their network aliases. - More cases under Troubleshooting.
SentryAssets is a product of SecureBits Cyber Security UG (haftungsbeschränkt)