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):
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 updatesudo 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 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-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 -vnpm -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/sslcd /etc/nginx/ssl -
Create crt file and key:
sudo nano cert.gcalls.co.crtsudo 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 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 logstash -
Install Log Service
cd ../npm installcp ../../devops-prod/env/log-service.env .envnpm start -
Check 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 -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-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 -
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.