- Hướng dẫn này dành cho các image không sử dụng LVM
- Sử dụng công cụ virt-manager hoặc web-virt để kết nối tới console máy ảo
- OS : Ubuntu 18.04 LTS
- Phiên bản OpenStack sử dụng là Queens
- Hướng dẫn bao gồm 2 phần chính: thực hiện trên máy ảo cài OS và thực hiện trên KVM Host
- Đóng image trên KVM
- Cấu hình ban đầu:
- RAM: 2 GB
- Disk: 10 GB
- CPU: 2
-
OS: Ubuntu 18.04 LTS
-
Thông số phiên bản các service của Jitsi:
- jicofo=1.0-541-1
- jitsi-meet=2.0.4384-1
- jitsi-meet-prosody=1.0.3969-1
- jitsi-meet-turnserver=1.0.3969-1
- jitsi-meet-web=1.0.3969-1
- jitsi-meet-web-config=1.0.3969-1
- jitsi-videobridge2=2.1-164-gfdce823f-1
- Tiến hành cài đặt Ubuntu 18.04 LTS như bình thường
- Sau khi cài đặt xong, ta tiến hành sang bước đóng image
-
Bật máy ảo, truy cập bằng tài user ubuntu và bắt đầu thực hiện cài đặt môi trường.
sudo su # Đặt mật khẩu cho root passwd Enter new UNIX password: <root_passwd> Retype new UNIX password: <root_passwd>
-
Cấu hình cho phép ssh bằng user root
/etc/ssh/sshd_config
sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/'g /etc/ssh/sshd_config sed -i 's/#PasswordAuthentication yes/#PasswordAuthentication yes/'g /etc/ssh/sshd_config service sshd restart
-
Disable firewalld
systemctl disable ufw systemctl stop ufw systemctl status ufw
-
Logout ra khỏi VM:
logout
-
Login lại bằng user
root
-
Xóa user
ubuntu
userdel ubuntu rm -rf /home/ubuntu
-
Đổi timezone về
Asia/Ho_Chi_Minh
timedatectl set-timezone Asia/Ho_Chi_Minh
-
Bổ sung env locale
echo "export LC_ALL=C" >> ~/.bashrc
-
Disable ipv6
echo "net.ipv6.conf.all.disable_ipv6 = 1" >> /etc/sysctl.conf echo "net.ipv6.conf.default.disable_ipv6 = 1" >> /etc/sysctl.conf echo "net.ipv6.conf.lo.disable_ipv6 = 1" >> /etc/sysctl.conf sysctl -p cat /proc/sys/net/ipv6/conf/all/disable_ipv6
OUTPUT:
1: OK, 0: Not OK
-
Kiểm tra và xóa swap:
-
Kiểm tra swap:
cat /proc/swaps Filename Type Size Used Priority /swap.img file 4038652 0 -2
-
Xóa swap:
swapoff -a rm -rf /swap.img
-
Xóa cấu hình swap file trong file /etc/fstab
sed -Ei '/swap.img/d' /etc/fstab
-
Kiểm tra lại:
free -m
-
-
Update
apt-get update -y apt-get upgrade -y apt-get dist-upgrade -y apt-get autoremove -y
-
Cấu hình để instance báo log ra console và đổi name Card mạng về
eth*
thay vìens
,eno
sed -i 's|GRUB_CMDLINE_LINUX=""|GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0 console=tty1 console=ttyS0"|g' /etc/default/grub update-grub
-
Disable netplan
apt-get --purge remove netplan.io -y rm -rf /usr/share/netplan rm -rf /etc/netplan apt-get update apt-get install -y ifupdown
-
Tạo file interface
cat << EOF > /etc/network/interfaces auto lo iface lo inet loopback auto eth0 iface eth0 inet dhcp EOF
-
Reboot máy, kiểm tra card
eth0
apt-get install netplug -y
wget https://raw.githubusercontent.com/danghai1996/thuctapsinh/master/HaiDD/CreateImage/scripts/netplug_ubuntu -O netplug
mv netplug /etc/netplug/netplug
chmod +x /etc/netplug/netplug
Kiểm tra snap:
df -H
Filesystem Size Used Avail Use% Mounted on
udev 2.1G 0 2.1G 0% /dev
tmpfs 414M 6.1M 408M 2% /run
/dev/vda2 22G 2.2G 18G 11% /
tmpfs 2.1G 0 2.1G 0% /dev/shm
tmpfs 5.3M 0 5.3M 0% /run/lock
tmpfs 2.1G 0 2.1G 0% /sys/fs/cgroup
/dev/loop0 93M 93M 0 100% /snap/core/7270
tmpfs 414M 0 414M 0% /run/user/0
List danh sách snap
snap list
Name Version Rev Tracking Publisher Notes
core 16-2.39.3 7270 latest/stable canonical* core
Remove snapd package
apt purge snapd -y
Kiểm tra lại
df -H
Filesystem Size Used Avail Use% Mounted on
udev 2.1G 0 2.1G 0% /dev
tmpfs 414M 6.1M 408M 2% /run
/dev/vda2 22G 2.1G 18G 11% /
tmpfs 2.1G 0 2.1G 0% /dev/shm
tmpfs 5.3M 0 5.3M 0% /run/lock
tmpfs 2.1G 0 2.1G 0% /sys/fs/cgroup
tmpfs 414M 0 414M 0% /run/user/0
hostnamectl set-hostname jitsimeet
bash
Enable repo universe nếu chưa được kích hoạt
sudo add-apt-repository universe
Cài đặt OpenJDK JRE 8:
sudo apt install -y openjdk-8-jre-headless
Kiểm tra:
java -version
Cấu hình môi trường JAVA_HOME
echo "JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")" | sudo tee -a /etc/profile
source /etc/profile
sudo apt install -y nginx
sudo systemctl start nginx.service
sudo systemctl enable nginx.service
Cài Jitsi repo:
cd
wget -qO - https://download.jitsi.org/jitsi-key.gpg.key | sudo apt-key add -
sudo sh -c "echo 'deb https://download.jitsi.org stable/' > /etc/apt/sources.list.d/jitsi-stable.list"
sudo apt update -y
Cài đặt Jitsi theo phiên bản các service đã định sẵn ở trên:
apt-get install jicofo=1.0-541-1 jitsi-meet=2.0.4384-1 jitsi-meet-prosody=1.0.3969-1 jitsi-meet-turnserver=1.0.3969-1 jitsi-meet-web=1.0.3969-1 jitsi-meet-web-config=1.0.3969-1 jitsi-videobridge2=2.1-164-gfdce823f-1 -y
Trong quá trình cài đặt, sẽ được yêu cầu điền hostname. Tại đó, điền IP của máy ảo.
Sau đó, ta sẽ được hỏi về SSL cert: -> Chọn Generate a new self-signed certificate (You will later get a chance to obtain a Let’s Encrypt certificate)
Restart các service:
systemctl start prosody
systemctl enable prosody
systemctl start jicofo
systemctl enable jicofo
systemctl start jitsi-videobridge2.service
systemctl enable jitsi-videobridge2
systemctl restart nginx
Truy cập bằng IP của máy ảo
Cài đặt theo tài liệu:
https://github.com/cloud365vn/NH-Jitsi/blob/development/docs/jitsi-ubuntu-deploy.md
Tắt chế độ Debug
sed -i 's|DEBUG = True|DEBUG = False|g' /opt/NH-Jitsi/project/settings/base.py
Vào file /usr/share/jitsi-meet/interface_config.js
, tìm đến dòng GENERATE_ROOMNAMES_ON_WELCOME_PAGE
sửa giá trị true thành false
.
sed -i 's|GENERATE_ROOMNAMES_ON_WELCOME_PAGE: true,|GENERATE_ROOMNAMES_ON_WELCOME_PAGE: false,|g' /usr/share/jitsi-meet/interface_config.js
Vào file /etc/jitsi/meet/<domain>-config.js
. Ở đây là IP: /etc/jitsi/meet/10.10.30.188-config.js
, thêm dòng
disableDeepLinking: true,
Vào file /etc/jitsi/meet/<domain>-config.js
. Ở đây là IP: /etc/jitsi/meet/10.10.30.188-config.js
, thêm dòng
startWithVideoMuted: true,
Vào file /usr/share/jitsi-meet/interface_config.js
, sửa dòng: DISABLE_VIDEO_BACKGROUND
sed -i 's|DISABLE_VIDEO_BACKGROUND: false,|DISABLE_VIDEO_BACKGROUND: true,|g' /usr/share/jitsi-meet/interface_config.js
Sau đó, xóa videobackgroundblur
tại mục TOOLBAR_BUTTONS
để bỏ chức năng làm mờ background đi
sed -i "s|'videobackgroundblur',||g" /usr/share/jitsi-meet/interface_config.js
Sửa các dòng ở file /usr/share/jitsi-meet/interface_config.js
sed -i 's|DISABLE_FOCUS_INDICATOR: false,|DISABLE_FOCUS_INDICATOR: true,|g' /usr/share/jitsi-meet/interface_config.js
sed -i 's|DISABLE_DOMINANT_SPEAKER_INDICATOR: false,|DISABLE_DOMINANT_SPEAKER_INDICATOR: true,|g' /usr/share/jitsi-meet/interface_config.js
Tải file tiếng việt đã được chỉnh sửa lại tại: https://github.com/cloud365vn/NH-Jitsi/blob/master/lang/main-vi.json
Thay thế nội dung file /usr/share/jitsi-meet/lang/main-vi.json
bằng file tải về
cat file_main-vi.json-custom > /usr/share/jitsi-meet/lang/main-vi.json
# Xóa file custom
rm -f file_main-vi.json-custom
Tạo một script
cat << EOF >> /bin/restartJitsiService.sh
#!/bin/bash
DATE=\$(date "+%T %d/%m/%Y")
/etc/init.d/jicofo restart
/etc/init.d/prosody restart
/etc/init.d/jitsi-videobridge2 restart
echo "Da thuc hien Script restart vao luc $DATE" >> /var/log/jitsi/scriptRestart.log
EOF
Sau đó phân quyền cho script:
chmod +x /bin/restartJitsiService.sh
Kiểm tra:
ll /bin/ | grep restartJitsiService.sh
Cấu hình crontab để chạy script vào 12h trưa và 12h đêm hằng ngày. Mở crontab:
crontab -e
Thêm vào dòng sau:
00 00,12 * * * /bin/restartJitsiService.sh
Chú ý: qemu-guest-agent
là một daemon chạy trong máy ảo, giúp quản lý và hỗ trợ máy ảo khi cần (có thể cân nhắc việc cài thành phần này lên máy ảo)
Để có thể thay đổi password máy ảo bằng nova-set password thì phiên bản qemu-guest-agent
phải >= 2.5.0
apt-get install software-properties-common -y
apt-get update -y
apt-get install qemu-guest-agent -y
service qemu-guest-agent start
Kiểm tra phiên bản qemu-ga bằng lệnh:
qemu-ga --version
service qemu-guest-agent status
curl -Lso- https://raw.githubusercontent.com/nhanhoadocs/ghichep-cmdlog/master/cmdlog.sh | bash
sudo apt-get install cloud-utils cloud-initramfs-growroot -y
Cài đặt cloud-init
apt-get install -y cloud-init
Cấu hình user mặc định
sed -i 's/name: ubuntu/name: root/g' /etc/cloud/cloud.cfg
Disable default config route
sed -i 's|link-local 169.254.0.0|#link-local 169.254.0.0|g' /etc/networks
Cấu hình datasource, bỏ chọn mục NoCloud bằng cách dùng dấu SPACE, sau đó ấn ENTER
dpkg-reconfigure cloud-init
Clean cấu hình và restart service
cloud-init clean
systemctl restart cloud-init
systemctl enable cloud-init
systemctl status cloud-init
echo "from users.models import User; User.objects.all().delete()" | /opt/env/bin/python /opt/NH-Jitsi/manage.py shell
Đổi tất cả IP về một biến: ip.address.vm
bash /opt/NH-Jitsi/scripts/jitsi_change_domain.sh ip.address.vm
sed -Ei "s|10.10.30.188|ip.address.vm|g" /etc/nginx/sites-available/nmeet-admin
source /opt/env/bin/activate
/opt/env/bin/python /opt/NH-Jitsi/manage.py update_domain --settings=project.settings.thanhnb02
Clear toàn bộ history, các file log
source .bashrc
apt-get clean all
rm -f /var/log/wtmp /var/log/btmp
> /var/log/prosody/prosody.log
> /var/log/prosody/prosody.err
> /var/log/jitsi/jicofo.log
> /var/log/jitsi/jvb.log
> /var/log/jitsi/scriptRestart.log
history -c
> /root/.bash_history
> /var/log/cmdlog.log
Tắt VM
virt-sysprep -d haidd-jitsi-admin
virt-sparsify --compress --convert qcow2 /kvm/haidd-jitsi-admin.qcow2 U18-Jitsi-Admin
hw_qemu_guest_agent=yes
#cloud-config
password: '{vps_password}'
chpasswd: { expire: False }
ssh_pwauth: True
runcmd:
- curl https://raw.githubusercontent.com/danghai1996/thuctapsinh/master/HaiDD/CreateImage/scripts/jitsi_admin.sh -o /tmp/jitsi_admin.sh
- chmod +x /tmp/jitsi_admin.sh
- bash /tmp/jitsi_admin.sh {vps_da_password}
- rm -f /tmp/jitsi_admin.sh