Initial commit
commit
65eff94f3f
@ -0,0 +1,81 @@
|
|||||||
|
---
|
||||||
|
jitsi_version: "stable"
|
||||||
|
|
||||||
|
jitsi_install_dir: /opt/jitsi
|
||||||
|
jitsi_config_dir: /opt/jitsi-meet-cfg
|
||||||
|
|
||||||
|
jitsi_timezone: UTC
|
||||||
|
|
||||||
|
jitsi_http_port: 8000
|
||||||
|
jitsi_https_port: 8443
|
||||||
|
jitsi_jvb_port: 10000
|
||||||
|
|
||||||
|
jitsi_public_url: ""
|
||||||
|
|
||||||
|
# Set this when running behind NAT or on a host with multiple interfaces.
|
||||||
|
# Example:
|
||||||
|
# jitsi_jvb_advertise_ips:
|
||||||
|
# - "203.0.113.10"
|
||||||
|
jitsi_jvb_advertise_ips: []
|
||||||
|
|
||||||
|
jitsi_restart_policy: unless-stopped
|
||||||
|
|
||||||
|
jitsi_enable_letsencrypt: false
|
||||||
|
jitsi_letsencrypt_domain: ""
|
||||||
|
jitsi_letsencrypt_email: ""
|
||||||
|
|
||||||
|
jitsi_enable_http_redirect: false
|
||||||
|
|
||||||
|
# Authentication
|
||||||
|
jitsi_enable_auth: false
|
||||||
|
jitsi_enable_guests: true
|
||||||
|
jitsi_auth_type: internal
|
||||||
|
jitsi_enable_auto_login: true
|
||||||
|
|
||||||
|
# Optional components
|
||||||
|
jitsi_enable_jigasi: false
|
||||||
|
jitsi_enable_jibri: false
|
||||||
|
jitsi_enable_transcriber: false
|
||||||
|
jitsi_enable_etherpad: false
|
||||||
|
jitsi_enable_whiteboard: false
|
||||||
|
|
||||||
|
# Jitsi passwords.
|
||||||
|
#
|
||||||
|
# IMPORTANT:
|
||||||
|
# Supply these from Ansible Vault in production.
|
||||||
|
jitsi_jicofo_auth_password: ""
|
||||||
|
jitsi_jvb_auth_password: ""
|
||||||
|
jitsi_jigasi_xmpp_password: ""
|
||||||
|
jitsi_jigasi_transcriber_password: ""
|
||||||
|
jitsi_jibri_recorder_password: ""
|
||||||
|
jitsi_jibri_xmpp_password: ""
|
||||||
|
|
||||||
|
# Docker image configuration
|
||||||
|
jitsi_image_repo: ghcr.io/jitsi
|
||||||
|
jitsi_image_version: ""
|
||||||
|
|
||||||
|
# Whether the role should install Docker.
|
||||||
|
jitsi_manage_docker: true
|
||||||
|
|
||||||
|
# Docker packages on Debian/Ubuntu.
|
||||||
|
jitsi_docker_packages:
|
||||||
|
- docker-ce
|
||||||
|
- docker-ce-cli
|
||||||
|
- containerd.io
|
||||||
|
- docker-buildx-plugin
|
||||||
|
- docker-compose-plugin
|
||||||
|
|
||||||
|
# Firewall
|
||||||
|
jitsi_manage_firewall: false
|
||||||
|
jitsi_firewall_ports:
|
||||||
|
- "80/tcp"
|
||||||
|
- "443/tcp"
|
||||||
|
- "10000/udp"
|
||||||
|
|
||||||
|
# Additional environment variables to pass to Jitsi.
|
||||||
|
#
|
||||||
|
# Example:
|
||||||
|
# jitsi_extra_env:
|
||||||
|
# ENABLE_XMPP_WEBSOCKET: "1"
|
||||||
|
# ENABLE_COLIBRI_WEBSOCKET: "1"
|
||||||
|
jitsi_extra_env: {}
|
||||||
@ -0,0 +1,9 @@
|
|||||||
|
---
|
||||||
|
- name: Restart Jitsi
|
||||||
|
community.docker.docker_compose_v2:
|
||||||
|
project_src: "{{ jitsi_install_dir }}"
|
||||||
|
state: restarted
|
||||||
|
|
||||||
|
- name: Reload systemd
|
||||||
|
ansible.builtin.systemd:
|
||||||
|
daemon_reload: true
|
||||||
@ -0,0 +1,17 @@
|
|||||||
|
---
|
||||||
|
galaxy_info:
|
||||||
|
author: kuba
|
||||||
|
description: jitsi
|
||||||
|
license: MIT
|
||||||
|
min_ansible_version: "2.12"
|
||||||
|
platforms:
|
||||||
|
- name: Debian
|
||||||
|
versions:
|
||||||
|
- bullseye
|
||||||
|
- bookworm
|
||||||
|
- name: Ubuntu
|
||||||
|
versions:
|
||||||
|
- focal
|
||||||
|
- jammy
|
||||||
|
|
||||||
|
dependencies: []
|
||||||
@ -0,0 +1,54 @@
|
|||||||
|
---
|
||||||
|
- name: Determine Jitsi Compose files
|
||||||
|
ansible.builtin.set_fact:
|
||||||
|
jitsi_compose_files:
|
||||||
|
- docker-compose.yml
|
||||||
|
|
||||||
|
- name: Enable Jigasi
|
||||||
|
ansible.builtin.set_fact:
|
||||||
|
jitsi_compose_files: "{{ jitsi_compose_files + ['jigasi.yml'] }}"
|
||||||
|
when: jitsi_enable_jigasi
|
||||||
|
|
||||||
|
- name: Enable Jibri
|
||||||
|
ansible.builtin.set_fact:
|
||||||
|
jitsi_compose_files: "{{ jitsi_compose_files + ['jibri.yml'] }}"
|
||||||
|
when: jitsi_enable_jibri
|
||||||
|
|
||||||
|
- name: Enable transcriber
|
||||||
|
ansible.builtin.set_fact:
|
||||||
|
jitsi_compose_files: "{{ jitsi_compose_files + ['transcriber.yml'] }}"
|
||||||
|
when: jitsi_enable_transcriber
|
||||||
|
|
||||||
|
- name: Enable Etherpad
|
||||||
|
ansible.builtin.set_fact:
|
||||||
|
jitsi_compose_files: "{{ jitsi_compose_files + ['etherpad.yml'] }}"
|
||||||
|
when: jitsi_enable_etherpad
|
||||||
|
|
||||||
|
- name: Enable whiteboard
|
||||||
|
ansible.builtin.set_fact:
|
||||||
|
jitsi_compose_files: "{{ jitsi_compose_files + ['whiteboard.yml'] }}"
|
||||||
|
when: jitsi_enable_whiteboard
|
||||||
|
|
||||||
|
- name: Pull Jitsi images
|
||||||
|
community.docker.docker_compose_v2:
|
||||||
|
project_src: "{{ jitsi_install_dir }}"
|
||||||
|
files: "{{ jitsi_compose_files }}"
|
||||||
|
pull: always
|
||||||
|
state: present
|
||||||
|
|
||||||
|
- name: Start Jitsi
|
||||||
|
community.docker.docker_compose_v2:
|
||||||
|
project_src: "{{ jitsi_install_dir }}"
|
||||||
|
files: "{{ jitsi_compose_files }}"
|
||||||
|
state: present
|
||||||
|
|
||||||
|
- name: Install Jitsi systemd unit
|
||||||
|
ansible.builtin.template:
|
||||||
|
src: systemd.service.j2
|
||||||
|
dest: /etc/systemd/system/jitsi.service
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
mode: "0644"
|
||||||
|
notify:
|
||||||
|
- Reload systemd
|
||||||
|
- Restart Jitsi
|
||||||
@ -0,0 +1,60 @@
|
|||||||
|
---
|
||||||
|
- name: Determine latest Jitsi release
|
||||||
|
ansible.builtin.uri:
|
||||||
|
url: https://api.github.com/repos/jitsi/docker-jitsi-meet/releases/latest
|
||||||
|
return_content: true
|
||||||
|
register: jitsi_release_api
|
||||||
|
when: jitsi_version == "stable"
|
||||||
|
|
||||||
|
- name: Set release information
|
||||||
|
ansible.builtin.set_fact:
|
||||||
|
jitsi_release_tag: >-
|
||||||
|
{{
|
||||||
|
jitsi_version
|
||||||
|
if jitsi_version != 'stable'
|
||||||
|
else jitsi_release_api.json.tag_name
|
||||||
|
}}
|
||||||
|
|
||||||
|
- name: Download Jitsi release
|
||||||
|
ansible.builtin.get_url:
|
||||||
|
url: >-
|
||||||
|
https://github.com/jitsi/docker-jitsi-meet/archive/refs/tags/
|
||||||
|
{{ jitsi_release_tag }}.zip
|
||||||
|
dest: "/tmp/jitsi-{{ jitsi_release_tag }}.zip"
|
||||||
|
mode: "0644"
|
||||||
|
|
||||||
|
- name: Create temporary extraction directory
|
||||||
|
ansible.builtin.file:
|
||||||
|
path: "/tmp/jitsi-{{ jitsi_release_tag }}"
|
||||||
|
state: directory
|
||||||
|
mode: "0755"
|
||||||
|
|
||||||
|
- name: Extract Jitsi release
|
||||||
|
ansible.builtin.unarchive:
|
||||||
|
src: "/tmp/jitsi-{{ jitsi_release_tag }}.zip"
|
||||||
|
dest: "/tmp/jitsi-{{ jitsi_release_tag }}"
|
||||||
|
remote_src: true
|
||||||
|
|
||||||
|
- name: Find extracted Jitsi directory
|
||||||
|
ansible.builtin.find:
|
||||||
|
paths: "/tmp/jitsi-{{ jitsi_release_tag }}"
|
||||||
|
file_type: directory
|
||||||
|
depth: 1
|
||||||
|
register: jitsi_extracted_dirs
|
||||||
|
|
||||||
|
- name: Install Jitsi Compose files
|
||||||
|
ansible.builtin.copy:
|
||||||
|
src: "{{ jitsi_extracted_dirs.files[0].path }}/"
|
||||||
|
dest: "{{ jitsi_install_dir }}/"
|
||||||
|
remote_src: true
|
||||||
|
mode: preserve
|
||||||
|
notify: Restart Jitsi
|
||||||
|
|
||||||
|
- name: Render Jitsi environment
|
||||||
|
ansible.builtin.template:
|
||||||
|
src: env.j2
|
||||||
|
dest: "{{ jitsi_install_dir }}/.env"
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
mode: "0600"
|
||||||
|
notify: Restart
|
||||||
@ -0,0 +1,31 @@
|
|||||||
|
---
|
||||||
|
- name: Create Jitsi installation directory
|
||||||
|
ansible.builtin.file:
|
||||||
|
path: "{{ jitsi_install_dir }}"
|
||||||
|
state: directory
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
mode: "0755"
|
||||||
|
|
||||||
|
- name: Create Jitsi configuration directories
|
||||||
|
ansible.builtin.file:
|
||||||
|
path: "{{ jitsi_config_dir }}/{{ item }}"
|
||||||
|
state: directory
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
mode: "{{ '0777' if item.startswith('storage/') or item.startswith('tmp/') else '0755' }}"
|
||||||
|
loop:
|
||||||
|
- web
|
||||||
|
- prosody/config
|
||||||
|
- prosody/prosody-plugins-custom
|
||||||
|
- jicofo
|
||||||
|
- jvb
|
||||||
|
- jigasi
|
||||||
|
- jibri
|
||||||
|
- transcriber
|
||||||
|
- storage/jibri
|
||||||
|
- storage/prosody
|
||||||
|
- storage/transcripts
|
||||||
|
- storage/web
|
||||||
|
- tmp/web-crontabs
|
||||||
|
- tmp/web-load-test
|
||||||
@ -0,0 +1,9 @@
|
|||||||
|
---
|
||||||
|
- name: Install Jitsi
|
||||||
|
ansible.builtin.import_tasks: install.yml
|
||||||
|
|
||||||
|
- name: Configure Jitsi
|
||||||
|
ansible.builtin.import_tasks: config.yml
|
||||||
|
|
||||||
|
- name: Configure Docker Compose
|
||||||
|
ansible.builtin.import_tasks: compose.yml
|
||||||
@ -0,0 +1,50 @@
|
|||||||
|
CONFIG={{ jitsi_config_dir }}
|
||||||
|
|
||||||
|
HTTP_PORT={{ jitsi_http_port }}
|
||||||
|
HTTPS_PORT={{ jitsi_https_port }}
|
||||||
|
|
||||||
|
TZ={{ jitsi_timezone }}
|
||||||
|
|
||||||
|
PUBLIC_URL={{ jitsi_public_url }}
|
||||||
|
|
||||||
|
JVB_PORT={{ jitsi_jvb_port }}
|
||||||
|
|
||||||
|
{% if jitsi_jvb_advertise_ips | length > 0 %}
|
||||||
|
JVB_ADVERTISE_IPS={{ jitsi_jvb_advertise_ips | join(',') }}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
RESTART_POLICY={{ jitsi_restart_policy }}
|
||||||
|
|
||||||
|
JITSI_IMAGE_REPO={{ jitsi_image_repo }}
|
||||||
|
|
||||||
|
{% if jitsi_image_version %}
|
||||||
|
JITSI_IMAGE_VERSION={{ jitsi_image_version }}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
ENABLE_LETSENCRYPT={{ 1 if jitsi_enable_letsencrypt else 0 }}
|
||||||
|
|
||||||
|
{% if jitsi_letsencrypt_domain %}
|
||||||
|
LETSENCRYPT_DOMAIN={{ jitsi_letsencrypt_domain }}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if jitsi_letsencrypt_email %}
|
||||||
|
LETSENCRYPT_EMAIL={{ jitsi_letsencrypt_email }}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
ENABLE_HTTP_REDIRECT={{ 1 if jitsi_enable_http_redirect else 0 }}
|
||||||
|
|
||||||
|
ENABLE_AUTH={{ 1 if jitsi_enable_auth else 0 }}
|
||||||
|
ENABLE_GUESTS={{ 1 if jitsi_enable_guests else 0 }}
|
||||||
|
AUTH_TYPE={{ jitsi_auth_type }}
|
||||||
|
ENABLE_AUTO_LOGIN={{ 1 if jitsi_enable_auto_login else 0 }}
|
||||||
|
|
||||||
|
JICOFO_AUTH_PASSWORD={{ jitsi_jicofo_auth_password }}
|
||||||
|
JVB_AUTH_PASSWORD={{ jitsi_jvb_auth_password }}
|
||||||
|
JIGASI_XMPP_PASSWORD={{ jitsi_jigasi_xmpp_password }}
|
||||||
|
JIGASI_TRANSCRIBER_PASSWORD={{ jitsi_jigasi_transcriber_password }}
|
||||||
|
JIBRI_RECORDER_PASSWORD={{ jitsi_jibri_recorder_password }}
|
||||||
|
JIBRI_XMPP_PASSWORD={{ jitsi_jibri_xmpp_password }}
|
||||||
|
|
||||||
|
{% for key, value in jitsi_extra_env.items() %}
|
||||||
|
{{ key }}={{ value }}
|
||||||
|
{% endfor %}
|
||||||
@ -0,0 +1,15 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=Jitsi Meet
|
||||||
|
Requires=docker.service
|
||||||
|
After=docker.service
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=oneshot
|
||||||
|
WorkingDirectory={{ jitsi_install_dir }}
|
||||||
|
RemainAfterExit=yes
|
||||||
|
|
||||||
|
ExecStart=/usr/bin/docker compose up -d
|
||||||
|
ExecStop=/usr/bin/docker compose down
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
Loading…
Reference in New Issue