cimnine.jitsi_meet

jitsi_meet

Jitsi Meet をインストールするための Ansible ロール。

概要

これは Jitsi Meet をインストールするための Ansible ロールです。TLS 終端プロキシとして nginx を使用し、(オプションで)Let's Encrypt 証明書certbot 経由で使用します。対象は Ubuntu Bionic (18.04) です。

要件

  • Let's Encrypt を使用するには、ドメインがサーバーを指している必要があります。
  • ファイアウォールでポート 80/tcp、443/tcp、4443/tcp、10000/udp を許可する必要があります。
    • サーバーが NAT の背後にある場合は、これらのポートを転送してください。

ロール変数

  • apt_mirror: Ubuntu では universe を有効にする必要があります。この変数はシステムミラーを示します。デフォルトは http://archive.ubuntu.com/ubuntu
  • jitsi_domain: Jitsi にアクセスするためのドメイン名。Let's Encrypt を使用する場合はドメイン名が必要です。そうでなければ IP アドレスでも可。デフォルトは {{ inventory_hostname }}
  • certbot_enabled: {{ jitsi_domain }} のために certbot をインストールし、証明書をリクエストするかどうか。デフォルトは false
  • certbot_admin_email: Let's Encrypt に登録するメールアドレス。certbot_enabled=true の場合は必須。メールアドレスは存在する必要があります。デフォルト値はありません。
  • jitsi_nat: Jitsi Meet を NAT の背後で実行しているかどうか。デフォルトは false。有効にする場合は jitsi_nat_local_ipjitsi_nat_public_ip を設定する必要があります。
  • jitsi_nat_public_ip: Jitsi Meet ホストのパブリック IP アドレス。デフォルトは ipify によって報告された IPv4。
  • jitsi_nat_private_ip: Jitsi Meet ホストのプライベート IP アドレス。デフォルトは Ansible がホストのデフォルトと考える IPv4。
  • nginx_server_names_hash_bucket_size: nginx の server_names_hash_bucket_sizenginx_modify_server_names_hash_bucket_sizetrue の場合、グローバルな nginx.conf に宣言されます。デフォルトは 64
  • nginx_modify_server_names_hash_bucket_size: グローバル nginx.conf ファイル内の server_names_hash_bucket_size の値を変更するかどうか。デフォルトは true

さらに、certbot に関連する設定については geerlingguy/ansible-role-certbot/.../defaults/main.yml を参照してください。

依存関係

Let's Encrypt / certbot タスクに対して geerlingguy.certbot Ansible ロール に依存しています:

ansible-galaxy install geerlingguy.certbot

クイックスタート

Ansible をインストール

# macOS で Homebrew を使用する場合
brew install ansible

# Debian で
sudo apt update
sudo apt install software-properties-common
sudo apt-add-repository --yes --update ppa:ansible/ansible
sudo apt install ansible

# または Python / pip 経由で
sudo python3 -m pip install ansible

Ubuntu 18.04 の新しいサーバーをセットアップするか、Digital OceanVultrHetzner CloudCloudscale、Azure、Google Cloud、AWS などでサーバーを取得してください。

SSH キーを使用してログインできることを確認

ssh-copy-id ubuntu@my-jitsi-server.com
ssh ubuntu@my-jitsi-server.com

インベントリファイルを作成:

# jitsi.ini
[jitsi]
my-jitsi-server.com jitsi_domain=my-jitsi-server.com certbot_admin_email=admin@my-jitsi-server.com

[jitsi:vars]
ansible_user=ubuntu
ansible_become=yes # root でログインしている場合は `no` に設定
apt_mirror=http://archive.ubuntu.com/ubuntu # 使用するミラーに変更
certbot_enabled=yes
jitsi_nat=no # サーバーが NAT の behind にある場合はオンにします。

プレイブックファイルを作成:

# jitsi.yml
- hosts: jitsi
  roles:
      - cimnine.jitsi_meet

必要な依存関係をインストール:

ansible-galaxy install cimnine.jitsi_meet
ansible-galaxy install geerlingguy.certbot

インベントリでプレイブックファイルを実行:

# サーバーの sudo にパスワードが不要な場合:
ansible-playbook -i jitsi.ini jitsi.yml

# サーバーの sudo にパスワードが必要な場合:
ansible-playbook -K -i jitsi.ini jitsi.yml

設定

Jitsi Meet はこの Ansible ロールから設定できます。そのためには、上流パッケージの /etc/jitsi/meet/{{ jitsi_domain }}-config.js ファイルがこのロールによって管理されるファイルに置き換えられます。

この動作を有効にするには、変数 managed_jitsi_config を定義し、yes に設定します。

つまり、次の例の最後の行を jitsi.ini に追加します:

# jitsi.ini
[jitsi]
my-jitsi-server.com jitsi_domain=my-jitsi-server.com certbot_admin_email=admin@my-jitsi-server.com
[jitsi:vars]
ansible_user=ubuntu
ansible_become=yes
apt_mirror=http://archive.ubuntu.com/ubuntu # 使用するミラーに変更
certbot_enabled=yes
jitsi_nat=no
managed_jitsi_config=yes  # このロールを通じて Jitsi 設定を管理

次に、すべての必要な設定変数を設定します。デフォルトはロールの defaults/main.yml ファイルにあります。すべての変数を提供する必要があるので、上書きしたいものだけでなく、すべての変数を提供してください。空の変数(例:analytics: {})には注意してください。Jitsi の動作上、これは空のオブジェクトでなければならず、null ではいけません。

すべての設定、それらの値、使用法、および効果は jitsi-meet config.js に記載されています。

最も最小の例は次の通りです:

jitsi_config:
  hosts:
    domain: "{{ jitsi_domain }}"
    muc: "conference.{{ jitsi_domain }}"
  bosh: "//{{ jitsi_domain }}/http-bind"
  clientNode: "http://jitsi.org/jitsimeet"
  testing:
    enableFirefoxMulticast: false
    p2pTestMode: false
  desktopSharingChromeExtId: null
  desktopSharingChromeSources: [ 'screen', 'window', 'tab' ]
  desktopSharingChromeMinExtVersion: '0.1'
  channelLastN: -1
  enableWelcomePage: true
  enableUserRolesBasedOnToken: false
  p2p:
    enabled: true
    stunServers:
      - urls: 'stun:stun.l.google.com:19302'
      - urls: 'stun:stun1.l.google.com:19302'
      - urls: 'stun:stun2.l.google.com:19302'
    preferH264: true
  analytics: {}
  deploymentInfo: {}
  localRecording: {}
  e2eping: {}
  deploymentUrls: {}

注意: config.js の要件は、Jitsi Meet のアップデート時にいつでも変更される可能性があります。新しい要件がないか、プロジェクトの CHANGELOG や告知を確認することをお勧めします。

注意: 構造は大文字と小文字を区別し、config.js の変数設定に厳密に従います。たとえば、webrctIceUdpDisableWebRTCIceUDPDisable と異なります。Jitsi は変数の名前付けに一貫性がないため(例えば、偶然に URLUrl を混在させるなど)、正確な名前に注意してください。

アンインストール

以下のコマンドは、インストールを削除するのに役立ちます。すべてのファイルを完全に削除するわけではありませんが、何かをいじった場合に再開するには十分です。

systemctl stop jitsi-videobridge
systemctl disable jitsi-videobridge
apt-get purge -y jigasi jitsi-meet jitsi-meet-web-config jitsi-meet-prosody jitsi-meet-web jicofo jitsi-videobridge

systemctl stop nginx
systemctl disable nginx
apt-get purge -y nginx nginx-common nginx-full

apt purge certbot

rm -rf /etc/jitsi /etc/nginx /etc/letsencrypt

crontab -e -u root

reboot

ライセンス

MIT

プロジェクトについて

Install jitsi-meet with nginx and (optionally) certbot

インストール
ansible-galaxy install cimnine.jitsi_meet
ライセンス
mit
ダウンロード
651
所有者
Called myself «serious software architect» as a joke, then ended up sticking to that.