Docker Nextcloud Не удалось загрузить Collabora Online. Повторите попытку позже.

У меня есть это сообщение об ошибке:

Не удалось загрузить Collabora Online. Повторите попытку позже.

в правом верхнем углу самостоятельно размещенного веб-сайта nextcloud, когда я пытаюсь открыть файл

Добро пожаловать в Nextcloud Hub.docx

В Nextcloud, который работает как док-контейнер.

Добро пожаловать в Nextcloud Hub.docx находится в папке Файлы › Документы в качестве примера.

скриншот

Я использую официальный образ nextcloud:19-apache
, который я начал таким образом. :

#!/bin/sh

set -e;
set -f;

docker run -d \
--name nextcloud \
-p 8080:80 \
-v /tmp/nextcloud/var/www/html:/var/www/html \
-v /tmp/nextcloud/var/lib/mysql:/var/lib/mysql \
-v /tmp/nextcloud/var/lib/postgresql/data:/var/lib/postgresql/data \
nextcloud:19-apache

sleep 3;

firefox "http://localhost:8080"

exit 0;

И я проверяю журналы таким образом:

docker logs nextcloud

Нет никаких ошибок/предупреждений, кроме этой записи:

AH00558: apache2: не удалось надежно определить полное доменное имя сервера, используя 172.17.0.2. Установите директиву 'ServerName' глобально, чтобы подавить это сообщение.

Если щелкнуть веб-Настройки nextcloud › apps, то будут установлены оба приложения, необходимые для Collabora:

введите здесь описание изображения

Однако у них нет статуса, работают ли они должным образом или нет.

Статус всех запущенных контейнеров:

NETWORK ID          NAME                DRIVER              SCOPE
88efc7e2489f        bridge              bridge              local
b75e841984e3        host                host                local
efff0416acdb        none                null                local


-------------------------------------------------------------

CONTAINER ID  IMAGE                CREATED              STATUS   IP                  PORTS                                            NAMES
58c7069e0a4d  nextcloud:19-apache  2020-09-21T13:59:53  running  bridge:172.17.0.2   map[80/tcp:[map[HostIp:0.0.0.0 HostPort:8080]]]  /nextcloud

Как заставить Collabora работать и открыть этот документ docx? (нет проблем при открытии файлов *.pdf или *.md, их редактировании и сохранении с историей изменений)


person Jimmix    schedule 21.09.2020    source источник
comment
AH00558: apache2: не удалось надежно определить полное доменное имя сервера, используя 172.17.0.2. Установите директиву 'ServerName' глобально, чтобы подавить это сообщение. Это неплохо и нормально, если вы не работаете с реальным доменом. Так что только местные. Сегодня вечером я напишу вам файл Docker-Compose, который каким-то образом имеет больше смысла.   -  person Gregor Wedlich    schedule 01.10.2020


Ответы (1)


Так что я взглянул на это. Я всегда использовал Nextcloud только с Docker-Compose, Traefik или Nginx и сервером Colabora в качестве дополнительного сервера.

  1. Для работы Collabora сервер Apache должен прослушивать внутренний порт 9980. Для этого вам необходимо установить версию конфигурации Apache (ProxyPass). См. Часть 2 в документации Ссылка

  2. Я не могу рекомендовать локальный Collabora Server, потому что он часто дает сбои. Но дело не в этом.

  3. Я бы вообще так не делал, а использовал бы docker-compose для сборки сервиса.

Я реализовал локальную установку Nextcloud с Collabora через прокси-сервер Traefik. Вам не нужно беспокоиться о перенаправлении веб-сервера на правильный порт, потому что Traefik позаботится об этом.

Пример Docker-Compose

Если у вас есть какие-либо вопросы просто спросить!

В моем примере я использую локальные домены, которые разрешаются в IP-адрес Docker. Просто отредактируйте файл hosts. Но ты это точно знаешь...

192.168.x.x collabora.local.com 192.168.x.x nextcloud.local.com

Установите Docker-Compose, если он у вас еще не установлен.

Создать веб-сеть: $ docker network create web

Создайте файл Docker-Compose: $ touch docker-compose.yml

Добавлять:

version: "3.3"

volumes:
  db:
  nextcloud:

services:
  traefik:
    image: "traefik:v2.3"
    container_name: "traefik"
    restart: always
    command:
      - "--api.insecure=true"
      - "--providers.docker=true"
      - "--providers.docker.exposedbydefault=false"
      - "--entrypoints.web.address=:80"
    ports:
      - "80:80"
      - "8080:8080"
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock:ro"
      - "/etc/localtime:/etc/localtime:ro"
    networks:
      - web
      - internal

  nextcloud:
    image: "nextcloud:19-apache"
    container_name: "nextcloud-app"
    restart: unless-stopped
    depends_on:
      - traefik
      - db
    volumes:
      - "nextcloud:/var/www/html"
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.nextcloud-app.entrypoints=web"
      - "traefik.http.routers.nextcloud-app.rule=Host(`nextcloud.local.com`)"
    networks:
      - web
      - internal

  collabora:
    image: "collabora/code"
    container_name: collabora-app
    restart: unless-stopped
    expose:
      - "9980"
    environment:
      - domain=nextcloud.local.com
      - extra_params=--o:ssl.enable=false
      - username=admin
      - password=admin
    cap_add:
      - MKNOD
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.collabora.entrypoints=web"
      - "traefik.http.routers.collabora.rule=Host(`collabora.local.com`)"
      - "traefik.http.services.collabora.loadbalancer.server.port=9980"
    networks:
      - web

  db:
    image: mariadb:latest
    container_name: nextcloud-db
    restart: always
    environment:
      - MYSQL_HOSTNAME=maria_db
      - MYSQL_ROOT_PASSWORD=Secure_Root_Password
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
      - MYSQL_PASSWORD=Secure_Password
    ports:
      - "3306:3306"
    volumes:
      - "db:/var/lib/mysql"
    networks:
      - internal
    labels:
      - "traefik.enable=false"

networks:
  web:
    external: true
  internal:
    external: false

начало: docker-compose up

начать как демон: docker-compose up -d

остановка: docker-compose down

person Gregor Wedlich    schedule 01.10.2020
comment
Можете ли вы поделиться примером файла docker compose, который вы используете для запуска Nextcloud с Collabora? Я вообще не обязан использовать Apache. Я только что взял образ Apache, потому что думал, что быстрее всего смогу запустить Nextcloud с Collabora, но, поскольку с ним есть проблемы, для меня не будет иметь значения, буду ли я использовать Apache или, например, Nginx. - person Jimmix; 01.10.2020
comment
спасибо, что поделились файлом docker-compose.yml. У меня проблема при запуске docker-compose config - ошибка, которую я вижу: ERROR: The Compose file './docker-compose.yml' is invalid because: services.nextcloud.depends_on contains an invalid type, it should be an array Я использую docker-compose version 1.17.1, build unknown - person Jimmix; 04.10.2020
comment
Извините, версия Docker-Compose не поддерживает условие. Пожалуйста, измените на depends_on: - traefik - db И, возможно, вы время от времени делаете обновление Текущая версия 1.27.4 - person Gregor Wedlich; 04.10.2020
comment
Знаете ли вы, почему этот файл для создания докеров создает сеть docker_internal вместо internal. У меня нет проблем с созданием internal названной сети с помощью docker network create --internal internal, но docker-compose создает docker_internal, другая забавная вещь заключается в том, что docker-compose up жалуется, когда нет web сети, но сам создает эту docker_internal сеть и удаляет ее с помощью docker-compose down, так почему он лечит web сети по-другому? - person Jimmix; 07.10.2020
comment
У меня проблема с текущим файлом docker-compose.yml, который вы привели в качестве примера. На машине, на которой работает докер, приложение nextcloud доступно в сети web:172.xxx, но не с какой-либо другой машины в той же локальной сети 192.xxx, но веб-страница панели инструментов traefik по адресу 8080 доступна с хост-машины и всех других машин на та же сеть 192.xxx. Это как раз противоположное состояние, которое я хотел бы иметь. Я хотел бы, чтобы приложение nextcloud было доступно с хоста, а все другие устройства и панель мониторинга treafik — только с хоста. Есть ли у вас какие-либо рекомендации? - person Jimmix; 07.10.2020
comment
Измените хосты на других клиентах на SERVER_IP nextcloud.local.com и сбросьте DNS. - person Gregor Wedlich; 07.10.2020
comment
Другая вещь, которую я вижу, это то, что при доступе к localhost:8080 я получаю веб-страницу с текстом 404 page not found и без заголовка Server (я бы ожидал заголовка Server: Apache), поэтому я предполагаю, что traefik не перенаправляет этот запрос на сервер Apache приложения Nextcloud - могу ли я быть прав? ? - person Jimmix; 07.10.2020
comment
Если вы хотите, чтобы ваш трафик перенаправлялся на порт 8080, вы должны сказать ему об этом. Для этого вы используете службу балансировщика нагрузки. например: - "traefik.http.services.watch-port-80.loadbalancer.server.port=8080" в разделе nextcloud. - person Gregor Wedlich; 07.10.2020
comment
На самом деле я бы хотел, чтобы он перенаправлялся в приложение Nextcloud, которое находится под 172.xxx.xxx.xxx:80. Знаете ли вы, какое правило мне нужно установить для traefik? - person Jimmix; 07.10.2020
comment
Должно быть достаточно указать IP-адрес сервера, а не внутренний IP-адрес Docker... - person Gregor Wedlich; 07.10.2020
comment
Но трафик знает, что делать, только если вы обращаетесь к нему с указанным вами доменом. Вы не можете выбрать localhost, 172 или что-то еще, вы должны указать хост в браузере, он также указан здесь app.rule=Host(YOUR-HOST) - person Gregor Wedlich; 07.10.2020