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?
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 : Do you want to see advanced options? 1) Yes 2) No : What kind of installation do you need? 1) On your workstation 2) On a server : 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 : 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 : 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 : 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 Is your reverse-proxy/load-balancer installed on this server? 1) Yes 2) No : 2 Internal port used by reverse proxy? :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:
You should create these entries as
CNAME in route 53 and point them their respective AWS endpoints.
kobo-install does not support (yet) password for
MongoDB (or DocumentDB) and