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

# Deploy Plane Commercial in an Airgapped Docker Environment

<Note>
  **IMPORTANT**\
  Airgapped deployments are available exclusively for Business plan customers. Contact our [sales team](mailto:sales@plane.so) for pricing and licensing information.
</Note>

This guide walks you through deploying Plane Commercial in an airgapped Docker environment using Docker Compose and pre-configured images from your private registry.

## Prerequisites

Before starting, ensure you have:

* Docker (version 24 or later) installed and running
* Docker Compose Plugin installed (you should be able to run `docker compose` or `docker-compose`)
* Access to a private Docker registry containing Plane images
* Required ports opened to access the application (80, 443)

<Warning>
  While Docker can run stateful services with persistent volumes, we strongly recommend using external managed services for better reliability in backup/restore operations and disaster recovery.

  Consider these alternatives:

  * **MinIO**: Replace with AWS S3, Google Cloud Storage, or any S3-compatible service
  * **Redis**: Replace with Valkey or a managed Redis service
  * **PostgreSQL**: Use a managed PostgreSQL service
  * **RabbitMQ**: Use a managed message queue service
  * **OpenSearch**: Use a managed OpenSearch or Elasticsearch service
</Warning>

## Install Plane

1. **Prepare Docker images for airgapped environment**

   Refer to [this document](/self-hosting/methods/clone-docker-images) to download the Docker images from the Plane artifact registry to your internal registry.

   <Note>
     **Important**\
     This process will NOT download or clone these infrastructure images:

     * `valkey/valkey:7.2.11-alpine`
     * `postgres:15.7-alpine`
     * `rabbitmq:3.13.6-management-alpine`
     * `minio/minio:latest`
     * `minio/mc:latest`
     * `opensearchproject/opensearch:3.3.2`

     If you're using local infrastructure services, you'll need to pull and transfer these images separately.
   </Note>

2. **Download Docker Compose configuration**

   Download the Docker Compose configuration files from the official release.

   ```bash theme={null}
   # Download docker-compose.yml
   curl -fsSL https://prime.plane.so/releases/<plane-version>/docker-compose.yml -o docker-compose.yml

   # Download environment template
   curl -fsSL https://prime.plane.so/releases/<plane-version>/variables.env -o plane.env
   ```

3. **Configure environment variables**

   Edit the `plane.env` file to configure your deployment:

   ```bash theme={null}
   # Generate a unique machine signature
   export MACHINE_SIGNATURE=$(uuidgen)

   # Set your domain
   export DOMAIN_NAME=plane.yourcompany.com
   export WEB_URL=https://plane.yourcompany.com
   export CORS_ALLOWED_ORIGINS=https://plane.yourcompany.com
   ```

   **Update image references** in `docker-compose.yml` to point to your private registry:

   ```yaml theme={null}
   services:
     web:
       image: your-registry.io/plane/web-commercial:${APP_RELEASE_VERSION}
     
     api:
       image: your-registry.io/plane/backend-commercial:${APP_RELEASE_VERSION}
     
     space:
       image: your-registry.io/plane/space-commercial:${APP_RELEASE_VERSION}
     
     admin:
       image: your-registry.io/plane/admin-commercial:${APP_RELEASE_VERSION}
     
     live:
       image: your-registry.io/plane/live-commercial:${APP_RELEASE_VERSION}
     
     monitor:
       image: your-registry.io/plane/monitor-commercial:${APP_RELEASE_VERSION}
     
     silo:
       image: your-registry.io/plane/silo-commercial:${APP_RELEASE_VERSION}
   ```

   **Infrastructure services** (if using local setup):

   ```yaml theme={null}
   services:
     redis:
       image: valkey/valkey:7.2.11-alpine
     
     postgres:
       image: postgres:15.7-alpine
     
     rabbitmq:
       image: rabbitmq:3.13.6-management-alpine
     
     minio:
       image: minio/minio:latest
   ```

## Start Plane

1. Start the services:
   ```bash theme={null}
   docker compose --env-file plane.env up -d
   ```

2. Watch the logs to make sure everything starts properly.

   * To monitor the database migration process:

   ```bash theme={null}
   docker compose logs -f migrator
   ```

   * To monitor the API service startup:

   ```bash theme={null}
   docker compose logs -f api
   ```

   The API is healthy when you see: `api-1   listening at`

   Once all services are running smoothly, you can access Plane by opening your browser and going to the domain you configured.

   You now have Plane running in your air-gapped environment. If you run into any issues, check the logs using the commands above, or reach out to our support team for assistance.

3. [Activate your license key](/self-hosting/manage/manage-licenses/activate-airgapped)
