# Alley-HSBC-Frontend ## Build docker image from Dockerfile 1. cd into the root of this repository. 2. On Windows * run `docker build --tag .` On Linux * run `DOCKER_BUILDKIT=1 docker build --tag .` Where `` is the name you give to the image. ## Deploy in docker (docker-compose) 1. Deploy using [docker-compose.yml](/docker/docker-compose.yml). 2. Make sure both docker and docker-compose are installed. 3. If you pull image teamalley/digital-walkaround from dockerhub * You need to first login to dockerhub by running `docker login` command. The Username and LoginToken are provided under files in the "docker" directory If you built your own image * Please Replace the image name in "docker-compose.yml" with `` 4. cd into the direct where you store the "docker-compose.yml" file. 5. * run `docker-compose up -d` to start the service. * run `docker-compose down` to stop the service 6. You can access it on port 8080 by default. To change the port number, edit docker-compose.yml. Under ports, replace `8080:8080` with `:8080`. Then stop the service and start it again. 7. Node: you may exprience issues running the container on machines with limited ram. * If you are running this container on a server with 2-3 GiB of ram, you need to uncomment the two "environment" lines that sets "--max-old-space-size=1536" to allow node to allocate up to 1.5 GiB of ram. Also make sure there are no other programs on your system that requires lots of ram. \ You should not run this container on machines with less than 2 GiB of ram * If the container restarts unexpectedly, try running the container with `docker-compose up` without `-d` option to show the error messages. ## Deploy directly on a Server If You prefer installing it directly or you are expriencing some issues with the docker container. Follow the instructions bellow. 1. Make sure you have a server with node v16.14.0 and npm 8.3.1 installed (other versions may work but not guaranteed). A linux machine with `screen` installed is recommended. 2. clone the repository and `cd` into the root folder of the repository. 3. If you are installing it on a linux machine with `screen` installed, run `screen -S ` to create a new screen. where `` can be any name you choose. 4. run `npm run start-prod` 5. if you followed step 3, press `CTRL ^A` then press `D` while holding `CTRL ^A`. The screen will detach. 6. You can then access it on port 8080 ## Setup Reverse Proxy You can use Apache, Ngnix or other tools to set up a reverse proxy and connect it to a hostname. [here](https://httpd.apache.org/docs/2.4/howto/reverse_proxy.html) is a guide on apache reverse proxy setup. ## Enable HTTPS You might want to enable https to secure your webapp since it includes private information (such as your username and password). [here](https://www.digitalocean.com/community/tutorials/how-to-secure-apache-with-let-s-encrypt-on-ubuntu-20-04) is a guide on enabling https with Let's Entrypt on a Ubuntu server with apache.