This guide explains how to install the OpenOps Docker Compose release on a newly created EC2 instance.

It assumes you have appropriate permissions on an existing AWS account.

Initial deployment

Create a new EC2 instance

  1. On the EC2 home page, click Launch Instance:
  2. Choose a name for your instance and configure the following settings:
    • Application and OS Images (Amazon Machine Image)
      • Choose Ubuntu as the instance image, as it simplifies Docker installation. Ubuntu Server 24.04 LTS was the latest available version when this guide was written.
      • Keep 64-bit (x86) as the instance architecture.
    • Instance Type. The t3.large instance type provides decent performance. You can choose a different type according to your needs, but it’s not recommended to select a size smaller than t3.medium.
    • Key Pair. Creating a new SSH key pair is recommended but not mandatory.
    • Network Settings. Allow SSH traffic from your own IP address:
    • Configure Storage. Choose 50GB to ensure you have enough space for Docker images and databases.
  3. Launch the instance and navigate to it once it’s created by clicking on the instance ID.
  4. Configure the network settings and open the necessary ports. Under Security, click on the security group. Click Edit inbound rules, then Add rule, and add two rules:
    1. In the first rule, for Type, choose HTTP, and under Source, select My IP.
    2. In the second rule, for Type, choose SSH. Click the text box next to Source, and select the prefix list that contains the words “ec2-instance-connect”. The full name should be similar to com.amazonaws.us-east-1.ec2-instance-connect, depending on your region. This allows you to connect to the instance via AWS CloudShell. The final rules should look like this:
  5. Click Save rules to finish the configuration.

Connect to the instance with CloudShell

  1. Navigate to your EC2 instance and click Connect to open an in-browser CloudShell session.
  2. Click Connect and wait for CloudShell to initialize.

Download OpenOps release files

  1. In CloudShell, create a new directory and download the release files:
    mkdir -p openops && cd openops && \
    wget https://github.com/openops-cloud/openops/releases/download/0.2.2/openops-dc-0.2.2.zip && \
    python3 -m zipfile -e openops-dc-0.2.2.zip . && cp --update=none .env.defaults .env
    
  2. Update the application URL to use the instance’s public IP address:
    sed -i 's/http:\/\/localhost/http:\/\/'$(wget -4qO - https://ifconfig.io/ip)'/g' .env
    

Feel free to edit the .env file with vim or another editor according to your needs. It’s highly recommended to change the default passwords.

Install Docker and start the containers

  1. Install Docker using Snap:
    sudo snap install docker
    
  2. Pull the images and start the Docker containers:
    sudo COMPOSE_PARALLEL_LIMIT=4 docker compose pull -q && sudo docker compose up -d
    
    If you encounter a rate limit, rerun the pull command. Note that pulling images may take several minutes.

You can now access the OpenOps application by navigating to the public IP address of your EC2 instance (e.g., http://20.20.20.20). The login credentials are configured in the .env file. If unchanged, the default username is admin@openops.com, and the password is please-change-this-password-1.

External databases

To use external PostgreSQL or Redis databases, modify the relevant variables in the .env file. You can disable the corresponding containers by adding a profile in the docker-compose.yml file:

After making changes, restart the Docker Compose containers:

sudo docker compose down && sudo docker compose up -d

TLS

For production usage, it’s recommended to enable TLS (HTTPS). You can achieve this by adding an EC2 Load Balancer to serve traffic to your EC2 instance.

Without TLS, cloud templates may not load properly when using the Safari browser.

Updating OpenOps to a newer version

See Updating OpenOps.

Support

Feel free to join our Slack community if you have any questions or need help with the installation.