cimnine.jitsi_meet
jitsi_meet
Rola Ansible do instalacji Jitsi Meet.
Wprowadzenie
To jest rola Ansible, która instaluje Jitsi Meet z nginx jako serwerem proxy z zakończeniem TLS i opcjonalnie certyfikatem Let's Encrypt (przez certbot) na Ubuntu Bionic (18.04).
Wymagania
- Musisz mieć domenę skierowaną na swój serwer, aby używać Let's Encrypt.
- Twój zapora ogniowa musi zezwalać na porty 80/tcp, 443/tcp, 4443/tcp, 10000/udp.
- Jeśli twój serwer jest za NAT, upewnij się, że te porty są przekierowane.
Zmienne roli
apt_mirror
: Na Ubuntu, universe musi być włączone. Ta zmienna powinna wskazywać na lustrzaną wersję twojego systemu. Domyślnie tohttp://archive.ubuntu.com/ubuntu
.jitsi_domain
: Pod jaką domeną będzie dostępny Jitsi. Musi być nazwą domeny, jeśli zamierzasz używać Let's Encrypt. Może być adresem IP w przeciwnym razie. Domyślnie to{{ inventory_hostname }}
.certbot_enabled
: Czy zainstalować certbot i poprosić o certyfikat dla{{ jitsi_domain }}
. Domyślnie tofalse
.certbot_admin_email
: Który adres e-mail zarejestrować dla Let's Encrypt. Wymagane, jeślicertbot_enabled=true
. E-mail powinien istnieć. Brak wartości domyślnej.jitsi_nat
: Czy uruchamiasz jitsi meet za NAT. Domyślnie tofalse
. Jeśli włączone, musisz ustawićjitsi_nat_local_ip
ijitsi_nat_public_ip
.jitsi_nat_public_ip
: Publiczny adres IP twojego hosta jitsi meet. Domyślnie to IPv4 zgłoszone przez ipify.jitsi_nat_private_ip
: Prywatny adres IP twojego hosta jitsi meet. Domyślnie to IPv4, który Ansible uznaje za domyślny dla hosta.nginx_server_names_hash_bucket_size
: Wartośćserver_names_hash_bucket_size
dla nginx. Zostanie zadeklarowana w globalnym plikunginx.conf
, jeślinginx_modify_server_names_hash_bucket_size
jest ustawione natrue
. Domyślnie to64
.nginx_modify_server_names_hash_bucket_size
: Czy zmienić wartośćserver_names_hash_bucket_size
w globalnym plikunginx.conf
. Domyślnie totrue
.
Zobacz także geerlingguy/ansible-role-certbot/.../defaults/main.yml dla dodatkowych ustawień konfiguracji związanych z certbot.
Zależności
Zależy od roli Ansible geerlingguy.certbot
dla zadań Let's Encrypt / certbot:
ansible-galaxy install geerlingguy.certbot
Szybki start
# na macOS z Homebrew
brew install ansible
# na Debianie
sudo apt update
sudo apt install software-properties-common
sudo apt-add-repository --yes --update ppa:ansible/ansible
sudo apt install ansible
# lub przez Pythona / pip
sudo python3 -m pip install ansible
Skonfiguruj nowy serwer z Ubuntu 18.04 lub zdobądź jeden na Digital Ocean, Vultr, Hetzner Cloud, Cloudscale, Azure, Google Cloud, AWS, ...
Upewnij się, że możesz zalogować się za pomocą swojego klucza SSH:
ssh-copy-id [email protected]
ssh [email protected]
Utwórz plik inwentarza:
# jitsi.ini
[jitsi]
my-jitsi-server.com jitsi_domain=my-jitsi-server.com [email protected]
[jitsi:vars]
ansible_user=ubuntu
ansible_become=yes # ustaw na `no` jeśli logujesz się przez root
apt_mirror=http://archive.ubuntu.com/ubuntu # zmień na lustrzane, którego już używasz
certbot_enabled=yes
jitsi_nat=no # włącz, jeśli twój serwer jest za NAT.
Utwórz plik playbooka:
# jitsi.yml
- hosts: jitsi
roles:
- cimnine.jitsi_meet
Zainstaluj wymagane zależności:
ansible-galaxy install cimnine.jitsi_meet
ansible-galaxy install geerlingguy.certbot
Uruchom plik playbooka na inwentarzu:
# jeśli `sudo` na twoim serwerze nie wymaga hasła:
ansible-playbook -i jitsi.ini jitsi.yml
# lub jeśli `sudo` na twoim serwerze wymaga hasła:
ansible-playbook -K -i jitsi.ini jitsi.yml
Konfiguracja
Jitsi Meet można skonfigurować z tej roli Ansible. Aby to zrobić, plik /etc/jitsi/meet/{{ jitsi_domain }}-config.js
z pakietu upstream zostanie zastąpiony plikiem zarządzanym przez tę rolę.
Aby włączyć tę funkcjonalność, zdefiniuj zmienną: managed_jitsi_config
i ustaw ją na yes
.
Na przykład dodaj ostatnią linię z poniższego przykładu do swojego pliku jitsi.ini
:
# jitsi.ini
[jitsi]
my-jitsi-server.com jitsi_domain=my-jitsi-server.com [email protected]
[jitsi:vars]
ansible_user=ubuntu
ansible_become=yes
apt_mirror=http://archive.ubuntu.com/ubuntu # zmień na lustrzane, którego już używasz
certbot_enabled=yes
jitsi_nat=no
managed_jitsi_config=yes # zarządzaj swoją konfiguracją jitsi za pomocą tej roli
Następnie ustaw wszystkie wymagane zmienne konfiguracyjne. Domyślne wartości można znaleźć w pliku defaults/main.yml
roli. Wszystkie zmienne muszą być podane, nie tylko te, które chcesz nadpisać! Zwróć uwagę na puste zmienne, takie jak analytics: {}
: ze względu na sposób działania Jitsi, musi to być pusty obiekt, nie może być null.
Wszystkie ustawienia, ich wartości, użycie i efekty są udokumentowane w jitsi-meet config.js.
Najmniejszy przykład to:
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: {}
UWAGA:
Wymagania dotyczące config.js
mogą zmieniać się w każdej chwili podczas aktualizacji jitsi-meet, upstream nie jest zbyt komunikatywny w tej sprawie. Sprawdź jakiekolwiek CHANGELOG i ogłoszenia projektu Jitsi Meet na temat nowych wymaganych wartości przed aktualizacją.
UWAGA:
Struktura jest wrażliwa na wielkość liter i odpowiada dokładnym ustawieniom zmiennych w config.js
. Przykładowo, webrctIceUdpDisable
jest zupełnie inne niż WebRTCIceUDPDisable
. Jitsi jest niespójne w nazewnictwie zmiennych (na przykład losowo miksuje URL
i Url
), więc zwróć uwagę na dokładną nazwę.
Odinstalowanie
Poniższe polecenia pomogą ci usunąć instalację. Mogą nie usunąć wszystkich plików, ale wystarczy, aby rozpocząć ponownie, jeśli coś nie wyszło.
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
Licencja
MIT
Install jitsi-meet with nginx and (optionally) certbot
ansible-galaxy install cimnine.jitsi_meet