NAS Частное развертывание

NAS (Network Attached Storage) — это мини-сервер, предназначенный для управления файлами. Он напрямую подключает жесткие диски к локальной сети (LAN) и обеспечивает доступ к файлам, резервное копирование, совместное использование, создание снимков нескольких версий, мультимедийные сервисы и т. д., без выполнения обычных вычислительных задач.

Распространенные производители NAS:

  • Synology
  • Lenovo Personal Cloud / Extreme Space / UGREEN
  • Western Digital My Cloud
  • ...

Доменное имя не требуется, частное развертывание

Видео по локальному развертыванию на NAS

В видео демонстрируется использование встроенной программы настройки VoceSpace в VoceChat для получения скрипта развертывания.

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

Загрузка скрипта развертывания

Нажмите ниже, чтобы загрузить скрипт оболочки.

NAS.sh

Описание скрипта:

  • Загружает все необходимые образы Docker
  • Автоматически создает контейнеры
  • Не использует прокси

Ручное выполнение развертывания скрипта

Вам не нужно вносить никаких изменений вручную, просто выполните с помощью sh

1# Войдите на ваш сервер
2ssh your.account@your.nas.ip
3
4# Выполните от имени root
5sudo -i
6
7# Скопируйте скрипт в deploy.sh и сохраните с выходом (:wq)
8vim ./deploy.sh
9
10# Предоставьте права на выполнение
11chmod 644 ./deploy.sh
12
13# Выполните скрипт
14sh ./deploy.sh

После завершения выполнения вы увидите эти контейнеры

  • redis
  • vocespace
  • livekit-server

nas_container

Контейнер VoceSpace может не запуститься из-за отсутствия прав на чтение/запись для vocespace.conf.json

Добавление прав на чтение/запись для vocespace.conf.json

vocespace.conf.json находится в том же месте, где вы выполняли скрипт. Если вы посмотрите логи контейнера, вы должны увидеть строку: /app/vocespace.conf.json: Permission denied

1chmod 644 ./vocespace.conf.json

После предоставления прав перезапустите контейнер VoceSpace

Доступ к локальной сети

Если вы дошли до этого шага, это означает, что вы завершили локальную установку, все контейнеры запущены нормально, но все еще используются протоколы http и ws, что не позволяет нормально общаться. Давайте продолжим.

alt text

Копирование нового VoceSpace

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

alt text

alt text

Копирование нового livekit-server

Также нам нужно скопировать новый контейнер livekit-server, потому что нам нужно добавить два параметра, чтобы обеспечить, что сервис WebRTC не будет проходить через внешнюю сеть. Добавьте следующие две переменные окружения. Не вводите неправильный IP!

  • LIVEKIT_NODE_IP = your.nas.server.ip
  • LIVEKIT_RTC_USE_EXTERNAL_IP = false

alt text

Удаление предыдущих контейнеров

После завершения копирования вы можете удалить предыдущие контейнеры VoceSpace и livekit-server

alt text

Настройка обратного прокси Nginx

Запрос IP-адреса VoceSpace в Docker

Следующая команда может запросить IP всех контейнеров, найдите IP VoceSpace и запомните его

1# Войдите как root
2sudo -i
3# Запрос IP
4docker ps -q | xargs -n 1 docker inspect -f '{{.Name}}: {{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}'

alt text

Настройка прокси

Откройте панель управления, выберите портал входа в систему, нажмите «Дополнительно», нажмите «Обратный прокси-сервер».

alt text

Далее добавьте новую конфигурацию и сохраните.

  • Источник
    • Протокол: HTTPS
    • Имя хоста: не нужно указывать
    • Порт: 3008
  • Назначение
    • Протокол: HTTP
    • Имя хоста: это IP вашего vocespace в docker
    • Порт 3000

alt text

Добавление конфигурации RTC

Далее нам нужно изменить конфигурацию nginx, добавив конфигурацию RTC, чтобы обновить протокол ws до wss.

# Перейдите в site-enabled nginx cd /usr/local/etc/nginx/sites-enabled # Измените конфигурацию обратного прокси сервера vim server.ReverseProxy.conf

Когда вы откроете этот файл, он должен выглядеть так

1server {
2    listen 3008 ssl default_server;
3    listen [::]:3008 ssl default_server;
4
5    server_name _;
6
7    include /usr/syno/etc/www/certificate/ReverseProxy_e7f64ca5-8ca2-4f67-bf01-16e3c2cb0bd4/cert.conf*;
8
9    include /usr/syno/etc/security-profile/tls-profile/config/ReverseProxy_e7f64ca5-8ca2-4f67-bf01-16e3c2cb0bd4.conf*;
10
11    proxy_ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
12
13    location / {
14
15        proxy_connect_timeout 60;
16
17        proxy_read_timeout 60;
18
19        proxy_send_timeout 60;
20
21        proxy_intercept_errors off;
22
23        proxy_http_version 1.1;
24
25        proxy_set_header        Upgrade            $http_upgrade;
26
27        proxy_set_header        Connection            $connection_upgrade;
28
29        proxy_set_header        Host            $http_host;
30
31        proxy_set_header        X-Real-IP            $remote_addr;
32
33        proxy_set_header        X-Forwarded-For            $proxy_add_x_forwarded_for;
34
35        proxy_set_header        X-Forwarded-Proto            $scheme;
36
37        proxy_pass http://172.17.0.2:3000;
38
39    }
40
41    error_page 403 404 500 502 503 504 /dsm_error_page;
42
43    location /dsm_error_page {
44        internal;
45        root /usr/syno/share/nginx;
46        rewrite (.*) /error.html break;
47        allow all;
48    }
49
50}

Далее добавьте следующую конфигурацию в строке перед location / {

1location /rtc {
2
3    proxy_pass http://127.0.0.1:7880;
4
5    proxy_http_version 1.1;
6
7    proxy_set_header Upgrade $http_upgrade;
8
9    proxy_set_header Connection "Upgrade";
10
11    proxy_set_header Host $host;
12
13}

После завершения нажмите ESC, введите :wq для сохранения и выхода

Полный файл конфигурации выглядит следующим образом:

1server {
2    listen 3008 ssl default_server;
3    listen [::]:3008 ssl default_server;
4
5    server_name _;
6
7    include /usr/syno/etc/www/certificate/ReverseProxy_e7f64ca5-8ca2-4f67-bf01-16e3c2cb0bd4/cert.conf*;
8
9    include /usr/syno/etc/security-profile/tls-profile/config/ReverseProxy_e7f64ca5-8ca2-4f67-bf01-16e3c2cb0bd4.conf*;
10
11    proxy_ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
12
13    location /rtc {
14
15        proxy_pass http://127.0.0.1:7880;
16
17        proxy_http_version 1.1;
18
19        proxy_set_header Upgrade $http_upgrade;
20
21        proxy_set_header Connection "Upgrade";
22
23        proxy_set_header Host $host;
24
25    }
26
27        location / {
28
29        proxy_connect_timeout 60;
30
31        proxy_read_timeout 60;
32
33        proxy_send_timeout 60;
34
35        proxy_intercept_errors off;
36
37        proxy_http_version 1.1;
38
39        proxy_set_header        Upgrade            $http_upgrade;
40
41        proxy_set_header        Connection            $connection_upgrade;
42
43        proxy_set_header        Host            $http_host;
44
45        proxy_set_header        X-Real-IP            $remote_addr;
46
47        proxy_set_header        X-Forwarded-For            $proxy_add_x_forwarded_for;
48
49        proxy_set_header        X-Forwarded-Proto            $scheme;
50
51        proxy_pass http://172.17.0.2:3000;
52
53    }
54
55    error_page 403 404 500 502 503 504 /dsm_error_page;
56
57    location /dsm_error_page {
58        internal;
59        root /usr/syno/share/nginx;
60        rewrite (.*) /error.html break;
61        allow all;
62    }
63
64}

Перезагрузка nginx

1systemctl reload nginx

Проверка файла конфигурации VoceSpace и перезапуск контейнера VoceSpace

Далее нам просто нужно убедиться, что файл конфигурации VoceSpace правильный, и перезапустить контейнер VoceSpace

1vim /volume1/share/data/vocespace.conf.json

В файле конфигурации обратите внимание:

  1. URL в livekit должен быть: wss://your.server.ip:3008, это 3008, а не 7880
  2. Host в redis должен быть: your.server.ip

Например:

1{
2    "livekit": {
3        "key": "APIQLeUrXGujRQk",
4        "secret": "fWHUA2CQlfi1iG4L3YqWKIhXuF9aqvlO5uTWAuHoLKm",
5        "url": "wss://192.168.31.249:3008"
6    },
7    "codec": "vp9",
8    "resolution": "1080p",
9    "maxBitrate": 3000000,
10    "maxFramerate": 30,
11    "priority": "medium",
12    "redis": {
13        "enabled": true,
14        "host": "192.168.31.249",
15        "port": 6379,
16        "password": "vocespace",
17        "db": 0
18    },
19    "server_url": "192.168.31.249",
20    "host_token": "vocespace",
21    "license": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJlbWFpbCI6ImhhbkBwcml2b2NlLmNvbSIsImV4cGlyZXNfYXQiOjE3NzkyNzg0MDAsImNyZWF0ZWRfYXQiOjE3NDc3NDI0MDAsImRvbWFpbnMiOiIqIiwibGltaXQiOiJwcm8iLCJpZCI6IjZkZjgyMTMyLTIyODQtNGY2MS1iYmZhLWZkZmU4YmMzMWE2NyJ9.PiagYRDWSpzhIdbnY-pp8QeOf5Ij7neV8RMEafDgVT4"
22}

После того как вы убедитесь, что в конфигурации нет проблем, перезапустите контейнер VoceSpace и войдите в систему. Если вы видите следующий экран, поздравляем, вы успешно завершили настройку доступа к локальной сети

alt text

Устранение неполадок

Ограниченный доступ к RTC

Ограниченный доступ к RTC обычно возникает по двум причинам:

  1. Неправильная конфигурация Vocesspace

  2. Недостаточная конфигурация сервера, препятствующая корректному запуску службы.

Для решения этих проблем рассмотрите возможность обновления конфигурации сервера (минимум 2 ядра и 2 ГБ ОЗУ). При проблемах с конфигурацией проверьте файл vocesspace.conf.json, чтобы определить, не является ли конфигурация livekit.url неправильной.

Доступ к внешним портам

Настройка маршрутизатора на NAS может препятствовать внешнему доступу. В этом случае необходимо добавить правила для портов.

route

port type ingress/egress allow ip
3008 tcp ingress 0.0.0.0/0 Ipv4
3008 tcp egress 0.0.0.0/0 Ipv4
7880 tcp ingress 0.0.0.0/0 Ipv4
7881 tcp ingress 0.0.0.0/0 Ipv4
6379 tcp ingress 0.0.0.0/0 Ipv4
80 tcp ingress 0.0.0.0/0 Ipv4
443 tcp ingress 0.0.0.0/0 Ipv4
50000~60000 udp ingress 0.0.0.0/0 Ipv4