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:
- Access to Gcalls Devops and Gcalls Community
- nvm
- git
- node
- npm
- curl, wget
- pm2
- docker-compose
- docker
1. GENERAL SETTINGS
1.1. Create and add new user permissions:
Create password for user root (or ubuntu depending on server):
passwdCreate gadmin user and password:
adduser gadminAdd sudo privileges to the user:
sudo usermod -aG sudo gadmin
1.2. Disable server access with password:
Switch to user gadmin:
sudo su gadminConfigure file sshd_config:
sudo nano /etc/ssh/sshd_configChange PasswordAuthentication to no
Save and restart sshd service:
sudo systemctl restart ssh
1.3. Install docker:
Install some necessary packages:
sudo apt-get updatesudo apt-get install \
apt-transport-https\
ca-certificates \
curl \
gnupg\
lsb-releaseAdd docker GPG key:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpgSetup 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/nullInstall docker engine:
sudo apt-get updatesudo 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-composeGrant 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 gadminActivate 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 | bashAdd to bashrc
source ~/.bashrcCheck nvm:
nvm -vInstall node v16
nvm install v16Check node and npm:
node -vnpm -v
1.8. Nginx configuration:
Configure nginx the necessary services:
sudo nano /etc/nginx/site-available/defaultCreate 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 nginxCreate cert directory:
sudo mkdir /etc/nginx/sslcd /etc/nginx/sslCreate crt file and key:
sudo nano cert.gcalls.co.crtsudo nano cert.gcalls.co.keyConfigure 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
docker login https://registry.gitlab.com/gcalls-single-node
docker login https://registry.gitlab.com/gcalls-opensource
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 -dCheck Keycloak, Postgres:
docker logs -f keycloak --tail 1000It's working if
Http management interface listening on http://127.0.0.1:9990/managementorAdmin console listening on http://127.0.0.1:9990is present. Press Crl + Cdocker exec -it iam-service_postgres psql -U keycloakIt'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 logstashInstall Log Service
cd ../npm installcp ../../devops-prod/env/log-service.env .envnpm startCheck Logstash, Log Service:
docker logs logstash -fLogstash is successfully initialized if the message "Successfully started Logstash API endpoint {:port=>9600}" is displayed
pm2 logs log-serviceLog 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:It's working if it's accessible. Exit the container
docker exec -it mongo0 mongo -u admin -p Gcalls2021devopsexit
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:It's working if it's accessible. Exit the container
docker exec -it redis redis-cliexit
2.8. Install Backend Service
User Service
docker-compose -f dc-user.yml up -dCustomer Service
docker-compose -f dc-customerService.yml up -dThird Party Service
docker-compose -f dc-3rd.yml up -dRecord Service
docker-compose -f dc-record.yml up -dFilter Service
docker-compose -f dc-filter.yml up -d
2.9. Install Middle Service
Access Service
docker-compose -f dc-access.yml up -dPbxlog Service
docker-compose -f dc-pbxlog.yml up -dMobile Service
docker-compose -f dc-mobile.yml up -dApi Management
docker-compose -f dc-api.yml up -dIntegration Manager
docker-compose -f dc-integration.yml up -d
2.10. Install Fontend Service
Webphone Service
docker-compose -f dc-webphone.yml up -dPortal
docker-compose -f dc-customerManagement.yml up -d
2.11. Check docker container:
View running dockers' info:
docker psView docker containers' status (run separately):
docker logs user-servicedocker logs customer-servicedocker logs third-party-servicedocker logs record-servicedocker logs filter-servicedocker logs access-servicedocker logs pbxlog-servicedocker logs mobile-servicedocker logs api-managementdocker logs integration-managerdocker logs webphone-servicedocker 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
- Ssh into vm mongo needs backup
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
- Ssh into vm mongo needs backup
Restore data:
Stop Keycloak:
docker stop keycloakDocker exec into Postgres:
docker exec -it iam-service_postgres_1 shCreate a new user:
createuser -U keycloak --interactiveFill 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 postgresDelete keycloak database
drop database keycloakRecreate keycloak database
create database keycloakExit psql and docker container
exit\qCreate a new folder and access it:
mkdir postgres
cd postgresDownload 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.