Skip to main content

Getting start of new migration

I. System Requirement

  • Minimum:

    • OS: Ubuntu 18.04 LTS
    • Memory: 8 GB RAM
    • CPU: 4 Core CPU
    • Storage: 2 GB available space
  • Recommended:

    • OS: Ubuntu 18.04 LTS
    • Memory: 16 GB RAM or more
    • CPU: 8 Core CPU or more
    • Storage: 2 GB available space

II. Installation

Prerequisites:

1. GENERAL SETTINGS

1.1. Create and add new user permissions:

  • Create password for user root (or ubuntu depending on server):

    passwd
  • Create gadmin user and password:

    adduser gadmin
  • Add sudo privileges to the user:

    sudo usermod -aG sudo gadmin

1.2. Disable server access with password:

  • Switch to user gadmin:

    sudo su gadmin
  • Configure file sshd_config:

    sudo nano /etc/ssh/sshd_config
  • Change PasswordAuthentication to no

  • Save and restart sshd service:

    sudo systemctl restart ssh

1.3. Install docker:

  • Install some necessary packages:

    sudo apt-get update
    sudo apt-get install \
    apt-transport-https\
    ca-certificates \
    curl \
    gnupg\
    lsb-release
  • Add docker GPG key:

    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
  • Setup stable repository:

    echo \
    "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu\
    $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
  • Install docker engine:

    sudo apt-get update
    sudo apt-get install docker-ce docker-ce-cli containerd.io

1.4. Install docker-compose:

  • Download docker-compose:

    sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/ bin/docker-compose
  • Grant docker-compose permissions:

    sudo chmod +x /usr/local/bin/docker-compose

1.5. Grant user permission to use docker

  • Add user gadmin to the docker group:

    sudo usermod -aG docker gadmin
  • Activate the changes to groups:

    newgrp docker

1.6. Install nginx service

sudo apt update
sudo apt install nginx

1.7. Install nvm, nodejs

  • Install nvm using curl

    sudo curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
  • Add to bashrc

    source ~/.bashrc
  • Check nvm:

    nvm -v
  • Install node v16

    nvm install v16
  • Check node and npm:

    node -v
    npm -v

1.8. Nginx configuration:

  • Configure nginx the necessary services:

    sudo nano /etc/nginx/site-available/default
  • Create nginx user/password:

    sudo sh -c "echo -n 'gcalls:' >> /etc/nginx/ssl/.htpasswd"
    sudo sh -c "openssl passwd -apr1 >> /etc/nginx/ssl/.htpasswd"
  • Configure nginx authentication for pbx

    auth_basic "Restricted Content";
    auth_basic_user_file /etc/nginx/ssl/.htpasswd;
    sudo systemctl restart nginx
  • Create cert directory:

    sudo mkdir /etc/nginx/ssl
    cd /etc/nginx/ssl
  • Create crt file and key:

    sudo nano cert.gcalls.co.crt
    sudo nano cert.gcalls.co.key
  • Configure the cert file into nginx:

    ssl_certificate  /etc/nginx/ssl/cert.gcalls.co.crt;
    ssl_certificate_key /etc/nginx/ssl/cert.gcalls.co.key;
  • Restart nginx:

    sudo systemctl restart nginx

1.9. pm2

  • Install pm2:
    npm install pm2@latest -g
  • Check pm2:
    pm2 --version

2. SETUP SERVICES

Login GitLab via docker:
docker login https://registry.gitlab.com/gcalls-single-node
docker login https://registry.gitlab.com/gcalls-opensource
Enter username and password for your GitLab account.

2.1. Clone source devops:

cd
mkdir GcallsSingleNode
cd GcallsSingleNode
git clone -b release https://gitlab.com/gcalls-opensource/deletion/devops-prod.git

2.2. Clone source Community:

cd
cd GcallsSingleNode
git clone -b release https://gitlab.com/gcalls-opensource/gcallsce.git

2.3. Install Keycloak, Postgres

cd
cd GcallsSingleNode/gcalls-community-version/iam-service
  • Initialize docker for Keycloak and Postgres

    docker-compose up -d
  • Check Keycloak, Postgres:

    docker logs -f keycloak --tail 1000

    It's working if Http management interface listening on http://127.0.0.1:9990/management or Admin console listening on http://127.0.0.1:9990 is present. Press Crl + C

    docker exec -it iam-service_postgres psql -U keycloak

    It's working if it's accessible. Exit the container

    exit

2.4. Install Logtash, Log Service

cd
cd GcallsSingleNode/gcalls-community-version/log-service/docker
  • Initialize docker for Logstash

    docker-compose up -d logstash
  • Install Log Service

    cd ../
    npm install
    cp ../../devops-prod/env/log-service.env .env
    npm start
  • Check Logstash, Log Service:

    docker logs logstash -f

    Logstash is successfully initialized if the message "Successfully started Logstash API endpoint {:port=>9600}" is displayed

    pm2 logs log-service

    Log Service is successfully initialized if the message "server start 3030..." is displayed

2.5. Install Mongodb

cd
cd GcallsSingleNode/devops-prod
docker-compose -f dc-mongo0.yml up -d
  • Check MongoDB:
    docker exec -it mongo0 mongo -u admin -p Gcalls2021devops
    It's working if it's accessible. Exit the container
    exit

2.6. Install Couchdb

docker-compose -f dc-couchdb.yml up -d
  • Check Couchdb:
    curl localhost:5984

2.7. Install Redis

docker-compose -f dc-redis.yml up -d
  • Check Redis:
    docker exec -it redis redis-cli
    It's working if it's accessible. Exit the container
    exit

2.8. Install Backend Service

  • User Service

    docker-compose -f dc-user.yml up -d
  • Customer Service

    docker-compose -f dc-customerService.yml up -d
  • Third Party Service

    docker-compose -f dc-3rd.yml up -d
  • Record Service

    docker-compose -f dc-record.yml up -d
  • Filter Service

    docker-compose -f dc-filter.yml up -d

2.9. Install Middle Service

  • Access Service

    docker-compose -f dc-access.yml up -d
  • Pbxlog Service

    docker-compose -f dc-pbxlog.yml up -d
  • Mobile Service

    docker-compose -f dc-mobile.yml up -d
  • Api Management

    docker-compose -f dc-api.yml up -d
  • Integration Manager

    docker-compose -f dc-integration.yml up -d

2.10. Install Fontend Service

  • Webphone Service

    docker-compose -f dc-webphone.yml up -d
  • Portal

    docker-compose -f dc-customerManagement.yml up -d

2.11. Check docker container:

  • View running dockers' info:

    docker ps
  • View docker containers' status (run separately):

    docker logs user-service
    docker logs customer-service
    docker logs third-party-service
    docker logs record-service
    docker logs filter-service
    docker logs access-service
    docker logs pbxlog-service
    docker logs mobile-service
    docker logs api-management
    docker logs integration-manager
    docker logs webphone-service
    docker logs customer-management

III. Backup & Restore

1. Mongodb

  • Backup data:

    • Ssh into vm mongo needs backup
      docker exec mongo0 mongodump -u admin -p password --authenticationDatabase admin --gzip --out /usr/backups   
  • Restore data:

    mongorestore -u admin -p password --authenticationDatabase admin --gzip -d {db name}

2. Postgres

  • Backup data:

    • Ssh into vm mongo needs backup
      docker exec -i postgres_docker pg_dump -U keycloak --verbose
  • Restore data:

    • Stop Keycloak:

      docker stop keycloak
    • Docker exec into Postgres:

      docker exec -it iam-service_postgres_1 sh
    • Create a new user:

      createuser -U keycloak --interactive
    • Fill out name and assign the user as a superuser:

      Enter name of role to add: <b>postgres</b>
      Shall the new role be a superuser? (y/n) <b>y</b>
    • Access the database as the new user:

      psql -U postgres
    • Delete keycloak database

      drop database keycloak
    • Recreate keycloak database

      create database keycloak
    • Exit psql and docker container

      exit
      \q
    • Create a new folder and access it:

      mkdir postgres
      cd postgres
    • Download backup data

      wget -O dumpfile {backupFile}
    • Import into Postgres

      cat dumpfile | docker exec -i iam-service_postgres_1 psql -U keycloak

IV. Kết Luận

Trên đây là tổng hợp hướng dẫn triển khai hệ thống Gcalls. Nếu có câu hỏi nào vui lòng điền vào form bên dưới.