This guide deploys Collabora Online CODE (Collabora Online Development Edition) with Docker Compose on Debian 10 to latest stable, Ubuntu LTS, and RHEL 9+ compatible hosts.
- name: Deploy Collabora Online
hosts: collabora-online
become: true
vars:
app_root: /opt/collabora-online
app_port: 9980
collabora_version: "latest"
admin_password: "{{ vault_collabora_admin_password }}"
wopi_host: "cloud.example.com"
tasks:
- name: Install Docker on Debian/Ubuntu
apt:
name:
- docker.io
- docker-compose-plugin
state: present
update_cache: true
when: ansible_os_family == "Debian"
- name: Install Docker on RHEL family
dnf:
name:
- docker-ce
- docker-ce-cli
- containerd.io
- docker-compose-plugin
state: present
when: ansible_os_family == "RedHat"
- name: Enable and start Docker
service:
name: docker
state: started
enabled: true
- name: Create app directory
file:
path: "{{ app_root }}"
state: directory
mode: "0755"
- name: Write Docker Compose file
copy:
dest: "{{ app_root }}/docker-compose.yml"
mode: "0644"
content: |
version: '3.8'
services:
collabora:
image: collabora/code:{{ collabora_version }}
container_name: collabora-online
restart: unless-stopped
ports:
- "{{ app_port }}:9980"
environment:
- aliasgroup1=https://{{ wopi_host }}:443
- username=admin
- password={{ admin_password }}
- server_name={{ wopi_host }}
- dictionaries=en_US
- extra_params=--o:ssl.enable=false
- DONT_GEN_SSL_CERT=true
cap_add:
- SYS_CHROOT
- SYS_ADMIN
- name: Start application stack
community.docker.docker_compose:
project_src: "{{ app_root }}"
state: present
- name: Wait for Collabora to be ready
uri:
url: "http://localhost:{{ app_port }}"
status_code: 200
validate_certs: false
register: result
until: result.status == 200
retries: 30
delay: 5
Create an ansible-vault file with secure passwords:
# group_vars/all/vault.yml
vault_collabora_admin_password: "your-secure-admin-password-here"
# Run the playbook
ansible-playbook -i inventory.ini collabora-online.yml
# With vault password
ansible-playbook -i inventory.ini collabora-online.yml --ask-vault-pass
For production deployments, consider adding:
aliasgroup1 to match your Nextcloud/ownCloud domainaliasgroup1 with multiple domains if neededThe aliasgroup1 environment variable controls which domains can connect to Collabora Online:
environment:
- aliasgroup1=https://cloud\.example\.com:443
For multiple domains:
environment:
- aliasgroup1=https://cloud1\.example\.com:443|https://cloud2\.example\.com:443
https://YOUR-COLLABORA-SERVER:9980See Configuration and Security for production hardening.
Any questions?
Feel free to contact us. Find all contact information on our contact page.