HospitalRun is an open source hospital management system built using Node.js which allows it to be very developer friendly and featureful(because of Node.js’ tons of libraries may!). Anyways, here how you can set up one for yourself.

This is a basic how-to, we will cover the advance installation of HospitalRun later or, we will be using Docker and Docker-Compose as the base and let’s get started.

First things first. You’ll need to setup Docker on our server if you haven’t read this article on how you can quickly set up a Docker server on Ubuntu 18.04 or go here to know how to set up for your machine.

Now assuming that you have installed docker on your server we will proceed further.

Cloning the HospitalRun repo to your server

git clone https://github.com/HospitalRun/hospitalrun-server.git

cd into the recently cloned repo

cd hospitalrun-server

Update the docker-compose.yml file and update the DOMAIN_NAME argument

sudo nano docker-compose.yml

Before proceeding to the build you should point the domain name that just added in the docker-compose.yml file to the server IP address, this step is required for the site to work on SSL.

Run the docker-compose command to build the containers.

sudo COMPOSE_HTTP_TIMEOUT=500 docker-compose up -d --build

At this point, your container should be running and you would be able to access the site using the domain name that you added in the previous step

If you are setting this up on AWS you may encounter an nginx error while building the container. The solution is to update the Nginx Dockerfile like this (assuming that you are still in the repo directory).

cd nginx
sudo nano Dockerfile

add the below line to line 6 of the Dockerfile and save

RUN printf "deb http://archive.debian.org/debian/ jessie main\ndeb-src http://archive.debian.org/debian/ jessie main\ndeb http://security.debian.org jessie/updates main\ndeb-src http://security.debian.org jessie/updates main" > /etc/apt/sources.list

I have proposed this solution as a pull request, but until it is merged, we will have to do this extra step to fix this error. see the pull request here.