Deploy your first instance
Start a local-account installation with the published Docker images and bundled PostgreSQL. Run these commands in a terminal on your Linux x64 Docker host. Have Docker Compose v2, OpenSSL, curl, tar and sha256sum installed.
1. Download and verify
Section titled “1. Download and verify”Use a new directory for the release downloads:
mkdir netratel-downloadscd netratel-downloadscurl -fLO https://github.com/BostonTechnologies/netratel/releases/download/v0.1.2/netratel-compose-0.1.2.tar.gzcurl -fLO https://github.com/BostonTechnologies/netratel/releases/download/v0.1.2/SHA256SUMSsha256sum -c --ignore-missing SHA256SUMSThe checksum result for netratel-compose-0.1.2.tar.gz must be OK. Then extract the bundle:
mkdir ../netratel-instancetar -xzf netratel-compose-0.1.2.tar.gz -C ../netratel-instancecd ../netratel-instanceumask 077cp .env.images.example .envThe archive extracts directly into that directory. Its .env.images.example already contains the release’s immutable image digests. Keep those values.
2. Set the password and login mode
Section titled “2. Set the password and login mode”Generate a database password:
openssl rand -hex 32Open .env in your editor. Set POSTGRES_PASSWORD to the generated value and set these entries:
NETRATEL_AUTHENTICATION_MODE=LocalNETRATEL_AGENT_AUTH_PRIVATE_KEY=./.netratel-agent-es256-private.pemNETRATEL_PUBLIC_ORIGIN=NETRATEL_PUBLIC_GATEWAY_ORIGIN=Leave OIDC settings empty. Clear both example public origins for this loopback setup. The database password is separate from the administrator passphrase you choose later.
3. Create the signing key
Section titled “3. Create the signing key”openssl ecparam -name prime256v1 -genkey -noout \ -out .netratel-agent-es256-private.pemsudo chown 1654:1654 .netratel-agent-es256-private.pemsudo chmod 600 .netratel-agent-es256-private.pemThe API runs as UID 1654. The key path is relative to the Compose file.
4. Start NetRatel
Section titled “4. Start NetRatel”docker compose --env-file .env -f compose.images.yaml config --quietdocker compose --env-file .env -f compose.images.yaml pulldocker compose --env-file .env -f compose.images.yaml up -ddocker compose --env-file .env -f compose.images.yaml ps -aExpect PostgreSQL to be healthy, migrations and volume-init to exit with code 0, and API and Web to run. To inspect a failed migration:
docker compose --env-file .env -f compose.images.yaml logs migrations5. Create the administrator
Section titled “5. Create the administrator”Open http://127.0.0.1:8080 in a browser on the Docker host. On a remote server, open an SSH tunnel from your own computer first:
ssh -L 8080:127.0.0.1:8080 admin@your-serverKeep the tunnel open and browse to the same local address. Retrieve the one-time setup code in the Docker-host terminal:
docker compose --env-file .env -f compose.images.yaml exec -T api \ cat /var/netratel/bootstrap/setup-proofEnter the code, initial tenant, administrator name, email and a passphrase of at least 15 characters. Sign in with that email and passphrase. There is no default administrator password.
The API restarts once as setup finishes. If the code is unavailable, inspect its state:
docker compose --env-file .env -f compose.images.yaml exec -T api \ dotnet NetRatel.API.dll --setup-statusConnect a computer
Section titled “Connect a computer”Your console is ready when you can sign in and see the initial tenant. Add public HTTPS before generating your first client installer.
For a different database or sign-in method, use External PostgreSQL, OIDC or Hybrid.