Skip to content

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

В системе предварительно должны быть установлены Docker и Docker Compose.

Установка ​

Создайте отдельную директорию установки. Все команды выполняйте из неё.

Сохраните скрипт как generate-env.sh

generate-env.sh
bash
#!/usr/bin/env bash
set -euo pipefail
umask 077
if [[ -e .env ]]; then
    echo ".env уже существует"
    exit 1
fi
command -v openssl >/dev/null
{
    printf '%s\n' 'CORE_IMAGE=nextbox-docker.ptnl.moscow/nextbox/core:cypress-1.12'
    printf '%s\n' 'FRONTEND_IMAGE=nextbox-docker.ptnl.moscow/nextbox/frontend:cypress-1.12'
    printf '%s\n' 'NEXTBOX_URL=http://localhost:8095'
    printf '%s\n' 'POSTGRES_PASSWORD=nextbox' 'RABBITMQ_USER=guest' 'RABBITMQ_PASSWORD=guest' 'RABBITMQ_VHOST=/'
    printf 'SERVICE_TOKEN=%s\n' "$(openssl rand -hex 32)"
    printf 'JWT_SIGN_KEY=%s\n' "$(openssl rand -hex 32)"
    printf 'CONNECTIONS_SECURITY_KEY=%s\n' "$(openssl rand -hex 16)"
    printf 'ONLYOFFICE_JWT_SECRET=%s\n' "$(openssl rand -hex 32)"
    printf '%s\n' 'ONLYOFFICE_DOCUMENT_KEY_PREFIX=local'
} >.env

Создайте .env

bash
bash generate-env.sh

В .env уже указаны образы Core и frontend с тегом cypress-1.12. В NEXTBOX_URL укажите адрес сервера.

Создайте файлы docker-compose.yaml и default.conf

docker-compose.yaml
yaml
services:
  nginx:
    image: nginx:alpine
    restart: always
    depends_on:
      core:
        condition: service_healthy
      frontend:
        condition: service_healthy
    ports:
      - "8095:80"
    volumes:
      - ./default.conf:/etc/nginx/conf.d/default.conf:ro
    networks: [nextbox]
    healthcheck:
      test: [CMD-SHELL, "wget -q -O /dev/null http://127.0.0.1/"]
      interval: 10s
      timeout: 5s
      retries: 10

  core:
    image: ${CORE_IMAGE:?Укажите образ Core 1.12}
    command: [run, --config, /app/config.yml]
    restart: always
    stop_grace_period: 40s
    depends_on:
      postgresql:
        condition: service_healthy
      rabbitmq:
        condition: service_healthy
      redis:
        condition: service_healthy
    networks: [nextbox]
    volumes:
      - nextbox_data:/var/nextbox
      - storage_data:/var/nextbox/storage_worker/1
      - static_storage_data:/var/nextbox-static
      - logstash_data:/var/nextbox/logstash
    environment:
      POTENTIAL_CORE_HTTP_ADDRESS: 0.0.0.0:6005
      POTENTIAL_CORE_SERVICE_BACK_URL: http://core:6005
      POTENTIAL_CORE_SERVICE_FRONT_URL: ${NEXTBOX_URL:?Укажите адрес Nextbox}
      POTENTIAL_CORE_DATABASE_ADMIN_DSN: postgres://nextbox:${POSTGRES_PASSWORD:?Укажите пароль PostgreSQL}@postgresql:5432/postgres?sslmode=disable
      POTENTIAL_CORE_AUTH_SERVICE_TOKEN: ${SERVICE_TOKEN:?Укажите service token}
      POTENTIAL_CORE_AUTH_JWT_SIGN_KEY: ${JWT_SIGN_KEY:?Укажите JWT key}
      POTENTIAL_CORE_RABBIT_MQ_HOST: rabbitmq
      POTENTIAL_CORE_RABBIT_MQ_USER: ${RABBITMQ_USER:-guest}
      POTENTIAL_CORE_RABBIT_MQ_PASSWORD: ${RABBITMQ_PASSWORD:-guest}
      POTENTIAL_CORE_RABBIT_MQ_VHOST: ${RABBITMQ_VHOST:-/}
      POTENTIAL_CORE_REDIS_HOST: redis
      POTENTIAL_CONNECTIONS_SECURITY_KEY: ${CONNECTIONS_SECURITY_KEY:?Укажите ключ Connections}
      POTENTIAL_STATIC_STORAGE_SETTINGS_PATH: /var/nextbox-static/static_storage/settings.json
      POTENTIAL_STATIC_STORAGE_FILE_SYSTEM_EXTENSIONS_PATH: /var/nextbox-static/extensions
      POTENTIAL_STATIC_STORAGE_FILE_SYSTEM_FILES_PATH: /var/nextbox-static/static_files
      POTENTIAL_STATIC_STORAGE_FILE_SYSTEM_TMP_PATH: /var/nextbox-static/static_tmp
      POTENTIAL_ONLYOFFICE_DISCOVERY_ONLYOFFICE_SERVER_URL: http://onlyoffice_server
      POTENTIAL_ONLYOFFICE_DISCOVERY_GATEWAY_URL: http://nginx
      POTENTIAL_ONLYOFFICE_TOKENS_SERVER_KEY: ${ONLYOFFICE_JWT_SECRET:?Укажите ключ OnlyOffice}
      POTENTIAL_ONLYOFFICE_DOCUMENT_KEY_PREFIX: ${ONLYOFFICE_DOCUMENT_KEY_PREFIX:-local}
    healthcheck:
      test: [CMD, wget, -q, -O, /dev/null, http://127.0.0.1:6005/readyz]
      interval: 10s
      timeout: 3s
      retries: 10
      start_period: 125s

  frontend:
    image: ${FRONTEND_IMAGE:?Укажите совместимый образ frontend}
    restart: always
    networks: [nextbox]
    healthcheck:
      test: [CMD-SHELL, "curl -fsS -o /dev/null http://127.0.0.1/"]
      interval: 10s
      timeout: 5s
      retries: 10

  postgresql:
    image: postgres:16
    restart: always
    environment:
      POSTGRES_USER: nextbox
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?Укажите пароль PostgreSQL}
      PGDATA: /var/lib/postgresql/data/pgdata
    volumes:
      - postgresql_data:/var/lib/postgresql/data/pgdata
    networks: [nextbox]
    healthcheck:
      test: [CMD-SHELL, "pg_isready -U nextbox -d postgres"]
      interval: 10s
      timeout: 5s
      retries: 10

  rabbitmq:
    image: rabbitmq:3.7-management
    restart: always
    environment:
      RABBITMQ_DEFAULT_USER: ${RABBITMQ_USER:-guest}
      RABBITMQ_DEFAULT_PASS: ${RABBITMQ_PASSWORD:-guest}
      RABBITMQ_DEFAULT_VHOST: ${RABBITMQ_VHOST:-/}
    volumes:
      - rabbitmq_data:/var/lib/rabbitmq
    networks: [nextbox]
    healthcheck:
      test: [CMD, rabbitmqctl, status]
      interval: 30s
      timeout: 10s
      retries: 5

  redis:
    image: redis:6-alpine
    restart: always
    volumes:
      - redis_data:/data
    networks: [nextbox]
    healthcheck:
      test: [CMD, redis-cli, ping]
      interval: 10s
      timeout: 5s
      retries: 5

networks:
  nextbox:

volumes:
  nextbox_data:
  storage_data:
  static_storage_data:
  logstash_data:
  postgresql_data:
  rabbitmq_data:
  redis_data:
default.conf
nginx
map $http_x_forwarded_proto $the_scheme {
    default $http_x_forwarded_proto;
    "" $scheme;
}
map $http_x_forwarded_host $the_host {
    default $http_x_forwarded_host;
    "" $http_host;
}
map $http_upgrade $proxy_connection {
    default upgrade;
    "" close;
}
server {
    listen 80 default_server;
    server_name _;
    client_max_body_size 8000M;

    location / {
        proxy_pass http://frontend;
        proxy_http_version 1.1;
        proxy_set_header Host $host;
    }

    location /api {
        proxy_pass http://core:6005/api;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $proxy_connection;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_request_buffering off;
    }

    location /l/ {
        proxy_pass http://core:6005/l/;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $proxy_connection;
        proxy_set_header Host $host;
        proxy_request_buffering off;
    }
}

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

bash
docker compose config --quiet
docker compose pull
docker compose up -d --wait
docker compose ps

После установки зайдите на Nextbox по ссылке: http://localhost:8095.

При первом открытии создайте администратора, указав логин и пароль.

Для работы с офисными документами установите OnlyOffice Docs Server.

Инструкция по обновлению.