Linux This section covers the deployment of the TopMod backend system on a Linux-based server. Requirements Hardware Requirements 8GB RAM 4 Core/8 Thread AMD64 based processor 500GB available storage Software Requirements TopMod QA's server-side infrastructure relies on Docker and Docker Compose, as well as an Nginx reverse proxy paired with LetsEncrypt SSL generation. The easiest way to ensure that the Docker requirements are met is by using the docker convenience script: curl -fsSL https://get.docker.com -o get-docker.shsudo sh ./get-docker.sh --dry-run To install Nginx, run the following: sudo apt update sudo apt install nginx To install LetsEncrypt's certbot, run the following: sudo apt install snapd snap install core; snap refresh core snap install --classic certbot The following ports must be available on the server (not in use), : 443 (TCP/UDP) - Exposed 3000 (TCP/UDP) 3478 (TCP/UDP) - Exposed 5349 (TCP/UDP) - Exposed 17769 (TCP/UDP) 21338 (TCP/UDP) 32770 (TCP/UDP) - Exposed Ensure that your A records are pointing to the server and that DNS requests are resolving correctly. You will need two of them, one for the Collaboration system, and the second for the TopMod QA backend itself. Sharepoint Setup In order to connect to Sharepoint, the backend must be registered by following the instructions located at: https://learn.microsoft.com/en-us/entra/identity-platform/quickstart-register-app?tabs=certificate Once the app registration is complete, follow these instructions to generate a self-signed certificate which will then be added to your Sharepoint App registration: https://learn.microsoft.com/en-us/entra/identity-platform/howto-create-self-signed-certificate   On the right hand side of the registration overview, you can add the certificate. Once this is done, go to the API Permissions menu on the left and add the following permissions: Permission Group Permission Type Permission Sharepoint Application Sites.FullControl.All Microsoft Graph Delegated User.Read Preparations Please ensure that you have the following information to hand before continuing with the setup: TopMod QA License ID (Provided by DAQA) TopMod QA Client ID (Provided by DAQA) TopMod QA Deployment Binary (Provided by DAQA) Desired TopMod QA backend URL (FQDN) Desired TopMod QA collaboration URL (FQDN) Sharepoint site URL (ie.,  https://ORG.sharepoint.com:443/sites/SITENAME) Sharepoint tenantId (32bit UUID) Sharepoint clientId (32bit UUID) Sharepoint secret Sharepoint certificate & certificate key/password SMTP server details (Credentials, Host, Port) Deployment Available Arguments The TopMod QA deployment binary has several arguments available: help Prints the help message and outlines the same information as available in this section. auth Prompts the user for client and license IDs in order to download and validate the license key from DAQA servers. setup Prompts the user for multiple pieces of information for the setup including sharepoint and smtp details. This option generates all of the necessary docker-compose scripts to run the system, as well as logs the user into DAQA's docker registry. nginx Sets up the appropriate host files in Nginx and requests LetsEncrypt SSL certificates. run Pulls and runs each of the containers in order. stop Stops all running containers. General Usage To begin, run the deployment binary with the "auth" argument to get the necessary License.key file. This is required before the user can run the "setup" argument. The output of the "auth" argument will look something like this upon completion: user@debian:~$ sudo ./deployment auth Welcome to... 🚀 DAQA's TopMod QA Deployment ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ Let's get started... 🔑 Authentication ├─[🔑 ] Enter your client ID: exampleClientId └─[🔑 ] Enter your license ID: exampleLicenseId License Validated. Limits └─[Users] 50 └─[Expiry] 2099-01-01 12:00:00 Once the License.key file is downloaded and validated, the "setup" argument can be run. Once again the user will be asked a series of questions, this time in order to dynamically generate docker-compose.yml files and the appropriate folder structure. The "setup" argument will also save a file labelled "backup" in the current directory. This can be piped back into the deployment binary if the system needs to be redeployed or if the user has encountered an error. To do this, simply run: sudo ./deployment setup < backup After providing the required information, the user will be logged in to the DAQA docker repository automatically. Next, use the "nginx" argument to setup the two hosts and their SSL certificates. Once this step completes, the "run" argument may now be used to start all of the containers.