Skip to content

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

Системные требования

  • Архитектура: amd64(x86_64), aarch64(arm64)
  • Процессор: с тактовой частотой 2 ГГц или лучше
  • Оперативная память: не менее 3 Гб
  • Свободное место на жестком диске: не менее 40 Гб

Установка

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

Самая простая конфигурация через docker compose, может выглядеть следующим образом:

Можно создать файл docker-compose.yaml и default.conf в одной директории.

docker-compose.yaml
yaml
services:
  nginx:
    image: nginx:latest
    restart: always
    ports:
      - "8095:80"
    networks:
      - nextbox
    volumes:
      - ./default.conf:/etc/nginx/conf.d/default.conf

  gateway:
    image: nextbox-docker.ptnl.moscow/nextbox/gateway:elder
    restart: always
    networks:
      - nextbox
    environment:
      - POTENTIAL_GATEWAY_DATABASE_DSN=postgres://nextbox:nextbox@postgresql:5432/gateway
      - POTENTIAL_GATEWAY_RABBIT_MQ_HOST=rabbitmq
      - POTENTIAL_GATEWAY_DISCOVERY_URL=http://discovery:6011
      - POTENTIAL_GATEWAY_SERVICE_BACK_URL=http://gateway:9691
      - POTENTIAL_GATEWAY_REDIS_HOST=redis

  file_storage_router:
    image: nextbox-docker.ptnl.moscow/nextbox/file_storage_router:elder
    restart: always
    networks:
      - nextbox
    environment:
      - POTENTIAL_FILE_STORAGE_ROUTER_SERVICE_BACK_URL=http://file_storage_router:6004
      - POTENTIAL_FILE_STORAGE_ROUTER_DISCOVERY_URL=http://discovery:6011
      - POTENTIAL_FILE_STORAGE_ROUTER_RABBIT_MQ_HOST=rabbitmq
      - POTENTIAL_FILE_STORAGE_ROUTER_FILE_SYSTEM_TMP=/usr/share/nextbox/tmp
      - POTENTIAL_FILE_STORAGE_ROUTER_REDIS_HOST=redis

  file_storage:
    image: nextbox-docker.ptnl.moscow/nextbox/file_storage:elder
    restart: always
    networks:
      - nextbox
    environment:
      - POTENTIAL_FILE_STORAGE_DATABASE_DSN=postgres://nextbox:nextbox@postgresql:5432/file_storage
      - POTENTIAL_FILE_STORAGE_SERVICE_BACK_URL=http://file_storage:6004
      - POTENTIAL_FILE_STORAGE_DISCOVERY_URL=http://discovery:6011
      - POTENTIAL_FILE_STORAGE_RABBIT_MQ_HOST=rabbitmq
      - POTENTIAL_FILE_STORAGE_REDIS_HOST=redis

  file_storage_worker:
    image: nextbox-docker.ptnl.moscow/nextbox/file_storage_worker:elder
    restart: always
    networks:
      - nextbox
    volumes:
      - storage_data:/var/nextbox/storage_worker/1
    environment:
      - POTENTIAL_FILE_STORAGE_WORKER_SERVICE_BACK_URL=http://file_storage_worker:6004
      - POTENTIAL_FILE_STORAGE_WORKER_DISCOVERY_URL=http://discovery:6011
      - POTENTIAL_FILE_STORAGE_WORKER_RABBIT_MQ_HOST=rabbitmq

  auth:
    image: nextbox-docker.ptnl.moscow/nextbox/auth:elder
    restart: always
    networks:
      - nextbox
    environment:
      - POTENTIAL_AUTH_DATABASE_DSN=postgres://nextbox:nextbox@postgresql:5432/auth
      - POTENTIAL_AUTH_SERVICE_BACK_URL=http://auth:6006
      - POTENTIAL_AUTH_DISCOVERY_URL=http://discovery:6011
      - POTENTIAL_AUTH_RABBIT_MQ_HOST=rabbitmq
      - POTENTIAL_AUTH_REDIS_HOST=redis
    volumes:
      - nextbox_data:/var/nextbox

  fca:
    image: nextbox-docker.ptnl.moscow/nextbox/fca:elder
    restart: always
    networks:
      - nextbox
    environment:
      - POTENTIAL_FCA_SERVICE_BACK_URL=http://fca:6007
      - POTENTIAL_FCA_DISCOVERY_URL=http://discovery:6011
      - POTENTIAL_FCA_RABBIT_MQ_HOST=rabbitmq
      - POTENTIAL_FCA_REDIS_HOST=redis
      - POTENTIAL_FCA_EXTERNAL_PROXY_URL=https://external-proxy.next-box.ru/

  static_storage:
    image: nextbox-docker.ptnl.moscow/nextbox/static_storage:elder
    restart: always
    networks:
      - nextbox
    environment:
      - POTENTIAL_STATIC_STORAGE_SERVICE_BACK_URL=http://static_storage:6010
      - POTENTIAL_STATIC_STORAGE_DISCOVERY_URL=http://discovery:6011
      - POTENTIAL_STATIC_STORAGE_RABBIT_MQ_HOST=rabbitmq
      - POTENTIAL_STATIC_STORAGE_DATABASE_DSN=postgres://nextbox:nextbox@postgresql:5432/static_storage
      - POTENTIAL_STATIC_STORAGE_FILE_SYSTEM_EXTENSIONS_PATH=/var/nextbox/extensions
      - POTENTIAL_STATIC_STORAGE_FILE_SYSTEM_TMP_PATH=/var/nextbox/static_tmp
      - POTENTIAL_STATIC_STORAGE_FILE_SYSTEM_FILES_PATH=/var/nextbox/static_files

  connections:
    image: nextbox-docker.ptnl.moscow/nextbox/connections:elder
    restart: always
    networks:
      - nextbox
    environment:
      - POTENTIAL_CONNECTIONS_SERVICE_BACK_URL=http://connections:6009
      - POTENTIAL_CONNECTIONS_DISCOVERY_URL=http://discovery:6011
      - POTENTIAL_CONNECTIONS_RABBIT_MQ_HOST=rabbitmq
      - POTENTIAL_CONNECTIONS_DATABASE_DSN=postgres://nextbox:nextbox@postgresql:5432/connections
      - POTENTIAL_CONNECTIONS_REDIS_HOST=redis

  logstash:
    image: nextbox-docker.ptnl.moscow/nextbox/logstash:elder
    restart: always
    networks:
      - nextbox
    environment:
      - POTENTIAL_LOGSTASH_SERVICE_BACK_URL=http://logstash:6008
      - POTENTIAL_LOGSTASH_DISCOVERY_URL=http://discovery:6011
      - POTENTIAL_LOGSTASH_RABBIT_MQ_HOST=rabbitmq
      - POTENTIAL_LOGSTASH_DATABASE_DSN=postgres://nextbox:nextbox@postgresql:5432/logstash
      - POTENTIAL_LOGSTASH_REPOSITORY_PATH=/var/nextbox/logstash/
    volumes:
      - logstash_data:/var/nextbox/logstash/

  discovery:
    image: nextbox-docker.ptnl.moscow/nextbox/discovery:elder
    restart: always
    networks:
      - nextbox
    environment:
      - POTENTIAL_DISCOVERY_RABBIT_MQ_HOST=rabbitmq
      - POTENTIAL_DISCOVERY_DATABASE_DSN=postgres://nextbox:nextbox@postgresql:5432/discovery
      - POTENTIAL_DISCOVERY_DATABASE_ADMIN_DSN=postgres://nextbox:nextbox@postgresql:5432/postgres
      - POTENTIAL_DISCOVERY_SERVICE_BACK_URL=http://discovery:6011
      - POTENTIAL_DISCOVERY_DISCOVERY_URL=http://discovery:6011

  share:
    image: nextbox-docker.ptnl.moscow/nextbox/share:elder
    restart: always
    networks:
      - nextbox
    environment:
      - POTENTIAL_SHARE_RABBIT_MQ_HOST=rabbitmq
      - POTENTIAL_SHARE_SERVICE_BACK_URL=http://share:6004
      - POTENTIAL_SHARE_DISCOVERY_URL=http://discovery:6011
      - POTENTIAL_SHARE_DATABASE_DSN=postgres://nextbox:nextbox@postgresql:5432/share
      - POTENTIAL_SHARE_REDIS_HOST=redis
    volumes:
      - nextbox_data:/var/nextbox

  webdav:
    image: nextbox-docker.ptnl.moscow/nextbox/webdav:elder
    restart: always
    networks:
      - nextbox
    environment:
      - POTENTIAL_WEBDAV_RABBIT_MQ_HOST=rabbitmq
      - POTENTIAL_WEBDAV_DISCOVERY_URL=http://discovery:6011
      - POTENTIAL_WEBDAV_SERVICE_BACK_URL=http://webdav:6004

  pusher:
    image: nextbox-docker.ptnl.moscow/nextbox/pusher:elder
    restart: always
    networks:
      - nextbox
    environment:
      - POTENTIAL_PUSHER_RABBIT_MQ_HOST=rabbitmq
      - POTENTIAL_PUSHER_DISCOVERY_URL=http://discovery:6011
      - POTENTIAL_PUSHER_SERVICE_BACK_URL=http://pusher:6004

  notifications:
    image: nextbox-docker.ptnl.moscow/nextbox/notifications:elder
    restart: always
    networks:
      - nextbox
    environment:
      - POTENTIAL_NOTIFICATIONS_RABBIT_MQ_HOST=rabbitmq
      - POTENTIAL_NOTIFICATIONS_SERVICE_BACK_URL=http://notifications:6004
      - POTENTIAL_NOTIFICATIONS_DISCOVERY_URL=http://discovery:6011
      - POTENTIAL_NOTIFICATIONS_DATABASE_DSN=postgres://nextbox:nextbox@postgresql:5432/notifications
      - POTENTIAL_NOTIFICATIONS_REDIS_HOST=redis
    volumes:
      - nextbox_data:/var/nextbox

  proxy:
    image: nextbox-docker.ptnl.moscow/nextbox/proxy:elder
    restart: always
    networks:
      - nextbox
    environment:
      - POTENTIAL_PROXY_SERVICE_BACK_URL=http://proxy:6004
      - POTENTIAL_PROXY_RABBIT_MQ_HOST=rabbitmq
      - POTENTIAL_PROXY_DISCOVERY_URL=http://discovery:6011

  license:
    image: nextbox-docker.ptnl.moscow/nextbox/license:elder
    restart: always
    networks:
      - nextbox
    environment:
      - POTENTIAL_LICENSE_RABBIT_MQ_HOST=rabbitmq
      - POTENTIAL_LICENSE_DISCOVERY_URL=http://discovery:6011
      - POTENTIAL_LICENSE_SERVICE_BACK_URL=http://license:6004
    volumes:
      - nextbox_data:/var/nextbox

  frontend:
    image: nextbox-docker.ptnl.moscow/nextbox/frontend:elder
    restart: always
    networks:
      - nextbox

  postgresql:
    image: postgres:16
    restart: always
    environment:
      POSTGRES_USER: nextbox
      POSTGRES_PASSWORD: nextbox
      PGDATA: /var/lib/postgresql/data/pgdata
    volumes:
      - postgresql_data:/var/lib/postgresql/data/pgdata
    networks:
      - nextbox

  rabbitmq:
    image: rabbitmq:3.7-management
    environment:
      - RABBITMQ_DEFAULT_USER=guest
      - RABBITMQ_DEFAULT_PASS=guest
    networks:
      - nextbox
    volumes:
      - rabbitmq_data:/var/lib/rabbitmq/

  redis:
    image: redis:6-alpine
    restart: always
    networks:
      - nextbox
    volumes:
      - redis_data:/data

networks:
  nextbox:
volumes:
  nextbox_data:
  redis_data:
  rabbitmq_data:
  postgresql_data:
  storage_data:
  logstash_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;

    gzip on;
    gzip_comp_level 9;
    gzip_vary on;
    gzip_proxied any;
    gzip_min_length 1000;
    gzip_buffers 16 8k;
    gzip_http_version 1.1;
    gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript image/svg+xml application/javascript;
    gzip_disable "msie6";

    location /api {
        proxy_pass http://gateway:6005/api;

        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $proxy_connection;
        proxy_set_header Host $host;
        proxy_request_buffering off; 
    }

    location / {
        proxy_pass http://frontend;

        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $proxy_connection;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
        proxy_request_buffering off; 
    }
}

После создание представленных выше файлов, осталось вызвать команду из директории расположения этих файлов:

bash
docker compose up -d

Если все сработало без ошибок, то web-интерфейс Nextbox будет доступен по адресу http://localhost:8095