Installation documentation

 

Version

Description

Date

Version

Description

Date

1.0.1

Initial document

25 Dec 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

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=5.0.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 frontend

  • 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 frontend

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. Frontend web (front office)

  • Ensure nodejs and yarn are running

  • From frontend 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 Frontend 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. Frontend web

  • cd user web folder

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

  • 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 user admin folder

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

  • 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 frontend 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. Frontend

  • Let say our frontend code is in /var/www/example.com folder and Frontend 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. Admin

  • Let say our frontend code is in /var/www/admin.example.com folder and Frontend 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