My experience deploying ActiveCollab on AWS
Tags: aws, ubuntu, nginx, elasticsearch
Published: 2020-07-07 23:37:05

---
title: My experience deploying ActiveCollab on AWS
published: true
date: 2020-06-19 12:15:29 UTC
tags: aws, ubuntu, nginx, elasticsearch,
canonical_url: https://blog.n4vn33t.com/activecollab-on-aws/
---

## What is Active Collab?
 ![ActiveCollab on AWS](https://blog.n4vn33t.com/content/images/2020/06/AWS-Active-Collab.jpg)

**ActiveCollab** is a project management software with a clean interface and is available as SaaS Cloud Hosted/Self-Hosted model.

**AWS Resources** used for this project were

- **EC2** — For Server and Application Hosting.
- **RDS** — Managed Database.
- **ElastiCache** — Caching.
- **ElasticSearch** — Search and Indexing.
- **EBS** — Block Storage for EC2 Instance.
- **EBS and RDS Snapshot** — for easy restoration.

## The experience

Active Collab is enterprise focused business app. Cloud and Self hosted model serve a purpose, Cloud is suitable for non-tech companies who don't want to focus at infrastructure, maintenance and uptime whereas Self hosted version is suitable for businesses who want full control of their Data, Hosting and Maintenance and have teams working 24*7 maintaining uptime of the application.

The application is wonderful to use once setup but I found their guides a bit lacking for AWS deployments.

We wanted to use nginx, but the documentation lacks the guide for it, here is a sample that anyone can refer.

```
#
# Default server configuration
#
server {
        listen 80 default_server;
        listen [::]:80 default_server;
#
# Public folder should be the document root.
#
        root /var/www/site-directory/public;

#
# Active collab setup stuff
#
        index router.php;
        access_log /var/log/nginx/activecollab-{version}-access.log;
        error_log /var/log/nginx/activecollab-{version}-error.log debug;
        server_name _;

#
# URL Rewrite
#
        location / {
            if (!-e $request_filename) {
                rewrite ^/assets/(.*)$ /assets/$1 last;
                rewrite ^/avatars/(.*)$ /avatars/$1 last;
                rewrite ^/wallpapers/(.*)$ /wallpapers/$1 last;
                rewrite ^/verify-existence$ /verify.php last;
                rewrite ^/proxy.php$ /proxy.php last;
                rewrite ^/api/v([0-9]*)/(.*)$ /api.php?path_info=$2&api_version=$1 last;
                rewrite ^$ /router.php last;
                rewrite ^(.*) /router.php?path_info=$1 last;
            }
        }

#
# PHP FPM Backend
#
        location ~ \.php$ {
            fastcgi_pass unix:/run/php/php{version}-fpm.sock;
            include fastcgi_params;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_param SCRIPT_NAME $fastcgi_script_name;

            if (!-e $request_filename) {
                rewrite ^(.*) /router.php?path_info=$1 last;
            }
        }

}

```

> Setup instructions for **ElasticSearch on AWS** is not documented.

## How to setup Elasticsearch?

You need to spin up ES instance on AWS and connect all the different services in a VPC lock them down using Security groups.

Once you set up the **VPC**(Kinda like VLAN) and **SecurityGroups**(Firewall) correctly all the services will be accessible internally in AWS network and then you can open access to the VPS serving Active Collab.

Overall experience was good and you can scale the app easily by resizing EC2, EBS and add load balancing.