Installation documentation

 

Version

Description

Date

Version

Description

Date

1.0.1

Initial document

25 Dec 2023

1.0.2

Update nginx config for static files

11 Apr 2024

I. Server requirement

1. Web server

xStreamer supports almost OS: Windows, MacOS, Linux. However we recommend to use Linux, document is applied for linux system only.

For production environment, xStreamer needs a VPS server with at least:

  • 4GB of RAM - recommend 8GB

  • 40GB of HDD

  • 2 CPU core

  • 3 domains / sub domains

    • api.[your-domain] and point to server IP address

    • admin.[your-domain] and point to server IP address

    • [your-domain] and point to server IP address

II. Software requirements

xStreamer architecture needs these softwares

Ensure all softwares above are running before setup source code

Helpful links

Testing

From command line / terminal please run these commands to check

1. NodeJS

$ node -v v21.6.2

2. MongoDB

$ mongo --version MongoDB shell version v4.2.7 git version: 1b82c812a9c0bbf6dc79d5400de9ea99e6ffa025 allocator: system modules: none build environment: distarch: x86_64 target_arch: x86_64

3. Redis server

$ redis-server --version Redis server v=6.1.4 sha=00000000:0 malloc=libc bits=64 build=d4ba11298acbb366

4. FFMPEG

5. NGINX

6. Pm2

7. Yarn

III. Setup and test project locally

We provide source code with 4 folders, check below and use in the app accordingly

  • front-office web front-office

  • back-office admin control panel for the application

  • api api of the application

  • config-sample

    • env product environment example config

      • api.env sample configuration for api

      • front-office.env sample configuration for front web

      • back-office.env sample configuration for admin web

    • nginx

      • admin.example.com.conf sample nginx configuration for admin web

      • api.example.com.conf sample nginx configuration for api

      • example.com.conf sample nginx configuration for web front-office

1. API

  • Ensure node v16.x, MongoDB, Redis server, FFMPEG and yarn are running

  • CD to your API folder

  • Run yarn insall --production=false to install nodeJS dependencies and dev dependencies

  • Create new .env from config-sample > env > api.env file in the root dir

 

  • Content .env looks like below

  • Check Migration point to seed default

  • Run yarn dev to start development env

 

  • Open browsers and run http://localhost:8080 it should show success message or Hello World!

2. front-office web (front office)

  • Ensure nodejs and yarn are running

  • From front-office root directory run yarn insall --production=false to install nodeJS dependencies and dev dependencies

  • Create .env file from config-sample > env > front-office.env. Content looks like below. Change it with your configuration accordingly

  • Run yarn run dev to start development env

  • Then you can open browser http://localhost:8081 to see the web

3. Admin web

  • Similar front-office web, same steps.

  • Create .env file from config-sample > env > back-office.env. Content looks like below. Change it with your configuration accordingly

  • Run yarn dev to start development env

  • Then you can open browser http://localhost:8082 to see the web

IV. Setup and setup production environment with nginx

1. API

  • Make sure you have installed nodeJS dependencies by yarn install --production=false command. Configure it like local setup, pm2 was installed

  • In API root directory, run yarn build

  • Testing by run command yarn start:prod or node dist/main.js

  • Run pm2 start yarn --interpreter bash --name api.example.com -- start to run application under port 8080

Note: If have error when starting with Pm2, please try to start without interpreter

2. front-office web

  • cd front-office folder

  • Make sure you have installed nodeJS dependencies by yarn install --production=false command. Configure it like local setup, pm2 was installed

  • Run export NODE_ENV=production Or edit package.json file > check build script from "build": "next build" → change to "build": "NODE_ENV=production next build"

  • Run yarn build

  • Testing by run yarn start it should show success message

  • Run pm2 start yarn --interpreter bash --name api.example.com -- start to run application under port 8081. You can change port in package.json in start script

Note: If have error when starting with Pm2, please try to start without interpreter

 

3. Admin web

  • cd back-office folder

    Make sure you have installed nodeJS dependencies by yarn install --production=false command. Configure it like local setup, pm2 was installed

  • Run export NODE_ENV=production Or edit package.json file > check build script from "build": "next build" → change to "build": "NODE_ENV=production next build"

  • Run yarn build

  • Testing by run yarn start it should show success message

  • Run pm2 start yarn --interpreter bash --name admin.example.com -- start to run application under port 8082. You can change port in package.json in start script

Note: If have error when starting with Pm2, please try to start without interpreter

 

4. Setup nginx

a. Api

  • Let say our front-office code is in /var/www/api.example.com folder and api is running under port 8080, add new file in /etc/nginx/sites-enabled/api.example.com and content as bellow

  • You have to change with our server name and source code path

b. Front office

  • Let say our front-office code is in /var/www/example.com folder and front-office app is running under port 8081, add new file in /etc/nginx/sites-enabled/example.com and content as bellow

  • You have to change with our server name and source code path

c. Back office

  • Let say our back-office code is in /var/www/admin.example.com folder and back-office app is running under port 8082, add new file in /etc/nginx/sites-enabled/admin.example.com and content as bellow

  • You have to change with our server name and source code path

d. Testing

5. Check applications are running under pm2

  • Run pm2 ls to see your applications

  • Run pm2 stop [id] to stop app or pm2 reload [id] to reload

  • Run applications in start up by pm2 startup then pm2 save

6. Set up nginx with https

7. Migration

  • From API root directory run yarn migrate to seed default values for settings and users

    • Default admin: admin@[yourdomain] with domain is in .env file

    • Default password: adminadmin

    • If admin password is wrong, you can run node script reset-admin-pw to reset it to adminadmin

  • You can change default values in src > migrations folder