vc-www

vc-www #

Контейнер с веб сервером:

  • отдает статический контент
  • может терминировать SSL
  • выполняет роль reverse proxy для остальных сервисов

Настраивается через переменные окружения.

Порты #

Контейнер запускает следующие порты:

  • 80 для обычных сайтов http
  • 443 для SSL сайтов https

Настройка сайтов #

Контейнер поддерживает установку множества сайтов, например один для внешних пользователей с публичным доменным именем, другой для внутренних пользователей с локальным доменным именем.

По-умолчанию разворачивается один сайт, на порту 80.

  • VC_WWW_SITES список имен сайтов (через пробел) c plain http доступом. Разворачиваются на порт 80. Нужны
  • VC_WWW_SSL_SITES список имен сайтов (через пробел) c tls https доступом. Разворачиваются на порт 443

Настройка SSL #

Для SSL сайтов необходимо подложить корректные сертификаты и ключи в директорию /srv/cert

  • sitename_fullchain.pem цепочка сертификата сайта (влкючая intermediate CA) в формате PEM
  • sitename.key ключ к сертификату

sitename - имя сайта, указанное в переменной VC_WWW_SSL_SITES

Если файлы с сертификатами отсутствуют, то будут подложены тестовые сертификаты.

Доступ к бэкенд контейнерам #

По-умолчанию vc-www обращается к проксируемым сервисам по имени сервиса compose файла. Адреса и порты сервисов можно изменить используя следующие переменные окружения:

переменная значение по-умолчанию
VC_ADMIN_HOST vc-admin
VC_ADMIN_PORT 9105
VC_AUTH_HOST vc-auth
VC_AUTH_PORT 9101
VC_SERVER_HOST vc-server
VC_SERVER_PORT 9103
VC_MSG_HOST vc-msg
VC_MSG_PORT 9106
VC_FILESERVER_HOST vc-fileserver
VC_FILESERVER_PORT 9108
VC_STAT_HOST vc-stat
VC_STAT_PORT 9104
VC_STATCHART_HOST vc-statchart
VC_STATCHART_PORT 9113
VC_HISTORY_HOST vc-history
VC_HISTORY_PORT 9107
VC_SURL_HOST vc-surl
VC_SURL_PORT 9102

Разграничение доступа к ресурсам #

Поддерживается разграничение доступа к ресурсам (API) SVA. Например, если доступ к административному и агентскому интерфейсам требуется разрешить только из локальной сети.

  • VC_WWW_INTERNAL_ACCESS перечень ip адресов или сетей в формате 192.168.100.0/24 разделенные запятой. Задает доступность веб интерфейсов (и соответствующих методов API).
  • VC_WWW_FILES_ACCESS определяет доступ к возможности скачать файл. Если параметр задан, то публичные пользователи (например, клиенты) не смогут скачать переданные в чате файлы (даже свои), но возможность отправить файл в чат сохранится. Формат аналогичен VC_WWW_INTERNAL_ACCESS

Ограничения задаются для всех сайтов.

Примеры compose файлов #

Запуск в докере локально
services:
  vc-www:
    image: cr.repo.altuera.ru/sva/prod/vc-www:${SVA_VERSION}
    restart: unless-stopped
    ports:
      - 8010:80
      - 8011:443
    environment:
      VC_WWW_SSL_SITES: localhost
Установка SVA на один сервер (за traefik)
services:
  balancer:
    image: cr.repo.altuera.ru/sva/prod/traefik:2.10.4
    restart: unless-stopped
    ports:
      - 80:80
      - 443:443
    environment:
      TRAEFIK_LOG_LEVEL: INFO
      TRAEFIK_API_DASHBOARD: false
      TRAEFIK_PROVIDERS_DOCKER: true
      TRAEFIK_PROVIDERS_DOCKER_EXPOSEDBYDEFAULT: false
      TRAEFIK_ENTRYPOINTS_HTTP_ADDRESS: :80
      TRAEFIK_ENTRYPOINTS_HTTPS_ADDRESS: :443
      TRAEFIK_ENTRYPOINTS_HTTPS_HTTP_TLS: true
      TRAEFIK_CERTIFICATESRESOLVERS_DEFAULT_ACME_TLSCHALLENGE: true
      TRAEFIK_CERTIFICATESRESOLVERS_DEFAULT_ACME_EMAIL: your.email@domain.ru
      TRAEFIK_CERTIFICATESRESOLVERS_DEFAULT_ACME_STORAGE: /acme/acme.json
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - ${ACME_DIR}:/acme
    labels:
      traefik.enable: true
  vc-www:
    image: cr.repo.altuera.ru/sva/prod/vc-www:${SVA_VERSION}
    restart: unless-stopped
    labels:
      traefik.enable: true
      traefik.http.routers.vc-www.entrypoints: https
      traefik.http.routers.vc-www.rule: Host(`${FQDN}`)
      traefik.http.routers.vc-www.tls.certresolver: default
      traefik.http.services.vc-www.loadbalancer.server.port: 80
Установка SVA на несколько серверов
services:
  vc-www:
    image: cr.repo.altuera.ru/sva/prod/vc-www:${SVA_VERSION}
    restart: unless-stopped
    ports:
      - 443:443
    environment:
      VC_WWW_SSL_SITES: ${PUBLIC_FQDN} ${INTERNAL_FQDN}
      VC_WWW_INTERNAL_ACCESS: 10.0.0.0/8 192.168.0.0/16
      VC_ADMIN_HOST: ${HOST_APP}
      VC_AUTH_HOST: ${HOST_APP}
      VC_SERVER_HOST: ${HOST_APP}
      VC_SURL_HOST: ${HOST_APP}
      VC_MSG_HOST: ${HOST_APP}
      VC_FILESERVER_HOST: ${HOST_APP}
      VC_HISTORY_HOST: ${HOST_APP}
      VC_STAT_HOST: ${HOST_APP}
      VC_STATCHART_HOST: ${HOST_APP}
    volumes:
      - /srv/certificates/cert_fullchain.pem:/srv/cert/${PUBLIC_FQDN}_fullchain.pem:ro
      - /srv/certificates/cert.key:/srv/cert/${PUBLIC_FQDN}.key:ro
      - /srv/certificates/cert_fullchain.pem:/srv/cert/${INTERNAL_FQDN}_fullchain.pem:ro
      - /srv/certificates/cert.key:/srv/cert/${INTERNAL_FQDN}.key:ro
powered by Altuera