Customer Deployment
===================
This guide covers how customers deploy Scaleout Edge on their own infrastructure — either on a server they already manage, or on a cloud provider (AWS or GCP) provisioned via Terraform.
In both cases the starting point is a **release bundle**: a self-contained archive of deployment scripts and a pre-built Docker Compose configuration, distributed through the Scaleout Harbor registry.
.. contents:: On this page
:local:
:depth: 1
----
Prerequisites
-------------
A Harbor robot account (username and password) is required for both deployment paths.
Your Scaleout representative will provide these credentials.
**Compose deployment (on-premise)**
- Linux or macOS with Bash 4+ (on Windows use WSL2)
- `Docker Engine 24+ `_ with the Compose plugin
- Python 3.8+
**Cloud deployment (Terraform)**
- `Terraform 1.0+ `_
----
Step 1: Install ORAS
--------------------
Release bundles are stored as OCI artifacts on Harbor. You need the `ORAS CLI `_ to pull them.
.. tab-set::
.. tab-item:: macOS
.. code-block:: bash
brew install oras
.. tab-item:: Linux (amd64)
.. code-block:: bash
VERSION=$(curl -fsSL https://api.github.com/repos/oras-project/oras/releases/latest \
| python3 -c "import sys,json; print(json.load(sys.stdin)['tag_name'].lstrip('v'))")
curl -LO "https://github.com/oras-project/oras/releases/download/v${VERSION}/oras_${VERSION}_linux_amd64.tar.gz"
tar -zxf "oras_${VERSION}_linux_amd64.tar.gz" oras
sudo mv oras /usr/local/bin/
rm "oras_${VERSION}_linux_amd64.tar.gz"
.. tab-item:: Windows
.. code-block:: powershell
winget install -e --id ORASProject.ORAS
Verify:
.. code-block:: bash
oras version
----
Step 2: Authenticate to Harbor
-------------------------------
Log in with your Harbor robot account. Credentials are stored in ``~/.docker/config.json`` and reused for subsequent commands.
.. code-block:: bash
oras login harbor.scaleoutsystems.com \
--username 'robot$' \
--password ''
----
Step 3: Pull the release bundle
--------------------------------
Pull the release bundle for your version. Replace ``vX.Y.Z`` with the version provided by your Scaleout representative.
.. code-block:: bash
oras pull harbor.scaleoutsystems.com/scaleout/scaleout:vX.Y.Z
This writes a ``scaleout-vX.Y.Z.tar.gz`` tarball to the current directory. Extract it:
.. code-block:: bash
tar -xzf scaleout-vX.Y.Z.tar.gz
cd scaleout-vX.Y.Z/
To list all available versions:
.. code-block:: bash
oras repo tags harbor.scaleoutsystems.com/scaleout/scaleout
----
Deployment Option A: Compose (on-premise or own server)
--------------------------------------------------------
Use this path when you have a Linux server or VM that you manage directly.
**Authenticate to the container registry**
The compose deployment pulls pre-built images from Harbor. Log in with Docker using the same credentials:
.. code-block:: bash
docker login harbor.scaleoutsystems.com \
--username 'robot$' \
--password ''
**Generate runtime configuration**
.. code-block:: bash
./deploy/setup.sh [OPTIONS]
Replace ```` with the domain or IP address where Scaleout will be reachable (e.g. ``scaleout.mycompany.com`` or ``192.168.1.100``).
Common options:
.. list-table::
:header-rows: 1
:widths: 40 60
* - Option
- Description
* - ``--enable-https``
- Enable HTTPS (requires TLS certificates)
* - ``--disable-signup``
- Prevent new users from self-registering
* - ``--google-client-id / --google-client-secret``
- Enable Google OAuth
* - ``--microsoft-client-id / --microsoft-client-secret``
- Enable Microsoft OAuth
Run ``./deploy/setup.sh --help`` for the full option list.
**Start services**
.. code-block:: bash
./deploy/compose.sh up
The platform is accessible at ``http://`` once all containers are healthy.
**Upgrading**
Download and extract the new release bundle alongside your existing deployment. The ``runtime/`` directory (which holds secrets and generated config) is preserved between upgrades.
.. code-block:: bash
oras pull harbor.scaleoutsystems.com/scaleout/scaleout:vX.Y.Z
tar -xzf scaleout-vX.Y.Z.tar.gz
cd scaleout-vX.Y.Z/
./deploy/setup.sh
./deploy/compose.sh up
----
Deployment Option B: Cloud (AWS or GCP via Terraform)
------------------------------------------------------
Use this path to provision a cloud VM automatically. The Terraform scripts are included in the release bundle under ``infrastructure/``.
The VM bootstraps itself: Terraform creates the instance and passes a startup script that pulls the release bundle from Harbor and runs the deployment — no manual SSH required.
**Configure your deployment**
Copy the example variables file for your cloud provider and fill in your values:
.. tab-set::
.. tab-item:: GCP
.. code-block:: bash
cd infrastructure/gcp/
cp terraform.tfvars.example terraform.tfvars
.. tab-item:: AWS
.. code-block:: bash
cd infrastructure/aws/
cp terraform.tfvars.example terraform.tfvars
Open ``terraform.tfvars`` and set at minimum:
.. code-block:: hcl
domain = "scaleout.mycompany.com"
harbor_username = "robot$"
harbor_password = ""
``release_bundle_ref`` is pre-filled with the correct version. Replace the Harbor credential placeholders with the values provided by your Scaleout representative.
See ``terraform.tfvars.example`` for the full list of optional settings (OAuth providers, HTTPS, SSH access, system admin bootstrap).
**Apply**
.. code-block:: bash
terraform init
terraform apply
Terraform provisions the VM, waits for the startup script to complete, and prints the application URL when done.
**Upgrading**
To upgrade, update ``release_bundle_ref`` in ``terraform.tfvars`` to the new version and run:
.. code-block:: bash
terraform apply