Initial commit
This commit is contained in:
commit
7aa44854ae
12 changed files with 271 additions and 0 deletions
29
.travis.yml
Normal file
29
.travis.yml
Normal file
|
@ -0,0 +1,29 @@
|
|||
---
|
||||
language: python
|
||||
python: "2.7"
|
||||
|
||||
# Use the new container infrastructure
|
||||
sudo: false
|
||||
|
||||
# Install ansible
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- python-pip
|
||||
|
||||
install:
|
||||
# Install ansible
|
||||
- pip install ansible
|
||||
|
||||
# Check ansible version
|
||||
- ansible --version
|
||||
|
||||
# Create ansible.cfg with correct roles_path
|
||||
- printf '[defaults]\nroles_path=../' >ansible.cfg
|
||||
|
||||
script:
|
||||
# Basic role syntax check
|
||||
- ansible-playbook tests/test.yml -i tests/inventory --syntax-check
|
||||
|
||||
notifications:
|
||||
webhooks: https://galaxy.ansible.com/api/v1/notifications/
|
19
LICENSE
Normal file
19
LICENSE
Normal file
|
@ -0,0 +1,19 @@
|
|||
MIT License Copyright (c) 2020 Jan Beilicke <dev@jotbe.io>
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is furnished
|
||||
to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice (including the next
|
||||
paragraph) shall be included in all copies or substantial portions of the
|
||||
Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS
|
||||
OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
|
||||
OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
51
README.md
Normal file
51
README.md
Normal file
|
@ -0,0 +1,51 @@
|
|||
Collabora Online Developer Edition (Docker-Compose)
|
||||
===================================================
|
||||
|
||||
A [Collabora Online Developer Edition (CODE)](https://www.collaboraoffice.com/code/) server that can be run behind [Traefik](https://traefik.io).
|
||||
|
||||
Works e.g. with [Nextcloud](https://nextcloud.com/collaboraonline/), [Moodle](https://moodle.org/plugins/mod_collabora) and other open source tools.
|
||||
|
||||
To tweak the config of Collabora, you may have to modify the `.env` template.
|
||||
|
||||
[More information regarding CODE for Docker](https://www.collaboraoffice.com/code/docker/)
|
||||
|
||||
After installation:
|
||||
|
||||
- Ensure that the CODE instance URL (e.g. `https://collabora.example.tld`) returns `OK`.
|
||||
- Add the Collabora App to Nextcloud
|
||||
- Go to Nextcloud settings > Collabora and set the CODE instance URL.
|
||||
|
||||
Requirements
|
||||
------------
|
||||
|
||||
- Ansible (implemented and tested with v2.9)
|
||||
- Ubuntu or Debian server
|
||||
- [Docker Engine](https://docs.docker.com/install/) + [Docker Compose](https://docs.docker.com/compose/install/)
|
||||
- Traefik or another reverse proxy that takes care of TLS
|
||||
|
||||
Role Variables
|
||||
--------------
|
||||
|
||||
| Variable | Description | Default |
|
||||
| --------------------------- | ------------------------------------------------------------------------------- | ------------------ |
|
||||
| docker_user | The user who is going to manage/run the Docker Compose services | deploy |
|
||||
| collabora_virtual_host | The host under which CODE is available from the outside (e.g. collabora.example.org) | localhost |
|
||||
| collabora_domain_regex_pattern | A regular expression to match hosts that should be allowed to access CODE | localhost |
|
||||
| collabora_admin_user | Used to access to the Admin UI: https://<code-server>/loleaflet/dist/admin/admin.html | |
|
||||
| collabora_admin_password | | |
|
||||
|
||||
Dependencies
|
||||
------------
|
||||
|
||||
Example Playbook
|
||||
----------------
|
||||
|
||||
License
|
||||
-------
|
||||
|
||||
MIT
|
||||
|
||||
Author Information
|
||||
------------------
|
||||
|
||||
This role was created in 2020 by [Jan Beilicke](https://jotbe.io).
|
7
defaults/main.yml
Normal file
7
defaults/main.yml
Normal file
|
@ -0,0 +1,7 @@
|
|||
---
|
||||
# defaults file for Collabora Online
|
||||
docker_user: deploy
|
||||
collabora_exposed_port: 9980
|
||||
collabora_virtual_host: localhost
|
||||
collabora_public_url: http://{{ collabora_virtual_host }}
|
||||
collabora_domain_regex_pattern: localhost
|
2
handlers/main.yml
Normal file
2
handlers/main.yml
Normal file
|
@ -0,0 +1,2 @@
|
|||
---
|
||||
# handlers file for jitsi
|
43
meta/main.yml
Normal file
43
meta/main.yml
Normal file
|
@ -0,0 +1,43 @@
|
|||
galaxy_info:
|
||||
author: Jan Beilicke
|
||||
description: Dockerized Jitsi Meet behind Traefik
|
||||
|
||||
#issue_tracker_url: https://git.jotbe.io/jotbe/ansible-role-docker-jitsi/issues
|
||||
|
||||
# Choose a valid license ID from https://spdx.org - some suggested licenses:
|
||||
# - BSD-3-Clause (default)
|
||||
# - MIT
|
||||
# - GPL-2.0-or-later
|
||||
# - GPL-3.0-only
|
||||
# - Apache-2.0
|
||||
# - CC-BY-4.0
|
||||
license: MIT
|
||||
|
||||
min_ansible_version: 2.9
|
||||
|
||||
# If this a Container Enabled role, provide the minimum Ansible Container version.
|
||||
# min_ansible_container_version:
|
||||
|
||||
#
|
||||
# Provide a list of supported platforms, and for each platform a list of versions.
|
||||
# If you don't wish to enumerate all versions for a particular platform, use 'all'.
|
||||
# To view available platforms and versions (or releases), visit:
|
||||
# https://galaxy.ansible.com/api/v1/platforms/
|
||||
#
|
||||
platforms:
|
||||
- name: Debian
|
||||
versions:
|
||||
- all
|
||||
- name: Ubuntu
|
||||
versions:
|
||||
- all
|
||||
|
||||
galaxy_tags:
|
||||
- docker
|
||||
- traefik
|
||||
- chat
|
||||
- videoconferencing
|
||||
|
||||
dependencies: []
|
||||
# - geerlingguy.pip
|
||||
# - geerlingguy.docker
|
73
tasks/main.yml
Normal file
73
tasks/main.yml
Normal file
|
@ -0,0 +1,73 @@
|
|||
---
|
||||
# tasks file for Collabora Online
|
||||
- name: Ensure Collabora Online config directory exists
|
||||
file:
|
||||
path: /home/{{ docker_user }}/collabora-online
|
||||
state: directory
|
||||
owner: '{{ docker_user }}'
|
||||
group: '{{ docker_user }}'
|
||||
tags: config
|
||||
|
||||
- name: Provide docker-compose.yml
|
||||
template:
|
||||
src: templates/docker-compose.collabora-online.yml.j2
|
||||
dest: /home/{{ docker_user }}/collabora-online/docker-compose.yml
|
||||
owner: "{{ docker_user }}"
|
||||
group: "{{ docker_user }}"
|
||||
mode: '0644'
|
||||
tags: config
|
||||
|
||||
- name: Output docker-compose.yml
|
||||
shell: cat /home/{{ docker_user }}/collabora-online/docker-compose.yml
|
||||
register: output
|
||||
tags: config
|
||||
|
||||
- debug:
|
||||
var: output
|
||||
|
||||
- name: Provide Collabora env vars
|
||||
template:
|
||||
src: templates/env.collabora-online.j2
|
||||
dest: /home/{{ docker_user }}/collabora-online/.env
|
||||
owner: "{{ docker_user }}"
|
||||
group: "{{ docker_user }}"
|
||||
mode: '0640'
|
||||
tags: config
|
||||
|
||||
- name: "docker-compose: Teardown existing Collabora service"
|
||||
docker_compose:
|
||||
project_src: "/home/{{ docker_user }}/collabora-online/"
|
||||
state: absent
|
||||
tags: ['never', 'teardown']
|
||||
|
||||
- name: "docker-compose: Bootstrap Collabora service"
|
||||
docker_compose:
|
||||
project_src: "/home/{{ docker_user }}/collabora-online/"
|
||||
register: output
|
||||
|
||||
- debug:
|
||||
var: output
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- "output.ansible_facts['collabora']['collabora-online_collabora_1'].state.running"
|
||||
|
||||
- name: "Wait for Collabora service (443/TLS) to become available from the public internet"
|
||||
become: false
|
||||
wait_for:
|
||||
host: "{{ collabora_virtual_host }}"
|
||||
port: 443
|
||||
delegate_to: localhost
|
||||
|
||||
- name: "Test whether Collabora is healthy from the public internet"
|
||||
become: false
|
||||
uri:
|
||||
url: https://{{ collabora_virtual_host }}
|
||||
return_content: yes
|
||||
timeout: 600
|
||||
register: url_check
|
||||
delegate_to: localhost
|
||||
|
||||
- fail:
|
||||
msg: 'Collabora is not available!'
|
||||
when: "'OK' not in url_check.content"
|
31
templates/docker-compose.collabora-online.yml.j2
Normal file
31
templates/docker-compose.collabora-online.yml.j2
Normal file
|
@ -0,0 +1,31 @@
|
|||
version: '3'
|
||||
|
||||
services:
|
||||
collabora:
|
||||
image: collabora/code
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
- extra_params
|
||||
- domain
|
||||
{% if collabora_admin_user is defined and collabora_admin_password is defined %}
|
||||
- username
|
||||
- password
|
||||
{% endif %}
|
||||
- SLEEPFORDEBUGGER
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.docker.network=traefik_public"
|
||||
- "traefik.http.routers.collabora.rule=Host(`{{ collabora_virtual_host }}`)"
|
||||
- "traefik.port=9980"
|
||||
- "traefik.http.routers.collabora.entrypoints=websecure"
|
||||
- "traefik.http.routers.collabora.tls=true"
|
||||
- "traefik.http.routers.collabora.tls.certresolver=defaultresolver"
|
||||
networks:
|
||||
public:
|
||||
cap_add:
|
||||
- MKNOD
|
||||
|
||||
networks:
|
||||
public:
|
||||
external:
|
||||
name: traefik_public
|
7
templates/env.collabora-online.j2
Normal file
7
templates/env.collabora-online.j2
Normal file
|
@ -0,0 +1,7 @@
|
|||
extra_params=--o:ssl.enable=false --o:ssl.termination=true
|
||||
domain={{collabora_domain_regex_pattern|replace('\\', '\\\\')}}
|
||||
{% if collabora_admin_user is defined and collabora_admin_password is defined %}
|
||||
username={{ collabora_admin_user }}
|
||||
password={{ collabora_admin_password }}
|
||||
{% endif %}
|
||||
SLEEPFORDEBUGGER=0
|
2
tests/inventory
Normal file
2
tests/inventory
Normal file
|
@ -0,0 +1,2 @@
|
|||
localhost
|
||||
|
5
tests/test.yml
Normal file
5
tests/test.yml
Normal file
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
- hosts: localhost
|
||||
remote_user: root
|
||||
roles:
|
||||
- jitsi
|
2
vars/main.yml
Normal file
2
vars/main.yml
Normal file
|
@ -0,0 +1,2 @@
|
|||
---
|
||||
# vars file for jitsi
|
Loading…
Add table
Reference in a new issue