# Jitsi Meet Note
## Jitsi Meet @ GCP
```
gcloud compute instances create jitsi-hell-cat --project=quickstart-1551752211924 --zone=asia-east1-c --machine-type=n1-standard-1 --network-interface=network-tier=PREMIUM,subnet=default --maintenance-policy=MIGRATE --provisioning-model=STANDARD --service-account=1016365349331-compute@developer.gserviceaccount.com --scopes=https://www.googleapis.com/auth/devstorage.read_only,https://www.googleapis.com/auth/logging.write,https://www.googleapis.com/auth/monitoring.write,https://www.googleapis.com/auth/servicecontrol,https://www.googleapis.com/auth/service.management.readonly,https://www.googleapis.com/auth/trace.append --tags=https-server --create-disk=auto-delete=yes,boot=yes,device-name=jitsi-hell-cat,image=projects/debian-cloud/global/images/debian-11-bullseye-v20230306,mode=rw,size=10,type=projects/quickstart-1551752211924/zones/us-central1-a/diskTypes/pd-balanced --no-shielded-secure-boot --shielded-vtpm --shielded-integrity-monitoring --labels=ec-src=vm_add-gcloud --reservation-affinity=any
```
### 硬體
- 機器類型: n1-standard-1
- vCPU: 1
- OS: Debian or Ubuntu 20.04
- 允許 HTTPS 流量
### 更新 apt
`sudo apt update && sudo apt upgrade -y`
### 安裝工具
`sudo apt install -y wget git vim gnupg2 nginx-full apt-transport-https ufw`
### DNS
- 設定 DNS
- 設定 VM 的 hosts
- `sudo vim /etc/hosts`
- append a line `{external ip} {domain name}`
- 設定 hostname
- `sudo hostnamectl set-hostname {domain name}`
- 測試
- `ping "$(hostname)"`
### 安裝 Prodosy
```
echo deb http://packages.prosody.im/debian $(lsb_release -sc) main | sudo tee -a /etc/apt/sources.list
wget https://prosody.im/files/prosody-debian-packages.key -O- | sudo apt-key add -
sudo apt install lua5.2
```
### 設定防火牆
```
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 10000/udp
sudo ufw allow 22/tcp
sudo ufw allow 3478/udp
sudo ufw allow 5349/tcp
sudo ufw enable
```
### 安裝 Jitsi Meet
```
curl https://download.jitsi.org/jitsi-key.gpg.key | sudo sh -c 'gpg --dearmor > /usr/share/keyrings/jitsi-keyring.gpg'
echo 'deb [signed-by=/usr/share/keyrings/jitsi-keyring.gpg] https://download.jitsi.org stable/' | sudo tee /etc/apt/sources.list.d/jitsi-stable.list > /dev/null
sudo apt update
sudo apt -y install jitsi-meet
```
### 設定檔
- /etc/jitsi/meet/hell-cat.rende.dev-config.js
- [2023/07/09 設定檔](https://drive.google.com/file/d/1UI52QRyw9VguD1dtHRS4qIVuAixmb1tA/view)
### 如果外部 IP 變動
- 更新 DNS record
- 設定 VM 的 hosts
- `sudo vim /etc/hosts`
- edit the line `{external ip} {domain name}`
### 如果憑證過期
- `sudo /usr/share/jitsi-meet/scripts/install-letsencrypt-cert.sh`
- 如果有要 Email ,請填 `zxcj04@gmail.com`
## TLS Cert
## TLDR
- 不知為何 HTTP Challenge 無法成功
- 猜測可能跟 Cloudflare 自動轉換 HTTP/HTTPS 流量有關
- 改用 DNS Challenge 才完成
- Cloudflare 在 DNS 設定上穩定許多
- 以下內容由 ChatGPT 所整理
### **目標**
取得並安裝 Let's Encrypt 的免費 TLS 憑證,為網域 `meet.hell-kitty.cc` 啟用 HTTPS。
---
### **過程紀錄**
#### 1. **初始嘗試**
- 使用以下指令嘗試申請憑證:
```bash
sudo certbot --staging --nginx
```
- **問題**:
- 終端回應 `The requested nginx plugin does not appear to be installed`,缺少必要的 Nginx 外掛。
- **解決方法**:
- 安裝 Certbot 的 Nginx 外掛:
```bash
sudo apt install python3-certbot-nginx
```
---
#### 2. **手動模式嘗試 HTTP 驗證**
- 改用手動模式驗證,使用 HTTP 驗證方式:
```bash
sudo certbot certonly --staging --manual --preferred-challenges=http -d meet.hell-kitty.cc
```
- Certbot 提供挑戰檔案內容,要求將其部署到指定路徑:
```
http://meet.hell-kitty.cc/.well-known/acme-challenge/<challenge-file>
```
- **問題**:
- Certbot 回報驗證失敗,錯誤訊息顯示:
```
Timeout during connect (likely firewall problem)
```
- **檢查與解決**:
1. **確認網域解析**:
執行以下指令,確認網域正確解析到伺服器 IP:
```bash
dig meet.hell-kitty.cc +short
```
確認解析結果無誤(`111.249.217.117`)。
2. **檢查防火牆**:
執行以下指令確認防火牆已開放 HTTP(80)埠:
```bash
sudo ufw status
```
防火牆規則正確無誤。
3. **確認挑戰檔案是否可訪問**:
將挑戰檔案內容放置於 `/var/www/html/.well-known/acme-challenge/`,並測試:
```bash
curl http://meet.hell-kitty.cc/.well-known/acme-challenge/<challenge-file>
```
測試結果顯示挑戰檔案可正常訪問。
---
#### 3. **HTTP 驗證仍失敗**
- 雖然挑戰檔案可正常訪問,但 Let's Encrypt 驗證仍失敗。
- **改用 DNS 驗證**:
- 再次執行指令,選擇 DNS 驗證方式:
```bash
sudo certbot certonly --manual --preferred-challenges=dns -d meet.hell-kitty.cc
```
- Certbot 提供一段 DNS TXT 記錄要求新增到 DNS 配置中:
```
_acme-challenge.meet.hell-kitty.cc. TXT "Lolqht0hNTaamuUqhWEpB6DyH1NUMEk0IkJrv6CZ5sQ"
```
---
#### 4. **DNS 驗證**
- 在 DNS 提供商管理界面中新增 TXT 記錄:
- **名稱 (Name)**:`_acme-challenge.meet.hell-kitty.cc`
- **內容 (Content)**:`Lolqht0hNTaamuUqhWEpB6DyH1NUMEk0IkJrv6CZ5sQ`
- 
- 使用 `dig` 工具確認 TXT 記錄是否生效:
```bash
dig _acme-challenge.meet.hell-kitty.cc TXT
```
記錄正確返回:
```
_acme-challenge.meet.hell-kitty.cc. 60 IN TXT "Lolqht0hNTaamuUqhWEpB6DyH1NUMEk0IkJrv6CZ5sQ"
```
- 可以使用 [Google Admin Toolbox](https://toolbox.googleapps.com/apps/dig/) 進行二次確認。
- 回到 Certbot 終端畫面,按下 Enter 繼續。
---
#### 5. **驗證成功**
- Certbot 驗證成功並生成憑證:
- **憑證位置**:
- `/etc/letsencrypt/live/meet.hell-kitty.cc/fullchain.pem`
- `/etc/letsencrypt/live/meet.hell-kitty.cc/privkey.pem`
- 配置 Nginx 使用憑證:
```nginx
server {
listen 443 ssl;
server_name meet.hell-kitty.cc;
ssl_certificate /etc/letsencrypt/live/meet.hell-kitty.cc/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/meet.hell-kitty.cc/privkey.pem;
location / {
# Your site configuration
}
}
```
- 重新載入 Nginx:
```bash
sudo systemctl reload nginx
```
## Jitsi Color Tickets
#### **背景色與主要色**
- **背景 (Base)**: `#0F1114`
- **區塊色 (Regular Block)**: `#31353B`
- **區塊 Hover 色**:
- **明亮變化**: `#3C4046`
- **彩色點綴**: `#3B495C`
- **深色變化**: `#2A2E33`
---
#### **文字色票**
- **主要文字 (Primary Text)**: `#E0E0E0`
- **次要文字 (Secondary Text)**: `#A1A1A1`
- **連結文字 (Accent Text)**: `#5A93F7`
- **禁用文字 (Disabled Text)**: `#5C5C5C`
---
#### **強調色調整**
- **原始強調色 (Primary Accent)**: `#0074E0`
- **調整後適配色**:
- **深藍灰色 (Muted Blue)**: `#365D8A`
- **中性藍色 (Neutral Blue)**: `#2A4F77`
- **微光藍色 (Glowing Blue)**: `#1A4A78`
---
#### **焦點邊框 (Focus Border)**
1. **亮色高對比**: `#5A93F7`
2. **內陰影效果**: `#365D8A`,搭配陰影 `rgba(86, 156, 224, 0.5)`
3. **雙層邊框**:
- **內層**: `#31353B`
- **外層**: `#5A93F7`
4. **漸層邊框**: `linear-gradient(45deg, #5A93F7, #1A4A78)`
5. **微弱點綴邊框**: `#4D4D4D`
---
### 建議使用場景
- **背景與區塊顏色**:作為頁面結構基礎,確保視覺層次感。
- **文字色**:根據信息優先級選擇適合的顏色,保持閱讀性。
- **Hover 效果與強調色**:添加互動性並引導用戶注意力。
- **焦點邊框**:適用於表單元素、按鈕和互動區域,提升無障礙體驗。
## 中華電信的 Router 在搞
- TLDR; CHT Router 有自己的 Admin Panel 會佔用 80 Port,所以要去防火牆 MCL 把 HTTPS 關掉,不能關 HTTP 因為會連 Admin Panel 都連不上

- [Reference](https://luyaku.pixnet.net/blog/post/356233912)