• Home
  • Create Plugins
  • Contact Us
  • Demo
    Installation & MaintenancePersonalizationSettingsClient ManagementInvoices & PaymentsProjects & TasksTeam & CollaborationProductivity ToolsSales & ServicesPluginsFAQChange logs
  1. Docs
  2. Installation & Maintenance

Install RISE to AWS EC2

Create an EC2 Instance

  • Log in to your AWS Management Console.
  • Navigate to EC2 and click Launch Instance .
  • Choose Ubuntu 22.04 LTS as the operating system.
  • Select at least t2.small (1 vCPU, 2 GB RAM) as the instance type.
  • Allocate at least 10 GB of storage.
  • Configure security groups to allow:
    • HTTP (80)
    • HTTPS (443)
    • SSH (22) for remote access.
  • Launch the instance and download the key pair.


Assign an Elastic IP

  • Navigate to EC2 > Elastic IPs.
  • Allocate a new Elastic IP .
  • Associate it with your newly created EC2 instance.


Configure DNS on Route 53

  • Navigate to Route 53 .
  • If you don’t have a Hosted Zone, create one for your domain.
  • Add an A record pointing your domain to the Elastic IP.


Set Up the Required Directories

  • Connect to your EC2 instance via SSH:

    ssh -i your-key.pem ubuntu@your-ec2-ip
    
  • Create the required folders:

    mkdir -p /home/ubuntu/rise_db /home/ubuntu/rise_public_site /home/ubuntu/letsencrypt


Upload RISE CRM Files

Use an SFTP client (e.g., FileZilla) to upload the RISE CRM files to:

/home/ubuntu/rise_public_site


Install Required Softwares on EC2

Run the following commands on the EC2 instance:

sudo apt update
sudo apt upgrade 
sudo apt install docker.io -y 
sudo systemctl start docker 
sudo systemctl enable docker
sudo usermod -aG docker $USER 
sudo apt install docker-compose -y 
sudo apt install docker-buildx 


Install SSL Certificate


Create a file /home/ubuntu/ssl/docker-compose.yml

Review following content and change your domain name and other configs:

version: '3.8'

services:
  nginx:
    image: nginx:latest
    container_name: rise_nginx
    restart: always
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./certbot/www:/var/www/certbot
      - ./certbot/conf:/etc/letsencrypt
    networks:
      - rise_network
    command: >
      /bin/sh -c "echo 'server {
        listen 80;
        server_name yourdomain.com;

        location /.well-known/acme-challenge/ {
          root /var/www/certbot;
        }

        location / {
          return 404;
        }
      }' > /etc/nginx/conf.d/default.conf && nginx -g 'daemon off;'"

  certbot:
    image: certbot/certbot
    container_name: certbot
    volumes:
      - ./certbot/www:/var/www/certbot
      - ./certbot/conf:/etc/letsencrypt
    entrypoint: "/bin/sh -c 'certbot certonly --webroot -w /var/www/certbot --email your-email@example.com -d yourdomain.com --agree-tos --no-eff-email && exit 0'"
    depends_on:
      - nginx
    networks:
      - rise_network

networks:
  rise_network:

Run the following command to execute the docker-compose:

cd /home/ubuntu/ssl && sudo docker-compose up --build

After installing the certificate successfully, you can exit by Ctrl+C command from keyboard and run the following command to stop the container.

cd /home/ubuntu/ssl && sudo docker-compose down

Official doc of docker compose is here. 



Configure Docker for Site

  1. Navigate to the RISE CRM directory:

    cd /home/ubuntu/rise_public_site
    
  2. Create a docker folder inside this directory:

    mkdir docker && cd docker
    
  3. Add following files on the folder. Please review the content first and remember to change the domain name and other things based on your site. 

    -/docker/docker-compose.yml

    version: '3.9'

    services:
      rise_php:
        build:
          context: .
          dockerfile: ./dockerfile-php
        container_name: rise_php
        restart: always
        volumes:
          - ../app:/var/www/html/app
          - ../assets:/var/www/html/assets
          - ../files:/var/www/html/files
          - ../install:/var/www/html/install
          - ../plugins:/var/www/html/plugins
          - ../system:/var/www/html/system
          - ../updates:/var/www/html/updates
          - ../writable:/var/www/html/writable
          - ../index.php:/var/www/html/index.php
        logging:
          driver: "json-file"
          options:
            max-size: "10m"
            max-file: "3"
        networks:
          - rise_proxy_network

      rise_nginx:
        image: nginx:latest
        container_name: rise_nginx
        restart: always
        volumes:
          - ../app:/var/www/html/app
          - ../assets:/var/www/html/assets
          - ../files:/var/www/html/files
          - ../updates:/var/www/html/updates
          - ../writable:/var/www/html/writable
          - ../install:/var/www/html/install
          - ../plugins:/var/www/html/plugins
          - ../index.php:/var/www/html/index.php
          - ./nginx/nginx.conf:/etc/nginx/conf.d/default.conf
          - ./nginx/entrypoint:/docker-entrypoint.d
          - ../certbot/www:/var/www/certbot
          - /home/ubuntu/ssl/certbot/conf:/etc/letsencrypt
        logging:
          driver: "json-file"
          options:
            max-size: "10m"
            max-file: "3"
        depends_on:
          - rise_php
        ports:
          - "80:80"
          - "443:443"  
        networks:
          - rise_proxy_network

      rise_mysql:
        image: mysql:8.0
        restart: always
        container_name: rise_mysql
        volumes:
          - /home/ubuntu/rise_db:/var/lib/mysql
        environment:
          MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
          MYSQL_DATABASE: ${MYSQL_DATABASE}
          MYSQL_USER: ${MYSQL_USER}
          MYSQL_PASSWORD: ${MYSQL_PASSWORD}

        logging:
          driver: "json-file"
          options:
            max-size: "10m"
            max-file: "3"
        ports:
          - "3306:3306"
        networks:
          - rise_proxy_network

    networks:
      rise_proxy_network:
        name: rise_proxy_network
        driver: bridge
        external: true


    - docker/dockerfile-php

    # Add PHP-FPM base image
    FROM php:8.2-fpm

    # Install required extensions
    RUN docker-php-ext-install mysqli pdo pdo_mysql 

    # Install GD extension
    RUN apt-get update &&     apt-get install -y libfreetype6-dev libjpeg62-turbo-dev libpng-dev &&     docker-php-ext-configure gd --with-freetype --with-jpeg &&     docker-php-ext-install -j$(nproc) gd

    # Install Intl extension
    RUN apt-get install -y libicu-dev &&     docker-php-ext-install intl

    # Install ZipArchive extension
    RUN apt-get install -y libzip-dev &&     docker-php-ext-install zip

    # Install IMAP extension
    RUN apt-get install -y libc-client-dev libkrb5-dev &&     docker-php-ext-configure imap --with-kerberos --with-imap-ssl &&     docker-php-ext-install imap

    # Copy PHP configuration file
    COPY php.ini /usr/local/etc/php/conf.d/site_php.ini


    - docker/nginx/nginx.conf

    To find more about nginx configuration, please check this doc.

    server {
        listen 80;
        server_name yourdomain.com;
        client_max_body_size 200M;
        
        location ~ /.well-known/acme-challenge/ {
            root /var/www/certbot;
        }

        root /var/www/html;

        # Redirect HTTP to HTTPS
        return 301 https://$host$request_uri;
    }

    server {
        listen 443 ssl;

        server_name yourdomain.com;
        client_max_body_size 200M;

        root /var/www/html;

        # Block access to sensitive directories
        location /app {
            deny all;
        }
        location /system {
            deny all;
        }
        location /writable {
            deny all;
        }


        # SSL certificates
        ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;

        location / {
            index index.php index.html index.htm;
            try_files $uri $uri/ /index.php?$query_string;
        }
        
        location ~ \.php$ {
            fastcgi_pass rise_php:9000;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include fastcgi_params;
            fastcgi_buffering off;
            gzip off;
            add_header X-Accel-Buffering no;
        }
    }


    -/docker/nginx/entrypoint/ entrypoint.sh. (This file should have executable 755 permission.)

    
    
    #!/bin/bash
    
    set -e

    sleep 5

    echo "Running nginx post-startup script."

    chown -R www-data:www-data /var/www/html
    chmod -R 755 /var/www/html

    # Execute CMD from Dockerfile
    exec "$@"


    -/docker/php.ini

    
    
    upload_max_filesize = 200M
    post_max_size = 200M


    -/docker/.env

    
    
    MYSQL_ROOT_PASSWORD=set_root_password
    MYSQL_DATABASE=set_db_name
    MYSQL_USER=set_db_user
    MYSQL_PASSWORD=set_db_password


Create the shared network:

sudo docker network create rise_proxy_network

Run the following command to execute the docker-compose:

cd /home/ubuntu/rise_public_site/docker && sudo docker-compose up --build -d


Complete Installation in Browser

  1. Open a web browser and visit:

    https://yourdomain.com
    
  2. Follow the on-screen instructions to complete the installation.

  3. Enter database and admin credentials when prompted. Use the database host = rise_mysql and other credentials should be same as you defined in the .env file.  

RISE CRM should now be successfully installed on your AWS EC2 instance.



Was this article helpful? Yes No
How can we improve this article?
© 2026 Fairsketch
Home 3rd Party Plugins Get Support Buy Now

Delete?

Are you sure? You won't be able to undo this action!
To do