# On-Premise Deployment

{% hint style="info" %}
What was previously called "Remote (On-Premise)" is now called **Satellite** as of the 2026.03 release. This is a label-only change — no configuration or behavior has changed.
{% endhint %}

## When to use Satellite deployment

A Satellite deployment makes sense when your data or infrastructure requirements mean you cannot run in the cloud — for example due to data residency regulations, network restrictions, or existing on-premise infrastructure investments. Your application runs on your own servers, but remains connected to and managed through Servoy Cloud.

## Docker deployment

### 1. CCC Configuration Parameters

{% hint style="warning" %}
Configure Docker pull commands by using your namespace-related parameters.

Look for placeholders in the commands marked as **`${parameter-name}`** and replace them with the corresponding values
{% endhint %}

#### Command parameters

Command parameters are accessible via the Docker Information dialog within the Cloud Control Center. You can access this dialog from the following locations:

* Current Package context menu in the Pipelines view
* Artifacts tab in the Package Details

#### Parameter names:

* namespace-name
* region-name
* docker-repo-name

#### AWS Parameters

Access AWS parameters through the [Credentials](/reference/servoy-cloud/cloud-control-center/administration/credentials.md#overview) menu in the Cloud Control Center, including:

* AWS Access Key ID
* AWS Secret Access Key

#### Remote Environment Token

To view Satellite environment metrics in Servoy Cloud, the Remote Environment token is required. This token connects to Servoy Cloud and synchronizes environment metrics like logs and performance data for analysis in the Cloud Control Center.

\
To obtain the Remote Environment token, navigate to the [Credentials](/reference/servoy-cloud/cloud-control-center/administration/credentials.md#overview) menu in the Cloud Control Center.

### 2. Pre-requisites

* Docker
* AWS CLI

### 3. Install requirements

{% tabs %}
{% tab title="Linux" %}
**Installation Commands**

{% code overflow="wrap" fullWidth="true" %}

```bash
curl "https://amazon-ecr-credential-helper-releases.s3.us-east-2.amazonaws.com/0.5.0/linux-amd64/docker-credential-ecr-login" -o docker-credential-ecr-login

chmod +x docker-credential-ecr-login

sudo mv docker-credential-ecr-login /usr/local/bin/

curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"

unzip awscliv2.zip

sudo ./aws/install

aws configure
```

{% endcode %}
{% endtab %}

{% tab title="Mac" %}
**Installation Commands**

```bash
brew install docker-credential-helper-ecr

curl https://awscli.amazonaws.com/AWSCLIV2.pkg -o AWSCLIV2.pkg

sudo installer -pkg AWSCLIV2.pkg -target /

aws configure
```

{% endtab %}

{% tab title="Windows" %}
**Guides for Installation**

[Guide to install aws-cli v2 on Windows](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2-windows.html)\
[Guide to install and configure Docker on Windows](https://docs.microsoft.com/en-us/virtualization/windowscontainers/manage-docker/configure-docker-daemon)

**Installation steps**

1\. [Download aws-cli v2<br>](https://awscli.amazonaws.com/AWSCLIV2.msi)

2\. [Download docker credential helper](https://amazon-ecr-credential-helper-releases.s3.us-east-2.amazonaws.com/0.5.0/windows-amd64/docker-credential-ecr-login.exe) and add it as a Windows PATH variable\
3\. Open **CMD** and run:

```bash
aws configure
```

{% endtab %}
{% endtabs %}

### 4. Configuration settings

#### Linux and Mac

```bash
vi ~/.docker/config.json
```

#### Windows

```bash
code .docker/config.json
```

#### General

Edit the `config.json` file, adding other configuration settings:

```json
{
 #OTHER CONFIG SETTINGS
    "credHelpers": {
        "428597928572.dkr.ecr.${region-name}.amazonaws.com": "ecr-login"
    }
}
```

### 5. Pull docker image

To pull the Docker image, execute the following commands:

{% tabs %}
{% tab title="Linux and Mac" %}
**For Authentication**

Generate a login password for Amazon ECR:

<pre data-overflow="wrap"><code>aws ecr --region <a data-footnote-ref href="#user-content-fn-1">${region-name}</a> get-login-password | docker login --password-stdin --username AWS 428597928572.dkr.ecr.<a data-footnote-ref href="#user-content-fn-1">${region-name}</a>.amazonaws.com
</code></pre>

**Pull Command**

Fetch the specific Docker image using:

<pre data-overflow="wrap"><code>docker pull 428597928572.dkr.ecr.<a data-footnote-ref href="#user-content-fn-1">${region-name}</a>.amazonaws.com/<a data-footnote-ref href="#user-content-fn-2">${namespace-name}</a>/<a data-footnote-ref href="#user-content-fn-3">${docker-repo-name}</a>:latest
</code></pre>

{% endtab %}

{% tab title="Windows" %}
**Pull Command**

Fetch the specific Docker image using:

<pre data-overflow="wrap"><code>docker pull 428597928572.dkr.ecr.<a data-footnote-ref href="#user-content-fn-1">${region-name}</a>.amazonaws.com/<a data-footnote-ref href="#user-content-fn-2">${namespace-name}</a>/<a data-footnote-ref href="#user-content-fn-3">${docker-repo-name}</a>:latest
</code></pre>

{% endtab %}
{% endtabs %}

### 6. Running the docker image

To run the docker image the basic call is:

```bash
docker run -d --name servoy  -p 8080:8080 -e "ENVIRONMENT=onprem" -e "DB_POSTGRES_PASSWORD=${MY_POSTGRES_PASSWORD}" -e "DB_POSTGRES_SERVER=${MY_POSTGRES_URL}" -e "DB_POSTGRES_PORT=5432" -v "${PATH_TO_STORE_SERVOY_FILES}:/usr/local/servoy" 428597928572.dkr.ecr.${region-name}.amazonaws.com/${namespace-name}/${docker-repo-name}:latest
```

{% hint style="warning" %}
To connect to Servoy Cloud, Satellite environments must have the following properties:\
-e "ENVIRONMENT=onprem"\
-e "REMOTE\_ENVIRONMENT\_TOKEN=${token from Credentials section in CCC}"
{% endhint %}

In this sample it is running connected to a postgres server, the following `-e` options can be used when you are starting your docker container:

| Docker Env Property        | Default value          | Description                                                       |
| -------------------------- | ---------------------- | ----------------------------------------------------------------- |
| TOMCAT\_USERNAME           | admin                  | Tomcat username                                                   |
| TOMCAT\_PASSWORD           | Test123456789          | Tomcat Password                                                   |
| JAVA\_XMS                  | 256m                   | Java min memory setting for tomcat                                |
| JAVA\_XMX                  | 3g                     | Java max memory setting for tomcat                                |
| CERTIFICATE\_NAME          |                        | Certificate file name to use tomcat with SSL                      |
| CERTIFICATE\_PASS          |                        | Certificate file password to load the certificate file            |
| DB\_POSTGRES\_SERVER       | dev-postgresql-service | Postgres Server URL                                               |
| DB\_POSTGRES\_USERNAME     | postgres               | Postgres Username                                                 |
| DB\_POSTGRES\_PASSWORD     |                        | Postgres Password                                                 |
| DB\_POSTGRES\_PORT         | 5432                   | Postgres Port                                                     |
| DB\_MSSQL\_SERVER          | dev-mssql-service      | MSSQL Server URL                                                  |
| DB\_MSSQL\_USERNAME        | sa                     | MSSQL Username                                                    |
| DB\_MSSQL\_PASSWORD        |                        | MSSQL Password                                                    |
| DB\_MSSQL\_PORT            | 1433                   | MSSQL Port                                                        |
| DB\_MYSQL\_SERVER          | dev-mysql-service      | MYSQL Server URL                                                  |
| DB\_MYSQL\_USERNAME        | root                   | MYSQL Username                                                    |
| DB\_MYSQL\_PASSWORD        |                        | MYSQL Password                                                    |
| DB\_MYSQL\_PORT            | 3306                   | MYSQL Port                                                        |
| SERVOY\_TESTING\_MODE      | false                  | Property to enable servoy E2E testing                             |
| REMOTE\_ENVIRONMENT\_TOKEN |                        | Remote Environment Token, accessible from Credentials menu in CCC |
| TIMEZONE                   | Etc/UTC                | Set the timezone of the Servoy Application Server                 |

{% hint style="info" %}
When using CERTIFICATE\_NAME & CERTIFICATE\_PASS you should create an extra volume map the certificate folder `-v ${MY_CERTS}:/usr/local/servoy-certificate`
{% endhint %}

[^1]: Replace with the region-name value provided in the CCC Docker Information dialog.

[^2]: Replace with the namespace-name value provided in the CCC Docker Information dialog.

[^3]: Replace with the docker-repo-name value provided in the CCC Docker Information dialog.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.servoy.com/reference/servoy-cloud/on-premise-deployment.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
