Skip to content

Install On Debian With Docker

This guide installs Traefik, the Ordyn API, and the Ordyn frontend on a Debian host with Docker.

For Docker Engine itself, follow the official Docker instructions:

Install Docker Engine on Debian

Install the container verification tools before pulling Ordyn images:

Requirements

Prepare:

  • a Debian host with Docker Engine and Docker Compose
  • Git
  • Cosign and the image verification helper installed on every Ordyn infrastructure machine
  • DNS names for the frontend and API, for example:
    • app.ordyn.example.com
    • api.ordyn.example.com
  • inbound access to ports 80 and 443
  • enough persistent storage for PostgreSQL, Redis, uploaded files, packages, OS images, reports, and logs
  • outbound internet access for image downloads and package metadata
  • Docker credentials
  • License

Recommended minimum for a small installation with ~100 endpoints:

  • 4 CPU cores
  • 8 GB RAM
  • 100 GB disk, plus storage for packages, OS images, and collected artifacts as required

Prepare Project Directories

Clone the Ordyn compose repository and checkout only the Traefik, API, and frontend deployment folders:

bash
git clone --filter=blob:none --sparse https://github.com/ordyn-project/compose.git /opt/ordyn-compose
cd /opt/ordyn-compose
git sparse-checkout set traefik api frontend

If your installation needs local changes, place them in compose.override.yml inside the matching folder so the Git-managed compose files can be updated.

Traefik

Traefik receives HTTPS traffic and forwards it to the Ordyn API and frontend containers.

Configure Traefik

Create the Traefik environment file:

bash
cd /opt/ordyn-compose/traefik
cp .env.example .env

Set the email address used for Let's Encrypt certificate notices:

dotenv
TRAEFIK_ACME_EMAIL=admin@example.com

Start Traefik

From the Traefik deployment folder, start the container:

bash
cd /opt/ordyn-compose/traefik
docker compose pull
docker compose up -d

For DNS-01 or user-provided certificates, use the matching Traefik compose file described in Traefik.

If you cannot provide a suitable certificate through Let's Encrypt or your own certificate process, support can provide an appropriate domain that supports DNS-01 validation for Ordyn. Contact support@hank-it.com for assistance.

Docker login

To access the Ordyn images, you must log in to the Docker registry.

bash
docker login docker.hank-it.com

Use the provided credentials, you will have to login on every host that will run Ordyn containers.

API

Configure The API

Create the API environment file:

bash
cd /opt/ordyn-compose/api
cp .env.example .env

Set these values in .env:

dotenv
ORDYN_API_HOST=api.ordyn.example.com

APP_NAME=Ordyn
APP_KEY=<generated-application-key>
APP_URL=https://api.ordyn.example.com
FRONTEND_URL=https://ordyn.example.com
CORS_ALLOWED_ORIGINS=https://ordyn.example.com
SANCTUM_STATEFUL_DOMAINS=ordyn.example.com,api.ordyn.example.com
SESSION_DOMAIN=.ordyn.example.com
LOG_LEVEL=info

DB_HOST=database
DB_DATABASE=ordyn
DB_USERNAME=ordyn
DB_PASSWORD=<strong-database-password>

WEBSOCKET_APP_ID=ordyn
WEBSOCKET_APP_KEY=<random-websocket-key>
WEBSOCKET_APP_SECRET=<random-websocket-secret>

Generate an application key and set APP_KEY:

bash
printf 'base64:%s\n' "$(openssl rand -base64 32)"

Generate websocket secrets:

bash
openssl rand -hex 16
openssl rand -hex 32

Use the first value for WEBSOCKET_APP_KEY and the second value for WEBSOCKET_APP_SECRET.

Start The API

From the API project directory:

bash
cd /opt/ordyn-compose/api
docker compose pull
python3 /opt/cosign-docker-verify/verify.py

Continue with docker compose up -d only when all marked API services verify successfully and no failed verification message appears.

bash
docker compose up -d

Initialize the database:

bash
docker compose exec -T fpm php artisan migrate --force --seed

Create the first super admin user:

bash
docker compose exec -T fpm php artisan ordyn:user:create \
  --name="Ordyn Admin" \
  --email="admin@example.com" \
  --password="<strong-password>" \
  --super-admin

Frontend

Configure The Frontend

Create the frontend runtime configuration:

bash
cd /opt/ordyn-compose/frontend
cp .env.example .env
cp config.example.json config.json

Set these values in .env:

dotenv
ORDYN_FRONTEND_HOST=ordyn.example.com

Set the API host and websocket key in config.json:

json
{
  "environment": "production",
  "ssl": true,
  "api": [
    {
      "server": "api.ordyn.example.com",
      "websocketKey": "<same value as WEBSOCKET_APP_KEY>"
    }
  ]
}

The frontend reads this file at runtime. If you change API hostnames or websocket credentials, update config.json and restart the frontend container.

Start The Frontend

From the frontend deployment folder:

bash
cd /opt/ordyn-compose/frontend
docker compose pull
python3 /opt/cosign-docker-verify/verify.py

Continue with docker compose up -d only when the frontend image verifies successfully and no failed verification message appears.

bash
docker compose up -d

Open the frontend URL in a browser and sign in with the super admin user.

Verify The Installation

Check the containers:

bash
cd /opt/ordyn-compose/traefik
docker compose ps

cd /opt/ordyn-compose/api
docker compose ps

cd /opt/ordyn-compose/frontend
docker compose ps

In the Ordyn UI:

  1. open the user menu and verify the displayed API version
  2. open Administration > Access Control and confirm the super admin user exists
  3. open Reporting > Audit and confirm login activity is recorded

After Installation

To actually use Ordyn, you will firstly have to upload the provided license file in Administration > Licenses.

After that, continue with: