We are interested in hosting our own instance of KoboToolbox. We would like to be able to host on a distributed architecture where we have multiple KoboToolbox servers behind a Load Balancer with a shared database, specifically on AWS. I notice that youβre using Mongodb and PostGres, Would it be possible to use AWS RDS instead? Do you have instructions on how to scale KoboToolbox?
Hi @onesky,
Using kobo-install
wonβt let you using AWS RDS or AWS DocumentDB right out of box.
On each EC2, you setup an instance of kobo-install
that way.
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Welcome to KoBoInstall! β
β β
β You are going to be asked some questions that will β
β determine how to build the configuration of `KoBoToolBox`. β
β β
β Some questions already have default values (within brackets). β
β Just press `enter` to accept the default value or enter `-` β
β to remove previously entered value. β
β Otherwise choose between choices or type your answer. β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Where do you want to install?
[/tmp/kobo-docker]:
Please confirm path [/tmp/kobo-docker]
1) Yes
2) No
[1]:
Do you want to see advanced options?
1) Yes
2) No
[1]:
What kind of installation do you need?
1) On your workstation
2) On a server
[1]: 2
Please choose which network interface you want to use?
eth0) X.X.X.X
other) Other
[eth0]:
Do you want to use separate servers for frontend and backend?
1) Yes
2) No
[2]: 1
Which role do you want to assign to this server?
1) frontend
2) backend
[frontend]: frontend
Do you use DNS for private routes?
1) Yes
2) No
[2]: 1
Private domain name [kobo.private]: mydomain.private
Public domain name [kobo.local]: mydomain.public
KPI sub domain [kf]:
KoBoCat sub domain [kc]:
Enketo Express sub domain name [ee]:
Do you want to use HTTPS?
1) Yes
2) No
[2]: 1
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Please note that certificates must be installed on a reverse-proxy β
β or a load balancer. β
β KoBoInstall can install one, if needed. β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Auto-install HTTPS certificates with Let's Encrypt?
1) Yes
2) No - Use my own reserve-proxy/load-balancer
[2]: 2
Is your reverse-proxy/load-balancer installed on this server?
1) Yes
2) No
[1]: 2
Internal port used by reverse proxy?
[80]:80
... -- fill out other options as you wish
Each EC2 can be behind a ALB/ELB. HTTPS certificate must be installed on the load balancer (thanks to AWS certificate manager). Use the port you entered at Internal port used by reverse proxy
between ALB/ELB and EC2s (80 by default)
We recommend to use route53
to create a private hostname for mydomain.private
. You can use it to point to AWS RDS, AWS DocumentDB and AWS ElastiCache.
kobo-install
will generate a config file with 4 private domain names:
postgres.mydomain.private
mongo.mydomain.private
redis-main.mydomain.private
redis-cache.mydomain.private
You should create these entries as CNAME
in route 53 and point them their respective AWS endpoints.
Be aware, kobo-install
does not support (yet) password for MongoDB
(or DocumentDB) and Redis
.