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