# 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)