> ## Documentation Index
> Fetch the complete documentation index at: https://docs.taqtile.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Manifest for Docker | Version 4.4.1 | April 26, 2026

## About this release

The introduction of Manifest for Docker 4.4.1 . This update also incorporates feature enhancements and usability improvements based on user feedback and feature requests. 

Version 4.4.1 introduces changes to allow for direct integration with Manifest Maker for autentication and synchronization of draft templates.

## What's New?

**\*\* PLEASE ALWAYS BE SURE TO CHECK THE POINT RELEASES TO GUARANTEE YOU ARE ON THE LATEST AND GREATEST DOCKER RELEASE.**\*\*

PLEASE NOTE THAT WITH THIS RELEASE WE WILL NO LONGER BE USING SENDGRID AS OUR PROVIDER FOR EMAIL DELIVERY. OUR CHOSEN PROVIDER GOING FORWARD WILL BE RESEND. THE DOCKER-COMPOSE.YML ENTRY FOR "MAIL\_SERVICE\_NAME" SHOULD BE "Resend". PLEASE REACH OUT TO YOUR ACCOUNT REP FOR UPDATED API KEYS IF NEEDED.

Please reference the following for a full outline of what is offered within the Version 4.0 Manifest Applications:

* [Manifest Web Application | 4.3 Release Notes](/manifest-web-application-4-3-release-notes)
* [Manifest 3D for HoloLens | 4.2 Release Notes](/manifest-3d-for-hololens-4-2-release-notes)
* [Manifest iPadOS | 4.3 Release Notes](/manifest-ipados-4-3-release-notes)

## Fresh Docker Installs vs. Docker Version Updates

There is an important update that needs to be made to the docker-compose.yml file depending if you are doing a fresh docker install or if you are updating to the newest version of Docker.

* **Fresh Installs: dbpostgres variable MUST use the following image**
  * **Image**: postgres: 14.9-alpine
* **Updating Docker versions: dbpostgres variable MUST use the following image:**
  * **Image:** postgres: taqtile.azurecr.io/manifest-db-11

<img src="https://mintcdn.com/taqtile/GgXzx92gXNhV95Hp/images/Alpinev11-1024x170.png?fit=max&auto=format&n=GgXzx92gXNhV95Hp&q=85&s=19bff136d773f2edbcc77c900d5de72e" alt="Alpinev11" width="1024" height="170" data-path="images/Alpinev11-1024x170.png" />

## Manifest 4.4.1 Docker Images

Below are the docker images to be used with 4.4.1:

* **API:** taqtile.azurecr.io/manifest-api:4.4.1
* **Web:** taqtile.azurecr.io/manifest-web:4.4.1
* **Converter:** taqtile.azurecr.io/manifest-3dconverter-production:3.0.4
* **Redis**: docker.io/bitnamilegacy/redis:7.2
* **\*Database:**
  * **FRESH INSTALLS:** postgres:14.9-alpine
  * **UPDATING CURRENT INSTANCE:** taqtile.azurecr.io/manifest-db-11

[**IMPT NOTE! DO NOT CHANGE THE DATABASE IMAGE FOR UPGRADES. If you do plan to upgrade server versions, please reach out to support@taqtile.com for assistance.**](mailto:support@taqtile.com)

## Fresh Installations

For new Manifest users who are implementing an on-premise docker or users who are installing a fresh install on another server or docker instance, the docker-compose.yml file for a fresh installation can be downloaded below. Install instructions are included [**here.**](/knowledge-base/on-prem/all-about-docker/)  

We have updated the login credentials for the docker registry. Please make sure to follow the instructions in the [**All About Docker**](/all-about-docker) article to make sure you are using the newest login and password.

Docker 4.4.1 FRESH INSTALL Docker Compose Example File:

```yaml expandable theme={null}
# Reference docker-compose.yml for Manifest 4.4.1
# Please fill out values in <> brackets with correct values.
# Note the passwords you set for the database (PostgreSQL) and Redis need to match in both places, respectively

# Reference docker-compose.yml for Manifest 4.3.2
# Please fill out values in <> brackets with correct values.
# Note the passwords you set for the database (PostgreSQL) and Redis need to match in both places, respectively

version: "3.9"
volumes:
  manifest_postgres:
  redis_data:
  shared:
services:
  api:
    image: taqtile.azurecr.io/manifest-api:4.4.1
    user: 0:0
    depends_on:
      - dbpostgres
    ports:
      - "3000"
      - "4000"
    expose:
      - "3000"
      - "4000"
    links:
      - dbpostgres
    volumes:
      - </put/path/to/file/storage/here>:/uploads
      - shared:/shared
    environment:
      POSTGRES_PORT: "5432"
      POSTGRES_HOST: "dbpostgres"
      # Note: Set the same password in the postgres service
      POSTGRES_PASSWORD: "<SET PASSWORD FOR DATABASE>"
      POSTGRES_USER: "manifest"
      NODE_ENV: "localhost"
      IP_ACCESS: "<PUT_VM_IP_ADDRESS>"
      ADMIN_EMAIL: "<PUT_VM_IP_ADDRESS>"
      ADMIN_PASSWORD: "<PUT_ADMIN_PASSWORD>"
      env: "on-prem"
      LICENSE_KEY: "<PUT_LICENSE_KEY>"
      POSTGRES_MAIN_DB: "manifestmain"
      POSTGRES_SSL: "false"
      HOST: "<PUT_VM_IP_ADDRESS>"
      PROTOCOL: "https://"
      SERVER_DOCKER: "true"
      BCRYPT_SALT_ROUNDS: "10"
      AUTH_TOKEN_SECRET: "keySecretToken"
      FILES_UPLOAD_FOLDER: "/uploads/"
      FILES_IMPORT_DATA: "/uploads/importData/"
      MAIL_SERVICE_NAME: "SendGrid"
      MAIL_API_KEY: "SG.none" # Ask your account manager
      REDIS_HOST: redis
      REDIS_PORT: "6379"
      # Note: set the same password in the redis service
      REDIS_PASSWORD: "<SET PASSWORD FOR REDIS>"
      ROOT_ADMIN_EMAIL: "<PUT_ADMIN_EMAIL>"
      ROOT_ADMIN_PASSWORD: "<PUT_ADMIN_PASSWORD>"
      MIGRATION_REQUIRED: "true" 
      SERVER_PORT: "3000"
      CONVERTER_HOST: converter
      CONVERTER_PORT: 5555
      DEPLOYMENT_TYPE: "on-prem"
      # Note: Fresh start is for the first run only to set up the database
      # IS_FRESH_START: "true" 
      LIVEKIT_API_KEY: "null"
      LIVEKIT_API_SECRET: "null"
      LIVEKIT_WS_URL: "null"
      API_HTTPS: "false"
      #DB_LOGS_ENABLED: true # set to false for production use

    restart: on-failure
  dbpostgres:
    image: postgres:14.9-alpine 
    volumes:
      - manifest_postgres:/var/lib/postgresql/data
    ports:
      - "5432"
    environment:
      - POSTGRES_USER=manifest
      # set password for database the same as above
      - POSTGRES_PASSWORD=<PASSWORD FOR DATABASE>
      - POSTGRES_DB=manifestmain
  web:
    image: taqtile.azurecr.io/manifest-web:4.4.1_a
    user: 0:0
    depends_on:
      - api
    volumes:
      - </put/path/to/file/storage/here>:/usr/share/nginx/html/uploads
      - </put/path/to/nginx/cert/storage/here>:/etc/ssl/private/
      - </put/path/to/nginx/cert/storage/here>:/etc/ssl/certs
      - shared:/shared
    ports:
      - "80:80"
      - "443:443"
    environment:
      - NGINX_HOST=localhost
      - NGINX_PORT=80
      - IP_ACCESS="<PUT_VM_IP_ADDRESS>"
      - EXTERNAL_HOST=localhost
      - env=on-prem
    links:
      - api
    restart: on-failure

  manifestCoturn:
    image: taqtile.azurecr.io/manifest-coturn
    network_mode: "host"
  converter:
    image: taqtile.azurecr.io/manifest-3dconverter-production:3.0.4
    volumes:
      - </put/path/to/file/storage/here>:/manifest-cs/folder
    ports:
      - "5555"
    expose:
      - "5555"
    restart: on-failure
  redis:
    image: docker.io/bitnamilegacy/redis:7.2
    environment:
      # ALLOW_EMPTY_PASSWORD is recommended only for development.
      - ALLOW_EMPTY_PASSWORD=yes
      - REDIS_DISABLE_COMMANDS=FLUSHDB
    ports:
      - '6379:6379'
    volumes:
      - 'redis_data:/bitnami/redis/data'
    restart: on-failure
```

**IMPT NOTE:** New Installations need to be sure to be using the following dbpostgres image (postgres:14.9-alpine) as outlined above.

**IMPT TIP!:** On a FRESH install ONLY, if after restarting docker compose and waiting a few minutes manifest fails to load you may try these troubleshooting steps. These steps WILL destroy data on an upgrade install:

* Do **docker-compose down** to stop all containers and wait for them to exit
* Check volumes with **docker volume ls** and delete the manifest redis data and postgres volumes, they should be named like **FOLDERNAME\_redis\_data** and **FOLDERNAME\_manifest\_postgres** where **FOLDERNAME** is the name of the folder you run docker-compose from. Delete the volumes with **docker volume rm NAME** for each volume name
* Edit your **docker-compose.yml** adding **IS\_FRESH\_START: "true"** below the rest of the settings in the **environment**: list under **api** and change the restart: line to **restart: no**
* Save and exit then run docker-compose up –d give the software a few minutes to load and try to open the manifest page. If that works remove the **IS\_FRESH\_START: "true"** line from docker-compose.yml and change the **restart:** line back to **restart: on-failure**
* If it does not work, contact customer support for assistance at [**support@taqtile.com.**](mailto:support@taqtile.com)
* You MUST revert these changes before restarting manifest for any reason.

## Updating Docker Installation

Please make the following updates to the compose file if you are updating from Version 3.1.2 to 4.4.1. Instructions for updating a docker installation can be found **[here](/all-about-docker).**

We have updated the login credentials for the docker registry. Please make sure to follow the instructions in the [**All About Docker**](/all-about-docker) article to make sure you are using the newest login and password.

In addition to updating the docker-compose.yml file with the updated images outlined above, please also make sure you append your docker compose to include these following NEW settings. Please be sure to fill in the information that is indicated with “\< >” brackets.

### API Variables

| EXTERNAL\_HOST: | "PUT\_VM\_IP\_ADDRESS" |
| --------------- | ---------------------- |
| NEW VARIABLE    | N/A                    |

*Table 1: API Variables for 4.4.1*

**IMPT NOTE:** New Installations need to be sure to be using the following **dbpostgres image (postgres:14.9-alpine)** as outlined above.

Docker 4.4.1 UPDATING CURRENT INSTANCE:

```yaml expandable theme={null}
version: "3.9"
volumes:
  manifest_postgres:
  redis_data:
  shared:
services:
  api:
    image: taqtile.azurecr.io/manifest-api:4.4.1
    user: 0:0
    depends_on:
      - dbpostgres
    ports:
      - "3000"
      - "4000"
    expose:
      - "3000"
      - "4000"
    links:
      - dbpostgres
    volumes:
      - </put/path/to/file/storage/here>:/uploads
      - shared:/shared
    environment:
      POSTGRES_PORT: "5432"
      POSTGRES_HOST: "dbpostgres"
      POSTGRES_PASSWORD: "<OBTAIN FROM ACCOUNT MANAGER>"
      POSTGRES_USER: "manifest"
      NODE_ENV: "localhost"
      IP_ACCESS: "<PUT_VM_IP_ADDRESS>"
      ADMIN_EMAIL: "<PUT_VM_IP_ADDRESS>"
      ADMIN_PASSWORD: "<PUT_ADMIN_PASSWORD>"
      env: "on-prem"
      LICENSE_KEY: "<PUT_LICENSE_KEY>"
      POSTGRES_MAIN_DB: "manifestmain"
      MAIL_API_KEY: "<OBTAIN FROM ACCOUNT MANAGER>"
      POSTGRES_SSL: "false"
      HOST: "<PUT_VM_IP_ADDRESS>"
      PROTOCOL: "https://"
      SERVER_DOCKER: "true"
      BCRYPT_SALT_ROUNDS: "10"
      AUTH_TOKEN_SECRET: "keySecretToken"
      FILES_UPLOAD_FOLDER: "/uploads/"
      FILES_IMPORT_DATA: "/uploads/importData/"
      MAIL_SERVICE_NAME: "SendGrid"
      REDIS_HOST: redis
      REDIS_PORT: "6379"
      ROOT_ADMIN_EMAIL: "<PUT_ADMIN_EMAIL>"
      ROOT_ADMIN_PASSWORD: "<PUT_ADMIN_PASSWORD>"
      EXTERNAL_HOST: "<PUT_VM_IP_ADDRESS>"
      MIGRATION_REQUIRED: "true"
      SERVER_PORT: "3000"
      CONVERTER_HOST: converter
      CONVERTER_PORT: 5555
      DEPLOYMENT_TYPE: "on-prem"
      #DB_LOGS_ENABLED: true # set to false for production use

    restart: on-failure
  dbpostgres:
    image: taqtile.azurecr.io/manifest-db-11
    volumes:
      - manifest_postgres:/var/lib/postgresql/data
    ports:
      - "5432"
    environment:
      - POSTGRES_USER=manifest
      - POSTGRES_PASSWORD=<OBTAIN FROM ACCOUNT MANAGER>
      - POSTGRES_DB=manifestmain
  web:
    image: taqtile.azurecr.io/manifest-web:4.4.1
    user: 0:0
    depends_on:
      - api
    volumes:
      - </put/path/to/file/storage/here>:/usr/share/nginx/html/uploads
      - </put/path/to/nginx/cert/storage/here>:/etc/ssl/private/
      - </put/path/to/nginx/cert/storage/here>:/etc/ssl/certs
      - shared:/shared
    ports:
      - "80:80"
      - "443:443"
    environment:
      - NGINX_HOST=localhost
      - NGINX_PORT=80
      - IP_ACCESS="<PUT_VM_IP_ADDRESS>"
      - EXTERNAL_HOST=localhost
      - env=on-prem
    links:
      - api
    restart: on-failure

  manifestCoturn:
    image: taqtile.azurecr.io/manifest-coturn
    network_mode: "host"
  converter:
    image: taqtile.azurecr.io/manifest-3dconverter-production:3.0.4
    volumes:
      - </put/path/to/file/storage/here>:/manifest-cs/folder
    ports:
      - "5555"
    expose:
      - "5555"
    restart: on-failure
  redis:
    image: docker.io/bitnamilegacy/redis:7.2
    environment:
      # ALLOW_EMPTY_PASSWORD is recommended only for development.
      - ALLOW_EMPTY_PASSWORD=yes
      - REDIS_DISABLE_COMMANDS=FLUSHDB
    ports:
      - '6379:6379'
    volumes:
      - 'redis_data:/bitnami/redis/data'
```

## Compatible Platforms

Docker installations needs to be running compatible versions across all client applications (ie. iPadOS, 3D Applications, etc.)

It’s important to note the following:

* The docker instance must be updated to 4.4.1 before any client applications are updated. Web/API for docker versions 3.1.2 and earlier WILL NOT be compatible with client applications running 4.0 or above.  It is NOT FORWARD COMPATIBLE.
  * Example: If a docker instance is running Version 3.1.2 and the users update their client applications to version 4.0+, there are so many breaking changes that we would not expect the applications to run without encountering multiple errors.
* If a Docker instance is running Version 4.4.1 and the client applications are still running on version 3.1.2 or earlier DO NOT EXPECT that the client application to work as expected.

As always, please reach out to your Account Manager for support or contact [support@taqtile.com](mailto:support@taqtile.com) with questions.
