Initial commit

master
Kuba Orlik 10 hours ago
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…
Cancel
Save