Skip to content

Инструкция по установке расширения Onlyoffice с использованием Docker

Конфигурация NextBox, установленного с помощью Docker Compose

Если NextBox установлен по основной инструкции Docker Compose, добавьте два сервиса в существующую конфигурацию:

  • onlyoffice
  • onlyoffice docs server

Оба сервиса используют POSTGRES_PASSWORD, SERVICE_TOKEN, JWT_SIGN_KEY и ONLYOFFICE_JWT_SECRET из файла .env основной установки. Добавьте следующие блоки внутрь существующей секции services::

Если .env был создан по старой версии инструкции и отдельного ключа OnlyOffice в нём нет, добавьте его, не изменяя остальные секреты:

bash
if ! grep -q '^ONLYOFFICE_JWT_SECRET=' .env; then
  printf 'ONLYOFFICE_JWT_SECRET=%s\n' "$(openssl rand -hex 32)" >>.env
fi
chmod 600 .env
yaml
onlyoffice_server:
    image: onlyoffice/documentserver:8.2
    restart: always
    depends_on:
      postgresql:
        condition: "service_healthy"
      rabbitmq:
        condition: "service_healthy"
      onlyoffice:
        condition: "service_healthy"
    environment:
        - DB_TYPE=postgres
        - DB_HOST=postgresql
        - DB_PORT=5432
        - DB_NAME=onlyoffice
        - DB_USER=nextbox
        - DB_PWD=${POSTGRES_PASSWORD}
        - AMQP_URI=amqp://guest:guest@rabbitmq/
        - JWT_ENABLED=true
        - JWT_SECRET=${ONLYOFFICE_JWT_SECRET}
        - JWT_HEADER=Authorization
    networks:
      - nextbox
    healthcheck:
      test: ["CMD-SHELL", "wget -q -O /dev/null http://127.0.0.1/healthcheck"]
      interval: 10s
      timeout: 5s
      retries: 10
      start_period: 30s

onlyoffice:
    image: nextbox-docker.ptnl.moscow/nextbox/onlyoffice:oak-1.11.0
    restart: always
    depends_on:
      postgresql:
        condition: "service_healthy"
      rabbitmq:
        condition: "service_healthy"
    networks:
      - nextbox
    environment:
      - POTENTIAL_ONLYOFFICE_DISCOVERY_URL=http://discovery:6011
      - POTENTIAL_ONLYOFFICE_DISCOVERY_ONLYOFFICE_SERVER_URL=http://onlyoffice_server
      - POTENTIAL_ONLYOFFICE_DISCOVERY_GATEWAY_URL=http://nginx
      - POTENTIAL_ONLYOFFICE_SERVICE_BACK_URL=http://onlyoffice:6004
      - POTENTIAL_ONLYOFFICE_SERVICE_TOKEN=${SERVICE_TOKEN}
      - POTENTIAL_ONLYOFFICE_TOKENS_SIGN_KEY=${JWT_SIGN_KEY}
      - POTENTIAL_ONLYOFFICE_TOKENS_SERVER_KEY=${ONLYOFFICE_JWT_SECRET}
      - POTENTIAL_ONLYOFFICE_DATABASE_DSN=postgres://nextbox:${POSTGRES_PASSWORD}@postgresql:5432/onlyoffice
      - POTENTIAL_ONLYOFFICE_DATABASE_ADMIN_DSN=postgres://nextbox:${POSTGRES_PASSWORD}@postgresql:5432/postgres
      - POTENTIAL_ONLYOFFICE_RABBIT_MQ_HOST=rabbitmq
      - POTENTIAL_ONLYOFFICE_RABBIT_MQ_USER=guest
      - POTENTIAL_ONLYOFFICE_RABBIT_MQ_PASSWORD=guest
      - POTENTIAL_ONLYOFFICE_RABBIT_MQ_VHOST=
    healthcheck:
      test:
        - CMD-SHELL
        - >-
          wget -q -O /dev/null
          --header="Authorization: Service $$POTENTIAL_ONLYOFFICE_SERVICE_TOKEN"
          http://127.0.0.1:6004/api/health-check
      interval: 10s
      timeout: 5s
      retries: 10
      start_period: 30s

В существующий сервис nginx добавьте зависимость от готовности Document Server. Иначе при полном запуске Compose nginx может стартовать раньше, чем имя onlyoffice_server появится во внутренней сети:

yaml
nginx:
  depends_on:
    onlyoffice_server:
      condition: service_healthy

JWT_SECRET Document Server должен совпадать с POTENTIAL_ONLYOFFICE_TOKENS_SERVER_KEY сервиса интеграции. Не используйте для этого JWT_SIGN_KEY: он предназначен для пользовательских токенов NextBox и передаётся отдельно как POTENTIAL_ONLYOFFICE_TOKENS_SIGN_KEY.

В default.conf добавьте проксирование для OnlyOffice:

nginx
server {
    # Настройки nextbox
    # из предыдей инструкции
    # ...
    
    #новые настройки, которые необходимо добавить
    location /onlyoffice/ {
        proxy_pass http://onlyoffice_server/;
        proxy_http_version 1.1;
        
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $proxy_connection;
        proxy_set_header X-Forwarded-Host $the_host/onlyoffice;
        proxy_set_header X-Forwarded-Proto $the_scheme;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

Проверьте и запустите конфигурацию:

bash
docker compose config --quiet
docker compose up -d --wait onlyoffice onlyoffice_server nginx