Nextcloud в Docker: онлайн-редакторы документов Collabora CODE и OnlyOffice
Nextcloud — удобное самохостинговое облако. С подключённым Collabora Online (CODE) или OnlyOffice документы открываются и редактируются прямо в браузере — без локального MS Office и LibreOffice. Разберём установку Nextcloud в Docker Compose и подключение обоих онлайн-редакторов со сравнением.
Выбор: Collabora CODE или OnlyOffice?
| Критерий | Collabora CODE | OnlyOffice |
|---|---|---|
| Движок | LibreOffice | Свой (совместим с OOXML) |
| Совместимость с .docx | Хорошая | Отличная |
| Формулы/макросы | Ограничено | Лучше |
| Ресурсы (RAM) | ~1-2GB на контейнер | ~2GB |
| Настройка | Через coolwsd.xml / env |
Через системную панель |
| Совместное редактирование | Да | Да |
Оба бесплатны для self-hosted. Для дома чаще выбирают CODE (легче), для файлов с Office-форматами построже — OnlyOffice.
Шаг 1. Nextcloud в Docker Compose
Создаём docker-compose.yml:
services:
db:
image: mariadb:11
restart: unless-stopped
command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
volumes:
- db-data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: rootpass
MYSQL_PASSWORD: ncpass
MYSQL_DATABASE: nextcloud
MYSQL_USER: nextcloud
nextcloud:
image: nextcloud:28
restart: unless-stopped
depends_on:
- db
ports:
- "8081:80"
volumes:
- nc-data:/var/www/html
environment:
MYSQL_HOST: db
MYSQL_DATABASE: nextcloud
MYSQL_USER: nextcloud
MYSQL_PASSWORD: ncpass
NEXTCLOUD_ADMIN_USER: admin
NEXTCLOUD_ADMIN_PASSWORD: adminpass
code:
image: collabora/code:latest
restart: unless-stopped
cap_add:
- MKNOD
environment:
- aliasgroup1=https://cloud.example.ru:443
- username=admin
- password=code-pass
- dictionaries=de_DE en_GB en_US ru_RU
onlyoffice:
image: onlyoffice/documentserver:latest
restart: unless-stopped
environment:
- JWT_ENABLED=true
- JWT_SECRET=random-jwt-secret-change-me
volumes:
db-data:
nc-data:
Запуск:
sudo docker compose up -d
Шаг 2. Прокси и HTTPS
Для работы секретных Cookie и WebSocket нужен HTTPS по домену cloud.example.ru. Классика — nginx-реверс-прокси:
/etc/nginx/sites-available/cloud.conf:
server {
listen 80;
server_name cloud.example.ru;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name cloud.example.ru;
ssl_certificate /etc/letsencrypt/live/cloud.example.ru/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/cloud.example.ru/privkey.pem;
client_max_body_size 10G;
location / {
proxy_pass http://127.0.0.1:8081;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
Collabora работает по WebSocket, nginx отдаёт его корректно (standard proxy pass достаточно), но для больших файлов увеличьте
proxy_read_timeout.
Шаг 3. Установка Collabora в Nextcloud
Приложение: Nextcloud → Приложения → Офис → Collabora Online.
Быстрый путь без консоли — occ:
sudo docker exec -u www-data nextcloud php occ app:install richdocuments
Затем в приложении:
- Настройки → Офис.
- Collabora Online → Use your own server.
- URL сервера:
https://cloud.example.ru/collabora(если проксируете CODE на этот путь), либо напрямуюhttps://collabora.example.ru. - Сохранить.
Прокси Collabora на поддомен
Если CODE на collabora.example.ru, nginx-конфиг для /cool и /loleaflet. Но проще — собрать всё под один домен через дополнительный location /collabora → порт 9980.
Шаг 4. Установка OnlyOffice в Nextcloud
Приложение: Nextcloud → Приложения → Офис → OnlyOffice.
sudo docker exec -u www-data nextcloud php occ app:install onlyoffice
Настройка:
- Настройки → OnlyOffice.
- Document Editing Service address:
https://onlyoffice.example.ru. - Secret: тот же JWT_SECRET, что в контейнере.
- Save.
Шаг 5. Проверка
- Загрузите в Nextcloud
.docx/.odt/.xlsx/.pptx. - Клик по файлу — откроется редактор прямо в браузере.
- Напишите пару символов, сохранить (Ctrl+S) — вернувшись, файл изменён.
Проверка из консоли
sudo docker ps
sudo docker logs nextcloud --tail 50
sudo docker logs code --tail 50
Тонкости и подводные камни
- Сообщение «Server not reachable» у Collabora — чаще всего из-за HTTPS за reverse-proxy и несовпадения доверенных доменов (
aliasgroup1в env CODE). Обязательно укажите точные домены. - JWT у OnlyOffice обязателен — если приложение ругается на secret, сверьте env контейнера и поля в настройках Nextcloud.
- Память — Collabora и OnlyOffice вместе скупые на ВДС с 1GB. Для лёгкого варианта оставляйте только CODE, а OnlyOffice выключайте.
- Big Upload — настройте
client_max_body_sizeи лимиты PHP (в Nextcloud контейнереLOCAL_MEMORY_LIMIT). - Nextcloud + Docker restart policy —
unless-stoppedна всех сервисах. - Желательно добавить данные из статьи про Docker Compose / резервные копии volume.
Шпаргалка
# Nextcloud + MariaDB + Collabora (CODE)
docker compose up -d
# Приложения:
docker exec -u www-data nextcloud php occ app:install richdocuments
docker exec -u www-data nextcloud php occ app:install onlyoffice
# Настройки -> Офис -> URL сервера Collabora
# Настройки -> OnlyOffice -> Document server + secret
Проверено на: Nextcloud 28 + Collabora CODE 24 + OnlyOffice 8.
Дата: Сентябрь 2026.