2026-09-16
Nextcloud в Docker: онлайн-редакторы документов Collabora CODE и OnlyOffice

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

Затем в приложении:

  1. Настройки → Офис.
  2. Collabora Online → Use your own server.
  3. URL сервера: https://cloud.example.ru/collabora (если проксируете CODE на этот путь), либо напрямую https://collabora.example.ru.
  4. Сохранить.

Прокси 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

Настройка:

  1. Настройки → OnlyOffice.
  2. Document Editing Service address: https://onlyoffice.example.ru.
  3. Secret: тот же JWT_SECRET, что в контейнере.
  4. Save.

Шаг 5. Проверка

  1. Загрузите в Nextcloud .docx / .odt / .xlsx / .pptx.
  2. Клик по файлу — откроется редактор прямо в браузере.
  3. Напишите пару символов, сохранить (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 policyunless-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.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *