> For the complete documentation index, see [llms.txt](https://docs.akamas.io/akamas-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.akamas.io/akamas-docs/installing/docker/install-the-akamas-server/offline-installation-mode.md).

# Offline installation mode

Akamas Studio is deployed as a set of containerized services running on Docker and managed via Docker Compose. In the offline installation mode, the latest version of the Akamas Studio Docker Compose file and all the images required by Docker cannot be downloaded from the AWS ECR repository.

## Get Akamas Studio Docker artifacts <a href="#installation-getdockerartifacts" id="installation-getdockerartifacts"></a>

Get in contact with Akamas Customer Services to get the latest versions of the Akamas Studio artifacts uploaded to a location of your choice on the dedicated Akamas Server.

Akamas Studio installation artifacts will include:

* `images.tar.gz`: a tarball containing Akamas Studio main images.
* `images.tar.gz.sha256`: the SHA-256 checksum of `images.tar.gz`, used to verify the integrity of the tarball.
* `docker-compose.yml`: docker-compose file for Akamas Studio.
* `akamas`: the binary file of the Akamas Studio CLI that will be used to verify the installation.

## Verify the bundle <a href="#offlineinstallation-verifybundle" id="offlineinstallation-verifybundle"></a>

Before importing the images, verify that the `images.tar.gz` tarball you received matches the one built by Akamas. The `images.tar.gz.sha256` file holds the expected SHA-256 checksum in the standard `sha256sum` format:

```
<64-character hexadecimal checksum>  images.tar.gz
```

Keep the two files in the same directory and run:

```bash
cd <your bundle files location>
sha256sum -c images.tar.gz.sha256
```

If the tarball is intact, the command prints the following line and exits with status `0`:

```
images.tar.gz: OK
```

If the command prints `images.tar.gz: FAILED` and the warning `computed checksum did NOT match`, the tarball is corrupted or was altered: do not import it. Download it again or contact Akamas Customer Services.

You can also compute the checksum yourself and compare it with the content of `images.tar.gz.sha256`, or with the checksum provided by Akamas Customer Services through another channel:

```bash
sha256sum images.tar.gz
cat images.tar.gz.sha256
```

{% hint style="info" %}
On macOS, use `shasum -a 256 -c images.tar.gz.sha256` instead of `sha256sum -c images.tar.gz.sha256`.
{% endhint %}

## Import Docker images <a href="#offlineinstallation-importdockerimages" id="offlineinstallation-importdockerimages"></a>

A preliminary step in the offline installation mode is to import the shipped Docker images by running the following commands in the same directory where the tar files have been stored:

```bash
cd <your bundle files location>
docker image load -i images.tar.gz
```

Mind that this import procedure could take some time!

## Configure Akamas Studio environment variables <a href="#installation-configureenvironmentvariables" id="installation-configureenvironmentvariables"></a>

To configure Akamas Studio, you should set the following environment variables:

* `AKAMAS_CUSTOMER`: the customer name matching the one referenced in the Akamas Studio license.
* `AKAMAS_BASE_URL`: the endpoint in the Akamas Studio APIs that will be used to interact with the CLI, typically `https://<akamas server DNS address>`

To avoid losing your environment variables for future upgrades, it is suggested to keep them in the `.env` file, stored in the same directory as the `docker-compose.yml`:

{% code title=".env" overflow="wrap" %}

```bash
# Required variables
AKAMAS_CUSTOMER=<your name or your organization name>
AKAMAS_BASE_URL=https://<akamas server DNS address>

# Optional variables
## Database password. Use DEFAULT_DATABASE_PASSWORD to set a custom password for all databases
DEFAULT_DATABASE_PASSWORD=
## A custom password per each service can be set using the variables below, otherwise, the default is used. For example, for Kong's database, the password is `akamas_kong`.
KONG_DATABASE_PASSWORD=${DEFAULT_DATABASE_PASSWORD:-akamas_kong}
AIRFLOW_DATABASE_PASSWORD=${DEFAULT_DATABASE_PASSWORD:-akamas_airflow}
KEYCLOAK_DATABASE_PASSWORD=${DEFAULT_DATABASE_PASSWORD:-akamas_keycloak}
ANALYZER_DATABASE_PASSWORD=${DEFAULT_DATABASE_PASSWORD:-akamas_analyzer}
CAMPAIGN_DATABASE_PASSWORD=${DEFAULT_DATABASE_PASSWORD:-akamas_campaign}
LICENSE_DATABASE_PASSWORD=${DEFAULT_DATABASE_PASSWORD:-akamas_license}
OPTIMIZER_DATABASE_PASSWORD=${DEFAULT_DATABASE_PASSWORD:-akamas_optimizer}
ORCHESTRATOR_DATABASE_PASSWORD=${DEFAULT_DATABASE_PASSWORD:-akamas_orchestrator}
SYSTEM_DATABASE_PASSWORD=${DEFAULT_DATABASE_PASSWORD:-akamas_system}
TELEMETRY_DATABASE_PASSWORD=${DEFAULT_DATABASE_PASSWORD:-akamas_telemetry}
# Docker volumes prefix
COMPOSE_PROJECT_NAME=${COMPOSE_PROJECT_NAME:-akamas}
```

{% endcode %}

In this file you can also add a custom configuration for API rate limiting if needed. In case, follow instructions on page [Changing default API rate limits](/akamas-docs/installing/docker/install-the-akamas-server/changing-default-api-rate-limits.md) before starting Akamas

## Run installation <a href="#installation-startakamasservices" id="installation-startakamasservices"></a>

To start Akamas Studio you can now simply navigate into the `akamas` folder and run a `docker-compose` command:

```bash
cd <your docker-compose file location>
docker compose up -d
```

You may get the following error:

{% code overflow="wrap" %}

```
Error saving credentials: error storing credentials - err: exit status 1, out: Cannot autolaunch D-Bus without X11 $DISPLAY
```

{% endcode %}

This is a documented docker bug (see [this link](https://github.com/docker/cli/issues/2229)) that can be solved by installing the "pass" package:

* Ubuntu

```bash
sudo apt-get install -y pass
```

* RHEL

```bash
yum install pass
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

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

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.akamas.io/akamas-docs/installing/docker/install-the-akamas-server/offline-installation-mode.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

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.
