---
# System prepended metadata

title: Jitsi Meet Note
tags: [Common]

---

# 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`
  - ![Cloudflare Settings](https://i.imgur.com/WGLGpo3.png)
- 使用 `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 都連不上
    ![](https://i.imgur.com/kqNohgN.png =360x)
- [Reference](https://luyaku.pixnet.net/blog/post/356233912)