RTMIS Self-Host Installation Guide
Installation Guide
Below step is for self-host or on-prem installation process. Please follow Developer-Guide to setup the development environement.
Infrastructure Diagram
System Requirements
Application Server
- CPU: 2 GHz Dual Core Processor
- Memory: 4 GiB
- Storage: 25 GiB or more Disk Space
- Operating System: Ubuntu Server 22.04 - x86_64 (AMD/Intel)
- IP: 1 public IP (plus 1 private IP if the database server in private IP)
Database Server
- CPU: 2 GHz Dual Core Processor
- Memory: 4 GiB
- Storage: 25 GiB or more Disk Space
- Operating System: Ubuntu Server 22.04 - x86_64 (AMD/Intel)
- IP: 1 private or public IP
Prerequisite
- Servers: Application and database servers provisioned as specified above
- Domain: Domain or Subdomain which pointed to the server's public IP
- Docker Engine: 20.10 or above
- Git: 2.39 or above
-
3rd Party Service Providers:
- Mailjet: Mail delivery service
- Sentry: Error tracking
- Github Account: Code repository and CI/CD tool platform
- Expo: Mobile application build service
Preparation
Note: The following guide is an example installation on Ubuntu and Debian based systems. You need the below depedencies installed both on Application Server and Database Server.
Install Docker Engine
-
UpdateInstalltheDockerapt package index and install packages to allow apt to use a repository over HTTPS:engine:sudo
apt update sudo apt install ca-certificates curl gnupg lsb-release Add Docker’s official GPG key:sudo mkdir -p /etc/apt/keyringscurl -fsSLL https://download.get.docker.com/linux/ubuntu/gpgcom | sudogpg --dearmor -o /etc/apt/keyrings/docker.gpgUse the following command to set up the repository:echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/nullUpdate the apt package index:sudo apt updateInstall Docker Engine, containerd, and Docker Compose.sudo apt-get install docker-ce docker-ce-cli containerd.io docker-composesh-
Manage Docker as a non-root user.
sudo groupadd dockersudo usermod -aG docker $USER
Install Git Version Control
The RTMIS uses git as version control. Therefore it is better to install git to make it easier to retrieve updates instead download the repository zip.
sudo apt install git
Install Database Server
Clone
Execute the Repositorycommands
gitbelow clone https://github.com/akvo/rtmis
Environment Variable Setup
Install text editor to be able to edit .env file
sudo apt install nano
or
sudo apt install vim
Go toon the repository directory, then edit the environment
cd rtmis/deploy
vim .db.env
Example Environment:
POSTGRES_PASSWORD=<<your postgres user's password>>
Run the Database Server
docker compose -f docker-compose.db.yml up -d
Install Application Server
Execure below commands on server who allocated for applicationthe database server.
Clone the Repository
git clone https://github.com/akvo/rtmis
Environment Variable Setup
Install text editor to be able to edit .env
file
sudo apt install nano
or
sudo apt install vim
Go to the repository directory, then edit the environment
cd rtmis/deploy
cp db.env.template db.env
vim db.env
Example Environment:
POSTGRES_PASSWORD=<<your postgres user's password>>
# Ensure the values below match those in the app.env file in the application.
DB_USER=<<your rtmis db user>>
DB_PASSWORD=<<your postgresql password>>
DB_SCHEMA=<<your rtmis schema name>>
Run the Database Server
docker compose -f docker-compose.db.yml up -d
Install Application Server
Execute the commands below on the server allocated for the application server.
Clone the Repository
git clone https://github.com/akvo/rtmis
Environment Variable Setup
Install text editor to be able to edit .env
file
sudo apt install nano
or
sudo apt install vim
Go to the repository directory, then edit the environment
cd rtmis/deploy
cp app.env.template app.env
vim app.env
Example Environment:environment variables:
DB_HOST=<<your postgresql ip>>
DB_PASSWORD=<<your postgresql password>>
DB_SCHEMA=<<your rtmis schema name>>
DB_USER=<<your rtmis db user>>
POSTGRES_PASSWORD=<<your postgres user's password>>
DEBUG="False"
DJANGO_SECRET=<<your Django secret key>>
MAILJET_APIKEY=<<your mailjet api key from mailjet portal>>
MAILJET_SECRET=<<your mailjet api secret from mailjet portal>>
WEBDOMAIN=<<your exposed domain url>>
APK_UPLOAD_SECRET=<<your apk upload secret>>
STORAGE_PATH="./storage"
SENTRY_MOBILE_ENV="<<your sentry env>>"
SENTRY_MOBILE_DSN="<<your_sentry_mobile_DSN>>"
SENTRY_MOBILE_AUTH_TOKEN="<<your_sentry_mobile_auth_token>>"
TRAEFIK_CERTIFICATESRESOLVERS_MYRESOLVER_ACME_EMAIL=<<administrator email for Letsencrypt registration>>
Build the Frontend
docker compose -f docker-compose.frontend-build.yml up
Run the Application
docker compose -f docker-compose.app.yml up -d --build