Collabora Online на Ubuntu 24.04: пошаговая установка
Если в Nextcloud нужно не просто хранить документы, а редактировать их прямо в браузере — вместе с коллегами, без скачивания и пересылки версий по почте, — штатного просмотрщика недостаточно. Collabora Online закрывает эту задачу: это полноценный офисный редактор на движке LibreOffice, который работает в браузере и интегрируется с Nextcloud через WOPI-протокол. Ниже — рабочая установка на Ubuntu 24.04 через Docker, настройка reverse proxy с SSL и подключение к Nextcloud.
Содержание
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Что такое Collabora Online и зачем отдельный сервер
Collabora Online (в открытой сборке — Collabora CODE, Collabora Online Development Edition) — это серверный рендерер документов Word, Excel и PowerPoint прямо в браузере, с совместным редактированием в реальном времени. Сам Nextcloud документы не редактирует — он лишь хранит файлы и передаёт их по протоколу WOPI внешнему серверу-редактору, которым и выступает Collabora.
Важный момент: Collabora — отдельный сервис, который обычно разворачивают на отдельном поддомене (иногда и на отдельном сервере), а не внутри контейнера с самим Nextcloud. Причины простые: Collabora использует собственный экземпляр LibreOffice, что заметно грузит CPU при рендеринге и совместном редактировании; сервис слушает свой порт и требует отдельный SSL-сертификат на своём домене; и при апгрейде Nextcloud вы не хотите одновременно ломать редактор документов.
Для небольшой команды (1–5 человек) достаточно отдельного виртуального сервера на 2 vCPU и 4 ГБ RAM. Если ожидается активное совместное редактирование на 10–20 одновременных сессий — закладывайте 4 vCPU и 8 ГБ и выше. Это ориентир, а не точный расчёт: реальная нагрузка зависит от размера документов и того, сколько людей одновременно печатают в одном файле.
Требования перед установкой
Прежде чем разворачивать Collabora, подготовьте:
- Отдельный домен или поддомен для Collabora, например
office.example.com. Это обязательное требование — Collabora не умеет работать без собственного домена с корректным SSL, браузер просто не даст загрузить редактор по смешанному HTTP/HTTPS-контенту. - A-запись DNS, указывающую на IP сервера, где будет работать Collabora (это может быть тот же сервер, что и Nextcloud, но на другом порту через reverse proxy, либо отдельный сервер).
- Docker и Docker Compose на Ubuntu 24.04 — если ещё не установлены, ниже есть краткая инструкция, а подробный разбор — в статье про установку Docker на Ubuntu 24.04.
- Уже работающий Nextcloud с доступом в админ-панель — сама установка Nextcloud разобрана в статье про Nextcloud на VPS.
- Nginx на сервере, где будет проксировать трафик к Collabora (можно взять за основу настройку nginx как reverse proxy).
Проверьте версию Ubuntu:
lsb_release -a
# Description: Ubuntu 24.04.x LTS
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.
Арендовать серверУстановка Docker (если ещё не стоит)
Если Docker уже установлен — переходите к следующему разделу. Если нет, ставим официальный пакет:
sudo apt update
sudo apt install -y ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
sudo systemctl enable --now docker
Проверка:
docker --version
docker compose version
Запуск Collabora Online в Docker
Официальный образ collabora/code — самый простой способ поднять сервис. Создадим рабочую директорию и docker-compose.yml:
mkdir -p /opt/collabora
cd /opt/collabora
# /opt/collabora/docker-compose.yml
services:
collabora:
image: collabora/code:latest
container_name: collabora
restart: always
environment:
- domain=cloud\\.example\\.com
- username=admin
- password=ЗамениНаСложныйПароль
- extra_params=--o:ssl.enable=false --o:ssl.termination=true --o:welcome.enable=false
cap_add:
- MKNOD
ports:
- "127.0.0.1:9980:9980"
Разберём ключевые параметры:
domain— экранированный домен(-ы) Nextcloud, откуда разрешены запросы к Collabora (не домен самого Collabora, а домен Nextcloud). Точки экранируются как\\.. Если у вас несколько доменов Nextcloud — перечисляйте через|, напримерcloud1\\.example\\.com|cloud2\\.example\\.com.username/password— доступ к админ-консоли Collabora (по адресу/browser/dist/admin/admin.html).ssl.termination=true— сообщает Collabora, что SSL терминируется на внешнем reverse proxy (nginx), сам контейнер работает по HTTP внутри сети.- Порт
9980публикуется только на127.0.0.1— наружу сервис не должен смотреть напрямую, только через nginx с SSL.
Замените домен и пароль на свои значения и запустите:
docker compose up -d
docker compose logs -f collabora
В логах должно появиться сообщение о готовности к приёму соединений (Ready). Если контейнер сразу перезапускается — почти всегда причина в неверном формате domain (не экранированы точки) или в занятом порту 9980.
Nginx как reverse proxy перед Collabora
Collabora активно использует WebSocket для совместного редактирования, поэтому конфиг nginx должен явно поддерживать апгрейд соединения. Создаём конфиг:
# /etc/nginx/sites-available/office.example.com
server {
listen 80;
server_name office.example.com;
location /.well-known/acme-challenge/ {
root /var/www/html;
}
location / {
return 301 https://$host$request_uri;
}
}
server {
listen 443 ssl http2;
server_name office.example.com;
ssl_certificate /etc/letsencrypt/live/office.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/office.example.com/privkey.pem;
# статика редактора
location ^~ /browser {
proxy_pass http://127.0.0.1:9980;
proxy_set_header Host $host;
}
# основной WOPI-эндпоинт
location ^~ /cool {
proxy_pass http://127.0.0.1:9980;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_read_timeout 36000s;
}
# админ-консоль
location ^~ /cool/adminws {
proxy_pass http://127.0.0.1:9980;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $host;
}
}
Обратите внимание на proxy_read_timeout 36000s — совместное редактирование держит WebSocket-соединение открытым долгое время, короткий таймаут будет обрывать сессии посреди работы.
Активируем сайт:
sudo ln -s /etc/nginx/sites-available/office.example.com /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
Если у вас другой веб-сервер или нужна детальная разборка самого reverse proxy на nginx — см. отдельную статью про настройку nginx как reverse proxy.
SSL-сертификат Let's Encrypt
Пока сертификата нет, первый server-блок с listen 80 уже настроен на редирект и на приём challenge-запросов certbot. Выпускаем сертификат:
sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d office.example.com
Certbot сам пропишет пути к сертификату в конфиг и настроит автопродление через systemd-таймер. Проверить, что таймер активен:
sudo systemctl status certbot.timer
Если сертификат не выпускается — чаще всего причина в том, что A-запись домена ещё не обновилась или порт 80 закрыт файрволом. Частые причины и разбор конкретных ошибок Let's Encrypt — в статье про ошибки SSL-сертификата.
После выпуска сертификата откройте https://office.example.com в браузере — должна открыться страница-заглушка Collabora (в некоторых версиях образа при welcome.enable=false это просто пустая страница со статусом 200 — это нормально, полноценный интерфейс появляется только внутри Nextcloud).
Интеграция с Nextcloud
Теперь подключаем Collabora как редактор документов внутри Nextcloud.
- Зайдите в Nextcloud под администратором → Приложения → найдите и включите Nextcloud Office (это переименованное приложение
richdocuments, отвечающее за интеграцию с Collabora). - Перейдите в Настройки → Administration → Nextcloud Office.
- Выберите вариант «Использовать собственный сервер» и укажите адрес:
https://office.example.com
- Сохраните настройки — Nextcloud сделает тестовый запрос к Collabora и покажет статус подключения (обычно зелёная галочка «Collabora Online уже настроен»).
Если статус красный — проверьте три вещи по порядку:
- домен Collabora действительно доступен из сети сервера Nextcloud (
curl -I https://office.example.com); - в
docker-compose.ymlCollabora параметрdomainсодержит правильный (экранированный) домен именно Nextcloud, а не Collabora; - у Nextcloud нет собственного строгого CSP/proxy-конфига, блокирующего iframe с другого домена — если Nextcloud тоже стоит за nginx, убедитесь, что заголовки
X-Frame-Optionsне выставлены слишком жёстко в его конфиге.
После успешного подключения откройте любой .docx или .xlsx файл в Nextcloud — он должен открыться прямо в браузере в интерфейсе, похожем на LibreOffice, с возможностью совместного редактирования по ссылке.
Безопасность и ограничения доступа
Collabora рендерит произвольные документы пользователей, поэтому к нему стоит применить те же принципы, что и к любому публично доступному сервису:
- Не открывайте порт 9980 наружу. В конфиге выше он биндится только на
127.0.0.1— весь внешний трафик идёт через nginx с SSL, это правильная схема. - Смените пароль администратора в
docker-compose.ymlна длинный уникальный — доступ к админ-консоли Collabora даёт контроль над сессиями редактирования. - Ограничьте
domainв конфиге конкретными доменами Nextcloud, а не оставляйте общий шаблон — иначе теоретически посторонний Nextcloud сможет использовать ваш Collabora как бесплатный WOPI-сервер. - Настройте fail2ban на nginx-логи перед Collabora — базовая настройка разобрана в статье про fail2ban для nginx.
- Обновляйте образ регулярно:
docker compose pull && docker compose up -d, Collabora выпускает обновления с исправлениями безопасности и совместимости с новыми версиями Nextcloud. - Не забудьте про базовую защиту самого сервера — см. базовую защиту Ubuntu от взлома.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.
Арендовать серверНужны сами нейросети для контента?
Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.
Частые вопросы
Можно ли поставить Collabora на тот же сервер, что и Nextcloud?
Технически да — Docker-контейнер изолирован, а nginx слушает разные server_name на одном IP. Но рендеринг документов грузит CPU отдельно от Nextcloud, поэтому на слабом сервере (1–2 vCPU) лучше вынести Collabora на отдельную машину.
Обязательно ли использовать отдельный поддомен?
Да, это требование самого Collabora — редактор должен обслуживаться со своего origin с валидным SSL. Работать по IP или на том же домене без отдельного поддомена штатно не получится.
Чем Collabora Online отличается от OnlyOffice?
Обе платформы дают редактирование Office-документов в браузере с интеграцией через Nextcloud. Collabora построена на движке LibreOffice, OnlyOffice — на собственном движке с более строгим соответствием формату Microsoft Office. Стоит попробовать оба варианта на своих файлах и сравнить рендеринг.
Почему документ открывается, но совместное редактирование не работает?
Чаще всего дело в WebSocket — проверьте, что в блоке location ^~ /cool прописаны proxy_set_header Upgrade и Connection "Upgrade", и что proxy_read_timeout не слишком короткий.
Нужна ли лицензия для использования Collabora Online?
Образ collabora/code из Docker Hub — это Collabora CODE (Community Edition), бесплатная версия с открытым исходным кодом без ограничений по числу документов. Коммерческая версия добавляет расширенную поддержку и функции по подписке — для небольшой команды community-версии обычно достаточно.
Как обновить Collabora без простоя?
Кратковременный простой при docker compose up -d неизбежен — контейнер перезапускается за секунды, но активные сессии редактирования обрываются. Планируйте обновление на нерабочее время команды.
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →